Skip to content

Commit fcc79e1

Browse files
committed
Merge tag 'net-next-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
Pull networking updates from Paolo Abeni: "The most significant set of changes is the per netns RTNL. The new behavior is disabled by default, regression risk should be contained. Notably the new config knob PTP_1588_CLOCK_VMCLOCK will inherit its default value from PTP_1588_CLOCK_KVM, as the first is intended to be a more reliable replacement for the latter. Core: - Started a very large, in-progress, effort to make the RTNL lock scope per network-namespace, thus reducing the lock contention significantly in the containerized use-case, comprising: - RCU-ified some relevant slices of the FIB control path - introduce basic per netns locking helpers - namespacified the IPv4 address hash table - remove rtnl_register{,_module}() in favour of rtnl_register_many() - refactor rtnl_{new,del,set}link() moving as much validation as possible out of RTNL lock - convert all phonet doit() and dumpit() handlers to RCU - convert IPv4 addresses manipulation to per-netns RTNL - convert virtual interface creation to per-netns RTNL the per-netns lock infrastructure is guarded by the CONFIG_DEBUG_NET_SMALL_RTNL knob, disabled by default ad interim. - Introduce NAPI suspension, to efficiently switching between busy polling (NAPI processing suspended) and normal processing. - Migrate the IPv4 routing input, output and control path from direct ToS usage to DSCP macros. This is a work in progress to make ECN handling consistent and reliable. - Add drop reasons support to the IPv4 rotue input path, allowing better introspection in case of packets drop. - Make FIB seqnum lockless, dropping RTNL protection for read access. - Make inet{,v6} addresses hashing less predicable. - Allow providing timestamp OPT_ID via cmsg, to correlate TX packets and timestamps Things we sprinkled into general kernel code: - Add small file operations for debugfs, to reduce the struct ops size. - Refactoring and optimization for the implementation of page_frag API, This is a preparatory work to consolidate the page_frag implementation. Netfilter: - Optimize set element transactions to reduce memory consumption - Extended netlink error reporting for attribute parser failure. - Make legacy xtables configs user selectable, giving users the option to configure iptables without enabling any other config. - Address a lot of false-positive RCU issues, pointed by recent CI improvements. BPF: - Put xsk sockets on a struct diet and add various cleanups. Overall, this helps to bump performance by 12% for some workloads. - Extend BPF selftests to increase coverage of XDP features in combination with BPF cpumap. - Optimize and homogenize bpf_csum_diff helper for all archs and also add a batch of new BPF selftests for it. - Extend netkit with an option to delegate skb->{mark,priority} scrubbing to its BPF program. - Make the bpf_get_netns_cookie() helper available also to tc(x) BPF programs. Protocols: - Introduces 4-tuple hash for connected udp sockets, speeding-up significantly connected sockets lookup. - Add a fastpath for some TCP timers that usually expires after close, the socket lock contention. - Add inbound and outbound xfrm state caches to speed up state lookups. - Avoid sending MPTCP advertisements on stale subflows, reducing risks on loosing them. - Make neighbours table flushing more scalable, maintaining per device neigh lists. Driver API: - Introduce a unified interface to configure transmission H/W shaping, and expose it to user-space via generic-netlink. - Add support for per-NAPI config via netlink. This makes napi configuration persistent across queues removal and re-creation. Requires driver updates, currently supported drivers are: nVidia/Mellanox mlx4 and mlx5, Broadcom brcm and Intel ice. - Add ethtool support for writing SFP / PHY firmware blocks. - Track RSS context allocation from ethtool core. - Implement support for mirroring to DSA CPU port, via TC mirror offload. - Consolidate FDB updates notification, to avoid duplicates on device-specific entries. - Expose DPLL clock quality level to the user-space. - Support master-slave PHY config via device tree. Tests and tooling: - forwarding: introduce deferred commands, to simplify the cleanup phase Drivers: - Updated several drivers - Amazon vNic, Google vNic, Microsoft vNic, Intel e1000e and Broadcom Tigon3 - to use netdev-genl to link the IRQs and queues to NAPI IDs, allowing busy polling and better introspection. - Ethernet high-speed NICs: - nVidia/Mellanox: - mlx5: - a large refactor to implement support for cross E-Switch scheduling - refactor H/W conter management to let it scale better - H/W GRO cleanups - Intel (100G, ice):: - add support for ethtool reset - implement support for per TX queue H/W shaping - AMD/Solarflare: - implement per device queue stats support - Broadcom (bnxt): - improve wildcard l4proto on IPv4/IPv6 ntuple rules - Marvell Octeon: - Add representor support for each Resource Virtualization Unit (RVU) device. - Hisilicon: - add support for the BMC Gigabit Ethernet - IBM (EMAC): - driver cleanup and modernization - Cisco (VIC): - raise the queues number limit to 256 - Ethernet virtual: - Google vNIC: - implement page pool support - macsec: - inherit lower device's features and TSO limits when offloading - virtio_net: - enable premapped mode by default - support for XDP socket(AF_XDP) zerocopy TX - wireguard: - set the TSO max size to be GSO_MAX_SIZE, to aggregate larger packets. - Ethernet NICs embedded and virtual: - Broadcom ASP: - enable software timestamping - Freescale: - add enetc4 PF driver - MediaTek: Airoha SoC: - implement BQL support - RealTek r8169: - enable TSO by default on r8168/r8125 - implement extended ethtool stats - Renesas AVB: - enable TX checksum offload - Synopsys (stmmac): - support header splitting for vlan tagged packets - move common code for DWMAC4 and DWXGMAC into a separate FPE module. - add dwmac driver support for T-HEAD TH1520 SoC - Synopsys (xpcs): - driver refactor and cleanup - TI: - icssg_prueth: add VLAN offload support - Xilinx emaclite: - add clock support - Ethernet switches: - Microchip: - implement support for the lan969x Ethernet switch family - add LAN9646 switch support to KSZ DSA driver - Ethernet PHYs: - Marvel: 88q2x: enable auto negotiation - Microchip: add support for LAN865X Rev B1 and LAN867X Rev C1/C2 - PTP: - Add support for the Amazon virtual clock device - Add PtP driver for s390 clocks - WiFi: - mac80211 - EHT 1024 aggregation size for transmissions - new operation to indicate that a new interface is to be added - support radio separation of multi-band devices - move wireless extension spy implementation to libiw - Broadcom: - brcmfmac: optional LPO clock support - Microchip: - add support for Atmel WILC3000 - Qualcomm (ath12k): - firmware coredump collection support - add debugfs support for a multitude of statistics - Qualcomm (ath5k): - Arcadyan ARV45XX AR2417 & Gigaset SX76[23] AR241[34]A support - Realtek: - rtw88: 8821au and 8812au USB adapters support - rtw89: add thermal protection - rtw89: fine tune BT-coexsitence to improve user experience - rtw89: firmware secure boot for WiFi 6 chip - Bluetooth - add Qualcomm WCN785x support for ids Foxconn 0xe0fc/0xe0f3 and 0x13d3:0x3623 - add Realtek RTL8852BE support for id Foxconn 0xe123 - add MediaTek MT7920 support for wireless module ids - btintel_pcie: add handshake between driver and firmware - btintel_pcie: add recovery mechanism - btnxpuart: add GPIO support to power save feature" * tag 'net-next-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1475 commits) mm: page_frag: fix a compile error when kernel is not compiled Documentation: tipc: fix formatting issue in tipc.rst selftests: nic_performance: Add selftest for performance of NIC driver selftests: nic_link_layer: Add selftest case for speed and duplex states selftests: nic_link_layer: Add link layer selftest for NIC driver bnxt_en: Add FW trace coredump segments to the coredump bnxt_en: Add a new ethtool -W dump flag bnxt_en: Add 2 parameters to bnxt_fill_coredump_seg_hdr() bnxt_en: Add functions to copy host context memory bnxt_en: Do not free FW log context memory bnxt_en: Manage the FW trace context memory bnxt_en: Allocate backing store memory for FW trace logs bnxt_en: Add a 'force' parameter to bnxt_free_ctx_mem() bnxt_en: Refactor bnxt_free_ctx_mem() bnxt_en: Add mem_valid bit to struct bnxt_ctx_mem_type bnxt_en: Update firmware interface spec to 1.10.3.85 selftests/bpf: Add some tests with sockmap SK_PASS bpf: fix recursive lock when verdict program return SK_PASS wireguard: device: support big tcp GSO wireguard: selftests: load nf_conntrack if not present ...
2 parents 6e95ef0 + dd72078 commit fcc79e1

