Merge tag 'net-next-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 29 Apr 2021 18:57:23 +0000 (11:57 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 29 Apr 2021 18:57:23 +0000 (11:57 -0700)
Pull networking updates from Jakub Kicinski:
 "Core:

   - bpf:
        - allow bpf programs calling kernel functions (initially to
          reuse TCP congestion control implementations)
        - enable task local storage for tracing programs - remove the
          need to store per-task state in hash maps, and allow tracing
          programs access to task local storage previously added for
          BPF_LSM
        - add bpf_for_each_map_elem() helper, allowing programs to walk
          all map elements in a more robust and easier to verify fashion
        - sockmap: support UDP and cross-protocol BPF_SK_SKB_VERDICT
          redirection
        - lpm: add support for batched ops in LPM trie
        - add BTF_KIND_FLOAT support - mostly to allow use of BTF on
          s390 which has floats in its headers files
        - improve BPF syscall documentation and extend the use of kdoc
          parsing scripts we already employ for bpf-helpers
        - libbpf, bpftool: support static linking of BPF ELF files
        - improve support for encapsulation of L2 packets

   - xdp: restructure redirect actions to avoid a runtime lookup,
     improving performance by 4-8% in microbenchmarks

   - xsk: build skb by page (aka generic zerocopy xmit) - improve
     performance of software AF_XDP path by 33% for devices which don't
     need headers in the linear skb part (e.g. virtio)

   - nexthop: resilient next-hop groups - improve path stability on
     next-hops group changes (incl. offload for mlxsw)

   - ipv6: segment routing: add support for IPv4 decapsulation

   - icmp: add support for RFC 8335 extended PROBE messages

   - inet: use bigger hash table for IP ID generation

   - tcp: deal better with delayed TX completions - make sure we don't
     give up on fast TCP retransmissions only because driver is slow in
     reporting that it completed transmitting the original

   - tcp: reorder tcp_congestion_ops for better cache locality

   - mptcp:
        - add sockopt support for common TCP options
        - add support for common TCP msg flags
        - include multiple address ids in RM_ADDR
        - add reset option support for resetting one subflow

   - udp: GRO L4 improvements - improve 'forward' / 'frag_list'
     co-existence with UDP tunnel GRO, allowing the first to take place
     correctly even for encapsulated UDP traffic

   - micro-optimize dev_gro_receive() and flow dissection, avoid
     retpoline overhead on VLAN and TEB GRO

   - use less memory for sysctls, add a new sysctl type, to allow using
     u8 instead of "int" and "long" and shrink networking sysctls

   - veth: allow GRO without XDP - this allows aggregating UDP packets
     before handing them off to routing, bridge, OvS, etc.

   - allow specifing ifindex when device is moved to another namespace

   - netfilter:
        - nft_socket: add support for cgroupsv2
        - nftables: add catch-all set element - special element used to
          define a default action in case normal lookup missed
        - use net_generic infra in many modules to avoid allocating
          per-ns memory unnecessarily

   - xps: improve the xps handling to avoid potential out-of-bound
     accesses and use-after-free when XPS change race with other
     re-configuration under traffic

   - add a config knob to turn off per-cpu netdev refcnt to catch
     underflows in testing

  Device APIs:

   - add WWAN subsystem to organize the WWAN interfaces better and
     hopefully start driving towards more unified and vendor-
     independent APIs

   - ethtool:
        - add interface for reading IEEE MIB stats (incl. mlx5 and bnxt
          support)
        - allow network drivers to dump arbitrary SFP EEPROM data,
          current offset+length API was a poor fit for modern SFP which
          define EEPROM in terms of pages (incl. mlx5 support)

   - act_police, flow_offload: add support for packet-per-second
     policing (incl. offload for nfp)

   - psample: add additional metadata attributes like transit delay for
     packets sampled from switch HW (and corresponding egress and
     policy-based sampling in the mlxsw driver)

   - dsa: improve support for sandwiched LAGs with bridge and DSA

   - netfilter:
        - flowtable: use direct xmit in topologies with IP forwarding,
          bridging, vlans etc.
        - nftables: counter hardware offload support

   - Bluetooth:
        - improvements for firmware download w/ Intel devices
        - add support for reading AOSP vendor capabilities
        - add support for virtio transport driver

   - mac80211:
        - allow concurrent monitor iface and ethernet rx decap
        - set priority and queue mapping for injected frames

   - phy: add support for Clause-45 PHY Loopback

   - pci/iov: add sysfs MSI-X vector assignment interface to distribute
     MSI-X resources to VFs (incl. mlx5 support)

  New hardware/drivers:

   - dsa: mv88e6xxx: add support for Marvell mv88e6393x - 11-port
     Ethernet switch with 8x 1-Gigabit Ethernet and 3x 10-Gigabit
     interfaces.

   - dsa: support for legacy Broadcom tags used on BCM5325, BCM5365 and
     BCM63xx switches

   - Microchip KSZ8863 and KSZ8873; 3x 10/100Mbps Ethernet switches

   - ath11k: support for QCN9074 a 802.11ax device

   - Bluetooth: Broadcom BCM4330 and BMC4334

   - phy: Marvell 88X2222 transceiver support

   - mdio: add BCM6368 MDIO mux bus controller

   - r8152: support RTL8153 and RTL8156 (USB Ethernet) chips

   - mana: driver for Microsoft Azure Network Adapter (MANA)

   - Actions Semi Owl Ethernet MAC

   - can: driver for ETAS ES58X CAN/USB interfaces

  Pure driver changes:

   - add XDP support to: enetc, igc, stmmac

   - add AF_XDP support to: stmmac

   - virtio:
        - page_to_skb() use build_skb when there's sufficient tailroom
          (21% improvement for 1000B UDP frames)
        - support XDP even without dedicated Tx queues - share the Tx
          queues with the stack when necessary

   - mlx5:
        - flow rules: add support for mirroring with conntrack, matching
          on ICMP, GTP, flex filters and more
        - support packet sampling with flow offloads
        - persist uplink representor netdev across eswitch mode changes
        - allow coexistence of CQE compression and HW time-stamping
        - add ethtool extended link error state reporting

   - ice, iavf: support flow filters, UDP Segmentation Offload

   - dpaa2-switch:
        - move the driver out of staging
        - add spanning tree (STP) support
        - add rx copybreak support
        - add tc flower hardware offload on ingress traffic

   - ionic:
        - implement Rx page reuse
        - support HW PTP time-stamping

   - octeon: support TC hardware offloads - flower matching on ingress
     and egress ratelimitting.

   - stmmac:
        - add RX frame steering based on VLAN priority in tc flower
        - support frame preemption (FPE)
        - intel: add cross time-stamping freq difference adjustment

   - ocelot:
        - support forwarding of MRP frames in HW
        - support multiple bridges
        - support PTP Sync one-step timestamping

   - dsa: mv88e6xxx, dpaa2-switch: offload bridge port flags like
     learning, flooding etc.

   - ipa: add IPA v4.5, v4.9 and v4.11 support (Qualcomm SDX55, SM8350,
     SC7280 SoCs)

   - mt7601u: enable TDLS support

   - mt76:
        - add support for 802.3 rx frames (mt7915/mt7615)
        - mt7915 flash pre-calibration support
        - mt7921/mt7663 runtime power management fixes"

