Skip to content

Commit d5a7fc5

Browse files
committed
Merge tag 'net-6.10-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski: "Including fixes from wireless, bpf and netfilter. Happy summer solstice! The line count is a bit inflated by a selftest and update to a driver's FW interface header, in reality this is slightly below average for us. We are expecting one driver fix from Intel, but there are no big known issues. Current release - regressions: - ipv6: bring NLM_DONE out to a separate recv() again Current release - new code bugs: - wifi: cfg80211: wext: set ssids=NULL for passive scans via old wext API Previous releases - regressions: - wifi: mac80211: fix monitor channel setting with chanctx emulation (probably most awaited of the fixes in this PR, tracked by Thorsten) - usb: ax88179_178a: bring back reset on init, if PHY is disconnected - bpf: fix UML x86_64 compile failure with BPF - bpf: avoid splat in pskb_pull_reason(), sanity check added can be hit with malicious BPF - eth: mvpp2: use slab_build_skb() for packets in slab, driver was missed during API refactoring - wifi: iwlwifi: add missing unlock of mvm mutex Previous releases - always broken: - ipv6: add a number of missing null-checks for in6_dev_get(), in case IPv6 disabling races with the datapath - bpf: fix reg_set_min_max corruption of fake_reg - sched: act_ct: add netns as part of the key of tcf_ct_flow_table" * tag 'net-6.10-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (63 commits) net: usb: rtl8150 fix unintiatilzed variables in rtl8150_get_link_ksettings selftests: virtio_net: add forgotten config options bnxt_en: Restore PTP tx_avail count in case of skb_pad() error bnxt_en: Set TSO max segs on devices with limits bnxt_en: Update firmware interface to 1.10.3.44 net: stmmac: Assign configured channel value to EXTTS event net: do not leave a dangling sk pointer, when socket creation fails net/tcp_ao: Don't leak ao_info on error-path ice: Fix VSI list rule with ICE_SW_LKUP_LAST type ipv6: bring NLM_DONE out to a separate recv() again selftests: add selftest for the SRv6 End.DX6 behavior with netfilter selftests: add selftest for the SRv6 End.DX4 behavior with netfilter netfilter: move the sysctl nf_hooks_lwtunnel into the netfilter core seg6: fix parameter passing when calling NF_HOOK() in End.DX4 and End.DX6 behaviors netfilter: ipset: Fix suspicious rcu_dereference_protected() selftests: openvswitch: Set value to nla flags. octeontx2-pf: Fix linking objects into multiple modules octeontx2-pf: Add error handling to VLAN unoffload handling virtio_net: fixing XDP for fully checksummed packets handling virtio_net: checksum offloading handling fix ...
2 parents 042742a + fba3839 commit d5a7fc5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+1558
-353
lines changed

.mailmap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,7 @@ Simon Kelley <[email protected]>
608608
Sricharan Ramabadhran <[email protected]> <[email protected]>
609609
610610
611+
Stanislav Fomichev <[email protected]> <[email protected]>
611612
612613
Stéphane Witzmann <[email protected]>
613614

MAINTAINERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3980,7 +3980,7 @@ R: Song Liu <[email protected]>
39803980
R: Yonghong Song <[email protected]>
39813981
R: John Fastabend <[email protected]>
39823982
R: KP Singh <[email protected]>
3983-
R: Stanislav Fomichev <sdf@google.com>
3983+
R: Stanislav Fomichev <sdf@fomichev.me>
39843984
R: Hao Luo <[email protected]>
39853985
R: Jiri Olsa <[email protected]>
39863986

drivers/net/ethernet/broadcom/bnxt/bnxt.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -732,9 +732,6 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
732732
return NETDEV_TX_OK;
733733

734734
tx_dma_error:
735-
if (BNXT_TX_PTP_IS_SET(lflags))
736-
atomic_inc(&bp->ptp_cfg->tx_avail);
737-
738735
last_frag = i;
739736

