@@ -189,6 +189,7 @@ enum xgbe_sfp_cable {
189189 XGBE_SFP_CABLE_UNKNOWN = 0 ,
190190 XGBE_SFP_CABLE_ACTIVE ,
191191 XGBE_SFP_CABLE_PASSIVE ,
192+ XGBE_SFP_CABLE_FIBER ,
192193};
193194
194195enum xgbe_sfp_base {
@@ -236,10 +237,7 @@ enum xgbe_sfp_speed {
236237
237238#define XGBE_SFP_BASE_BR 12
238239#define XGBE_SFP_BASE_BR_1GBE_MIN 0x0a
239- #define XGBE_SFP_BASE_BR_1GBE_MAX 0x0d
240240#define XGBE_SFP_BASE_BR_10GBE_MIN 0x64
241- #define XGBE_SFP_BASE_BR_10GBE_MAX 0x68
242- #define XGBE_MOLEX_SFP_BASE_BR_10GBE_MAX 0x78
243241
244242#define XGBE_SFP_BASE_CU_CABLE_LEN 18
245243
@@ -826,29 +824,22 @@ static void xgbe_phy_sfp_phy_settings(struct xgbe_prv_data *pdata)
826824static bool xgbe_phy_sfp_bit_rate (struct xgbe_sfp_eeprom * sfp_eeprom ,
827825 enum xgbe_sfp_speed sfp_speed )
828826{
829- u8 * sfp_base , min , max ;
827+ u8 * sfp_base , min ;
830828
831829 sfp_base = sfp_eeprom -> base ;
832830
833831 switch (sfp_speed ) {
834832 case XGBE_SFP_SPEED_1000 :
835833 min = XGBE_SFP_BASE_BR_1GBE_MIN ;
836- max = XGBE_SFP_BASE_BR_1GBE_MAX ;
837834 break ;
838835 case XGBE_SFP_SPEED_10000 :
839836 min = XGBE_SFP_BASE_BR_10GBE_MIN ;
840- if (memcmp (& sfp_eeprom -> base [XGBE_SFP_BASE_VENDOR_NAME ],
841- XGBE_MOLEX_VENDOR , XGBE_SFP_BASE_VENDOR_NAME_LEN ) == 0 )
842- max = XGBE_MOLEX_SFP_BASE_BR_10GBE_MAX ;
843- else
844- max = XGBE_SFP_BASE_BR_10GBE_MAX ;
845837 break ;
846838 default :
847839 return false;
848840 }
849841
850- return ((sfp_base [XGBE_SFP_BASE_BR ] >= min ) &&
851- (sfp_base [XGBE_SFP_BASE_BR ] <= max ));
842+ return sfp_base [XGBE_SFP_BASE_BR ] >= min ;
852843}
853844
854845static void xgbe_phy_free_phy_device (struct xgbe_prv_data * pdata )
@@ -1149,16 +1140,18 @@ static void xgbe_phy_sfp_parse_eeprom(struct xgbe_prv_data *pdata)
11491140 phy_data -> sfp_tx_fault = xgbe_phy_check_sfp_tx_fault (phy_data );
11501141 phy_data -> sfp_rx_los = xgbe_phy_check_sfp_rx_los (phy_data );
11511142
1152- /* Assume ACTIVE cable unless told it is PASSIVE */
1143+ /* Assume FIBER cable unless told otherwise */
11531144 if (sfp_base [XGBE_SFP_BASE_CABLE ] & XGBE_SFP_BASE_CABLE_PASSIVE ) {
11541145 phy_data -> sfp_cable = XGBE_SFP_CABLE_PASSIVE ;
11551146 phy_data -> sfp_cable_len = sfp_base [XGBE_SFP_BASE_CU_CABLE_LEN ];
1156- } else {
1147+ } else if ( sfp_base [ XGBE_SFP_BASE_CABLE ] & XGBE_SFP_BASE_CABLE_ACTIVE ) {
11571148 phy_data -> sfp_cable = XGBE_SFP_CABLE_ACTIVE ;
1149+ } else {
1150+ phy_data -> sfp_cable = XGBE_SFP_CABLE_FIBER ;
11581151 }
11591152
11601153 /* Determine the type of SFP */
1161- if (phy_data -> sfp_cable == XGBE_SFP_CABLE_PASSIVE &&
1154+ if (phy_data -> sfp_cable != XGBE_SFP_CABLE_FIBER &&
11621155 xgbe_phy_sfp_bit_rate (sfp_eeprom , XGBE_SFP_SPEED_10000 ))
11631156 phy_data -> sfp_base = XGBE_SFP_BASE_10000_CR ;
11641157 else if (sfp_base [XGBE_SFP_BASE_10GBE_CC ] & XGBE_SFP_BASE_10GBE_CC_SR )
0 commit comments