* tag 'net-next-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2451 commits)
  net: selftest: fix build issue if INET is disabled
  net: netrom: nr_in: Remove redundant assignment to ns
  net: tun: Remove redundant assignment to ret
  net: phy: marvell: add downshift support for M88E1240
  net: dsa: ksz: Make reg_mib_cnt a u8 as it never exceeds 255
  net/sched: act_ct: Remove redundant ct get and check
  icmp: standardize naming of RFC 8335 PROBE constants
  bpf, selftests: Update array map tests for per-cpu batched ops
  bpf: Add batched ops support for percpu array
  bpf: Implement formatted output helpers with bstr_printf
  seq_file: Add a seq_bprintf function
  sfc: adjust efx->xdp_tx_queue_count with the real number of initialized queues
  net:nfc:digital: Fix a double free in digital_tg_recv_dep_req
  net: fix a concurrency bug in l2tp_tunnel_register()
  net/smc: Remove redundant assignment to rc
  mpls: Remove redundant assignment to err
  llc2: Remove redundant assignment to rc
  net/tls: Remove redundant initialization of record
  rds: Remove redundant assignment to nr_sig
  dt-bindings: net: mdio-gpio: add compatible for microchip,mdio-smi0
  ...

28 files changed:
1  2 
Documentation/ABI/testing/sysfs-bus-pci
MAINTAINERS
arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
arch/arm64/boot/dts/rockchip/rk3328.dtsi
arch/x86/net/bpf_jit_comp.c
drivers/net/ethernet/dlink/sundance.c
drivers/s390/net/qeth_core_main.c
drivers/staging/Kconfig
drivers/staging/Makefile
drivers/staging/octeon/ethernet.c
include/linux/bpf.h
include/linux/pci.h
include/linux/sched.h
init/Kconfig
kernel/bpf/bpf_lsm.c
kernel/fork.c
kernel/sysctl.c
net/bluetooth/hci_request.c
net/bluetooth/smp.c
net/core/skbuff.c
net/mac80211/iface.c
net/nfc/nci/uart.c
net/rds/send.c
net/tipc/name_table.c
net/wireless/core.c
net/wireless/nl80211.c
tools/scripts/Makefile.include
tools/testing/selftests/lib.mk

