Merge tag 'net-next-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next

Pull networking updates from Paolo Abeni:
 "Core:

   - Increase size limits for to-be-sent skb frag allocations. This
     allows tun, tap devices and packet sockets to better cope with
     large writes operations

   - Store netdevs in an xarray, to simplify iterating over netdevs

   - Refactor nexthop selection for multipath routes

   - Improve sched class lifetime handling

   - Add backup nexthop ID support for bridge

   - Implement drop reasons support in openvswitch

   - Several data races annotations and fixes

   - Constify the sk parameter of routing functions

   - Prepend kernel version to netconsole message

  Protocols:

   - Implement support for TCP probing the peer being under memory
     pressure

   - Remove hard coded limitation on IPv6 specific info placement inside
     the socket struct

   - Get rid of sysctl_tcp_adv_win_scale and use an auto-estimated per
     socket scaling factor

   - Scaling-up the IPv6 expired route GC via a separated list of
     expiring routes

   - In-kernel support for the TLS alert protocol

   - Better support for UDP reuseport with connected sockets

   - Add NEXT-C-SID support for SRv6 End.X behavior, reducing the SR
     header size

   - Get rid of additional ancillary per MPTCP connection struct socket

   - Implement support for BPF-based MPTCP packet schedulers

   - Format MPTCP subtests selftests results in TAP

   - Several new SMC 2.1 features including unique experimental options,
     max connections per lgr negotiation, max links per lgr negotiation

  BPF:

   - Multi-buffer support in AF_XDP

   - Add multi uprobe BPF links for attaching multiple uprobes and usdt
     probes, which is significantly faster and saves extra fds

   - Implement an fd-based tc BPF attach API (TCX) and BPF link support
     on top of it

   - Add SO_REUSEPORT support for TC bpf_sk_assign

   - Support new instructions from cpu v4 to simplify the generated code
     and feature completeness, for x86, arm64, riscv64

   - Support defragmenting IPv(4|6) packets in BPF

   - Teach verifier actual bounds of bpf_get_smp_processor_id() and fix
     perf+libbpf issue related to custom section handling

   - Introduce bpf map element count and enable it for all program types

   - Add a BPF hook in sys_socket() to change the protocol ID from
     IPPROTO_TCP to IPPROTO_MPTCP to cover migration for legacy

   - Introduce bpf_me_mcache_free_rcu() and fix OOM under stress

   - Add uprobe support for the bpf_get_func_ip helper

   - Check skb ownership against full socket

   - Support for up to 12 arguments in BPF trampoline

   - Extend link_info for kprobe_multi and perf_event links

  Netfilter:

   - Speed-up process exit by aborting ruleset validation if a fatal
     signal is pending

   - Allow NLA_POLICY_MASK to be used with BE16/BE32 types

  Driver API:

   - Page pool optimizations, to improve data locality and cache usage

   - Introduce ndo_hwtstamp_get() and ndo_hwtstamp_set() to avoid the
     need for raw ioctl() handling in drivers

   - Simplify genetlink dump operations (doit/dumpit) providing them the
     common information already populated in struct genl_info

   - Extend and use the yaml devlink specs to [re]generate the split ops

   - Introduce devlink selective dumps, to allow SF filtering SF based
     on handle and other attributes

   - Add yaml netlink spec for netlink-raw families, allow route, link
     and address related queries via the ynl tool

   - Remove phylink legacy mode support

   - Support offload LED blinking to phy

   - Add devlink port function attributes for IPsec

  New hardware / drivers:

   - Ethernet:
      - Broadcom ASP 2.0 (72165) ethernet controller
      - MediaTek MT7988 SoC
      - Texas Instruments AM654 SoC
      - Texas Instruments IEP driver
      - Atheros qca8081 phy
      - Marvell 88Q2110 phy
      - NXP TJA1120 phy

   - WiFi:
      - MediaTek mt7981 support

   - Can:
      - Kvaser SmartFusion2 PCI Express devices
      - Allwinner T113 controllers
      - Texas Instruments tcan4552/4553 chips

   - Bluetooth:
      - Intel Gale Peak
      - Qualcomm WCN3988 and WCN7850
      - NXP AW693 and IW624
      - Mediatek MT2925

  Drivers:

   - Ethernet NICs:
      - nVidia/Mellanox:
         - mlx5:
            - support UDP encapsulation in packet offload mode
            - IPsec packet offload support in eswitch mode
            - improve aRFS observability by adding new set of counters
            - extends MACsec offload support to cover RoCE traffic
            - dynamic completion EQs
         - mlx4:
            - convert to use auxiliary bus instead of custom interface
              logic
      - Intel
         - ice:
            - implement switchdev bridge offload, even for LAG
              interfaces
            - implement SRIOV support for LAG interfaces
         - igc:
            - add support for multiple in-flight TX timestamps
      - Broadcom:
         - bnxt:
            - use the unified RX page pool buffers for XDP and non-XDP
            - use the NAPI skb allocation cache
      - OcteonTX2:
         - support Round Robin scheduling HTB offload
         - TC flower offload support for SPI field
      - Freescale:
         - add XDP_TX feature support
      - AMD:
         - ionic: add support for PCI FLR event
         - sfc:
            - basic conntrack offload
            - introduce eth, ipv4 and ipv6 pedit offloads
      - ST Microelectronics:
         - stmmac: maximze PTP timestamping resolution

   - Virtual NICs:
      - Microsoft vNIC:
         - batch ringing RX queue doorbell on receiving packets
         - add page pool for RX buffers
      - Virtio vNIC:
         - add per queue interrupt coalescing support
      - Google vNIC:
         - add queue-page-list mode support

   - Ethernet high-speed switches:
      - nVidia/Mellanox (mlxsw):
         - add port range matching tc-flower offload
         - permit enslavement to netdevices with uppers

   - Ethernet embedded switches:
      - Marvell (mv88e6xxx):
         - convert to phylink_pcs
      - Renesas:
         - r8A779fx: add speed change support
         - rzn1: enables vlan support

   - Ethernet PHYs:
      - convert mv88e6xxx to phylink_pcs

   - WiFi:
      - Qualcomm Wi-Fi 7 (ath12k):
         - extremely High Throughput (EHT) PHY support
      - RealTek (rtl8xxxu):
         - enable AP mode for: RTL8192FU, RTL8710BU (RTL8188GU),
           RTL8192EU and RTL8723BU
      - RealTek (rtw89):
         - Introduce Time Averaged SAR (TAS) support

   - Connector:
      - support for event filtering"

