Skip to content

Commit 2c7e4a2

Browse files
committed
Merge tag 'net-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski: "Including fixes from CAN, wireless, Bluetooth, and Netfilter. Current release - regressions: - Revert "kunit: configs: Enable CONFIG_INIT_STACK_ALL_PATTERN in all_tests", makes kunit error out if compiler is old - wifi: iwlwifi: mvm: fix assert on suspend - rxrpc: fix return from none_validate_challenge() Current release - new code bugs: - ovpn: couple of fixes for socket cleanup and UDP-tunnel teardown - can: kvaser_pciefd: refine error prone echo_skb_max handling logic - fix net_devmem_bind_dmabuf() stub when DEVMEM not compiled - eth: airoha: fixes for config / accel in bridge mode Previous releases - regressions: - Bluetooth: hci_qca: move the SoC type check to the right place, fix GPIO integration - prevent a NULL deref in rtnl_create_link() after locking changes - fix udp gso skb_segment after pull from frag_list - hv_netvsc: fix potential deadlock in netvsc_vf_setxdp() Previous releases - always broken: - netfilter: - nf_nat: also check reverse tuple to obtain clashing entry - nf_set_pipapo_avx2: fix initial map fill (zeroing) - fix the helper for incremental update of packet checksums after modifying the IP address, used by ILA and BPF - eth: - stmmac: prevent div by 0 when clock rate is misconfigured - ice: fix Tx scheduler handling of XDP and changing queue count - eth: fix support for the RGMII interface when delays configured" * tag 'net-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (76 commits) calipso: unlock rcu before returning -EAFNOSUPPORT seg6: Fix validation of nexthop addresses net: prevent a NULL deref in rtnl_create_link() net: annotate data-races around cleanup_net_task selftests: drv-net: tso: make bkg() wait for socat to quit selftests: drv-net: tso: fix the GRE device name selftests: drv-net: add configs for the TSO test wireguard: device: enable threaded NAPI netlink: specs: rt-link: decode ip6gre netlink: specs: rt-link: add missing byte-order properties net: wwan: mhi_wwan_mbim: use correct mux_id for multiplexing wifi: cfg80211/mac80211: correctly parse S1G beacon optional elements net: dsa: b53: do not touch DLL_IQQD on bcm53115 net: dsa: b53: allow RGMII for bcm63xx RGMII ports net: dsa: b53: do not configure bcm63xx's IMP port interface net: dsa: b53: do not enable RGMII delay on bcm63xx net: dsa: b53: do not enable EEE on bcm63xx net: ti: icssg-prueth: Fix swapped TX stats for MII interfaces. selftests: netfilter: nft_nat.sh: add test for reverse clash with nat netfilter: nf_nat: also check reverse tuple to obtain clashing entry ...
2 parents 71052a8 + 3cae906 commit 2c7e4a2

Some content is hidden

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

89 files changed

+1060
-618
lines changed

