Skip to content

Commit b80b43f

Browse files
committed
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/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 50980d8 + 2dabe34 commit b80b43f

File tree

4 files changed

+14
-5
lines changed

4 files changed

+14
-5
lines changed

drivers/net/ethernet/intel/ice/ice_lag.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1321,12 +1321,18 @@ static void ice_lag_changeupper_event(struct ice_lag *lag, void *ptr)
13211321
*/
13221322
if (!primary_lag) {
13231323
lag->primary = true;
1324+
if (!ice_is_switchdev_running(lag->pf))
1325+
return;
1326+
13241327
/* Configure primary's SWID to be shared */
13251328
ice_lag_primary_swid(lag, true);
13261329
primary_lag = lag;
13271330
} else {
13281331
u16 swid;
13291332

1333+
if (!ice_is_switchdev_running(primary_lag->pf))
1334+
return;
1335+
13301336
swid = primary_lag->pf->hw.port_info->sw_id;
13311337
ice_lag_set_swid(swid, lag, true);
13321338
ice_lag_add_prune_list(primary_lag, lag->pf);

drivers/net/ethernet/intel/ice/ice_virtchnl.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4275,7 +4275,6 @@ static int ice_vc_repr_add_mac(struct ice_vf *vf, u8 *msg)
42754275
}
42764276

42774277
ice_vfhw_mac_add(vf, &al->list[i]);
4278-
vf->num_mac++;
42794278
break;
42804279
}
42814280

drivers/net/ethernet/intel/idpf/idpf.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ enum idpf_vport_state {
143143
* @vport_id: Vport identifier
144144
* @link_speed_mbps: Link speed in mbps
145145
* @vport_idx: Relative vport index
146+
* @max_tx_hdr_size: Max header length hardware can support
146147
* @state: See enum idpf_vport_state
147148
* @netstats: Packet and byte stats
148149
* @stats_lock: Lock to protect stats update
@@ -153,6 +154,7 @@ struct idpf_netdev_priv {
153154
u32 vport_id;
154155
u32 link_speed_mbps;
155156
u16 vport_idx;
157+
u16 max_tx_hdr_size;
156158
enum idpf_vport_state state;
157159
struct rtnl_link_stats64 netstats;
158160
spinlock_t stats_lock;

drivers/net/ethernet/intel/idpf/idpf_lib.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,7 @@ static int idpf_cfg_netdev(struct idpf_vport *vport)
723723
np->vport = vport;
724724
np->vport_idx = vport->idx;
725725
np->vport_id = vport->vport_id;
726+
np->max_tx_hdr_size = idpf_get_max_tx_hdr_size(adapter);
726727
vport->netdev = netdev;
727728

728729
return idpf_init_mac_addr(vport, netdev);
@@ -740,6 +741,7 @@ static int idpf_cfg_netdev(struct idpf_vport *vport)
740741
np->adapter = adapter;
741742
np->vport_idx = vport->idx;
742743
np->vport_id = vport->vport_id;
744+
np->max_tx_hdr_size = idpf_get_max_tx_hdr_size(adapter);
743745

744746
spin_lock_init(&np->stats_lock);
745747

@@ -2203,8 +2205,8 @@ static netdev_features_t idpf_features_check(struct sk_buff *skb,
22032205
struct net_device *netdev,
22042206
netdev_features_t features)
22052207
{
2206-
struct idpf_vport *vport = idpf_netdev_to_vport(netdev);
2207-
struct idpf_adapter *adapter = vport->adapter;
2208+
struct idpf_netdev_priv *np = netdev_priv(netdev);
2209+
u16 max_tx_hdr_size = np->max_tx_hdr_size;
22082210
size_t len;
22092211

22102212
/* No point in doing any of this if neither checksum nor GSO are
@@ -2227,7 +2229,7 @@ static netdev_features_t idpf_features_check(struct sk_buff *skb,
22272229
goto unsupported;
22282230

22292231
len = skb_network_header_len(skb);
2230-
if (unlikely(len > idpf_get_max_tx_hdr_size(adapter)))
2232+
if (unlikely(len > max_tx_hdr_size))
22312233
goto unsupported;
22322234

22332235
if (!skb->encapsulation)
@@ -2240,7 +2242,7 @@ static netdev_features_t idpf_features_check(struct sk_buff *skb,
22402242

22412243
/* IPLEN can support at most 127 dwords */
22422244
len = skb_inner_network_header_len(skb);
2243-
if (unlikely(len > idpf_get_max_tx_hdr_size(adapter)))
2245+
if (unlikely(len > max_tx_hdr_size))
22442246
goto unsupported;
22452247

22462248
/* No need to validate L4LEN as TCP is the only protocol with a

0 commit comments

Comments
 (0)