Skip to content

Commit 0ad9617

Browse files
committed
Merge tag 'net-next-6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
Pull networking updates from Paolo Abeni: "This is slightly smaller than usual, with the most interesting work being still around RTNL scope reduction. Core: - More core refactoring to reduce the RTNL lock contention, including preparatory work for the per-network namespace RTNL lock, replacing RTNL lock with a per device-one to protect NAPI-related net device data and moving synchronize_net() calls outside such lock. - Extend drop reasons usage, adding net scheduler, AF_UNIX, bridge and more specific TCP coverage. - Reduce network namespace tear-down time by removing per-subsystems synchronize_net() in tipc and sched. - Add flow label selector support for fib rules, allowing traffic redirection based on such header field. Netfilter: - Do not remove netdev basechain when last device is gone, allowing netdev basechains without devices. - Revisit the flowtable teardown strategy, dealing better with fin, reset and re-open events. - Scale-up IP-vs connection dumping by avoiding linear search on each restart. Protocols: - A significant XDP socket refactor, consolidating and optimizing several helpers into the core - Better scaling of ICMP rate-limiting, by removing false-sharing in inet peers handling. - Introduces netlink notifications for multicast IPv4 and IPv6 address changes. - Add ipsec support for IP-TFS/AggFrag encapsulation, allowing aggregation and fragmentation of the inner IP. - Add sysctl to configure TIME-WAIT reuse delay for TCP sockets, to avoid local port exhaustion issues when the average connection lifetime is very short. - Support updating keys (re-keying) for connections using kernel TLS (for TLS 1.3 only). - Support ipv4-mapped ipv6 address clients in smc-r v2. - Add support for jumbo data packet transmission in RxRPC sockets, gluing multiple data packets in a single UDP packet. - Support RxRPC RACK-TLP to manage packet loss and retransmission in conjunction with the congestion control algorithm. Driver API: - Introduce a unified and structured interface for reporting PHY statistics, exposing consistent data across different H/W via ethtool. - Make timestamping selectable, allow the user to select the desired hwtstamp provider (PHY or MAC) administratively. - Add support for configuring a header-data-split threshold (HDS) value via ethtool, to deal with partial or buggy H/W implementation. - Consolidate DSA drivers Energy Efficiency Ethernet support. - Add EEE management to phylink, making use of the phylib implementation. - Add phylib support for in-band capabilities negotiation. - Simplify how phylib-enabled mac drivers expose the supported interfaces. Tests and tooling: - Make the YNL tool package-friendly to make it easier to deploy it separately from the kernel. - Increase TCP selftest coverage importing several packetdrill test-cases. - Regenerate the ethtool uapi header from the YNL spec, to ease maintenance and future development. - Add YNL support for decoding the link types used in net self-tests, allowing a single build to run both net and drivers/net. Drivers: - Ethernet high-speed NICs: - nVidia/Mellanox (mlx5): - add cross E-Switch QoS support - add SW Steering support for ConnectX-8 - implement support for HW-Managed Flow Steering, improving the rule deletion/insertion rate - support for multi-host LAG - Intel (ixgbe, ice, igb): - ice: add support for devlink health events - ixgbe: add initial support for E610 chipset variant - igb: add support for AF_XDP zero-copy - Meta: - add support for basic RSS config - allow changing the number of channels - add hardware monitoring support - Broadcom (bnxt): - implement TCP data split and HDS threshold ethtool support, enabling Device Memory TCP. - Marvell Octeon: - implement egress ipsec offload support for the cn10k family - Hisilicon (HIBMC): - implement unicast MAC filtering - Ethernet NICs embedded and virtual: - Convert UDP tunnel drivers to NETDEV_PCPU_STAT_DSTATS, avoiding contented atomic operations for drop counters - Freescale: - quicc: phylink conversion - enetc: support Tx and Rx checksum offload and improve TSO performances - MediaTek: - airoha: introduce support for ETS and HTB Qdisc offload - Microchip: - lan78XX USB: preparation work for phylink conversion - Synopsys (stmmac): - support DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 - refactor EEE support to leverage the new driver API - optimize DMA and cache access to increase raw RX performances by 40% - TI: - icssg-prueth: add multicast filtering support for VLAN interface - netkit: - add ability to configure head/tailroom - VXLAN: - accepts packets with user-defined reserved bit - Ethernet switches: - Microchip: - lan969x: add RGMII support - lan969x: improve TX and RX performance using the FDMA engine - nVidia/Mellanox: - move Tx header handling to PCI driver, to ease XDP support - Ethernet PHYs: - Texas Instruments DP83822: - add support for GPIO2 clock output - Realtek: - 8169: add support for RTL8125D rev.b - rtl822x: add hwmon support for the temperature sensor - Microchip: - add support for RDS PTP hardware - consolidate periodic output signal generation - CAN: - several DT-bindings to DT schema conversions - tcan4x5x: - add HW standby support - support nWKRQ voltage selection - kvaser: - allowing Bus Error Reporting runtime configuration - WiFi: - the on-going Multi-Link Operation (MLO) effort continues, affecting both the stack and in drivers - mac80211/cfg80211: - Emergency Preparedness Communication Services (EPCS) station mode support - support for adding and removing station links for MLO - add support for WiFi 7/EHT mesh over 320 MHz channels - report Tx power info for each link - RealTek (rtw88): - enable USB Rx aggregation and USB 3 to improve performance - LED support - RealTek (rtw89): - refactor power save to support Multi-Link Operations - add support for RTL8922AE-VS variant - MediaTek (mt76): - single wiphy multiband support (preparation for MLO) - p2p device support - add TP-Link TXE50UH USB adapter support - Qualcomm (ath10k): - support for the QCA6698AQ IP core - Qualcomm (ath12k): - enable MLO for QCN9274 - Bluetooth: - Allow sysfs to trigger hdev reset, to allow recovering devices not responsive from user-space - MediaTek: add support for MT7922, MT7925, MT7921e devices - Realtek: add support for RTL8851BE devices - Qualcomm: add support for WCN785x devices - ISO: allow BIG re-sync" * tag 'net-next-6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1386 commits) net/rose: prevent integer overflows in rose_setsockopt() net: phylink: fix regression when binding a PHY net: ethernet: ti: am65-cpsw: streamline TX queue creation and cleanup net: ethernet: ti: am65-cpsw: streamline RX queue creation and cleanup net: ethernet: ti: am65-cpsw: ensure proper channel cleanup in error path ipv6: Convert inet6_rtm_deladdr() to per-netns RTNL. ipv6: Convert inet6_rtm_newaddr() to per-netns RTNL. ipv6: Move lifetime validation to inet6_rtm_newaddr(). ipv6: Set cfg.ifa_flags before device lookup in inet6_rtm_newaddr(). ipv6: Pass dev to inet6_addr_add(). ipv6: Convert inet6_ioctl() to per-netns RTNL. ipv6: Hold rtnl_net_lock() in addrconf_init() and addrconf_cleanup(). ipv6: Hold rtnl_net_lock() in addrconf_dad_work(). ipv6: Hold rtnl_net_lock() in addrconf_verify_work(). ipv6: Convert net.ipv6.conf.${DEV}.XXX sysctl to per-netns RTNL. ipv6: Add __in6_dev_get_rtnl_net(). net: stmmac: Drop redundant skb_mark_for_recycle() for SKB frags net: mii: Fix the Speed display when the network cable is not connected sysctl net: Remove macro checks for CONFIG_SYSCTL eth: bnxt: update header sizing defaults ...
2 parents 5f53766 + cf33d96 commit 0ad9617

