Skip to content

Commit 183d46f

Browse files
committed
Merge tag 'net-6.11-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Paolo Abeni: "Including fixes from wireless, bleutooth, BPF and netfilter. Current release - regressions: - core: drop bad gso csum_start and offset in virtio_net_hdr - wifi: mt76: fix null pointer access in mt792x_mac_link_bss_remove - eth: tun: add missing bpf_net_ctx_clear() in do_xdp_generic() - phy: aquantia: only poll GLOBAL_CFG regs on aqr113, aqr113c and aqr115c Current release - new code bugs: - smc: prevent UAF in inet_create() - bluetooth: btmtk: fix kernel crash when entering btmtk_usb_suspend - eth: bnxt: reject unsupported hash functions Previous releases - regressions: - sched: act_ct: take care of padding in struct zones_ht_key - netfilter: fix null-ptr-deref in iptable_nat_table_init(). - tcp: adjust clamping window for applications specifying SO_RCVBUF Previous releases - always broken: - ethtool: rss: small fixes to spec and GET - mptcp: - fix signal endpoint re-add - pm: fix backup support in signal endpoints - wifi: ath12k: fix soft lockup on suspend - eth: bnxt_en: fix RSS logic in __bnxt_reserve_rings() - eth: ice: fix AF_XDP ZC timeout and concurrency issues - eth: mlx5: - fix missing lock on sync reset reload - fix error handling in irq_pool_request_irq" * tag 'net-6.11-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (76 commits) mptcp: fix duplicate data handling mptcp: fix bad RCVPRUNED mib accounting ipv6: fix ndisc_is_useropt() handling for PIO igc: Fix double reset adapter triggered from a single taprio cmd net: MAINTAINERS: Demote Qualcomm IPA to "maintained" net: wan: fsl_qmc_hdlc: Discard received CRC net: wan: fsl_qmc_hdlc: Convert carrier_lock spinlock to a mutex net/mlx5e: Add a check for the return value from mlx5_port_set_eth_ptys net/mlx5e: Fix CT entry update leaks of modify header context net/mlx5e: Require mlx5 tc classifier action support for IPsec prio capability net/mlx5: Fix missing lock on sync reset reload net/mlx5: Lag, don't use the hardcoded value of the first port net/mlx5: DR, Fix 'stack guard page was hit' error in dr_rule net/mlx5: Fix error handling in irq_pool_request_irq net/mlx5: Always drain health in shutdown callback net: Add skbuff.h to MAINTAINERS r8169: don't increment tx_dropped in case of NETDEV_TX_BUSY netfilter: iptables: Fix potential null-ptr-deref in ip6table_nat_table_init(). netfilter: iptables: Fix null-ptr-deref in iptable_nat_table_init(). net: drop bad gso csum_start and offset in virtio_net_hdr ...
2 parents 21b136c + 25010bf commit 183d46f

File tree

73 files changed

+694
-303
lines changed

Some content is hidden

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

73 files changed

+694
-303
lines changed

Documentation/netlink/specs/ethtool.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1753,6 +1753,7 @@ operations:
17531753
request:
17541754
attributes:
17551755
- header
1756+
- context
17561757
reply:
17571758
attributes:
17581759
- header
@@ -1761,7 +1762,6 @@ operations:
17611762
- indir
17621763
- hkey
17631764
- input_xfrm
1764-
dump: *rss-get-op
17651765
-
17661766
name: plca-get-cfg
17671767
doc: Get PLCA params.

Documentation/networking/ethtool-netlink.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1875,6 +1875,7 @@ Kernel response contents:
18751875

18761876
===================================== ====== ==========================
18771877
``ETHTOOL_A_RSS_HEADER`` nested reply header
1878+
``ETHTOOL_A_RSS_CONTEXT`` u32 context number
18781879
``ETHTOOL_A_RSS_HFUNC`` u32 RSS hash func
18791880
``ETHTOOL_A_RSS_INDIR`` binary Indir table bytes
18801881
``ETHTOOL_A_RSS_HKEY`` binary Hash key bytes

MAINTAINERS

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15936,6 +15936,7 @@ F: include/linux/in.h
1593615936
F: include/linux/indirect_call_wrapper.h
1593715937
F: include/linux/net.h
1593815938
F: include/linux/netdevice.h
15939+
F: include/linux/skbuff.h
1593915940
F: include/net/
1594015941
F: include/uapi/linux/in.h
1594115942
F: include/uapi/linux/net.h
@@ -18556,7 +18557,7 @@ F: drivers/usb/misc/qcom_eud.c
1855618557
QCOM IPA DRIVER
1855718558
M: Alex Elder <[email protected]>
1855818559
18559-
S: Supported
18560+
S: Maintained
1856018561
F: drivers/net/ipa/
1856118562

