net/cxgbe: support Source MAC Table
[dpdk.git] / drivers / net / sfc / base / ef10_phy.c
index ec3600e..737c52e 100644 (file)
@@ -7,7 +7,7 @@
 #include "efx.h"
 #include "efx_impl.h"
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
+#if EFX_OPTS_EF10()
 
 static                 void
 mcdi_phy_decode_cap(
@@ -286,9 +286,9 @@ ef10_phy_get_link(
        }
 
        mcdi_phy_decode_cap(MCDI_OUT_DWORD(req, GET_LINK_OUT_CAP),
-                           &elsp->els_adv_cap_mask);
+                           &elsp->epls.epls_adv_cap_mask);
        mcdi_phy_decode_cap(MCDI_OUT_DWORD(req, GET_LINK_OUT_LP_CAP),
-                           &elsp->els_lp_cap_mask);
+                           &elsp->epls.epls_lp_cap_mask);
 
        if (req.emr_out_length_used < MC_CMD_GET_LINK_OUT_V2_LEN)
                fec = MC_CMD_FEC_NONE;
@@ -298,8 +298,16 @@ ef10_phy_get_link(
        mcdi_phy_decode_link_mode(enp, MCDI_OUT_DWORD(req, GET_LINK_OUT_FLAGS),
                            MCDI_OUT_DWORD(req, GET_LINK_OUT_LINK_SPEED),
                            MCDI_OUT_DWORD(req, GET_LINK_OUT_FCNTL),
-                           fec, &elsp->els_link_mode,
-                           &elsp->els_fcntl, &elsp->els_fec);
+                           fec, &elsp->epls.epls_link_mode,
+                           &elsp->epls.epls_fcntl, &elsp->epls.epls_fec);
+
+       if (req.emr_out_length_used < MC_CMD_GET_LINK_OUT_V2_LEN) {
+               elsp->epls.epls_ld_cap_mask = 0;
+       } else {
+               mcdi_phy_decode_cap(MCDI_OUT_DWORD(req, GET_LINK_OUT_V2_LD_CAP),
+                                   &elsp->epls.epls_ld_cap_mask);
+       }
+
 
 #if EFSYS_OPT_LOOPBACK
        /*
@@ -543,18 +551,18 @@ ef10_phy_oui_get(
 }
 
        __checkReturn   efx_rc_t
-ef10_phy_fec_type_get(
+ef10_phy_link_state_get(
        __in            efx_nic_t *enp,
-       __out           efx_phy_fec_type_t  *fecp)
+       __out           efx_phy_link_state_t  *eplsp)
 {
        efx_rc_t rc;
        ef10_link_state_t els;
 
-       /* Obtain the active FEC type */
+       /* Obtain the active link state */
        if ((rc = ef10_phy_get_link(enp, &els)) != 0)
                goto fail1;
 
-       *fecp = els.els_fec;
+       *eplsp = els.epls;
 
        return (0);
 
@@ -747,4 +755,4 @@ ef10_bist_stop(
 
 #endif /* EFSYS_OPT_BIST */
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
+#endif /* EFX_OPTS_EF10() */