File tree

1,754 files changed

+77307
-52092
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,754 files changed

+77307
-52092
lines changed

Documentation/admin-guide/kernel-parameters.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1553,6 +1553,7 @@
15531553
failslab=
15541554
fail_usercopy=
15551555
fail_page_alloc=
1556+
fail_skb_realloc=
15561557
fail_make_request=[KNL]
15571558
General fault injection mechanism.
15581559
Format: <interval>,<probability>,<space>,<times>

Documentation/core-api/packing.rst

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,77 @@ the more significant 4-byte word.
151151
We always think of our offsets as if there were no quirk, and we translate
152152
them afterwards, before accessing the memory region.
153153

154+
Note on buffer lengths not multiple of 4
155+
----------------------------------------
156+
157+
To deal with memory layout quirks where groups of 4 bytes are laid out "little
158+
endian" relative to each other, but "big endian" within the group itself, the
159+
concept of groups of 4 bytes is intrinsic to the packing API (not to be
160+
confused with the memory access, which is performed byte by byte, though).
161+
162+
With buffer lengths not multiple of 4, this means one group will be incomplete.
163+
Depending on the quirks, this may lead to discontinuities in the bit fields
164+
accessible through the buffer. The packing API assumes discontinuities were not
165+
the intention of the memory layout, so it avoids them by effectively logically
166+
shortening the most significant group of 4 octets to the number of octets
167+
actually available.
168+
169+
Example with a 31 byte sized buffer given below. Physical buffer offsets are
170+
implicit, and increase from left to right within a group, and from top to
171+
bottom within a column.
172+
173+
No quirks:
174+
175+
::
176+
177+
31 29 28 | Group 7 (most significant)
178+
27 26 25 24 | Group 6
179+
23 22 21 20 | Group 5
180+
19 18 17 16 | Group 4
181+
15 14 13 12 | Group 3
182+
11 10 9 8 | Group 2
183+
7 6 5 4 | Group 1
184+
3 2 1 0 | Group 0 (least significant)
185+
186+
QUIRK_LSW32_IS_FIRST:
187+
188+
::
189+
190+
3 2 1 0 | Group 0 (least significant)
191+
7 6 5 4 | Group 1
192+
11 10 9 8 | Group 2
193+
15 14 13 12 | Group 3
194+
19 18 17 16 | Group 4
195+
23 22 21 20 | Group 5
196+
27 26 25 24 | Group 6
197+
30 29 28 | Group 7 (most significant)
198+
199+
QUIRK_LITTLE_ENDIAN:
200+
201+
::
202+
203+
30 28 29 | Group 7 (most significant)
204+
24 25 26 27 | Group 6
205+
20 21 22 23 | Group 5
206+
16 17 18 19 | Group 4
207+
12 13 14 15 | Group 3
208+
8 9 10 11 | Group 2
209+
4 5 6 7 | Group 1
210+
0 1 2 3 | Group 0 (least significant)
211+
212+
QUIRK_LITTLE_ENDIAN | QUIRK_LSW32_IS_FIRST:
213+
214+
::
215+
216+
0 1 2 3 | Group 0 (least significant)
217+
4 5 6 7 | Group 1
218+
8 9 10 11 | Group 2
219+
12 13 14 15 | Group 3
220+
16 17 18 19 | Group 4
221+
20 21 22 23 | Group 5
222+
24 25 26 27 | Group 6
223+
28 29 30 | Group 7 (most significant)
224+
154225
Intended use
155226
------------
156227

Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,25 @@ properties:
3434
firmware-name:
3535
maxItems: 1
3636