1856218563
QEMU MACHINE EMULATOR AND VIRTUALIZER SUPPORT

drivers/bluetooth/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,7 @@ config BT_ATH3K
413413
config BT_MTKSDIO
414414
tristate "MediaTek HCI SDIO driver"
415415
depends on MMC
416+
depends on USB || !BT_HCIBTUSB_MTK
416417
select BT_MTK
417418
help
418419
MediaTek Bluetooth HCI SDIO driver.
@@ -425,6 +426,7 @@ config BT_MTKSDIO
425426
config BT_MTKUART
426427
tristate "MediaTek HCI UART driver"
427428
depends on SERIAL_DEV_BUS
429+
depends on USB || !BT_HCIBTUSB_MTK
428430
select BT_MTK
429431
help
430432
MediaTek Bluetooth HCI UART driver.

drivers/bluetooth/btintel.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3085,6 +3085,9 @@ static int btintel_setup_combined(struct hci_dev *hdev)
30853085
btintel_set_dsm_reset_method(hdev, &ver_tlv);
30863086

30873087
err = btintel_bootloader_setup_tlv(hdev, &ver_tlv);
3088+
if (err)
3089+
goto exit_error;
3090+
30883091
btintel_register_devcoredump_support(hdev);
30893092
btintel_print_fseq_info(hdev);
30903093
break;

drivers/bluetooth/btmtk.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,7 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
437437
}
438438
EXPORT_SYMBOL_GPL(btmtk_process_coredump);
439439

440+
#if IS_ENABLED(CONFIG_BT_HCIBTUSB_MTK)
440441
static void btmtk_usb_wmt_recv(struct urb *urb)
441442
{
442443
struct hci_dev *hdev = urb->context;
@@ -1262,7 +1263,8 @@ int btmtk_usb_suspend(struct hci_dev *hdev)
12621263
struct btmtk_data *btmtk_data = hci_get_priv(hdev);
12631264

12641265
/* Stop urb anchor for iso data transmission */
1265-
usb_kill_anchored_urbs(&btmtk_data->isopkt_anchor);
1266+
if (test_bit(BTMTK_ISOPKT_RUNNING, &btmtk_data->flags))
1267+
usb_kill_anchored_urbs(&btmtk_data->isopkt_anchor);
12661268

12671269
return 0;
12681270
}
@@ -1487,6 +1489,7 @@ int btmtk_usb_shutdown(struct hci_dev *hdev)
14871489
return 0;
14881490
}
14891491
EXPORT_SYMBOL_GPL(btmtk_usb_shutdown);
1492+
#endif
14901493

