net: dsa: add support for phylink mac_select_pcs()
Add DSA support for the phylink mac_select_pcs() method so DSA drivers can return provide phylink with the appropriate PCS for the PHY interface mode. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
8aba73ef44
Коммит
bde018222c
|
@ -788,6 +788,9 @@ struct dsa_switch_ops {
|
|||
void (*phylink_validate)(struct dsa_switch *ds, int port,
|
||||
unsigned long *supported,
|
||||
struct phylink_link_state *state);
|
||||
struct phylink_pcs *(*phylink_mac_select_pcs)(struct dsa_switch *ds,
|
||||
int port,
|
||||
phy_interface_t iface);
|
||||
int (*phylink_mac_link_state)(struct dsa_switch *ds, int port,
|
||||
struct phylink_link_state *state);
|
||||
void (*phylink_mac_config)(struct dsa_switch *ds, int port,
|
||||
|
|
|
@ -1053,6 +1053,20 @@ static void dsa_port_phylink_mac_pcs_get_state(struct phylink_config *config,
|
|||
}
|
||||
}
|
||||
|
||||
static struct phylink_pcs *
|
||||
dsa_port_phylink_mac_select_pcs(struct phylink_config *config,
|
||||
phy_interface_t interface)
|
||||
{
|
||||
struct dsa_port *dp = container_of(config, struct dsa_port, pl_config);
|
||||
struct dsa_switch *ds = dp->ds;
|
||||
struct phylink_pcs *pcs = NULL;
|
||||
|
||||
if (ds->ops->phylink_mac_select_pcs)
|
||||
pcs = ds->ops->phylink_mac_select_pcs(ds, dp->index, interface);
|
||||
|
||||
return pcs;
|
||||
}
|
||||
|
||||
static void dsa_port_phylink_mac_config(struct phylink_config *config,
|
||||
unsigned int mode,
|
||||
const struct phylink_link_state *state)
|
||||
|
@ -1119,6 +1133,7 @@ static void dsa_port_phylink_mac_link_up(struct phylink_config *config,
|
|||
|
||||
static const struct phylink_mac_ops dsa_port_phylink_mac_ops = {
|
||||
.validate = dsa_port_phylink_validate,
|
||||
.mac_select_pcs = dsa_port_phylink_mac_select_pcs,
|
||||
.mac_pcs_get_state = dsa_port_phylink_mac_pcs_get_state,
|
||||
.mac_config = dsa_port_phylink_mac_config,
|
||||
.mac_an_restart = dsa_port_phylink_mac_an_restart,
|
||||
|
|
Загрузка…
Ссылка в новой задаче