mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 16:44:58 +02:00
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>
This commit is contained in:
commit
b80b43fea2
|
|
@ -1321,12 +1321,18 @@ static void ice_lag_changeupper_event(struct ice_lag *lag, void *ptr)
|
|||
*/
|
||||
if (!primary_lag) {
|
||||
lag->primary = true;
|
||||
if (!ice_is_switchdev_running(lag->pf))
|
||||
return;
|
||||
|
||||
/* Configure primary's SWID to be shared */
|
||||
ice_lag_primary_swid(lag, true);
|
||||
primary_lag = lag;
|
||||
} else {
|
||||
u16 swid;
|
||||
|
||||
if (!ice_is_switchdev_running(primary_lag->pf))
|
||||
return;
|
||||
|
||||
swid = primary_lag->pf->hw.port_info->sw_id;
|
||||
ice_lag_set_swid(swid, lag, true);
|
||||
ice_lag_add_prune_list(primary_lag, lag->pf);
|
||||
|
|
|
|||
|
|
@ -4275,7 +4275,6 @@ static int ice_vc_repr_add_mac(struct ice_vf *vf, u8 *msg)
|
|||
}
|
||||
|
||||
ice_vfhw_mac_add(vf, &al->list[i]);
|
||||
vf->num_mac++;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -143,6 +143,7 @@ enum idpf_vport_state {
|
|||
* @vport_id: Vport identifier
|
||||
* @link_speed_mbps: Link speed in mbps
|
||||
* @vport_idx: Relative vport index
|
||||
* @max_tx_hdr_size: Max header length hardware can support
|
||||
* @state: See enum idpf_vport_state
|
||||
* @netstats: Packet and byte stats
|
||||
* @stats_lock: Lock to protect stats update
|
||||
|
|
@ -153,6 +154,7 @@ struct idpf_netdev_priv {
|
|||
u32 vport_id;
|
||||
u32 link_speed_mbps;
|
||||
u16 vport_idx;
|
||||
u16 max_tx_hdr_size;
|
||||
enum idpf_vport_state state;
|
||||
struct rtnl_link_stats64 netstats;
|
||||
spinlock_t stats_lock;
|
||||
|
|
|
|||
|
|
@ -723,6 +723,7 @@ static int idpf_cfg_netdev(struct idpf_vport *vport)
|
|||
np->vport = vport;
|
||||
np->vport_idx = vport->idx;
|
||||
np->vport_id = vport->vport_id;
|
||||
np->max_tx_hdr_size = idpf_get_max_tx_hdr_size(adapter);
|
||||
vport->netdev = netdev;
|
||||
|
||||
return idpf_init_mac_addr(vport, netdev);
|
||||
|
|
@ -740,6 +741,7 @@ static int idpf_cfg_netdev(struct idpf_vport *vport)
|
|||
np->adapter = adapter;
|
||||
np->vport_idx = vport->idx;
|
||||
np->vport_id = vport->vport_id;
|
||||
np->max_tx_hdr_size = idpf_get_max_tx_hdr_size(adapter);
|
||||
|
||||
spin_lock_init(&np->stats_lock);
|
||||
|
||||
|
|
@ -2203,8 +2205,8 @@ static netdev_features_t idpf_features_check(struct sk_buff *skb,
|
|||
struct net_device *netdev,
|
||||
netdev_features_t features)
|
||||
{
|
||||
struct idpf_vport *vport = idpf_netdev_to_vport(netdev);
|
||||
struct idpf_adapter *adapter = vport->adapter;
|
||||
struct idpf_netdev_priv *np = netdev_priv(netdev);
|
||||
u16 max_tx_hdr_size = np->max_tx_hdr_size;
|
||||
size_t len;
|
||||
|
||||
/* 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,
|
|||
goto unsupported;
|
||||
|
||||
len = skb_network_header_len(skb);
|
||||
if (unlikely(len > idpf_get_max_tx_hdr_size(adapter)))
|
||||
if (unlikely(len > max_tx_hdr_size))
|
||||
goto unsupported;
|
||||
|
||||
if (!skb->encapsulation)
|
||||
|
|
@ -2240,7 +2242,7 @@ static netdev_features_t idpf_features_check(struct sk_buff *skb,
|
|||
|
||||
/* IPLEN can support at most 127 dwords */
|
||||
len = skb_inner_network_header_len(skb);
|
||||
if (unlikely(len > idpf_get_max_tx_hdr_size(adapter)))
|
||||
if (unlikely(len > max_tx_hdr_size))
|
||||
goto unsupported;
|
||||
|
||||
/* No need to validate L4LEN as TCP is the only protocol with a
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user