740737
/* start back at beginning and unmap skb */
@@ -756,6 +753,8 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
756753
tx_free:
757754
dev_kfree_skb_any(skb);
758755
tx_kick_pending:
756+
if (BNXT_TX_PTP_IS_SET(lflags))
757+
atomic_inc(&bp->ptp_cfg->tx_avail);
759758
if (txr->kick_pending)
760759
bnxt_txr_db_kick(bp, txr, txr->tx_prod);
761760
txr->tx_buf_ring[txr->tx_prod].skb = NULL;
@@ -8996,6 +8995,7 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
89968995
memcpy(vf->mac_addr, resp->mac_address, ETH_ALEN);
89978996
#endif
89988997
}
8998+
bp->tso_max_segs = le16_to_cpu(resp->max_tso_segs);
89998999

90009000
hwrm_func_qcaps_exit:
90019001
hwrm_req_drop(bp, req);
@@ -15363,6 +15363,8 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
1536315363
dev->priv_flags |= IFF_UNICAST_FLT;
1536415364

1536515365
netif_set_tso_max_size(dev, GSO_MAX_SIZE);
15366+
if (bp->tso_max_segs)
15367+
netif_set_tso_max_segs(dev, bp->tso_max_segs);
1536615368

1536715369
dev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
1536815370
NETDEV_XDP_ACT_RX_SG;

