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

Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue

Tony Nguyen says:

====================
Intel Wired LAN Driver Updates 2025-05-19 (ice, idpf)

For ice:
Jake removes incorrect incrementing of MAC filter count.

Dave adds check for, prerequisite, switchdev mode before setting up LAG.

For idpf:
Pavan stores max_tx_hdr_size to prevent NULL pointer dereference during
reset.

* '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
idpf: fix null-ptr-deref in idpf_features_check
ice: Fix LACP bonds without SRIOV environment
ice: fix vf->num_mac count with port representors
====================

Link: https://patch.msgid.link/20250519210523.1866503-1-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+14 -5
+6
drivers/net/ethernet/intel/ice/ice_lag.c
··· 1321 1321 */ 1322 1322 if (!primary_lag) { 1323 1323 lag->primary = true; 1324 + if (!ice_is_switchdev_running(lag->pf)) 1325 + return; 1326 + 1324 1327 /* Configure primary's SWID to be shared */ 1325 1328 ice_lag_primary_swid(lag, true); 1326 1329 primary_lag = lag; 1327 1330 } else { 1328 1331 u16 swid; 1332 + 1333 + if (!ice_is_switchdev_running(primary_lag->pf)) 1334 + return; 1329 1335 1330 1336 swid = primary_lag->pf->hw.port_info->sw_id; 1331 1337 ice_lag_set_swid(swid, lag, true);
-1
drivers/net/ethernet/intel/ice/ice_virtchnl.c
··· 4275 4275 } 4276 4276 4277 4277 ice_vfhw_mac_add(vf, &al->list[i]); 4278 - vf->num_mac++; 4279 4278 break; 4280 4279 } 4281 4280
+2
drivers/net/ethernet/intel/idpf/idpf.h
··· 143 143 * @vport_id: Vport identifier 144 144 * @link_speed_mbps: Link speed in mbps 145 145 * @vport_idx: Relative vport index 146 + * @max_tx_hdr_size: Max header length hardware can support 146 147 * @state: See enum idpf_vport_state 147 148 * @netstats: Packet and byte stats 148 149 * @stats_lock: Lock to protect stats update ··· 154 153 u32 vport_id; 155 154 u32 link_speed_mbps; 156 155 u16 vport_idx; 156 + u16 max_tx_hdr_size; 157 157 enum idpf_vport_state state; 158 158 struct rtnl_link_stats64 netstats; 159 159 spinlock_t stats_lock;
+6 -4
drivers/net/ethernet/intel/idpf/idpf_lib.c
··· 723 723 np->vport = vport; 724 724 np->vport_idx = vport->idx; 725 725 np->vport_id = vport->vport_id; 726 + np->max_tx_hdr_size = idpf_get_max_tx_hdr_size(adapter); 726 727 vport->netdev = netdev; 727 728 728 729 return idpf_init_mac_addr(vport, netdev); ··· 741 740 np->adapter = adapter; 742 741 np->vport_idx = vport->idx; 743 742 np->vport_id = vport->vport_id; 743 + np->max_tx_hdr_size = idpf_get_max_tx_hdr_size(adapter); 744 744 745 745 spin_lock_init(&np->stats_lock); 746 746 ··· 2205 2203 struct net_device *netdev, 2206 2204 netdev_features_t features) 2207 2205 { 2208 - struct idpf_vport *vport = idpf_netdev_to_vport(netdev); 2209 - struct idpf_adapter *adapter = vport->adapter; 2206 + struct idpf_netdev_priv *np = netdev_priv(netdev); 2207 + u16 max_tx_hdr_size = np->max_tx_hdr_size; 2210 2208 size_t len; 2211 2209 2212 2210 /* No point in doing any of this if neither checksum nor GSO are ··· 2229 2227 goto unsupported; 2230 2228 2231 2229 len = skb_network_header_len(skb); 2232 - if (unlikely(len > idpf_get_max_tx_hdr_size(adapter))) 2230 + if (unlikely(len > max_tx_hdr_size)) 2233 2231 goto unsupported; 2234 2232 2235 2233 if (!skb->encapsulation) ··· 2242 2240 2243 2241 /* IPLEN can support at most 127 dwords */ 2244 2242 len = skb_inner_network_header_len(skb); 2245 - if (unlikely(len > idpf_get_max_tx_hdr_size(adapter))) 2243 + if (unlikely(len > max_tx_hdr_size)) 2246 2244 goto unsupported; 2247 2245 2248 2246 /* No need to validate L4LEN as TCP is the only protocol with a