1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- From bde018222c6b084ac32933a9f933581dd83da18e Mon Sep 17 00:00:00 2001
- From: "Russell King (Oracle)" <[email protected]>
- Date: Thu, 17 Feb 2022 18:30:35 +0000
- Subject: [PATCH] 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) <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- include/net/dsa.h | 3 +++
- net/dsa/port.c | 15 +++++++++++++++
- 2 files changed, 18 insertions(+)
- --- a/include/net/dsa.h
- +++ b/include/net/dsa.h
- @@ -659,6 +659,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,
- --- a/net/dsa/port.c
- +++ b/net/dsa/port.c
- @@ -1028,6 +1028,20 @@ static void dsa_port_phylink_mac_pcs_get
- }
- }
-
- +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)
- @@ -1094,6 +1108,7 @@ static void dsa_port_phylink_mac_link_up
-
- 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,
|