File tree

1,383 files changed

+63625
-18819
lines changed

Some content is hidden

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

1,383 files changed

+63625
-18819
lines changed

.mailmap

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,13 @@ Anirudh Ghayal <[email protected]> <[email protected]>
8383
8484
8585
86+
87+
88+
89+
90+
91+
92+
8693
8794
Archit Taneja <[email protected]>
8895
@@ -430,6 +437,8 @@ Marcin Nowakowski <[email protected]> <[email protected]>
430437
431438
432439
Marek Behún <[email protected]> Marek Behun <[email protected]>
440+
441+
433442
Mark Brown <[email protected]>
434443
435444
Markus Schneider-Pargmann <[email protected]> <[email protected]>
@@ -532,6 +541,8 @@ Oleksij Rempel <[email protected]> <[email protected]>
532541
533542
Oleksij Rempel <[email protected]>
534543
544+
545+
535546
536547
537548
@@ -643,6 +654,11 @@ Simona Vetter <[email protected]> <[email protected]>
643654
644655
645656
Simon Kelley <[email protected]>
657+
658+
659+
660+
661+
646662
Sricharan Ramabadhran <[email protected]> <[email protected]>
647663
648664
@@ -663,6 +679,11 @@ Sudarshan Rajagopalan <[email protected]> <[email protected]>
663679
Sudeep Holla <[email protected]> Sudeep KarkadaNagesha <[email protected]>
664680
Sumit Semwal <[email protected]>
665681
682+
683+
684+
685+
686+
666687
Takashi YOSHII <[email protected]>
667688
Tamizh Chelvam Raja <[email protected]> <[email protected]>
668689

