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

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'net-ethernet-enic-add-vic-ids-and-link-modes'

Satish Kharat says:

====================
eth: enic: add VIC ids and link modes

Add VIC subsystem ids and their supported/advertised media types so ethtool
reflects the hardware capabilities for the VIC variants.
====================

Link: https://patch.msgid.link/20260223-enic-cscwi36355-v2-0-63488194a974@cisco.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+187 -7
+39
drivers/net/ethernet/cisco/enic/enic.h
··· 22 22 #define DRV_NAME "enic" 23 23 #define DRV_DESCRIPTION "Cisco VIC Ethernet NIC Driver" 24 24 25 + #define PCI_SUBDEV_ID_CISCO_VIC_1225 0x085 26 + #define PCI_SUBDEV_ID_CISCO_VIC_1225T 0x0CE 27 + #define PCI_SUBDEV_ID_CISCO_VIC_1227 0x12E 28 + #define PCI_SUBDEV_ID_CISCO_VIC_1227T 0x139 29 + #define PCI_SUBDEV_ID_CISCO_VIC_1240 0x084 30 + #define PCI_SUBDEV_ID_CISCO_VIC_1280 0x04F 31 + #define PCI_SUBDEV_ID_CISCO_VIC_1285 0x0CD 32 + 33 + #define PCI_SUBDEV_ID_CISCO_VIC_1340 0x12C 34 + #define PCI_SUBDEV_ID_CISCO_VIC_1380 0x137 35 + #define PCI_SUBDEV_ID_CISCO_VIC_1385 0x14D 36 + #define PCI_SUBDEV_ID_CISCO_VIC_1387 0x15D 37 + 38 + #define PCI_SUBDEV_ID_CISCO_VIC_1440 0x0215 39 + #define PCI_SUBDEV_ID_CISCO_VIC_1455 0x0217 40 + #define PCI_SUBDEV_ID_CISCO_VIC_1457 0x0218 41 + #define PCI_SUBDEV_ID_CISCO_VIC_1467 0x02AF 42 + #define PCI_SUBDEV_ID_CISCO_VIC_1477 0x2B0 43 + #define PCI_SUBDEV_ID_CISCO_VIC_1480 0x0216 44 + #define PCI_SUBDEV_ID_CISCO_VIC_1485 0x0219 45 + #define PCI_SUBDEV_ID_CISCO_VIC_1487 0x021A 46 + #define PCI_SUBDEV_ID_CISCO_VIC_1495 0x024A 47 + #define PCI_SUBDEV_ID_CISCO_VIC_1497 0x024B 48 + #define PCI_SUBDEV_ID_CISCO_VIC_14425 0x02CF 49 + #define PCI_SUBDEV_ID_CISCO_VIC_14825 0x02D0 50 + 51 + #define PCI_SUBDEV_ID_CISCO_VIC_15230 0x02DF 52 + #define PCI_SUBDEV_ID_CISCO_VIC_15231 0x02DB 53 + #define PCI_SUBDEV_ID_CISCO_VIC_15235 0x02E4 54 + #define PCI_SUBDEV_ID_CISCO_VIC_15237 0x02F3 55 + #define PCI_SUBDEV_ID_CISCO_VIC_15238 0x02E8 56 + #define PCI_SUBDEV_ID_CISCO_VIC_15411 0x02DC 57 + #define PCI_SUBDEV_ID_CISCO_VIC_15412 0x02E2 58 + #define PCI_SUBDEV_ID_CISCO_VIC_15420 0x02DE 59 + #define PCI_SUBDEV_ID_CISCO_VIC_15422 0x02E1 60 + #define PCI_SUBDEV_ID_CISCO_VIC_15425 0x02F2 61 + #define PCI_SUBDEV_ID_CISCO_VIC_15427 0x02E0 62 + #define PCI_SUBDEV_ID_CISCO_VIC_15428 0x02DD 63 + 25 64 #define ENIC_BARS_MAX 6 26 65 27 66 #define ENIC_WQ_MAX 256
+148 -7
drivers/net/ethernet/cisco/enic/enic_ethtool.c
··· 126 126 } 127 127 } 128 128 129 + static void enic_get_supp_adv_media_type(struct net_device *netdev, 130 + struct ethtool_link_ksettings *ecmd) 131 + { 132 + struct enic *enic = netdev_priv(netdev); 133 + struct ethtool_link_settings *base = &ecmd->base; 134 + u16 sub_dev_id = 0; 135 + 136 + base->port = PORT_OTHER; 137 + 138 + if (enic->pdev) 139 + sub_dev_id = enic->pdev->subsystem_device; 140 + 141 + switch (sub_dev_id) { 142 + case PCI_SUBDEV_ID_CISCO_VIC_1225: 143 + case PCI_SUBDEV_ID_CISCO_VIC_1227: 144 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 145 + 10000baseSR_Full); 146 + ethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE); 147 + base->port = PORT_FIBRE; 148 + break; 149 + case PCI_SUBDEV_ID_CISCO_VIC_1285: 150 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 151 + 40000baseSR4_Full); 152 + ethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE); 153 + base->port = PORT_FIBRE; 154 + break; 155 + case PCI_SUBDEV_ID_CISCO_VIC_1225T: 156 + case PCI_SUBDEV_ID_CISCO_VIC_1227T: 157 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 158 + 10000baseT_Full); 159 + ethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE); 160 + base->port = PORT_FIBRE; 161 + break; 162 + case PCI_SUBDEV_ID_CISCO_VIC_1385: 163 + case PCI_SUBDEV_ID_CISCO_VIC_1387: 164 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 165 + 10000baseSR_Full); 166 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 167 + 10000baseLR_Full); 168 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 169 + 40000baseSR4_Full); 170 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 171 + 40000baseLR4_Full); 172 + ethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE); 173 + base->port = PORT_FIBRE; 174 + break; 175 + case PCI_SUBDEV_ID_CISCO_VIC_1477: 176 + case PCI_SUBDEV_ID_CISCO_VIC_1485: 177 + case PCI_SUBDEV_ID_CISCO_VIC_1487: 178 + case PCI_SUBDEV_ID_CISCO_VIC_1495: 179 + case PCI_SUBDEV_ID_CISCO_VIC_1497: 180 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 181 + 40000baseCR4_Full); 182 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 183 + 40000baseSR4_Full); 184 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 185 + 40000baseLR4_Full); 186 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 187 + 100000baseSR4_Full); 188 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 189 + 100000baseCR4_Full); 190 + ethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE); 191 + base->port = PORT_FIBRE; 192 + break; 193 + case PCI_SUBDEV_ID_CISCO_VIC_15235: 194 + case PCI_SUBDEV_ID_CISCO_VIC_15237: 195 + case PCI_SUBDEV_ID_CISCO_VIC_15238: 196 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 197 + 40000baseCR4_Full); 198 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 199 + 40000baseSR4_Full); 200 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 201 + 40000baseLR4_Full); 202 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 203 + 100000baseSR4_Full); 204 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 205 + 100000baseCR4_Full); 206 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 207 + 200000baseSR4_Full); 208 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 209 + 200000baseDR4_Full); 210 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 211 + 200000baseLR4_ER4_FR4_Full); 212 + ethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE); 213 + base->port = PORT_FIBRE; 214 + break; 215 + case PCI_SUBDEV_ID_CISCO_VIC_1455: 216 + case PCI_SUBDEV_ID_CISCO_VIC_1457: 217 + case PCI_SUBDEV_ID_CISCO_VIC_1467: 218 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 219 + 10000baseT_Full); 220 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 221 + 25000baseSR_Full); 222 + ethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE); 223 + base->port = PORT_FIBRE; 224 + break; 225 + case PCI_SUBDEV_ID_CISCO_VIC_15428: 226 + case PCI_SUBDEV_ID_CISCO_VIC_15427: 227 + case PCI_SUBDEV_ID_CISCO_VIC_15425: 228 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 229 + 10000baseT_Full); 230 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 231 + 25000baseSR_Full); 232 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 233 + 50000baseSR_Full); 234 + ethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE); 235 + base->port = PORT_FIBRE; 236 + break; 237 + /* Do not mention port type as FIBRE for blade VICs */ 238 + case PCI_SUBDEV_ID_CISCO_VIC_1240: 239 + case PCI_SUBDEV_ID_CISCO_VIC_1280: 240 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 241 + 10000baseKR_Full); 242 + break; 243 + case PCI_SUBDEV_ID_CISCO_VIC_1340: 244 + case PCI_SUBDEV_ID_CISCO_VIC_1380: 245 + case PCI_SUBDEV_ID_CISCO_VIC_1440: /* 10G/40G KR */ 246 + case PCI_SUBDEV_ID_CISCO_VIC_1480: /* 10G/40G KR */ 247 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 248 + 10000baseKR_Full); 249 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 250 + 40000baseKR4_Full); 251 + break; 252 + case PCI_SUBDEV_ID_CISCO_VIC_14425: /* 25G KR */ 253 + case PCI_SUBDEV_ID_CISCO_VIC_14825: /* 25G KR */ 254 + case PCI_SUBDEV_ID_CISCO_VIC_15420: /* 25G KR */ 255 + case PCI_SUBDEV_ID_CISCO_VIC_15422: /* 25G KR */ 256 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 257 + 25000baseKR_Full); 258 + break; 259 + case PCI_SUBDEV_ID_CISCO_VIC_15411: /* 10G KR */ 260 + case PCI_SUBDEV_ID_CISCO_VIC_15412: /* 10G KR */ 261 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 262 + 10000baseKR_Full); 263 + break; 264 + case PCI_SUBDEV_ID_CISCO_VIC_15231: /* 25G/100G/200G KR */ 265 + case PCI_SUBDEV_ID_CISCO_VIC_15230: /* 25G/100G/200G KR */ 266 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 267 + 25000baseKR_Full); 268 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 269 + 100000baseKR_Full); 270 + ethtool_link_ksettings_add_link_mode(ecmd, supported, 271 + 200000baseKR4_Full); 272 + break; 273 + } 274 + } 275 + 129 276 static int enic_get_ksettings(struct net_device *netdev, 130 277 struct ethtool_link_ksettings *ecmd) 131 278 { 132 279 struct enic *enic = netdev_priv(netdev); 133 280 struct ethtool_link_settings *base = &ecmd->base; 134 281 135 - ethtool_link_ksettings_add_link_mode(ecmd, supported, 136 - 10000baseT_Full); 137 - ethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE); 138 - ethtool_link_ksettings_add_link_mode(ecmd, advertising, 139 - 10000baseT_Full); 140 - ethtool_link_ksettings_add_link_mode(ecmd, advertising, FIBRE); 141 - base->port = PORT_FIBRE; 282 + enic_get_supp_adv_media_type(netdev, ecmd); 142 283 143 284 if (netif_carrier_ok(netdev)) { 144 285 base->speed = vnic_dev_port_speed(enic->vdev);