* tag 'net-next-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1806 commits)
  net: ethernet: mtk_wed: minor change in wed_{tx,rx}info_show
  net: ethernet: mtk_wed: add some more info in wed_txinfo_show handler
  net: stmmac: clarify difference between "interface" and "phy_interface"
  r8152: add vendor/device ID pair for D-Link DUB-E250
  devlink: move devlink_notify_register/unregister() to dev.c
  devlink: move small_ops definition into netlink.c
  devlink: move tracepoint definitions into core.c
  devlink: push linecard related code into separate file
  devlink: push rate related code into separate file
  devlink: push trap related code into separate file
  devlink: use tracepoint_enabled() helper
  devlink: push region related code into separate file
  devlink: push param related code into separate file
  devlink: push resource related code into separate file
  devlink: push dpipe related code into separate file
  devlink: move and rename devlink_dpipe_send_and_alloc_skb() helper
  devlink: push shared buffer related code into separate file
  devlink: push port related code into separate file
  devlink: push object register/unregister notifications into separate helpers
  inet: fix IP_TRANSPARENT error handling
  ...
This commit is contained in:
Linus Torvalds
2023-08-29 11:33:01 -07:00
1855 changed files with 109685 additions and 46162 deletions

View File

@@ -6,7 +6,86 @@
#define _TRACE_HANDSHAKE_H
#include <linux/net.h>
#include <net/tls_prot.h>
#include <linux/tracepoint.h>
#include <trace/events/net_probe_common.h>
#define TLS_RECORD_TYPE_LIST \
record_type(CHANGE_CIPHER_SPEC) \
record_type(ALERT) \
record_type(HANDSHAKE) \
record_type(DATA) \
record_type(HEARTBEAT) \
record_type(TLS12_CID) \
record_type_end(ACK)
#undef record_type
#undef record_type_end
#define record_type(x) TRACE_DEFINE_ENUM(TLS_RECORD_TYPE_##x);
#define record_type_end(x) TRACE_DEFINE_ENUM(TLS_RECORD_TYPE_##x);
TLS_RECORD_TYPE_LIST
#undef record_type
#undef record_type_end
#define record_type(x) { TLS_RECORD_TYPE_##x, #x },
#define record_type_end(x) { TLS_RECORD_TYPE_##x, #x }
#define show_tls_content_type(type) \
__print_symbolic(type, TLS_RECORD_TYPE_LIST)
TRACE_DEFINE_ENUM(TLS_ALERT_LEVEL_WARNING);
TRACE_DEFINE_ENUM(TLS_ALERT_LEVEL_FATAL);
#define show_tls_alert_level(level) \
__print_symbolic(level, \
{ TLS_ALERT_LEVEL_WARNING, "Warning" }, \
{ TLS_ALERT_LEVEL_FATAL, "Fatal" })
#define TLS_ALERT_DESCRIPTION_LIST \
alert_description(CLOSE_NOTIFY) \
alert_description(UNEXPECTED_MESSAGE) \
alert_description(BAD_RECORD_MAC) \
alert_description(RECORD_OVERFLOW) \
alert_description(HANDSHAKE_FAILURE) \
alert_description(BAD_CERTIFICATE) \
alert_description(UNSUPPORTED_CERTIFICATE) \
alert_description(CERTIFICATE_REVOKED) \
alert_description(CERTIFICATE_EXPIRED) \
alert_description(CERTIFICATE_UNKNOWN) \
alert_description(ILLEGAL_PARAMETER) \
alert_description(UNKNOWN_CA) \
alert_description(ACCESS_DENIED) \
alert_description(DECODE_ERROR) \
alert_description(DECRYPT_ERROR) \
alert_description(TOO_MANY_CIDS_REQUESTED) \
alert_description(PROTOCOL_VERSION) \
alert_description(INSUFFICIENT_SECURITY) \
alert_description(INTERNAL_ERROR) \
alert_description(INAPPROPRIATE_FALLBACK) \
alert_description(USER_CANCELED) \
alert_description(MISSING_EXTENSION) \
alert_description(UNSUPPORTED_EXTENSION) \
alert_description(UNRECOGNIZED_NAME) \
alert_description(BAD_CERTIFICATE_STATUS_RESPONSE) \
alert_description(UNKNOWN_PSK_IDENTITY) \
alert_description(CERTIFICATE_REQUIRED) \
alert_description_end(NO_APPLICATION_PROTOCOL)
#undef alert_description
#undef alert_description_end
#define alert_description(x) TRACE_DEFINE_ENUM(TLS_ALERT_DESC_##x);
#define alert_description_end(x) TRACE_DEFINE_ENUM(TLS_ALERT_DESC_##x);
TLS_ALERT_DESCRIPTION_LIST
#undef alert_description
#undef alert_description_end
#define alert_description(x) { TLS_ALERT_DESC_##x, #x },
#define alert_description_end(x) { TLS_ALERT_DESC_##x, #x }
#define show_tls_alert_description(desc) \
__print_symbolic(desc, TLS_ALERT_DESCRIPTION_LIST)
DECLARE_EVENT_CLASS(handshake_event_class,
TP_PROTO(
@@ -106,6 +185,47 @@ DECLARE_EVENT_CLASS(handshake_error_class,
), \
TP_ARGS(net, req, sk, err))
DECLARE_EVENT_CLASS(handshake_alert_class,
TP_PROTO(
const struct sock *sk,
unsigned char level,
unsigned char description
),
TP_ARGS(sk, level, description),
TP_STRUCT__entry(
/* sockaddr_in6 is always bigger than sockaddr_in */
__array(__u8, saddr, sizeof(struct sockaddr_in6))
__array(__u8, daddr, sizeof(struct sockaddr_in6))
__field(unsigned int, netns_ino)
__field(unsigned long, level)
__field(unsigned long, description)
),
TP_fast_assign(
const struct inet_sock *inet = inet_sk(sk);
memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));
memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));
TP_STORE_ADDR_PORTS(__entry, inet, sk);
__entry->netns_ino = sock_net(sk)->ns.inum;
__entry->level = level;
__entry->description = description;
),
TP_printk("src=%pISpc dest=%pISpc %s: %s",
__entry->saddr, __entry->daddr,
show_tls_alert_level(__entry->level),
show_tls_alert_description(__entry->description)
)
);
#define DEFINE_HANDSHAKE_ALERT(name) \
DEFINE_EVENT(handshake_alert_class, name, \
TP_PROTO( \
const struct sock *sk, \
unsigned char level, \
unsigned char description \
), \
TP_ARGS(sk, level, description))
/*
* Request lifetime events
@@ -154,6 +274,46 @@ DEFINE_HANDSHAKE_ERROR(handshake_cmd_accept_err);
DEFINE_HANDSHAKE_FD_EVENT(handshake_cmd_done);
DEFINE_HANDSHAKE_ERROR(handshake_cmd_done_err);
/*
* TLS Record events
*/
TRACE_EVENT(tls_contenttype,
TP_PROTO(
const struct sock *sk,
unsigned char type
),
TP_ARGS(sk, type),
TP_STRUCT__entry(
/* sockaddr_in6 is always bigger than sockaddr_in */
__array(__u8, saddr, sizeof(struct sockaddr_in6))
__array(__u8, daddr, sizeof(struct sockaddr_in6))
__field(unsigned int, netns_ino)
__field(unsigned long, type)
),
TP_fast_assign(
const struct inet_sock *inet = inet_sk(sk);
memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));
memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));
TP_STORE_ADDR_PORTS(__entry, inet, sk);
__entry->netns_ino = sock_net(sk)->ns.inum;
__entry->type = type;
),
TP_printk("src=%pISpc dest=%pISpc %s",
__entry->saddr, __entry->daddr,
show_tls_content_type(__entry->type)
)
);
/*
* TLS Alert events
*/
DEFINE_HANDSHAKE_ALERT(tls_alert_send);
DEFINE_HANDSHAKE_ALERT(tls_alert_recv);
#endif /* _TRACE_HANDSHAKE_H */
#include <trace/define_trace.h>

View File

@@ -9,7 +9,7 @@
#include <linux/tracepoint.h>
#include <trace/events/mmflags.h>
#include <net/page_pool.h>
#include <net/page_pool/types.h>
TRACE_EVENT(page_pool_release,

View File

@@ -9,6 +9,7 @@
#include <linux/filter.h>
#include <linux/tracepoint.h>
#include <linux/bpf.h>
#include <net/xdp.h>
#define __XDP_ACT_MAP(FN) \
FN(ABORTED) \
@@ -404,6 +405,23 @@ TRACE_EVENT(mem_return_failed,
)
);
TRACE_EVENT(bpf_xdp_link_attach_failed,
TP_PROTO(const char *msg),
TP_ARGS(msg),
TP_STRUCT__entry(
__string(msg, msg)
),
TP_fast_assign(
__assign_str(msg, msg);
),
TP_printk("errmsg=%s", __get_str(msg))
);
#endif /* _TRACE_XDP_H */
#include <trace/define_trace.h>