Documentation/netlink/specs/rt-link.yaml

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1685,15 +1685,19 @@ attribute-sets:
16851685
-
16861686
name: iflags
16871687
type: u16
1688+
byte-order: big-endian
16881689
-
16891690
name: oflags
16901691
type: u16
1692+
byte-order: big-endian
16911693
-
16921694
name: ikey
16931695
type: u32
1696+
byte-order: big-endian
16941697
-
16951698
name: okey
16961699
type: u32
1700+
byte-order: big-endian
16971701
-
16981702
name: local
16991703
type: binary
@@ -1713,10 +1717,11 @@ attribute-sets:
17131717
type: u8
17141718
-
17151719
name: encap-limit
1716-
type: u32
1720+
type: u8
17171721
-
17181722
name: flowinfo
17191723
type: u32
1724+
byte-order: big-endian
17201725
-
17211726
name: flags
17221727
type: u32
@@ -1729,9 +1734,11 @@ attribute-sets:
17291734
-
17301735
name: encap-sport
17311736
type: u16
1737+
byte-order: big-endian
17321738
-
17331739
name: encap-dport
17341740
type: u16
1741+
byte-order: big-endian
17351742
-
17361743
name: collect-metadata
17371744
type: flag
@@ -1753,6 +1760,54 @@ attribute-sets:
17531760
-
17541761
name: erspan-hwid
17551762
type: u16
1763+
-
1764+
name: linkinfo-gre6-attrs
1765+
subset-of: linkinfo-gre-attrs
1766+
attributes:
1767+
-
1768+
name: link
1769+
-
1770+
name: iflags
1771+
-
1772+
name: oflags
1773+
-
1774+
name: ikey
1775+
-
1776+
name: okey
1777+
-
1778+
name: local
1779+
display-hint: ipv6
1780+
-
1781+
name: remote
1782+
display-hint: ipv6
1783+
-
1784+
name: ttl
1785+
-
1786+
name: encap-limit
1787+
-
1788+
name: flowinfo
1789+
-
1790+
name: flags
1791+
-
1792+
name: encap-type
1793+
-
1794+
name: encap-flags
1795+
-
1796+
name: encap-sport
1797+
-
1798+
name: encap-dport
1799+
-
1800+
name: collect-metadata
1801+
-
1802+
name: fwmark
1803+
-
1804+
name: erspan-index
1805+
-
1806+
name: erspan-ver
1807+
-
1808+
name: erspan-dir
1809+
-
1810+
name: erspan-hwid
17561811
-
17571812
name: linkinfo-vti-attrs
17581813
name-prefix: ifla-vti-
@@ -1764,9 +1819,11 @@ attribute-sets:
17641819
-
17651820
name: ikey
17661821
type: u32
1822+
byte-order: big-endian
17671823
-
17681824
name: okey
17691825
type: u32
1826+
byte-order: big-endian
17701827
-
17711828
name: local
17721829
type: binary
@@ -1816,6 +1873,7 @@ attribute-sets:
18161873
-
18171874
name: port
18181875
type: u16
1876+
byte-order: big-endian
18191877
-
18201878
name: collect-metadata
18211879
type: flag
@@ -1835,6 +1893,7 @@ attribute-sets:
18351893
-
18361894
name: label
18371895
type: u32
1896+
byte-order: big-endian
18381897
-
18391898
name: ttl-inherit
18401899
type: u8
@@ -1875,9 +1934,11 @@ attribute-sets:
18751934
-
18761935
name: flowinfo
18771936
type: u32
1937+
byte-order: big-endian
18781938
-
18791939
name: flags
18801940
type: u16
1941+
byte-order: big-endian
18811942
-
18821943
name: proto
18831944
type: u8
@@ -1907,9 +1968,11 @@ attribute-sets:
19071968
-
19081969
name: encap-sport
19091970
type: u16
1971+
byte-order: big-endian
19101972
-
19111973
name: encap-dport
19121974
type: u16
1975+
byte-order: big-endian
19131976
-
19141977
name: collect-metadata
19151978
type: flag
@@ -2224,6 +2287,9 @@ sub-messages:
22242287
-
22252288
value: gretap
22262289
attribute-set: linkinfo-gre-attrs
2290+
-
2291+
value: ip6gre
2292+
attribute-set: linkinfo-gre6-attrs
22272293
-
22282294
value: geneve
22292295
attribute-set: linkinfo-geneve-attrs

drivers/bluetooth/btnxpuart.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,8 @@ static int ps_setup(struct hci_dev *hdev)
533533
ps_host_wakeup_irq_handler,
534534
IRQF_ONESHOT | IRQF_TRIGGER_FALLING,
535535
dev_name(&serdev->dev), nxpdev);
536+
if (ret)
537+
bt_dev_info(hdev, "error setting wakeup IRQ handler, ignoring\n");
536538
disable_irq(psdata->irq_handler);
537539
device_init_wakeup(&serdev->dev, true);
538540
}

drivers/bluetooth/hci_qca.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2415,14 +2415,14 @@ static int qca_serdev_probe(struct serdev_device *serdev)
24152415

24162416
qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",
24172417
GPIOD_OUT_LOW);
2418-
if (IS_ERR(qcadev->bt_en) &&
2419-
(data->soc_type == QCA_WCN6750 ||
2420-
data->soc_type == QCA_WCN6855)) {
2421-
dev_err(&serdev->dev, "failed to acquire BT_EN gpio\n");
2422-
return PTR_ERR(qcadev->bt_en);
2423-
}
2418+
if (IS_ERR(qcadev->bt_en))
2419+
return dev_err_probe(&serdev->dev,
2420+
PTR_ERR(qcadev->bt_en),
2421+
"failed to acquire BT_EN gpio\n");
24242422

2425-
if (!qcadev->bt_en)
2423+
if (!qcadev->bt_en &&
2424+
(data->soc_type == QCA_WCN6750 ||
2425+
data->soc_type == QCA_WCN6855))
24262426
power_ctrl_enabled = false;
24272427

24282428
qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl",

drivers/net/can/kvaser_pciefd.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -966,7 +966,7 @@ static int kvaser_pciefd_setup_can_ctrls(struct kvaser_pciefd *pcie)
966966
u32 status, tx_nr_packets_max;
967967

968968
netdev = alloc_candev(sizeof(struct kvaser_pciefd_can),
969-
KVASER_PCIEFD_CAN_TX_MAX_COUNT);
969+
roundup_pow_of_two(KVASER_PCIEFD_CAN_TX_MAX_COUNT));
970970
if (!netdev)
971971
return -ENOMEM;
972972

@@ -995,7 +995,6 @@ static int kvaser_pciefd_setup_can_ctrls(struct kvaser_pciefd *pcie)
995995
can->tx_max_count = min(KVASER_PCIEFD_CAN_TX_MAX_COUNT, tx_nr_packets_max - 1);
996996

997997
can->can.clock.freq = pcie->freq;
998-
can->can.echo_skb_max = roundup_pow_of_two(can->tx_max_count);
999998
spin_lock_init(&can->lock);
1000999

10011000
can->can.bittiming_const = &kvaser_pciefd_bittiming_const;

drivers/net/dsa/b53/b53_common.c

Lines changed: 22 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <linux/gpio.h>
2323
#include <linux/kernel.h>
2424
#include <linux/math.h>
25+
#include <linux/minmax.h>
2526
#include <linux/module.h>
2627
#include <linux/platform_data/b53.h>
2728
#include <linux/phy.h>
@@ -1322,41 +1323,17 @@ static void b53_adjust_63xx_rgmii(struct dsa_switch *ds, int port,
13221323
phy_interface_t interface)
13231324
{
13241325
struct b53_device *dev = ds->priv;
1325-
u8 rgmii_ctrl = 0, off;
1326-
1327-
if (port == dev->imp_port)
1328-
off = B53_RGMII_CTRL_IMP;
1329-
else
1330-
off = B53_RGMII_CTRL_P(port);
1326+
u8 rgmii_ctrl = 0;
13311327

1332-
b53_read8(dev, B53_CTRL_PAGE, off, &rgmii_ctrl);
1333-
1334-
switch (interface) {
1335-
case PHY_INTERFACE_MODE_RGMII_ID:
1336-
rgmii_ctrl |= (RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
1337-
break;
1338-
case PHY_INTERFACE_MODE_RGMII_RXID:
1339-
rgmii_ctrl &= ~(RGMII_CTRL_DLL_TXC);
1340-
rgmii_ctrl |= RGMII_CTRL_DLL_RXC;
1341-
break;
1342-
case PHY_INTERFACE_MODE_RGMII_TXID:
1343-
rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC);
1344-
rgmii_ctrl |= RGMII_CTRL_DLL_TXC;
1345-
break;
1346-
case PHY_INTERFACE_MODE_RGMII:
1347-
default:
1348-
rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
1349-
break;
1350-
}
1328+
b53_read8(dev, B53_CTRL_PAGE, B53_RGMII_CTRL_P(port), &rgmii_ctrl);
1329+
rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
13511330

1352-
if (port != dev->imp_port) {
1353-
if (is63268(dev))
1354-
rgmii_ctrl |= RGMII_CTRL_MII_OVERRIDE;
1331+
if (is63268(dev))
1332+
rgmii_ctrl |= RGMII_CTRL_MII_OVERRIDE;
13551333

1356-
rgmii_ctrl |= RGMII_CTRL_ENABLE_GMII;
1357-
}
1334+
rgmii_ctrl |= RGMII_CTRL_ENABLE_GMII;
13581335

1359-
b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);
1336+
b53_write8(dev, B53_CTRL_PAGE, B53_RGMII_CTRL_P(port), rgmii_ctrl);
13601337

13611338
dev_dbg(ds->dev, "Configured port %d for %s\n", port,
13621339
phy_modes(interface));
@@ -1377,8 +1354,7 @@ static void b53_adjust_531x5_rgmii(struct dsa_switch *ds, int port,
13771354
* tx_clk aligned timing (restoring to reset defaults)
13781355
*/
13791356
b53_read8(dev, B53_CTRL_PAGE, off, &rgmii_ctrl);
1380-
rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC |
1381-
RGMII_CTRL_TIMING_SEL);
1357+
rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
13821358

13831359
/* PHY_INTERFACE_MODE_RGMII_TXID means TX internal delay, make
13841360
* sure that we enable the port TX clock internal delay to
@@ -1398,7 +1374,10 @@ static void b53_adjust_531x5_rgmii(struct dsa_switch *ds, int port,
13981374
rgmii_ctrl |= RGMII_CTRL_DLL_TXC;
13991375
if (interface == PHY_INTERFACE_MODE_RGMII)
14001376
rgmii_ctrl |= RGMII_CTRL_DLL_TXC | RGMII_CTRL_DLL_RXC;
1401-
rgmii_ctrl |= RGMII_CTRL_TIMING_SEL;
1377+
1378+
if (dev->chip_id != BCM53115_DEVICE_ID)
1379+
rgmii_ctrl |= RGMII_CTRL_TIMING_SEL;
1380+
14021381
b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);
14031382

14041383
dev_info(ds->dev, "Configured port %d for %s\n", port,
@@ -1462,6 +1441,10 @@ static void b53_phylink_get_caps(struct dsa_switch *ds, int port,
14621441
__set_bit(PHY_INTERFACE_MODE_MII, config->supported_interfaces);
14631442
__set_bit(PHY_INTERFACE_MODE_REVMII, config->supported_interfaces);
14641443

1444+
/* BCM63xx RGMII ports support RGMII */
1445+
if (is63xx(dev) && in_range(port, B53_63XX_RGMII0, 4))
1446+
phy_interface_set_rgmii(config->supported_interfaces);
1447+
14651448
config->mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
14661449
MAC_10 | MAC_100;
14671450

@@ -1501,7 +1484,7 @@ static void b53_phylink_mac_config(struct phylink_config *config,
15011484
struct b53_device *dev = ds->priv;
15021485
int port = dp->index;
15031486

1504-
if (is63xx(dev) && port >= B53_63XX_RGMII0)
1487+
if (is63xx(dev) && in_range(port, B53_63XX_RGMII0, 4))
15051488
b53_adjust_63xx_rgmii(ds, port, interface);
15061489

15071490
if (mode == MLO_AN_FIXED) {
@@ -2353,6 +2336,9 @@ int b53_eee_init(struct dsa_switch *ds, int port, struct phy_device *phy)
23532336
{
23542337
int ret;
23552338

2339+
if (!b53_support_eee(ds, port))
2340+
return 0;
2341+
23562342
ret = phy_init_eee(phy, false);
23572343
if (ret)
23582344
return 0;
@@ -2367,7 +2353,7 @@ bool b53_support_eee(struct dsa_switch *ds, int port)
23672353
{
23682354
struct b53_device *dev = ds->priv;
23692355

2370-
return !is5325(dev) && !is5365(dev);
2356+
return !is5325(dev) && !is5365(dev) && !is63xx(dev);
23712357
}
23722358
EXPORT_SYMBOL(b53_support_eee);
23732359

drivers/net/ethernet/airoha/airoha_eth.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ static void airoha_set_macaddr(struct airoha_gdm_port *port, const u8 *addr)
8484
val = (addr[3] << 16) | (addr[4] << 8) | addr[5];
8585
airoha_fe_wr(eth, REG_FE_MAC_LMIN(reg), val);
8686
airoha_fe_wr(eth, REG_FE_MAC_LMAX(reg), val);
87+
88+
airoha_ppe_init_upd_mem(port);
8789
}
8890

8991
static void airoha_set_gdm_port_fwd_cfg(struct airoha_eth *eth, u32 addr,

drivers/net/ethernet/airoha/airoha_eth.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,7 @@ void airoha_ppe_check_skb(struct airoha_ppe *ppe, struct sk_buff *skb,
614614
int airoha_ppe_setup_tc_block_cb(struct net_device *dev, void *type_data);
615615
int airoha_ppe_init(struct airoha_eth *eth);
616616
void airoha_ppe_deinit(struct airoha_eth *eth);
617+
void airoha_ppe_init_upd_mem(struct airoha_gdm_port *port);
617618
struct airoha_foe_entry *airoha_ppe_foe_get_entry(struct airoha_ppe *ppe,
618619
u32 hash);
619620
void airoha_ppe_foe_entry_get_stats(struct airoha_ppe *ppe, u32 hash,

0 commit comments

Comments
 (0)