net: phylink: remove pcs_ops member
[sfrench/cifs-2.6.git] / drivers / net / phy / phylink.c
index 066684b809196200d47abe157eb4fabd7b6312ca..0216ea978261defce818b3cf50791d07e0aa5bc8 100644 (file)
@@ -43,7 +43,6 @@ struct phylink {
        /* private: */
        struct net_device *netdev;
        const struct phylink_mac_ops *mac_ops;
-       const struct phylink_pcs_ops *pcs_ops;
        struct phylink_config *config;
        struct phylink_pcs *pcs;
        struct device *dev;
@@ -779,8 +778,8 @@ static void phylink_mac_pcs_an_restart(struct phylink *pl)
        if (pl->link_config.an_enabled &&
            phy_interface_mode_is_8023z(pl->link_config.interface) &&
            phylink_autoneg_inband(pl->cur_link_an_mode)) {
-               if (pl->pcs_ops)
-                       pl->pcs_ops->pcs_an_restart(pl->pcs);
+               if (pl->pcs)
+                       pl->pcs->ops->pcs_an_restart(pl->pcs);
                else if (pl->config->legacy_pre_march2020)
                        pl->mac_ops->mac_an_restart(pl->config);
        }
@@ -819,7 +818,6 @@ static void phylink_major_config(struct phylink *pl, bool restart,
         */
        if (pcs) {
                pl->pcs = pcs;
-               pl->pcs_ops = pcs->ops;
 
                if (!pl->phylink_disable_state &&
                    pl->cfg_link_an_mode == MLO_AN_INBAND) {
@@ -832,12 +830,12 @@ static void phylink_major_config(struct phylink *pl, bool restart,
 
        phylink_mac_config(pl, state);
 
-       if (pl->pcs_ops) {
-               err = pl->pcs_ops->pcs_config(pl->pcs, pl->cur_link_an_mode,
-                                             state->interface,
-                                             state->advertising,
-                                             !!(pl->link_config.pause &
-                                                MLO_PAUSE_AN));
+       if (pl->pcs) {
+               err = pl->pcs->ops->pcs_config(pl->pcs, pl->cur_link_an_mode,
+                                              state->interface,
+                                              state->advertising,
+                                              !!(pl->link_config.pause &
+                                                 MLO_PAUSE_AN));
                if (err < 0)
                        phylink_err(pl, "pcs_config failed: %pe\n",
                                    ERR_PTR(err));
@@ -869,7 +867,7 @@ static int phylink_change_inband_advert(struct phylink *pl)
        if (test_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state))
                return 0;
 
-       if (!pl->pcs_ops && pl->config->legacy_pre_march2020) {
+       if (!pl->pcs && pl->config->legacy_pre_march2020) {
                /* Legacy method */
                phylink_mac_config(pl, &pl->link_config);
                phylink_mac_pcs_an_restart(pl);
@@ -886,10 +884,11 @@ static int phylink_change_inband_advert(struct phylink *pl)
         * restart negotiation if the pcs_config() helper indicates that
         * the programmed advertisement has changed.
         */
-       ret = pl->pcs_ops->pcs_config(pl->pcs, pl->cur_link_an_mode,
-                                     pl->link_config.interface,
-                                     pl->link_config.advertising,
-                                     !!(pl->link_config.pause & MLO_PAUSE_AN));
+       ret = pl->pcs->ops->pcs_config(pl->pcs, pl->cur_link_an_mode,
+                                      pl->link_config.interface,
+                                      pl->link_config.advertising,
+                                      !!(pl->link_config.pause &
+                                         MLO_PAUSE_AN));
        if (ret < 0)
                return ret;
 
@@ -918,8 +917,8 @@ static void phylink_mac_pcs_get_state(struct phylink *pl,
        state->an_complete = 0;
        state->link = 1;
 
-       if (pl->pcs_ops)
-               pl->pcs_ops->pcs_get_state(pl->pcs, state);
+       if (pl->pcs)
+               pl->pcs->ops->pcs_get_state(pl->pcs, state);
        else if (pl->mac_ops->mac_pcs_get_state &&
                 pl->config->legacy_pre_march2020)
                pl->mac_ops->mac_pcs_get_state(pl->config, state);
@@ -992,8 +991,8 @@ static void phylink_link_up(struct phylink *pl,
 
        pl->cur_interface = link_state.interface;
 
-       if (pl->pcs_ops && pl->pcs_ops->pcs_link_up)
-               pl->pcs_ops->pcs_link_up(pl->pcs, pl->cur_link_an_mode,
+       if (pl->pcs && pl->pcs->ops->pcs_link_up)
+               pl->pcs->ops->pcs_link_up(pl->pcs, pl->cur_link_an_mode,
                                         pl->cur_interface,
                                         link_state.speed, link_state.duplex);
 
@@ -1115,7 +1114,7 @@ static void phylink_resolve(struct work_struct *w)
                        }
                        phylink_major_config(pl, false, &link_state);
                        pl->link_config.interface = link_state.interface;
-               } else if (!pl->pcs_ops && pl->config->legacy_pre_march2020) {
+               } else if (!pl->pcs && pl->config->legacy_pre_march2020) {
                        /* The interface remains unchanged, only the speed,
                         * duplex or pause settings have changed. Call the
                         * old mac_config() method to configure the MAC/PCS
@@ -2991,6 +2990,7 @@ int phylink_mii_c22_pcs_encode_advertisement(phy_interface_t interface,
                        adv |= ADVERTISE_1000XPSE_ASYM;
                return adv;
        case PHY_INTERFACE_MODE_SGMII:
+       case PHY_INTERFACE_MODE_QSGMII:
                return 0x0001;
        default:
                /* Nothing to do for other modes */