14911494
MODULE_AUTHOR("Sean Wang <[email protected]>");
14921495
MODULE_AUTHOR("Mark Chen <[email protected]>");

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7649,8 +7649,8 @@ static int bnxt_get_avail_msix(struct bnxt *bp, int num);
76497649
static int __bnxt_reserve_rings(struct bnxt *bp)
76507650
{
76517651
struct bnxt_hw_rings hwr = {0};
7652+
int rx_rings, old_rx_rings, rc;
76527653
int cp = bp->cp_nr_rings;
7653-
int rx_rings, rc;
76547654
int ulp_msix = 0;
76557655
bool sh = false;
76567656
int tx_cp;
@@ -7684,6 +7684,7 @@ static int __bnxt_reserve_rings(struct bnxt *bp)
76847684
hwr.grp = bp->rx_nr_rings;
76857685
hwr.rss_ctx = bnxt_get_total_rss_ctxs(bp, &hwr);
76867686
hwr.stat = bnxt_get_func_stat_ctxs(bp);
7687+
old_rx_rings = bp->hw_resc.resv_rx_rings;
76877688

76887689
rc = bnxt_hwrm_reserve_rings(bp, &hwr);
76897690
if (rc)
@@ -7738,7 +7739,8 @@ static int __bnxt_reserve_rings(struct bnxt *bp)
77387739
if (!bnxt_rings_ok(bp, &hwr))
77397740
return -ENOMEM;
77407741

7741-
if (!netif_is_rxfh_configured(bp->dev))
7742+
if (old_rx_rings != bp->hw_resc.resv_rx_rings &&
7743+
!netif_is_rxfh_configured(bp->dev))
77427744
bnxt_set_dflt_rss_indir_tbl(bp, NULL);
77437745

77447746
if (!bnxt_ulp_registered(bp->edev) && BNXT_NEW_RM(bp)) {

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1863,8 +1863,14 @@ static void bnxt_modify_rss(struct bnxt *bp, struct ethtool_rxfh_context *ctx,
18631863
}
18641864

18651865
static int bnxt_rxfh_context_check(struct bnxt *bp,
1866+
const struct ethtool_rxfh_param *rxfh,
18661867
struct netlink_ext_ack *extack)
18671868
{
1869+
if (rxfh->hfunc && rxfh->hfunc != ETH_RSS_HASH_TOP) {
1870+
NL_SET_ERR_MSG_MOD(extack, "RSS hash function not supported");
1871+
return -EOPNOTSUPP;
1872+
}
1873+
18681874
if (!BNXT_SUPPORTS_MULTI_RSS_CTX(bp)) {
18691875
NL_SET_ERR_MSG_MOD(extack, "RSS contexts not supported");
18701876
return -EOPNOTSUPP;
@@ -1888,7 +1894,7 @@ static int bnxt_create_rxfh_context(struct net_device *dev,
18881894
struct bnxt_vnic_info *vnic;
18891895
int rc;
18901896

1891-
rc = bnxt_rxfh_context_check(bp, extack);
1897+
rc = bnxt_rxfh_context_check(bp, rxfh, extack);
18921898
if (rc)
18931899
return rc;
18941900

@@ -1915,8 +1921,12 @@ static int bnxt_create_rxfh_context(struct net_device *dev,
19151921
if (rc)
19161922
goto out;
19171923

1924+
/* Populate defaults in the context */
19181925
bnxt_set_dflt_rss_indir_tbl(bp, ctx);
1926+
ctx->hfunc = ETH_RSS_HASH_TOP;
19191927
memcpy(vnic->rss_hash_key, bp->rss_hash_key, HW_HASH_KEY_SIZE);
1928+
memcpy(ethtool_rxfh_context_key(ctx),
1929+
bp->rss_hash_key, HW_HASH_KEY_SIZE);
19201930

19211931
rc = bnxt_hwrm_vnic_alloc(bp, vnic, 0, bp->rx_nr_rings);
19221932
if (rc) {
@@ -1953,7 +1963,7 @@ static int bnxt_modify_rxfh_context(struct net_device *dev,
19531963
struct bnxt_rss_ctx *rss_ctx;
19541964
int rc;
19551965

1956-
rc = bnxt_rxfh_context_check(bp, extack);
1966+
rc = bnxt_rxfh_context_check(bp, rxfh, extack);
19571967
if (rc)
19581968
return rc;
19591969

drivers/net/ethernet/intel/ice/ice.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -765,18 +765,17 @@ static inline struct xsk_buff_pool *ice_get_xp_from_qid(struct ice_vsi *vsi,
765765
}
766766

767767
/**
768-
* ice_xsk_pool - get XSK buffer pool bound to a ring
768+
* ice_rx_xsk_pool - assign XSK buff pool to Rx ring
769769
* @ring: Rx ring to use
770770
*
771-
* Returns a pointer to xsk_buff_pool structure if there is a buffer pool
772-
* present, NULL otherwise.
771+
* Sets XSK buff pool pointer on Rx ring.
773772
*/
774-
static inline struct xsk_buff_pool *ice_xsk_pool(struct ice_rx_ring *ring)
773+
static inline void ice_rx_xsk_pool(struct ice_rx_ring *ring)
775774
{
776775
struct ice_vsi *vsi = ring->vsi;
777776
u16 qid = ring->q_index;
778777

779-
return ice_get_xp_from_qid(vsi, qid);
778+
WRITE_ONCE(ring->xsk_pool, ice_get_xp_from_qid(vsi, qid));
780779
}
781780

782781
/**
@@ -801,7 +800,7 @@ static inline void ice_tx_xsk_pool(struct ice_vsi *vsi, u16 qid)
801800
if (!ring)
802801
return;
803802

804-
ring->xsk_pool = ice_get_xp_from_qid(vsi, qid);
803+
WRITE_ONCE(ring->xsk_pool, ice_get_xp_from_qid(vsi, qid));
805804
}
806805

807806
/**

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,7 @@ static int ice_vsi_cfg_rxq(struct ice_rx_ring *ring)
536536
return err;
537537
}
538538

539-
ring->xsk_pool = ice_xsk_pool(ring);
539+
ice_rx_xsk_pool(ring);
540540
if (ring->xsk_pool) {
541541
xdp_rxq_info_unreg(&ring->xdp_rxq);
542542

@@ -597,7 +597,7 @@ static int ice_vsi_cfg_rxq(struct ice_rx_ring *ring)
597597
return 0;
598598
}
599599

600-
ok = ice_alloc_rx_bufs_zc(ring, num_bufs);
600+
ok = ice_alloc_rx_bufs_zc(ring, ring->xsk_pool, num_bufs);
601601
if (!ok) {
602602
u16 pf_q = ring->vsi->rxq_map[ring->q_index];
603603

0 commit comments

Comments
 (0)