Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'ionic-minor-code-updates'

Shannon Nelson says:

====================
ionic: minor code updates

These are a few updates to the ionic driver, mostly for handling
newer/faster QSFP connectors.
====================

Link: https://patch.msgid.link/20241210183045.67878-1-shannon.nelson@amd.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>

+63 -6
-2
drivers/net/ethernet/pensando/ionic/ionic.h
··· 18 18 #define PCI_DEVICE_ID_PENSANDO_IONIC_ETH_PF 0x1002 19 19 #define PCI_DEVICE_ID_PENSANDO_IONIC_ETH_VF 0x1003 20 20 21 - #define IONIC_ASIC_TYPE_ELBA 2 22 - 23 21 #define DEVCMD_TIMEOUT 5 24 22 #define IONIC_ADMINQ_TIME_SLICE msecs_to_jiffies(100) 25 23
+40
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
··· 158 158 25000baseCR_Full); 159 159 copper_seen++; 160 160 break; 161 + case IONIC_XCVR_PID_QSFP_50G_CR2_FC: 162 + case IONIC_XCVR_PID_QSFP_50G_CR2: 163 + ethtool_link_ksettings_add_link_mode(ks, supported, 164 + 50000baseCR2_Full); 165 + copper_seen++; 166 + break; 167 + case IONIC_XCVR_PID_QSFP_200G_CR4: 168 + ethtool_link_ksettings_add_link_mode(ks, supported, 200000baseCR4_Full); 169 + copper_seen++; 170 + break; 171 + case IONIC_XCVR_PID_QSFP_400G_CR4: 172 + ethtool_link_ksettings_add_link_mode(ks, supported, 400000baseCR4_Full); 173 + copper_seen++; 174 + break; 161 175 case IONIC_XCVR_PID_SFP_10GBASE_AOC: 162 176 case IONIC_XCVR_PID_SFP_10GBASE_CU: 163 177 ethtool_link_ksettings_add_link_mode(ks, supported, ··· 209 195 case IONIC_XCVR_PID_SFP_25GBASE_ACC: 210 196 ethtool_link_ksettings_add_link_mode(ks, supported, 211 197 25000baseSR_Full); 198 + break; 199 + case IONIC_XCVR_PID_QSFP_200G_AOC: 200 + case IONIC_XCVR_PID_QSFP_200G_SR4: 201 + ethtool_link_ksettings_add_link_mode(ks, supported, 202 + 200000baseSR4_Full); 203 + break; 204 + case IONIC_XCVR_PID_QSFP_200G_FR4: 205 + ethtool_link_ksettings_add_link_mode(ks, supported, 206 + 200000baseLR4_ER4_FR4_Full); 207 + break; 208 + case IONIC_XCVR_PID_QSFP_200G_DR4: 209 + ethtool_link_ksettings_add_link_mode(ks, supported, 210 + 200000baseDR4_Full); 211 + break; 212 + case IONIC_XCVR_PID_QSFP_400G_FR4: 213 + ethtool_link_ksettings_add_link_mode(ks, supported, 214 + 400000baseLR4_ER4_FR4_Full); 215 + break; 216 + case IONIC_XCVR_PID_QSFP_400G_DR4: 217 + ethtool_link_ksettings_add_link_mode(ks, supported, 218 + 400000baseDR4_Full); 219 + break; 220 + case IONIC_XCVR_PID_QSFP_400G_SR4: 221 + ethtool_link_ksettings_add_link_mode(ks, supported, 222 + 400000baseSR4_Full); 212 223 break; 213 224 case IONIC_XCVR_PID_SFP_10GBASE_SR: 214 225 ethtool_link_ksettings_add_link_mode(ks, supported, ··· 968 929 break; 969 930 case SFF8024_ID_QSFP_8436_8636: 970 931 case SFF8024_ID_QSFP28_8636: 932 + case SFF8024_ID_QSFP_PLUS_CMIS: 971 933 modinfo->type = ETH_MODULE_SFF_8436; 972 934 modinfo->eeprom_len = ETH_MODULE_SFF_8436_LEN; 973 935 break;
+20 -2
drivers/net/ethernet/pensando/ionic/ionic_if.h
··· 1277 1277 IONIC_XCVR_PID_SFP_25GBASE_CR_S = 3, 1278 1278 IONIC_XCVR_PID_SFP_25GBASE_CR_L = 4, 1279 1279 IONIC_XCVR_PID_SFP_25GBASE_CR_N = 5, 1280 - 1280 + IONIC_XCVR_PID_QSFP_50G_CR2_FC = 6, 1281 + IONIC_XCVR_PID_QSFP_50G_CR2 = 7, 1282 + IONIC_XCVR_PID_QSFP_200G_CR4 = 8, 1283 + IONIC_XCVR_PID_QSFP_400G_CR4 = 9, 1281 1284 /* Fiber */ 1282 1285 IONIC_XCVR_PID_QSFP_100G_AOC = 50, 1283 1286 IONIC_XCVR_PID_QSFP_100G_ACC = 51, ··· 1306 1303 IONIC_XCVR_PID_SFP_25GBASE_ACC = 71, 1307 1304 IONIC_XCVR_PID_SFP_10GBASE_T = 72, 1308 1305 IONIC_XCVR_PID_SFP_1000BASE_T = 73, 1306 + IONIC_XCVR_PID_QSFP_200G_AOC = 74, 1307 + IONIC_XCVR_PID_QSFP_200G_FR4 = 75, 1308 + IONIC_XCVR_PID_QSFP_200G_DR4 = 76, 1309 + IONIC_XCVR_PID_QSFP_200G_SR4 = 77, 1310 + IONIC_XCVR_PID_QSFP_200G_ACC = 78, 1311 + IONIC_XCVR_PID_QSFP_400G_FR4 = 79, 1312 + IONIC_XCVR_PID_QSFP_400G_DR4 = 80, 1313 + IONIC_XCVR_PID_QSFP_400G_SR4 = 81, 1314 + IONIC_XCVR_PID_QSFP_400G_VR4 = 82, 1309 1315 }; 1310 1316 1311 1317 /** ··· 1416 1404 */ 1417 1405 union ionic_port_config { 1418 1406 struct { 1407 + #define IONIC_SPEED_400G 400000 /* 400G in Mbps */ 1408 + #define IONIC_SPEED_200G 200000 /* 200G in Mbps */ 1419 1409 #define IONIC_SPEED_100G 100000 /* 100G in Mbps */ 1420 1410 #define IONIC_SPEED_50G 50000 /* 50G in Mbps */ 1421 1411 #define IONIC_SPEED_40G 40000 /* 40G in Mbps */ ··· 3223 3209 #define IONIC_BAR0_INTR_CTRL_OFFSET 0x2000 3224 3210 #define IONIC_DEV_CMD_DONE 0x00000001 3225 3211 3226 - #define IONIC_ASIC_TYPE_CAPRI 0 3212 + #define IONIC_ASIC_TYPE_NONE 0 3213 + #define IONIC_ASIC_TYPE_CAPRI 1 3214 + #define IONIC_ASIC_TYPE_ELBA 2 3215 + #define IONIC_ASIC_TYPE_GIGLIO 3 3216 + #define IONIC_ASIC_TYPE_SALINA 4 3227 3217 3228 3218 /** 3229 3219 * struct ionic_doorbell - Doorbell register layout
+1 -1
drivers/net/ethernet/pensando/ionic/ionic_lif.c
··· 3265 3265 lif->netdev->min_mtu = max_t(unsigned int, ETH_MIN_MTU, 3266 3266 le32_to_cpu(lif->identity->eth.min_frame_size)); 3267 3267 lif->netdev->max_mtu = 3268 - le32_to_cpu(lif->identity->eth.max_frame_size) - ETH_HLEN - VLAN_HLEN; 3268 + le32_to_cpu(lif->identity->eth.max_frame_size) - VLAN_ETH_HLEN; 3269 3269 3270 3270 lif->neqs = ionic->neqs_per_lif; 3271 3271 lif->nxqs = ionic->ntxqs_per_lif;
+2 -1
drivers/net/ethernet/pensando/ionic/ionic_main.c
··· 81 81 case IONIC_RC_EQTYPE: 82 82 case IONIC_RC_EQID: 83 83 case IONIC_RC_EINVAL: 84 - case IONIC_RC_ENOSUPP: 85 84 return -EINVAL; 85 + case IONIC_RC_ENOSUPP: 86 + return -EOPNOTSUPP; 86 87 case IONIC_RC_EPERM: 87 88 return -EPERM; 88 89 case IONIC_RC_ENOENT: