Commit 2c7e4a26 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
  ...
parents 71052a80 3cae906e
Loading
Loading
Loading
Loading
+67 −1
Original line number Diff line number Diff line
@@ -1685,15 +1685,19 @@ attribute-sets:
      -
        name: iflags
        type: u16
        byte-order: big-endian
      -
        name: oflags
        type: u16
        byte-order: big-endian
      -
        name: ikey
        type: u32
        byte-order: big-endian
      -
        name: okey
        type: u32
        byte-order: big-endian
      -
        name: local
        type: binary
@@ -1713,10 +1717,11 @@ attribute-sets:
        type: u8
      -
        name: encap-limit
        type: u32
        type: u8
      -
        name: flowinfo
        type: u32
        byte-order: big-endian
      -
        name: flags
        type: u32
@@ -1729,9 +1734,11 @@ attribute-sets:
      -
        name: encap-sport
        type: u16
        byte-order: big-endian
      -
        name: encap-dport
        type: u16
        byte-order: big-endian
      -
        name: collect-metadata
        type: flag
@@ -1753,6 +1760,54 @@ attribute-sets:
      -
        name: erspan-hwid
        type: u16
  -
    name: linkinfo-gre6-attrs
    subset-of: linkinfo-gre-attrs
    attributes:
      -
        name: link
      -
        name: iflags
      -
        name: oflags
      -
        name: ikey
      -
        name: okey
      -
        name: local
        display-hint: ipv6
      -
        name: remote
        display-hint: ipv6
      -
        name: ttl
      -
        name: encap-limit
      -
        name: flowinfo
      -
        name: flags
      -
        name: encap-type
      -
        name: encap-flags
      -
        name: encap-sport
      -
        name: encap-dport
      -
        name: collect-metadata
      -
        name: fwmark
      -
        name: erspan-index
      -
        name: erspan-ver
      -
        name: erspan-dir
      -
        name: erspan-hwid
  -
    name: linkinfo-vti-attrs
    name-prefix: ifla-vti-
@@ -1764,9 +1819,11 @@ attribute-sets:
      -
        name: ikey
        type: u32
        byte-order: big-endian
      -
        name: okey
        type: u32
        byte-order: big-endian
      -
        name: local
        type: binary
@@ -1816,6 +1873,7 @@ attribute-sets:
      -
        name: port
        type: u16
        byte-order: big-endian
      -
        name: collect-metadata
        type: flag
@@ -1835,6 +1893,7 @@ attribute-sets:
      -
        name: label
        type: u32
        byte-order: big-endian
      -
        name: ttl-inherit
        type: u8
@@ -1875,9 +1934,11 @@ attribute-sets:
      -
        name: flowinfo
        type: u32
        byte-order: big-endian
      -
        name: flags
        type: u16
        byte-order: big-endian
      -
        name: proto
        type: u8
@@ -1907,9 +1968,11 @@ attribute-sets:
      -
        name: encap-sport
        type: u16
        byte-order: big-endian
      -
        name: encap-dport
        type: u16
        byte-order: big-endian
      -
        name: collect-metadata
        type: flag
@@ -2224,6 +2287,9 @@ sub-messages:
      -
        value: gretap
        attribute-set: linkinfo-gre-attrs
      -
        value: ip6gre
        attribute-set: linkinfo-gre6-attrs
      -
        value: geneve
        attribute-set: linkinfo-geneve-attrs
+2 −0
Original line number Diff line number Diff line
@@ -533,6 +533,8 @@ static int ps_setup(struct hci_dev *hdev)
					ps_host_wakeup_irq_handler,
					IRQF_ONESHOT | IRQF_TRIGGER_FALLING,
					dev_name(&serdev->dev), nxpdev);
		if (ret)
			bt_dev_info(hdev, "error setting wakeup IRQ handler, ignoring\n");
		disable_irq(psdata->irq_handler);
		device_init_wakeup(&serdev->dev, true);
	}
+7 −7
Original line number Diff line number Diff line
@@ -2415,14 +2415,14 @@ static int qca_serdev_probe(struct serdev_device *serdev)

		qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",
					       GPIOD_OUT_LOW);
		if (IS_ERR(qcadev->bt_en) &&
		    (data->soc_type == QCA_WCN6750 ||
		     data->soc_type == QCA_WCN6855)) {
			dev_err(&serdev->dev, "failed to acquire BT_EN gpio\n");
			return PTR_ERR(qcadev->bt_en);
		}
		if (IS_ERR(qcadev->bt_en))
			return dev_err_probe(&serdev->dev,
					     PTR_ERR(qcadev->bt_en),
					     "failed to acquire BT_EN gpio\n");

		if (!qcadev->bt_en)
		if (!qcadev->bt_en &&
		    (data->soc_type == QCA_WCN6750 ||
		     data->soc_type == QCA_WCN6855))
			power_ctrl_enabled = false;

		qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl",