37+
device-wakeup-gpios:
38+
maxItems: 1
39+
description:
40+
Host-To-Chip power save mechanism is driven by this GPIO
41+
connected to BT_WAKE_IN pin of the NXP chipset.
42+
3743
required:
3844
- compatible
3945

4046
additionalProperties: false
4147

4248
examples:
4349
- |
50+
#include <dt-bindings/gpio/gpio.h>
4451
serial {
4552
bluetooth {
4653
compatible = "nxp,88w8987-bt";
4754
fw-init-baudrate = <3000000>;
4855
firmware-name = "uartuart8987_bt_v0.bin";
56+
device-wakeup-gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
4957
};
5058
};

Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ properties:
3434
- microchip,ksz9563
3535
- microchip,ksz8563
3636
- microchip,ksz8567
37+
- microchip,lan9646
3738

3839
reset-gpios:
3940
description:
@@ -81,6 +82,26 @@ properties:
8182
interrupts:
8283
maxItems: 1
8384

85+
mdio:
86+
$ref: /schemas/net/mdio.yaml#
87+
unevaluatedProperties: false
88+
properties:
89+
mdio-parent-bus:
90+
$ref: /schemas/types.yaml#/definitions/phandle
91+
description:
92+
Phandle pointing to the MDIO bus controller connected to the
93+
secondary MDIO interface. This property should be used when
94+
the internal MDIO bus is accessed via a secondary MDIO
95+
interface rather than the primary management interface.
96+
97+
patternProperties:
98+
"^ethernet-phy@[0-9a-f]$":
99+
type: object
100+
$ref: /schemas/net/ethernet-phy.yaml#
101+
unevaluatedProperties: false
102+
description:
103+
Integrated PHY node
104+
84105
required:
85106
- compatible
86107
- reg
@@ -138,7 +159,6 @@ examples:
138159
139160
pinctrl-0 = <&pinctrl_spi_ksz>;
140161
cs-gpios = <&pioC 25 0>;
141-
id = <1>;
142162
143163
ksz9477: switch@0 {
144164
compatible = "microchip,ksz9477";

Documentation/devicetree/bindings/net/dsa/realtek.yaml

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ examples:
147147
#include <dt-bindings/interrupt-controller/irq.h>
148148
149149
platform {
150-
switch {
150+
ethernet-switch {
151151
compatible = "realtek,rtl8366rb";
152152
/* 22 = MDIO (has input reads), 21 = MDC (clock, output only) */
153153
mdc-gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
@@ -163,35 +163,35 @@ examples:
163163
#interrupt-cells = <1>;
164164
};
165165
166-
ports {
166+
ethernet-ports {
167167
#address-cells = <1>;
168168
#size-cells = <0>;
169-
port@0 {
169+
ethernet-port@0 {
170170
reg = <0>;
171171
label = "lan0";
172172
phy-handle = <&phy0>;
173173
};
174-
port@1 {
174+
ethernet-port@1 {
175175
reg = <1>;
176176
label = "lan1";
177177
phy-handle = <&phy1>;
178178
};
179-
port@2 {
179+
ethernet-port@2 {
180180
reg = <2>;
181181
label = "lan2";
182182
phy-handle = <&phy2>;
183183
};
184-
port@3 {
184+
ethernet-port@3 {
185185
reg = <3>;
186186
label = "lan3";
187187
phy-handle = <&phy3>;
188188
};
189-
port@4 {
189+
ethernet-port@4 {
190190
reg = <4>;
191191
label = "wan";
192192
phy-handle = <&phy4>;
193193
};
194-
port@5 {
194+
ethernet-port@5 {
195195
reg = <5>;
196196
ethernet = <&gmac0>;
197197
phy-mode = "rgmii";
@@ -241,7 +241,7 @@ examples:
241241
#include <dt-bindings/interrupt-controller/irq.h>
242242
243243
platform {
244-
switch {
244+
ethernet-switch {
245245
compatible = "realtek,rtl8365mb";
246246
mdc-gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>;
247247
mdio-gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
@@ -255,30 +255,30 @@ examples:
255255
#interrupt-cells = <1>;
256256
};
257257
258-
ports {
258+
ethernet-ports {
259259
#address-cells = <1>;
260260
#size-cells = <0>;
261-
port@0 {
261+
ethernet-port@0 {
262262
reg = <0>;
263263
label = "swp0";
264264
phy-handle = <&ethphy0>;
265265
};
266-
port@1 {
266+
ethernet-port@1 {
267267
reg = <1>;
268268
label = "swp1";
269269
phy-handle = <&ethphy1>;
270270
};
271-
port@2 {
271+
ethernet-port@2 {
272272
reg = <2>;
273273
label = "swp2";
274274
phy-handle = <&ethphy2>;
275275
};
276-
port@3 {
276+
ethernet-port@3 {
277277
reg = <3>;
278278
label = "swp3";
279279
phy-handle = <&ethphy3>;
280280
};
281-
port@6 {
281+
ethernet-port@6 {
282282
reg = <6>;
283283
ethernet = <&fec1>;
284284
phy-mode = "rgmii";
@@ -330,7 +330,7 @@ examples:
330330
#address-cells = <1>;
331331
#size-cells = <0>;
332332
333-
switch@29 {
333+
ethernet-switch@29 {
334334
compatible = "realtek,rtl8365mb";
335335
reg = <29>;
336336
@@ -344,36 +344,36 @@ examples:
344344
#interrupt-cells = <1>;
345345
};
346346
347-
ports {
347+
ethernet-ports {
348348
#address-cells = <1>;
349349
#size-cells = <0>;
350350
351-
port@0 {
351+
ethernet-port@0 {
352352
reg = <0>;
353353
label = "lan4";
354354
};
355355
356-
port@1 {
356+
ethernet-port@1 {
357357
reg = <1>;
358358
label = "lan3";
359359
};
360360
361-
port@2 {
361+
ethernet-port@2 {
362362
reg = <2>;
363363
label = "lan2";
364364
};
365365
366-
port@3 {
366+
ethernet-port@3 {
367367
reg = <3>;
368368
label = "lan1";
369369
};
370370
371-
port@4 {
371+
ethernet-port@4 {
372372
reg = <4>;
373373
label = "wan";
374374
};
375375
376-
port@7 {
376+
ethernet-port@7 {
377377
reg = <7>;
378378
ethernet = <&ethernet>;
379379
phy-mode = "rgmii";

Documentation/devicetree/bindings/net/ethernet-phy.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,27 @@ properties:
158158
Mark the corresponding energy efficient ethernet mode as
159159
broken and request the ethernet to stop advertising it.
160160

161+
timing-role:
162+
$ref: /schemas/types.yaml#/definitions/string
163+
enum:
164+
- forced-master
165+
- forced-slave
166+
- preferred-master
167+
- preferred-slave
168+
description: |
169+
Specifies the timing role of the PHY in the network link. This property is
170+
required for setups where the role must be explicitly assigned via the
171+
device tree due to limitations in hardware strapping or incorrect strap
172+
configurations.
173+
It is applicable to Single Pair Ethernet (1000/100/10Base-T1) and other
174+
PHY types, including 1000Base-T, where it controls whether the PHY should
175+
be a master (clock source) or a slave (clock receiver).
176+
177+
- 'forced-master': The PHY is forced to operate as a master.
178+
- 'forced-slave': The PHY is forced to operate as a slave.
179+
- 'preferred-master': Prefer the PHY to be master but allow negotiation.
180+
- 'preferred-slave': Prefer the PHY to be slave but allow negotiation.
181+
161182
pses:
162183
$ref: /schemas/types.yaml#/definitions/phandle-array
163184
maxItems: 1

Documentation/devicetree/bindings/net/fsl,enetc-mdio.yaml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,13 @@ maintainers:
2020

2121
properties:
2222
compatible:
23-
items:
24-
- enum:
25-
- pci1957,ee01
26-
- const: fsl,enetc-mdio
23+
oneOf:
24+
- items:
25+
- enum:
26+
- pci1957,ee01
27+
- const: fsl,enetc-mdio
28+
- items:
29+
- const: pci1131,ee00
2730

2831
reg:
2932
maxItems: 1

Documentation/devicetree/bindings/net/fsl,enetc.yaml

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,25 @@ maintainers:
2020

2121
properties:
2222
compatible:
23-
items:
23+
oneOf:
24+
- items:
25+
- enum:
26+
- pci1957,e100
27+
- const: fsl,enetc
2428
- enum:
25-
- pci1957,e100
26-
- const: fsl,enetc
29+
- pci1131,e101
2730

2831
reg:
2932
maxItems: 1
3033

34+
clocks:
35+
items:
36+
- description: MAC transmit/receive reference clock
37+
38+
clock-names:
39+
items:
40+
- const: ref
41+
3142
mdio:
3243
$ref: mdio.yaml
3344
unevaluatedProperties: false
@@ -40,6 +51,17 @@ required:
4051
allOf:
4152
- $ref: /schemas/pci/pci-device.yaml
4253
- $ref: ethernet-controller.yaml
54+
- if:
55+
not:
56+
properties:
57+
compatible:
58+
contains:
59+
enum:
60+
- pci1131,e101
61+
then:
62+
properties:
63+
clocks: false
64+
clock-names: false
4365

4466
unevaluatedProperties: false
4567

0 commit comments

Comments
 (0)