diff --cc MAINTAINERS
Simple merge
                                        full-duplex;
                                };
                        };
 +
 +                      rcec@1f,0 {
 +                              reg = <0x00f800 0 0 0 0>;
 +                              /* IEP INT_A */
 +                              interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
 +                      };
                };
  
+               /* Integrated Endpoint Register Block */
+               ierb@1f0800000 {
+                       compatible = "fsl,ls1028a-enetc-ierb";
+                       reg = <0x01 0xf0800000 0x0 0x10000>;
+               };
                rcpm: power-controller@1e34040 {
                        compatible = "fsl,ls1028a-rcpm", "fsl,qoriq-rcpm-2.1+";
                        reg = <0x0 0x1e34040 0x0 0x1c>;
Simple merge
Simple merge
@@@ -1420,16 -1451,9 +1420,16 @@@ static void qeth_clear_output_buffer(st
        atomic_set(&buf->state, QETH_QDIO_BUF_EMPTY);
  }
  
 +static void qeth_free_out_buf(struct qeth_qdio_out_buffer *buf)
 +{
 +      if (buf->aob)
 +              qdio_release_aob(buf->aob);
 +      kmem_cache_free(qeth_qdio_outbuf_cache, buf);
 +}
 +
  static void qeth_tx_complete_pending_bufs(struct qeth_card *card,
                                          struct qeth_qdio_out_q *queue,
-                                         bool drain)
+                                         bool drain, int budget)
  {
        struct qeth_qdio_out_buffer *buf, *tmp;
  
                        if (drain)
                                qeth_notify_skbs(queue, buf,
                                                 TX_NOTIFY_GENERALERROR);
-                       qeth_tx_complete_buf(buf, drain, 0);
+                       qeth_tx_complete_buf(buf, drain, budget);
  
                        list_del(&buf->list_entry);
 -                      kmem_cache_free(qeth_qdio_outbuf_cache, buf);
 +                      qeth_free_out_buf(buf);
                }
        }
  }
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc init/Kconfig
Simple merge
Simple merge
diff --cc kernel/fork.c
Simple merge
diff --cc kernel/sysctl.c
Simple merge
Simple merge
@@@ -1386,9 -1389,9 +1389,9 @@@ static struct smp_chan *smp_chan_create
                goto zfree_smp;
        }
  
 -      smp->tfm_ecdh = crypto_alloc_kpp("ecdh", 0, 0);
 +      smp->tfm_ecdh = crypto_alloc_kpp("ecdh-nist-p256", 0, 0);
        if (IS_ERR(smp->tfm_ecdh)) {
-               BT_ERR("Unable to create ECDH crypto context");
+               bt_dev_err(hcon->hdev, "Unable to create ECDH crypto context");
                goto free_shash;
        }
  