drivers/net/ethernet/broadcom/bnxt/bnxt.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2318,6 +2318,7 @@ struct bnxt {
23182318
u8 rss_hash_key_updated:1;
23192319

23202320
u16 max_mtu;
2321+
u16 tso_max_segs;
23212322
u8 max_tc;
23222323
u8 max_lltc; /* lossless TCs */
23232324
struct bnxt_queue_info q_info[BNXT_MAX_QUEUE];

drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h

Lines changed: 178 additions & 133 deletions
Large diffs are not rendered by default.

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

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,15 +1339,34 @@ ice_dwnld_cfg_bufs_no_lock(struct ice_hw *hw, struct ice_buf *bufs, u32 start,
13391339

13401340
for (i = 0; i < count; i++) {
13411341
bool last = false;
1342+
int try_cnt = 0;
13421343
int status;
13431344

13441345
bh = (struct ice_buf_hdr *)(bufs + start + i);
13451346

13461347
if (indicate_last)
13471348
last = ice_is_last_download_buffer(bh, i, count);
13481349

1349-
status = ice_aq_download_pkg(hw, bh, ICE_PKG_BUF_SIZE, last,
1350-
&offset, &info, NULL);
1350+
while (1) {
1351+
status = ice_aq_download_pkg(hw, bh, ICE_PKG_BUF_SIZE,
1352+
last, &offset, &info,
1353+
NULL);
1354+
if (hw->adminq.sq_last_status != ICE_AQ_RC_ENOSEC &&
1355+
hw->adminq.sq_last_status != ICE_AQ_RC_EBADSIG)
1356+
break;
1357+
1358+
try_cnt++;
1359+
1360+
if (try_cnt == 5)
1361+
break;
1362+
1363+
msleep(20);
1364+
}
1365+
1366+
if (try_cnt)
1367+
dev_dbg(ice_hw_to_dev(hw),
1368+
"ice_aq_download_pkg number of retries: %d\n",
1369+
try_cnt);
13511370

13521371
/* Save AQ status from download package */
13531372
if (status) {

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,9 @@ void ice_print_link_msg(struct ice_vsi *vsi, bool isup)
805805
}
806806

807807
switch (vsi->port_info->phy.link_info.link_speed) {
808+
case ICE_AQ_LINK_SPEED_200GB:
809+
speed = "200 G";
810+
break;
808811
case ICE_AQ_LINK_SPEED_100GB:
809812
speed = "100 G";
810813
break;
@@ -5564,7 +5567,7 @@ static int ice_suspend(struct device *dev)
55645567
*/
55655568
disabled = ice_service_task_stop(pf);
55665569

5567-
ice_unplug_aux_dev(pf);
5570+
ice_deinit_rdma(pf);
55685571

55695572
/* Already suspended?, then there is nothing to do */
55705573
if (test_and_set_bit(ICE_SUSPENDED, pf->state)) {
@@ -5644,6 +5647,11 @@ static int ice_resume(struct device *dev)
56445647
if (ret)
56455648
dev_err(dev, "Cannot restore interrupt scheme: %d\n", ret);
56465649

5650+
ret = ice_init_rdma(pf);
5651+
if (ret)
5652+
dev_err(dev, "Reinitialize RDMA during resume failed: %d\n",
5653+
ret);
5654+
56475655
clear_bit(ICE_DOWN, pf->state);
56485656
/* Now perform PF reset and rebuild */
56495657
reset_type = ICE_RESET_PFR;

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1899,7 +1899,8 @@ ice_aq_alloc_free_vsi_list(struct ice_hw *hw, u16 *vsi_list_id,
18991899
lkup_type == ICE_SW_LKUP_ETHERTYPE_MAC ||
19001900
lkup_type == ICE_SW_LKUP_PROMISC ||
19011901
lkup_type == ICE_SW_LKUP_PROMISC_VLAN ||
1902-
lkup_type == ICE_SW_LKUP_DFLT) {
1902+
lkup_type == ICE_SW_LKUP_DFLT ||
1903+
lkup_type == ICE_SW_LKUP_LAST) {
19031904
sw_buf->res_type = cpu_to_le16(ICE_AQC_RES_TYPE_VSI_LIST_REP);
19041905
} else if (lkup_type == ICE_SW_LKUP_VLAN) {
19051906
if (opc == ice_aqc_opc_alloc_res)
@@ -2922,7 +2923,8 @@ ice_update_vsi_list_rule(struct ice_hw *hw, u16 *vsi_handle_arr, u16 num_vsi,
29222923
lkup_type == ICE_SW_LKUP_ETHERTYPE_MAC ||
29232924
lkup_type == ICE_SW_LKUP_PROMISC ||
29242925
lkup_type == ICE_SW_LKUP_PROMISC_VLAN ||
2925-
lkup_type == ICE_SW_LKUP_DFLT)
2926+
lkup_type == ICE_SW_LKUP_DFLT ||
2927+
lkup_type == ICE_SW_LKUP_LAST)
29262928
rule_type = remove ? ICE_AQC_SW_RULES_T_VSI_LIST_CLEAR :
29272929
ICE_AQC_SW_RULES_T_VSI_LIST_SET;
29282930
else if (lkup_type == ICE_SW_LKUP_VLAN)

drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4014,7 +4014,10 @@ static int mvpp2_rx(struct mvpp2_port *port, struct napi_struct *napi,
40144014
}
40154015
}
40164016

4017-
skb = build_skb(data, frag_size);
4017+
if (frag_size)
4018+
skb = build_skb(data, frag_size);
4019+
else
4020+
skb = slab_build_skb(data);
40184021
if (!skb) {
40194022
netdev_warn(port->dev, "skb build failed\n");
40204023
goto err_drop_frame;

drivers/net/ethernet/marvell/octeontx2/nic/Makefile

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@ obj-$(CONFIG_OCTEONTX2_VF) += rvu_nicvf.o otx2_ptp.o
99
rvu_nicpf-y := otx2_pf.o otx2_common.o otx2_txrx.o otx2_ethtool.o \
1010
otx2_flows.o otx2_tc.o cn10k.o otx2_dmac_flt.o \
1111
otx2_devlink.o qos_sq.o qos.o
12-
rvu_nicvf-y := otx2_vf.o otx2_devlink.o
12+
rvu_nicvf-y := otx2_vf.o
1313

1414
rvu_nicpf-$(CONFIG_DCB) += otx2_dcbnl.o
15-
rvu_nicvf-$(CONFIG_DCB) += otx2_dcbnl.o
1615
rvu_nicpf-$(CONFIG_MACSEC) += cn10k_macsec.o
1716

1817
ccflags-y += -I$(srctree)/drivers/net/ethernet/marvell/octeontx2/af

drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ int otx2_pfc_txschq_config(struct otx2_nic *pfvf)
5454

5555
return 0;
5656
}
57+
EXPORT_SYMBOL(otx2_pfc_txschq_config);
5758

5859
static int otx2_pfc_txschq_alloc_one(struct otx2_nic *pfvf, u8 prio)
5960
{
@@ -122,6 +123,7 @@ int otx2_pfc_txschq_alloc(struct otx2_nic *pfvf)
122123

123124
return 0;
124125
}
126+
EXPORT_SYMBOL(otx2_pfc_txschq_alloc);
125127

126128
static int otx2_pfc_txschq_stop_one(struct otx2_nic *pfvf, u8 prio)
127129
{
@@ -260,6 +262,7 @@ int otx2_pfc_txschq_update(struct otx2_nic *pfvf)
260262

261263
return 0;
262264
}
265+
EXPORT_SYMBOL(otx2_pfc_txschq_update);
263266

264267
int otx2_pfc_txschq_stop(struct otx2_nic *pfvf)
265268
{
@@ -282,6 +285,7 @@ int otx2_pfc_txschq_stop(struct otx2_nic *pfvf)
282285

283286
return 0;
284287
}
288+
EXPORT_SYMBOL(otx2_pfc_txschq_stop);
285289

286290
int otx2_config_priority_flow_ctrl(struct otx2_nic *pfvf)
287291
{
@@ -321,6 +325,7 @@ int otx2_config_priority_flow_ctrl(struct otx2_nic *pfvf)
321325
mutex_unlock(&pfvf->mbox.lock);
322326
return err;
323327
}
328+
EXPORT_SYMBOL(otx2_config_priority_flow_ctrl);
324329

325330
void otx2_update_bpid_in_rqctx(struct otx2_nic *pfvf, int vlan_prio, int qidx,
326331
bool pfc_enable)
@@ -385,6 +390,7 @@ void otx2_update_bpid_in_rqctx(struct otx2_nic *pfvf, int vlan_prio, int qidx,
385390
"Updating BPIDs in CQ and Aura contexts of RQ%d failed with err %d\n",
386391
qidx, err);
387392
}
393+
EXPORT_SYMBOL(otx2_update_bpid_in_rqctx);
388394

389395
static int otx2_dcbnl_ieee_getpfc(struct net_device *dev, struct ieee_pfc *pfc)
390396
{
@@ -472,3 +478,4 @@ int otx2_dcbnl_set_ops(struct net_device *dev)
472478

473479
return 0;
474480
}
481+
EXPORT_SYMBOL(otx2_dcbnl_set_ops);

drivers/net/ethernet/marvell/octeontx2/nic/otx2_devlink.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ int otx2_register_dl(struct otx2_nic *pfvf)
113113
devlink_free(dl);
114114
return err;
115115
}
116+
EXPORT_SYMBOL(otx2_register_dl);
116117

117118
void otx2_unregister_dl(struct otx2_nic *pfvf)
118119
{
@@ -124,3 +125,4 @@ void otx2_unregister_dl(struct otx2_nic *pfvf)
124125
ARRAY_SIZE(otx2_dl_params));
125126
devlink_free(dl);
126127
}
128+
EXPORT_SYMBOL(otx2_unregister_dl);

drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1174,8 +1174,11 @@ bool otx2_sq_append_skb(struct net_device *netdev, struct otx2_snd_queue *sq,
11741174

11751175
if (skb_shinfo(skb)->gso_size && !is_hw_tso_supported(pfvf, skb)) {
11761176
/* Insert vlan tag before giving pkt to tso */
1177-
if (skb_vlan_tag_present(skb))
1177+
if (skb_vlan_tag_present(skb)) {
11781178
skb = __vlan_hwaccel_push_inside(skb);
1179+
if (!skb)
1180+
return true;
1181+
}
11791182
otx2_sq_append_tso(pfvf, sq, skb, qidx);
11801183
return true;
11811184
}

drivers/net/ethernet/microchip/lan743x_ethtool.c

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,8 +1127,12 @@ static void lan743x_ethtool_get_wol(struct net_device *netdev,
11271127
if (netdev->phydev)
11281128
phy_ethtool_get_wol(netdev->phydev, wol);
11291129

1130-
wol->supported |= WAKE_BCAST | WAKE_UCAST | WAKE_MCAST |
1131-
WAKE_MAGIC | WAKE_PHY | WAKE_ARP;
1130+
if (wol->supported != adapter->phy_wol_supported)
1131+
netif_warn(adapter, drv, adapter->netdev,
1132+
"PHY changed its supported WOL! old=%x, new=%x\n",
1133+
adapter->phy_wol_supported, wol->supported);
1134+
1135+
wol->supported |= MAC_SUPPORTED_WAKES;
11321136

11331137
if (adapter->is_pci11x1x)
11341138
wol->supported |= WAKE_MAGICSECURE;
@@ -1143,7 +1147,39 @@ static int lan743x_ethtool_set_wol(struct net_device *netdev,
11431147
{
11441148
struct lan743x_adapter *adapter = netdev_priv(netdev);
11451149

1150+
/* WAKE_MAGICSEGURE is a modifier of and only valid together with
1151+
* WAKE_MAGIC
1152+
*/
1153+
if ((wol->wolopts & WAKE_MAGICSECURE) && !(wol->wolopts & WAKE_MAGIC))
1154+
return -EINVAL;
1155+
1156+
if (netdev->phydev) {
1157+
struct ethtool_wolinfo phy_wol;
1158+
int ret;
1159+
1160+
phy_wol.wolopts = wol->wolopts & adapter->phy_wol_supported;
1161+
1162+
/* If WAKE_MAGICSECURE was requested, filter out WAKE_MAGIC
1163+
* for PHYs that do not support WAKE_MAGICSECURE
1164+
*/
1165+
if (wol->wolopts & WAKE_MAGICSECURE &&
1166+
!(adapter->phy_wol_supported & WAKE_MAGICSECURE))
1167+
phy_wol.wolopts &= ~WAKE_MAGIC;
1168+
1169+
ret = phy_ethtool_set_wol(netdev->phydev, &phy_wol);
1170+
if (ret && (ret != -EOPNOTSUPP))
1171+
return ret;
1172+
1173+
if (ret == -EOPNOTSUPP)
1174+
adapter->phy_wolopts = 0;
1175+
else
1176+
adapter->phy_wolopts = phy_wol.wolopts;
1177+
} else {
1178+
adapter->phy_wolopts = 0;
1179+
}
1180+
11461181
adapter->wolopts = 0;
1182+
wol->wolopts &= ~adapter->phy_wolopts;
11471183
if (wol->wolopts & WAKE_UCAST)
11481184
adapter->wolopts |= WAKE_UCAST;
11491185
if (wol->wolopts & WAKE_MCAST)
@@ -1164,10 +1200,10 @@ static int lan743x_ethtool_set_wol(struct net_device *netdev,
11641200
memset(adapter->sopass, 0, sizeof(u8) * SOPASS_MAX);
11651201
}
11661202

1203+
wol->wolopts = adapter->wolopts | adapter->phy_wolopts;
11671204
device_set_wakeup_enable(&adapter->pdev->dev, (bool)wol->wolopts);
11681205

1169-
return netdev->phydev ? phy_ethtool_set_wol(netdev->phydev, wol)
1170-
: -ENETDOWN;
1206+
return 0;
11711207
}
11721208
#endif /* CONFIG_PM */
11731209

0 commit comments

Comments
 (0)