+1 −2
Original line number Diff line number Diff line
@@ -966,7 +966,7 @@ static int kvaser_pciefd_setup_can_ctrls(struct kvaser_pciefd *pcie)
		u32 status, tx_nr_packets_max;

		netdev = alloc_candev(sizeof(struct kvaser_pciefd_can),
				      KVASER_PCIEFD_CAN_TX_MAX_COUNT);
				      roundup_pow_of_two(KVASER_PCIEFD_CAN_TX_MAX_COUNT));
		if (!netdev)
			return -ENOMEM;

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

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

		can->can.bittiming_const = &kvaser_pciefd_bittiming_const;
+22 −36
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <linux/gpio.h>
#include <linux/kernel.h>
#include <linux/math.h>
#include <linux/minmax.h>
#include <linux/module.h>
#include <linux/platform_data/b53.h>
#include <linux/phy.h>
@@ -1322,41 +1323,17 @@ static void b53_adjust_63xx_rgmii(struct dsa_switch *ds, int port,
				  phy_interface_t interface)
{
	struct b53_device *dev = ds->priv;
	u8 rgmii_ctrl = 0, off;

	if (port == dev->imp_port)
		off = B53_RGMII_CTRL_IMP;
	else
		off = B53_RGMII_CTRL_P(port);
	u8 rgmii_ctrl = 0;

	b53_read8(dev, B53_CTRL_PAGE, off, &rgmii_ctrl);

	switch (interface) {
	case PHY_INTERFACE_MODE_RGMII_ID:
		rgmii_ctrl |= (RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
		break;
	case PHY_INTERFACE_MODE_RGMII_RXID:
		rgmii_ctrl &= ~(RGMII_CTRL_DLL_TXC);
		rgmii_ctrl |= RGMII_CTRL_DLL_RXC;
		break;
	case PHY_INTERFACE_MODE_RGMII_TXID:
		rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC);
		rgmii_ctrl |= RGMII_CTRL_DLL_TXC;
		break;
	case PHY_INTERFACE_MODE_RGMII:
	default:
	b53_read8(dev, B53_CTRL_PAGE, B53_RGMII_CTRL_P(port), &rgmii_ctrl);
	rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
		break;
	}

	if (port != dev->imp_port) {
	if (is63268(dev))
		rgmii_ctrl |= RGMII_CTRL_MII_OVERRIDE;

	rgmii_ctrl |= RGMII_CTRL_ENABLE_GMII;
	}

	b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);
	b53_write8(dev, B53_CTRL_PAGE, B53_RGMII_CTRL_P(port), rgmii_ctrl);

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

	/* PHY_INTERFACE_MODE_RGMII_TXID means TX internal delay, make
	 * 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,
		rgmii_ctrl |= RGMII_CTRL_DLL_TXC;
	if (interface == PHY_INTERFACE_MODE_RGMII)
		rgmii_ctrl |= RGMII_CTRL_DLL_TXC | RGMII_CTRL_DLL_RXC;

	if (dev->chip_id != BCM53115_DEVICE_ID)
		rgmii_ctrl |= RGMII_CTRL_TIMING_SEL;

	b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);

	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,
	__set_bit(PHY_INTERFACE_MODE_MII, config->supported_interfaces);
	__set_bit(PHY_INTERFACE_MODE_REVMII, config->supported_interfaces);

	/* BCM63xx RGMII ports support RGMII */
	if (is63xx(dev) && in_range(port, B53_63XX_RGMII0, 4))
		phy_interface_set_rgmii(config->supported_interfaces);

	config->mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
		MAC_10 | MAC_100;

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

	if (is63xx(dev) && port >= B53_63XX_RGMII0)
	if (is63xx(dev) && in_range(port, B53_63XX_RGMII0, 4))
		b53_adjust_63xx_rgmii(ds, port, interface);

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

	if (!b53_support_eee(ds, port))
		return 0;

	ret = phy_init_eee(phy, false);
	if (ret)
		return 0;
@@ -2367,7 +2353,7 @@ bool b53_support_eee(struct dsa_switch *ds, int port)
{
	struct b53_device *dev = ds->priv;

	return !is5325(dev) && !is5365(dev);
	return !is5325(dev) && !is5365(dev) && !is63xx(dev);
}
EXPORT_SYMBOL(b53_support_eee);

Loading