Documentation/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
104104
YNL_INDEX:=$(srctree)/Documentation/networking/netlink_spec/index.rst
105105
YNL_RST_DIR:=$(srctree)/Documentation/networking/netlink_spec
106106
YNL_YAML_DIR:=$(srctree)/Documentation/netlink/specs
107-
YNL_TOOL:=$(srctree)/tools/net/ynl/ynl-gen-rst.py
107+
YNL_TOOL:=$(srctree)/tools/net/ynl/pyynl/ynl_gen_rst.py
108108

109109
YNL_RST_FILES_TMP := $(patsubst %.yaml,%.rst,$(wildcard $(YNL_YAML_DIR)/*.yaml))
110110
YNL_RST_FILES := $(patsubst $(YNL_YAML_DIR)%,$(YNL_RST_DIR)%, $(YNL_RST_FILES_TMP))

Documentation/core-api/packing.rst

Lines changed: 113 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,119 @@ Intended use
227227

228228
Drivers that opt to use this API first need to identify which of the above 3
229229
quirk combinations (for a total of 8) match what the hardware documentation
230-
describes. Then they should wrap the packing() function, creating a new
231-
xxx_packing() that calls it using the proper QUIRK_* one-hot bits set.
230+
describes.
231+
232+
There are 3 supported usage patterns, detailed below.
233+
234+
packing()
235+
^^^^^^^^^
236+
237+
This API function is deprecated.
232238

233239
The packing() function returns an int-encoded error code, which protects the
234240
programmer against incorrect API use. The errors are not expected to occur
235-
during runtime, therefore it is reasonable for xxx_packing() to return void
236-
and simply swallow those errors. Optionally it can dump stack or print the
237-
error description.
241+
during runtime, therefore it is reasonable to wrap packing() into a custom
242+
function which returns void and swallows those errors. Optionally it can
243+
dump stack or print the error description.
244+
245+
.. code-block:: c
246+
247+
void my_packing(void *buf, u64 *val, int startbit, int endbit,
248+
size_t len, enum packing_op op)
249+
{
250+
int err;
251+
252+
/* Adjust quirks accordingly */
253+
err = packing(buf, val, startbit, endbit, len, op, QUIRK_LSW32_IS_FIRST);
254+
if (likely(!err))
255+
return;
256+
257+
if (err == -EINVAL) {
258+
pr_err("Start bit (%d) expected to be larger than end (%d)\n",
259+
startbit, endbit);
260+
} else if (err == -ERANGE) {
261+
if ((startbit - endbit + 1) > 64)
262+
pr_err("Field %d-%d too large for 64 bits!\n",
263+
startbit, endbit);
264+
else
265+
pr_err("Cannot store %llx inside bits %d-%d (would truncate)\n",
266+
*val, startbit, endbit);
267+
}
268+
dump_stack();
269+
}
270+
271+
pack() and unpack()
272+
^^^^^^^^^^^^^^^^^^^
273+
274+
These are const-correct variants of packing(), and eliminate the last "enum
275+
packing_op op" argument.
276+
277+
Calling pack(...) is equivalent, and preferred, to calling packing(..., PACK).
278+
279+
Calling unpack(...) is equivalent, and preferred, to calling packing(..., UNPACK).
280+
281+
pack_fields() and unpack_fields()
282+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
283+
284+
The library exposes optimized functions for the scenario where there are many
285+
fields represented in a buffer, and it encourages consumer drivers to avoid
286+
repetitive calls to pack() and unpack() for each field, but instead use
287+
pack_fields() and unpack_fields(), which reduces the code footprint.
288+
289+
These APIs use field definitions in arrays of ``struct packed_field_u8`` or
290+
``struct packed_field_u16``, allowing consumer drivers to minimize the size
291+
of these arrays according to their custom requirements.
292+
293+
The pack_fields() and unpack_fields() API functions are actually macros which
294+
automatically select the appropriate function at compile time, based on the
295+
type of the fields array passed in.
296+
297+
An additional benefit over pack() and unpack() is that sanity checks on the
298+
field definitions are handled at compile time with ``BUILD_BUG_ON`` rather
299+
than only when the offending code is executed. These functions return void and
300+
wrapping them to handle unexpected errors is not necessary.
301+
302+
It is recommended, but not required, that you wrap your packed buffer into a
303+
structured type with a fixed size. This generally makes it easier for the
304+
compiler to enforce that the correct size buffer is used.
305+
306+
Here is an example of how to use the fields APIs:
307+
308+
.. code-block:: c
309+
310+
/* Ordering inside the unpacked structure is flexible and can be different
311+
* from the packed buffer. Here, it is optimized to reduce padding.
312+
*/
313+
struct data {
314+
u64 field3;
315+
u32 field4;
316+
u16 field1;
317+
u8 field2;
318+
};
319+
320+
#define SIZE 13
321+
322+
typdef struct __packed { u8 buf[SIZE]; } packed_buf_t;
323+
324+
static const struct packed_field_u8 fields[] = {
325+
PACKED_FIELD(100, 90, struct data, field1),
326+
PACKED_FIELD(90, 87, struct data, field2),
327+
PACKED_FIELD(86, 30, struct data, field3),
328+
PACKED_FIELD(29, 0, struct data, field4),
329+
};
330+
331+
void unpack_your_data(const packed_buf_t *buf, struct data *unpacked)
332+
{
333+
BUILD_BUG_ON(sizeof(*buf) != SIZE;
334+
335+
unpack_fields(buf, sizeof(*buf), unpacked, fields,
336+
QUIRK_LITTLE_ENDIAN);
337+
}
338+
339+
void pack_your_data(const struct data *unpacked, packed_buf_t *buf)
340+
{
341+
BUILD_BUG_ON(sizeof(*buf) != SIZE;
342+
343+
pack_fields(buf, sizeof(*buf), unpacked, fields,
344+
QUIRK_LITTLE_ENDIAN);
345+
}

Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,11 @@ unevaluatedProperties: false
166166
examples:
167167
- |
168168
ethmac: ethernet@c9410000 {
169-
compatible = "amlogic,meson-gxbb-dwmac", "snps,dwmac";
170-
reg = <0xc9410000 0x10000>, <0xc8834540 0x8>;
171-
interrupts = <8>;
172-
interrupt-names = "macirq";
173-
clocks = <&clk_eth>, <&clk_fclk_div2>, <&clk_mpll2>, <&clk_fclk_div2>;
174-
clock-names = "stmmaceth", "clkin0", "clkin1", "timing-adjustment";
175-
phy-mode = "rgmii";
169+
compatible = "amlogic,meson-gxbb-dwmac", "snps,dwmac";
170+
reg = <0xc9410000 0x10000>, <0xc8834540 0x8>;
171+
interrupts = <8>;
172+
interrupt-names = "macirq";
173+
clocks = <&clk_eth>, <&clk_fclk_div2>, <&clk_mpll2>, <&clk_fclk_div2>;
174+
clock-names = "stmmaceth", "clkin0", "clkin1", "timing-adjustment";
175+
phy-mode = "rgmii";
176176
};

Documentation/devicetree/bindings/net/asix,ax88178.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ examples:
6363
#size-cells = <0>;
6464
6565
ethernet@1 {
66-
compatible = "usbb95,772b";
67-
reg = <1>;
66+
compatible = "usbb95,772b";
67+
reg = <1>;
6868
};
6969
};
7070
};

Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,10 @@ properties:
101101
max-speed: true
102102

103103
firmware-name:
104-
description: specify the name of nvm firmware to load
104+
minItems: 1
105+
items:
106+
- description: specify the name of nvm firmware to load
107+
- description: specify the name of rampatch firmware to load
105108

106109
local-bd-address: true
107110

@@ -154,16 +157,11 @@ allOf:
154157
- qcom,wcn6750-bt
155158
then:
156159
required:
157-
- enable-gpios
158-
- swctrl-gpios
159-
- vddio-supply
160160
- vddaon-supply
161-
- vddbtcxmx-supply
162161
- vddrfacmn-supply
163162
- vddrfa0p8-supply
164163
- vddrfa1p7-supply
165164
- vddrfa1p2-supply
166-
- vddasd-supply
167165
- if:
168166
properties:
169167
compatible:

Documentation/devicetree/bindings/net/brcm,bcmgenet.yaml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,16 @@ examples:
8585
#size-cells = <1>;
8686
8787
mdio0: mdio@e14 {
88-
compatible = "brcm,genet-mdio-v4";
89-
#address-cells = <1>;
90-
#size-cells = <0>;
91-
reg = <0xe14 0x8>;
88+
compatible = "brcm,genet-mdio-v4";
89+
#address-cells = <1>;
90+
#size-cells = <0>;
91+
reg = <0xe14 0x8>;
9292
93-
phy1: ethernet-phy@1 {
93+
phy1: ethernet-phy@1 {
9494
max-speed = <1000>;
9595
reg = <1>;
9696
compatible = "ethernet-phy-ieee802.3-c22";
97-
};
97+
};
9898
};
9999
};
100100
@@ -110,10 +110,10 @@ examples:
110110
interrupts = <0x0 0x16 0x0>, <0x0 0x17 0x0>;
111111
112112
mdio1: mdio@e14 {
113-
compatible = "brcm,genet-mdio-v4";
114-
#address-cells = <1>;
115-
#size-cells = <0>;
116-
reg = <0xe14 0x8>;
113+
compatible = "brcm,genet-mdio-v4";
114+
#address-cells = <1>;
115+
#size-cells = <0>;
116+
reg = <0xe14 0x8>;
117117
};
118118
};
119119
@@ -129,15 +129,15 @@ examples:
129129
interrupts = <0x0 0x18 0x0>, <0x0 0x19 0x0>;
130130
131131
mdio2: mdio@e14 {
132-
compatible = "brcm,genet-mdio-v4";
133-
#address-cells = <1>;
134-
#size-cells = <0>;
135-
reg = <0xe14 0x8>;
132+
compatible = "brcm,genet-mdio-v4";
133+
#address-cells = <1>;
134+
#size-cells = <0>;
135+
reg = <0xe14 0x8>;
136136
137-
phy0: ethernet-phy@0 {
137+
phy0: ethernet-phy@0 {
138138
max-speed = <1000>;
139139
reg = <0>;
140140
compatible = "ethernet-phy-ieee802.3-c22";
141-
};
141+
};
142142
};
143143
};