@@@ -3281,9 -3296,9 +3296,9 @@@ static struct l2cap_chan *smp_add_cid(s
                return ERR_CAST(tfm_cmac);
        }
  
 -      tfm_ecdh = crypto_alloc_kpp("ecdh", 0, 0);
 +      tfm_ecdh = crypto_alloc_kpp("ecdh-nist-p256", 0, 0);
        if (IS_ERR(tfm_ecdh)) {
-               BT_ERR("Unable to create ECDH crypto context");
+               bt_dev_err(hdev, "Unable to create ECDH crypto context");
                crypto_free_shash(tfm_cmac);
                kfree_sensitive(smp);
                return ERR_CAST(tfm_ecdh);
Simple merge
Simple merge
@@@ -229,72 -229,6 +229,72 @@@ static void nci_uart_tty_wakeup(struct 
        nci_uart_tx_wakeup(nu);
  }
  
-               /* Chcek if packet is fully received */
 +/* -- Default recv_buf handler --
 + *
 + * This handler supposes that NCI frames are sent over UART link without any
 + * framing. It reads NCI header, retrieve the packet size and once all packet
 + * bytes are received it passes it to nci_uart driver for processing.
 + */
 +static int nci_uart_default_recv_buf(struct nci_uart *nu, const u8 *data,
 +                                   int count)
 +{
 +      int chunk_len;
 +
 +      if (!nu->ndev) {
 +              nfc_err(nu->tty->dev,
 +                      "receive data from tty but no NCI dev is attached yet, drop buffer\n");
 +              return 0;
 +      }
 +
 +      /* Decode all incoming data in packets
 +       * and enqueue then for processing.
 +       */
 +      while (count > 0) {
 +              /* If this is the first data of a packet, allocate a buffer */
 +              if (!nu->rx_skb) {
 +                      nu->rx_packet_len = -1;
 +                      nu->rx_skb = nci_skb_alloc(nu->ndev,
 +                                                 NCI_MAX_PACKET_SIZE,
 +                                                 GFP_ATOMIC);
 +                      if (!nu->rx_skb)
 +                              return -ENOMEM;
 +              }
 +
 +              /* Eat byte after byte till full packet header is received */
 +              if (nu->rx_skb->len < NCI_CTRL_HDR_SIZE) {
 +                      skb_put_u8(nu->rx_skb, *data++);
 +                      --count;
 +                      continue;
 +              }
 +
 +              /* Header was received but packet len was not read */
 +              if (nu->rx_packet_len < 0)
 +                      nu->rx_packet_len = NCI_CTRL_HDR_SIZE +
 +                              nci_plen(nu->rx_skb->data);
 +
 +              /* Compute how many bytes are missing and how many bytes can
 +               * be consumed.
 +               */
 +              chunk_len = nu->rx_packet_len - nu->rx_skb->len;
 +              if (count < chunk_len)
 +                      chunk_len = count;
 +              skb_put_data(nu->rx_skb, data, chunk_len);
 +              data += chunk_len;
 +              count -= chunk_len;
 +
++              /* Check if packet is fully received */
 +              if (nu->rx_packet_len == nu->rx_skb->len) {
 +                      /* Pass RX packet to driver */
 +                      if (nu->ops.recv(nu, nu->rx_skb) != 0)
 +                              nfc_err(nu->tty->dev, "corrupted RX packet\n");
 +                      /* Next packet will be a new one */
 +                      nu->rx_skb = NULL;
 +              }
 +      }
 +
 +      return 0;
 +}
 +
  /* nci_uart_tty_receive()
   *
   *     Called by tty low level driver when receive data is
diff --cc net/rds/send.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge