| .. | .. |
|---|
| 974 | 974 | |
|---|
| 975 | 975 | /* A QSFP+ NIC may actually have an SFP+ module attached. |
|---|
| 976 | 976 | * The ID is page 0, byte 0. |
|---|
| 977 | + * QSFP28 is of type SFF_8636, however, this is treated |
|---|
| 978 | + * the same by ethtool, so we can also treat them the same. |
|---|
| 977 | 979 | */ |
|---|
| 978 | 980 | switch (efx_mcdi_phy_get_module_eeprom_byte(efx, 0, 0)) { |
|---|
| 979 | | - case 0x3: |
|---|
| 981 | + case 0x3: /* SFP */ |
|---|
| 980 | 982 | return MC_CMD_MEDIA_SFP_PLUS; |
|---|
| 981 | | - case 0xc: |
|---|
| 982 | | - case 0xd: |
|---|
| 983 | + case 0xc: /* QSFP */ |
|---|
| 984 | + case 0xd: /* QSFP+ */ |
|---|
| 985 | + case 0x11: /* QSFP28 */ |
|---|
| 983 | 986 | return MC_CMD_MEDIA_QSFP_PLUS; |
|---|
| 984 | 987 | default: |
|---|
| 985 | 988 | return 0; |
|---|
| .. | .. |
|---|
| 1077 | 1080 | |
|---|
| 1078 | 1081 | case MC_CMD_MEDIA_QSFP_PLUS: |
|---|
| 1079 | 1082 | modinfo->type = ETH_MODULE_SFF_8436; |
|---|
| 1080 | | - modinfo->eeprom_len = ETH_MODULE_SFF_8436_LEN; |
|---|
| 1083 | + modinfo->eeprom_len = ETH_MODULE_SFF_8436_MAX_LEN; |
|---|
| 1081 | 1084 | break; |
|---|
| 1082 | 1085 | |
|---|
| 1083 | 1086 | default: |
|---|