Documentation/devicetree/bindings/net/brcm,mdio-mux-iproc.yaml

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -38,43 +38,43 @@ unevaluatedProperties: false
3838

3939
examples:
4040
- |
41-
mdio_mux_iproc: mdio-mux@66020000 {
41+
mdio-mux@66020000 {
4242
compatible = "brcm,mdio-mux-iproc";
4343
reg = <0x66020000 0x250>;
4444
#address-cells = <1>;
4545
#size-cells = <0>;
4646
4747
mdio@0 {
48-
reg = <0x0>;
49-
#address-cells = <1>;
50-
#size-cells = <0>;
51-
52-
pci_phy0: pci-phy@0 {
53-
compatible = "brcm,ns2-pcie-phy";
54-
reg = <0x0>;
55-
#phy-cells = <0>;
56-
};
48+
reg = <0x0>;
49+
#address-cells = <1>;
50+
#size-cells = <0>;
51+
52+
pci-phy@0 {
53+
compatible = "brcm,ns2-pcie-phy";
54+
reg = <0x0>;
55+
#phy-cells = <0>;
56+
};
5757
};
5858
5959
mdio@7 {
60-
reg = <0x7>;
61-
#address-cells = <1>;
62-
#size-cells = <0>;
63-
64-
pci_phy1: pci-phy@0 {
65-
compatible = "brcm,ns2-pcie-phy";
66-
reg = <0x0>;
67-
#phy-cells = <0>;
68-
};
60+
reg = <0x7>;
61+
#address-cells = <1>;
62+
#size-cells = <0>;
63+
64+
pci-phy@0 {
65+
compatible = "brcm,ns2-pcie-phy";
66+
reg = <0x0>;
67+
#phy-cells = <0>;
68+
};
6969
};
7070
7171
mdio@10 {
72-
reg = <0x10>;
73-
#address-cells = <1>;
74-
#size-cells = <0>;
72+
reg = <0x10>;
73+
#address-cells = <1>;
74+
#size-cells = <0>;
7575
76-
gphy0: eth-phy@10 {
77-
reg = <0x10>;
78-
};
76+
eth-phy@10 {
77+
reg = <0x10>;
78+
};
7979
};
8080
};

0 commit comments

Comments
 (0)