History

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

Pull networking fixes from Jakub Kicinski: "Including fixes from can, wireless and netfilter. Current release - regressions: - af_unix: fix task hung while purging oob_skb in GC - pds_core: do not try to run health-thread in VF path Current release - new code bugs: - sched: act_mirred: don't zero blockid when net device is being deleted Previous releases - regressions: - netfilter: - nat: restore default DNAT behavior - nf_tables: fix bidirectional offload, broken when unidirectional offload support was added - openvswitch: limit the number of recursions from action sets - eth: i40e: do not allow untrusted VF to remove administratively set MAC address Previous releases - always broken: - tls: fix races and bugs in use of async crypto - mptcp: prevent data races on some of the main socket fields, fix races in fastopen handling - dpll: fix possible deadlock during netlink dump operation - dsa: lan966x: fix crash when adding interface under a lag when some of the ports are disabled - can: j1939: prevent deadlock by changing j1939_socks_lock to rwlock Misc: - a handful of fixes and reliability improvements for selftests - fix sysfs documentation missing net/ in paths - finish the work of squashing the missing MODULE_DESCRIPTION() warnings in networking" * tag 'net-6.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (92 commits) net: fill in MODULE_DESCRIPTION()s for missing arcnet net: fill in MODULE_DESCRIPTION()s for mdio_devres net: fill in MODULE_DESCRIPTION()s for ppp net: fill in MODULE_DESCRIPTION()s for fddik/skfp net: fill in MODULE_DESCRIPTION()s for plip net: fill in MODULE_DESCRIPTION()s for ieee802154/fakelb net: fill in MODULE_DESCRIPTION()s for xen-netback net: ravb: Count packets instead of descriptors in GbEth RX path pppoe: Fix memory leak in pppoe_sendmsg() net: sctp: fix skb leak in sctp_inq_free() net: bcmasp: Handle RX buffer allocation failure net-timestamp: make sk_tskey more predictable in error path selftests: tls: increase the wait in poll_partial_rec_async ice: Add check for lport extraction to LAG init netfilter: nf_tables: fix bidirectional offload regression netfilter: nat: restore default DNAT behavior netfilter: nft_set_pipapo: fix missing : in kdoc igc: Remove temporary workaround igb: Fix string truncation warnings in igb_set_fw_version can: netlink: Fix TDCO calculation using the old data bittiming ...

Linus Torvalds committed 2 years ago

Commit 4f5e5092 parents cc9c4f0 c40c0d3129 files · +817 −489Browse files

Unified · Split

129 files
  1. .mailmap +5 −4
  2. Documentation/ABI/testing/sysfs-class-net-statistics +24 −24
  3. Documentation/netlink/specs/dpll.yaml +0 −4
  4. Documentation/networking/devlink/devlink-port.rst +1 −1
  5. Documentation/networking/net_cachelines/net_device.rst +2 −2
  6. Documentation/networking/net_cachelines/tcp_sock.rst +2 −2
  7. MAINTAINERS +1 −1
  8. drivers/connector/cn_proc.c +2 −3
  9. drivers/dpll/dpll_netlink.c +6 −14
  10. drivers/dpll/dpll_nl.c +0 −4
  11. drivers/dpll/dpll_nl.h +0 −2
  12. drivers/net/arcnet/arc-rawmode.c +1 −0
  13. drivers/net/arcnet/arc-rimi.c +1 −0
  14. drivers/net/arcnet/capmode.c +1 −0
  15. drivers/net/arcnet/com20020-pci.c +1 −0
  16. drivers/net/arcnet/com20020.c +1 −0
  17. drivers/net/arcnet/com20020_cs.c +1 −0
  18. drivers/net/arcnet/com90io.c +1 −0
  19. drivers/net/arcnet/com90xx.c +1 −0
  20. drivers/net/arcnet/rfc1051.c +1 −0
  21. drivers/net/arcnet/rfc1201.c +1 −0
  22. drivers/net/bonding/bond_main.c +2 −3
  23. drivers/net/can/dev/netlink.c +1 −1
  24. drivers/net/dsa/dsa_loop_bdinfo.c +1 −0
  25. drivers/net/ethernet/amd/pds_core/main.c +6 −0
  26. drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c +3 −0
  27. drivers/net/ethernet/brocade/bna/bnad.c +5 −7
  28. drivers/net/ethernet/intel/i40e/i40e_dcb.c +1 −1
  29. drivers/net/ethernet/intel/i40e/i40e_main.c +10 −14
  30. drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +33 −5
  31. drivers/net/ethernet/intel/ice/ice_lag.c +23 −2
  32. drivers/net/ethernet/intel/ice/ice_lag.h +3 −0
  33. drivers/net/ethernet/intel/igb/igb.h +1 −1
  34. drivers/net/ethernet/intel/igb/igb_main.c +18 −17
  35. drivers/net/ethernet/intel/igc/igc_phy.c +1 −5
  36. drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +0 −32
  37. drivers/net/ethernet/mellanox/mlx5/core/dpll.c +1 −1
  38. drivers/net/ethernet/microchip/lan966x/lan966x_lag.c +7 −2
  39. drivers/net/ethernet/pensando/ionic/ionic_txrx.c +9 −0
  40. drivers/net/ethernet/renesas/ravb_main.c +9 −13
  41. drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +35 −34
  42. drivers/net/ethernet/ti/Kconfig +1 −0
  43. drivers/net/ethernet/ti/cpts.c +12 −5
  44. drivers/net/fddi/skfp/skfddi.c +1 −0
  45. drivers/net/ieee802154/fakelb.c +1 −0
  46. drivers/net/ipvlan/ipvtap.c +1 −0
  47. drivers/net/phy/mdio_devres.c +1 −0
  48. drivers/net/plip/plip.c +1 −0
  49. drivers/net/ppp/bsd_comp.c +1 −0
  50. drivers/net/ppp/ppp_async.c +1 −0
  51. drivers/net/ppp/ppp_deflate.c +1 −0
  52. drivers/net/ppp/ppp_generic.c +1 −0
  53. drivers/net/ppp/ppp_synctty.c +1 −0
  54. drivers/net/ppp/pppoe.c +9 −14
  55. drivers/net/wireless/intel/iwlwifi/fw/acpi.c +9 −6
  56. drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +3 −0
  57. drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c +4 −0
  58. drivers/net/wireless/intel/iwlwifi/mvm/time-event.c +2 −1
  59. drivers/net/wireless/intel/iwlwifi/mvm/tx.c +59 −10
  60. drivers/net/xen-netback/netback.c +1 −0
  61. include/linux/netdevice.h +5 −5
  62. include/linux/tcp.h +3 −3
  63. include/net/tls.h +0 −5
  64. net/6lowpan/core.c +1 −0
  65. net/atm/mpc.c +1 −0
  66. net/can/j1939/j1939-priv.h +2 −1
  67. net/can/j1939/main.c +1 −1
  68. net/can/j1939/socket.c +30 −16
  69. net/core/dev.c +3 −2
  70. net/core/rtnetlink.c +9 −6
  71. net/handshake/handshake-test.c +4 −1
  72. net/ipv4/ah4.c +1 −0
  73. net/ipv4/esp4.c +1 −0
  74. net/ipv4/ip_gre.c +1 −0
  75. net/ipv4/ip_output.c +8 −5
  76. net/ipv4/ip_tunnel.c +1 −0
  77. net/ipv4/ip_vti.c +1 −0
  78. net/ipv4/ipip.c +1 −0
  79. net/ipv4/tcp.c +2 −1
  80. net/ipv4/tunnel4.c +1 −0
  81. net/ipv4/udp_tunnel_core.c +1 −0
  82. net/ipv4/xfrm4_tunnel.c +1 −0
  83. net/ipv6/ah6.c +1 −0
  84. net/ipv6/esp6.c +1 −0
  85. net/ipv6/ip6_output.c +8 −5
  86. net/ipv6/ip6_udp_tunnel.c +1 −0
  87. net/ipv6/mip6.c +1 −0
  88. net/ipv6/sit.c +1 −0
  89. net/ipv6/tunnel6.c +1 −0
  90. net/ipv6/xfrm6_tunnel.c +1 −0
  91. net/key/af_key.c +1 −0
  92. net/mac80211/tx.c +3 −2
  93. net/mptcp/fastopen.c +2 −4
  94. net/mptcp/options.c +5 −4
  95. net/mptcp/pm_userspace.c +12 −1
  96. net/mptcp/protocol.c +17 −14
  97. net/mptcp/protocol.h +9 −7
  98. net/mptcp/subflow.c +44 −27
  99. net/netfilter/nf_nat_core.c +4 −1
  100. net/netfilter/nft_flow_offload.c +1 −0
  101. net/netfilter/nft_set_pipapo.h +2 −2
  102. net/openvswitch/flow_netlink.c +33 −16
  103. net/rds/recv.c +11 −2
  104. net/sched/act_mirred.c +0 −2
  105. net/sched/em_canid.c +1 −0
  106. net/sched/em_cmp.c +1 −0
  107. net/sched/em_meta.c +1 −0
  108. net/sched/em_nbyte.c +1 −0
  109. net/sched/em_text.c +1 −0
  110. net/sched/em_u32.c +1 −0
  111. net/sctp/inqueue.c +10 −4
  112. net/smc/af_smc.c +1 −0
  113. net/tls/tls_sw.c +62 −73
  114. net/unix/garbage.c +4 −3
  115. net/xfrm/xfrm_algo.c +1 −0
  116. net/xfrm/xfrm_user.c +1 −0
  117. tools/testing/selftests/net/config +5 −1
  118. tools/testing/selftests/net/forwarding/bridge_locked_port.sh +2 −2
  119. tools/testing/selftests/net/forwarding/bridge_mdb.sh +9 −5
  120. tools/testing/selftests/net/forwarding/tc_flower_l2_miss.sh +6 −2
  121. tools/testing/selftests/net/gro.sh +5 −0
  122. tools/testing/selftests/net/ip_local_port_range.c +4 −0
  123. tools/testing/selftests/net/net_helper.sh +7 −4
  124. tools/testing/selftests/net/openvswitch/openvswitch.sh +13 −0
  125. tools/testing/selftests/net/openvswitch/ovs-dpctl.py +56 −15
  126. tools/testing/selftests/net/pmtu.sh +2 −2
  127. tools/testing/selftests/net/so_txtime.sh +25 −4
  128. tools/testing/selftests/net/test_bridge_backup_port.sh +23 −0
  129. tools/testing/selftests/net/tls.c +6 −6
.mailmap+5−4
@@ -191,10 +191,11 @@ Gao Xiang <xiang@kernel.org> <gaoxiang25@huawei.com> · 190 unmodified lines
191191 Gao Xiang <xiang@kernel.org> <hsiangkao@aol.com>
192192 Gao Xiang <xiang@kernel.org> <hsiangkao@linux.alibaba.com>
193193 Gao Xiang <xiang@kernel.org> <hsiangkao@redhat.com>
194−Geliang Tang <geliang.tang@linux.dev> <geliang.tang@suse.com>
195−Geliang Tang <geliang.tang@linux.dev> <geliangtang@xiaomi.com>
196−Geliang Tang <geliang.tang@linux.dev> <geliangtang@gmail.com>
197−Geliang Tang <geliang.tang@linux.dev> <geliangtang@163.com>
194+Geliang Tang <geliang@kernel.org> <geliang.tang@linux.dev>
195+Geliang Tang <geliang@kernel.org> <geliang.tang@suse.com>
196+Geliang Tang <geliang@kernel.org> <geliangtang@xiaomi.com>
197+Geliang Tang <geliang@kernel.org> <geliangtang@gmail.com>
198+Geliang Tang <geliang@kernel.org> <geliangtang@163.com>
198199 Georgi Djakov <djakov@kernel.org> <georgi.djakov@linaro.org>
199200 Gerald Schaefer <gerald.schaefer@linux.ibm.com> <geraldsc@de.ibm.com>
200201 Gerald Schaefer <gerald.schaefer@linux.ibm.com> <gerald.schaefer@de.ibm.com>
Documentation/ABI/testing/sysfs-class-net-statistics+24−24
@@ -1,4 +1,4 @@
1−What: /sys/class/<iface>/statistics/collisions
1+What: /sys/class/net/<iface>/statistics/collisions
22 Date: April 2005
33 KernelVersion: 2.6.12
44 Contact: netdev@vger.kernel.org
@@ -6,7 +6,7 @@ Description: · 1 unmodified line
66 Indicates the number of collisions seen by this network device.
77 This value might not be relevant with all MAC layers.
88
9−What: /sys/class/<iface>/statistics/multicast
9+What: /sys/class/net/<iface>/statistics/multicast
1010 Date: April 2005
1111 KernelVersion: 2.6.12
1212 Contact: netdev@vger.kernel.org
@@ -14,7 +14,7 @@ Description: · 1 unmodified line
1414 Indicates the number of multicast packets received by this
1515 network device.
1616
17−What: /sys/class/<iface>/statistics/rx_bytes
17+What: /sys/class/net/<iface>/statistics/rx_bytes
1818 Date: April 2005
1919 KernelVersion: 2.6.12
2020 Contact: netdev@vger.kernel.org
@@ -23,7 +23,7 @@ Description: · 2 unmodified lines
2323 See the network driver for the exact meaning of when this
2424 value is incremented.
2525
26−What: /sys/class/<iface>/statistics/rx_compressed
26+What: /sys/class/net/<iface>/statistics/rx_compressed
2727 Date: April 2005
2828 KernelVersion: 2.6.12
2929 Contact: netdev@vger.kernel.org
@@ -32,7 +32,7 @@ Description: · 2 unmodified lines
3232 network device. This value might only be relevant for interfaces
3333 that support packet compression (e.g: PPP).
3434
35−What: /sys/class/<iface>/statistics/rx_crc_errors
35+What: /sys/class/net/<iface>/statistics/rx_crc_errors
3636 Date: April 2005
3737 KernelVersion: 2.6.12
3838 Contact: netdev@vger.kernel.org
@@ -41,7 +41,7 @@ Description: · 2 unmodified lines
4141 by this network device. Note that the specific meaning might
4242 depend on the MAC layer used by the interface.
4343
44−What: /sys/class/<iface>/statistics/rx_dropped
44+What: /sys/class/net/<iface>/statistics/rx_dropped
4545 Date: April 2005
4646 KernelVersion: 2.6.12
4747 Contact: netdev@vger.kernel.org
@@ -51,7 +51,7 @@ Description: · 3 unmodified lines
5151 packet processing. See the network driver for the exact
5252 meaning of this value.
5353
54−What: /sys/class/<iface>/statistics/rx_errors
54+What: /sys/class/net/<iface>/statistics/rx_errors
5555 Date: April 2005
5656 KernelVersion: 2.6.12
5757 Contact: netdev@vger.kernel.org
@@ -59,7 +59,7 @@ Description: · 1 unmodified line
5959 Indicates the number of receive errors on this network device.
6060 See the network driver for the exact meaning of this value.
6161
62−What: /sys/class/<iface>/statistics/rx_fifo_errors
62+What: /sys/class/net/<iface>/statistics/rx_fifo_errors
6363 Date: April 2005
6464 KernelVersion: 2.6.12
6565 Contact: netdev@vger.kernel.org
@@ -68,7 +68,7 @@ Description: · 2 unmodified lines
6868 network device. See the network driver for the exact
6969 meaning of this value.
7070
71−What: /sys/class/<iface>/statistics/rx_frame_errors
71+What: /sys/class/net/<iface>/statistics/rx_frame_errors
7272 Date: April 2005
7373 KernelVersion: 2.6.12
7474 Contact: netdev@vger.kernel.org
@@ -78,7 +78,7 @@ Description: · 3 unmodified lines
7878 on the MAC layer protocol used. See the network driver for
7979 the exact meaning of this value.
8080
81−What: /sys/class/<iface>/statistics/rx_length_errors
81+What: /sys/class/net/<iface>/statistics/rx_length_errors
8282 Date: April 2005
8383 KernelVersion: 2.6.12
8484 Contact: netdev@vger.kernel.org
@@ -87,7 +87,7 @@ Description: · 2 unmodified lines
8787 error, oversized or undersized. See the network driver for the
8888 exact meaning of this value.
8989
90−What: /sys/class/<iface>/statistics/rx_missed_errors
90+What: /sys/class/net/<iface>/statistics/rx_missed_errors
9191 Date: April 2005
9292 KernelVersion: 2.6.12
9393 Contact: netdev@vger.kernel.org
@@ -96,7 +96,7 @@ Description: · 2 unmodified lines
9696 due to lack of capacity in the receive side. See the network
9797 driver for the exact meaning of this value.
9898
99−What: /sys/class/<iface>/statistics/rx_nohandler
99+What: /sys/class/net/<iface>/statistics/rx_nohandler
100100 Date: February 2016
101101 KernelVersion: 4.6
102102 Contact: netdev@vger.kernel.org
@@ -104,7 +104,7 @@ Description: · 1 unmodified line
104104 Indicates the number of received packets that were dropped on
105105 an inactive device by the network core.
106106
107−What: /sys/class/<iface>/statistics/rx_over_errors
107+What: /sys/class/net/<iface>/statistics/rx_over_errors
108108 Date: April 2005
109109 KernelVersion: 2.6.12
110110 Contact: netdev@vger.kernel.org
@@ -114,7 +114,7 @@ Description: · 3 unmodified lines
114114 (e.g: larger than MTU). See the network driver for the exact
115115 meaning of this value.
116116
117−What: /sys/class/<iface>/statistics/rx_packets
117+What: /sys/class/net/<iface>/statistics/rx_packets
118118 Date: April 2005
119119 KernelVersion: 2.6.12
120120 Contact: netdev@vger.kernel.org
@@ -122,7 +122,7 @@ Description: · 1 unmodified line
122122 Indicates the total number of good packets received by this
123123 network device.
124124
125−What: /sys/class/<iface>/statistics/tx_aborted_errors
125+What: /sys/class/net/<iface>/statistics/tx_aborted_errors
126126 Date: April 2005
127127 KernelVersion: 2.6.12
128128 Contact: netdev@vger.kernel.org
@@ -132,7 +132,7 @@ Description: · 3 unmodified lines
132132 a medium collision). See the network driver for the exact
133133 meaning of this value.
134134
135−What: /sys/class/<iface>/statistics/tx_bytes
135+What: /sys/class/net/<iface>/statistics/tx_bytes
136136 Date: April 2005
137137 KernelVersion: 2.6.12
138138 Contact: netdev@vger.kernel.org
@@ -143,7 +143,7 @@ Description: · 4 unmodified lines
143143 transmitted packets or all packets that have been queued for
144144 transmission.
145145
146−What: /sys/class/<iface>/statistics/tx_carrier_errors
146+What: /sys/class/net/<iface>/statistics/tx_carrier_errors
147147 Date: April 2005
148148 KernelVersion: 2.6.12
149149 Contact: netdev@vger.kernel.org
@@ -152,7 +152,7 @@ Description: · 2 unmodified lines
152152 because of carrier errors (e.g: physical link down). See the
153153 network driver for the exact meaning of this value.
154154
155−What: /sys/class/<iface>/statistics/tx_compressed
155+What: /sys/class/net/<iface>/statistics/tx_compressed
156156 Date: April 2005
157157 KernelVersion: 2.6.12
158158 Contact: netdev@vger.kernel.org
@@ -161,7 +161,7 @@ Description: · 2 unmodified lines
161161 this might only be relevant for devices that support
162162 compression (e.g: PPP).
163163
164−What: /sys/class/<iface>/statistics/tx_dropped
164+What: /sys/class/net/<iface>/statistics/tx_dropped
165165 Date: April 2005
166166 KernelVersion: 2.6.12
167167 Contact: netdev@vger.kernel.org
@@ -170,7 +170,7 @@ Description: · 2 unmodified lines
170170 See the driver for the exact reasons as to why the packets were
171171 dropped.
172172
173−What: /sys/class/<iface>/statistics/tx_errors
173+What: /sys/class/net/<iface>/statistics/tx_errors
174174 Date: April 2005
175175 KernelVersion: 2.6.12
176176 Contact: netdev@vger.kernel.org
@@ -179,7 +179,7 @@ Description: · 2 unmodified lines
179179 a network device. See the driver for the exact reasons as to
180180 why the packets were dropped.
181181
182−What: /sys/class/<iface>/statistics/tx_fifo_errors
182+What: /sys/class/net/<iface>/statistics/tx_fifo_errors
183183 Date: April 2005
184184 KernelVersion: 2.6.12
185185 Contact: netdev@vger.kernel.org
@@ -188,7 +188,7 @@ Description: · 2 unmodified lines
188188 FIFO error. See the driver for the exact reasons as to why the
189189 packets were dropped.
190190
191−What: /sys/class/<iface>/statistics/tx_heartbeat_errors
191+What: /sys/class/net/<iface>/statistics/tx_heartbeat_errors
192192 Date: April 2005
193193 KernelVersion: 2.6.12
194194 Contact: netdev@vger.kernel.org
@@ -197,7 +197,7 @@ Description: · 2 unmodified lines
197197 reported as heartbeat errors. See the driver for the exact
198198 reasons as to why the packets were dropped.
199199
200−What: /sys/class/<iface>/statistics/tx_packets
200+What: /sys/class/net/<iface>/statistics/tx_packets
201201 Date: April 2005
202202 KernelVersion: 2.6.12
203203 Contact: netdev@vger.kernel.org
@@ -206,7 +206,7 @@ Description: · 2 unmodified lines
206206 device. See the driver for whether this reports the number of all
207207 attempted or successful transmissions.
208208
209−What: /sys/class/<iface>/statistics/tx_window_errors
209+What: /sys/class/net/<iface>/statistics/tx_window_errors
210210 Date: April 2005
211211 KernelVersion: 2.6.12
212212 Contact: netdev@vger.kernel.org
Documentation/netlink/specs/dpll.yaml+0−4
@@ -384,8 +384,6 @@ operations: · 383 unmodified lines
384384 - type
385385
386386 dump:
387− pre: dpll-lock-dumpit
388− post: dpll-unlock-dumpit
389387 reply: *dev-attrs
390388
391389 -
@@ -473,8 +471,6 @@ operations: · 81 unmodified lines
473471 - fractional-frequency-offset
474472
475473 dump:
476− pre: dpll-lock-dumpit
477− post: dpll-unlock-dumpit
478474 request:
479475 attributes:
480476 - id
Documentation/networking/devlink/devlink-port.rst+1−1
@@ -126,7 +126,7 @@ Users may also set the RoCE capability of the function using · 125 unmodified lines
126126 `devlink port function set roce` command.
127127
128128 Users may also set the function as migratable using
129−'devlink port function set migratable' command.
129+`devlink port function set migratable` command.
130130
131131 Users may also set the IPsec crypto capability of the function using
132132 `devlink port function set ipsec_crypto` command.
Documentation/networking/net_cachelines/net_device.rst+2−2
@@ -136,8 +136,8 @@ struct_netpoll_info* npinfo - · 135 unmodified lines
136136 possible_net_t nd_net - read_mostly (dev_net)napi_busy_loop,tcp_v(4/6)_rcv,ip(v6)_rcv,ip(6)_input,ip(6)_input_finish
137137 void* ml_priv
138138 enum_netdev_ml_priv_type ml_priv_type
139−struct_pcpu_lstats__percpu* lstats
140−struct_pcpu_sw_netstats__percpu* tstats
139+struct_pcpu_lstats__percpu* lstats read_mostly dev_lstats_add()
140+struct_pcpu_sw_netstats__percpu* tstats read_mostly dev_sw_netstats_tx_add()
141141 struct_pcpu_dstats__percpu* dstats
142142 struct_garp_port* garp_port
143143 struct_mrp_port* mrp_port
Documentation/networking/net_cachelines/tcp_sock.rst+2−2
@@ -38,13 +38,13 @@ u32 max_window read_mostly - · 37 unmodified lines
3838 u32 mss_cache read_mostly read_mostly tcp_rate_check_app_limited,tcp_current_mss,tcp_sync_mss,tcp_sndbuf_expand,tcp_tso_should_defer(tx);tcp_update_pacing_rate,tcp_clean_rtx_queue(rx)
3939 u32 window_clamp read_mostly read_write tcp_rcv_space_adjust,__tcp_select_window
4040 u32 rcv_ssthresh read_mostly - __tcp_select_window
41−u82 scaling_ratio
41+u8 scaling_ratio read_mostly read_mostly tcp_win_from_space
4242 struct tcp_rack
4343 u16 advmss - read_mostly tcp_rcv_space_adjust
4444 u8 compressed_ack
4545 u8:2 dup_ack_counter
4646 u8:1 tlp_retrans
47−u8:1 tcp_usec_ts
47+u8:1 tcp_usec_ts read_mostly read_mostly
4848 u32 chrono_start read_write - tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
4949 u32[3] chrono_stat read_write - tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
5050 u8:2 chrono_type read_write - tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
MAINTAINERS+1−1
@@ -15324,7 +15324,7 @@ K: \bmdo_ · 15323 unmodified lines
1532415324 NETWORKING [MPTCP]
1532515325 M: Matthieu Baerts <matttbe@kernel.org>
1532615326 M: Mat Martineau <martineau@kernel.org>
15327−R: Geliang Tang <geliang.tang@linux.dev>
15327+R: Geliang Tang <geliang@kernel.org>
1532815328 L: netdev@vger.kernel.org
1532915329 L: mptcp@lists.linux.dev
1533015330 S: Maintained
drivers/connector/cn_proc.c+2−3
@@ -108,9 +108,8 @@ static inline void send_msg(struct cn_msg *msg) · 107 unmodified lines
108108 filter_data[1] = 0;
109109 }
110110
111− if (cn_netlink_send_mult(msg, msg->len, 0, CN_IDX_PROC, GFP_NOWAIT,
112− cn_filter, (void *)filter_data) == -ESRCH)
113− atomic_set(&proc_event_num_listeners, 0);
111+ cn_netlink_send_mult(msg, msg->len, 0, CN_IDX_PROC, GFP_NOWAIT,
112+ cn_filter, (void *)filter_data);
114113
115114 local_unlock(&local_event.lock);
116115 }
drivers/dpll/dpll_netlink.c+6−14
@@ -1199,6 +1199,7 @@ int dpll_nl_pin_get_dumpit(struct sk_buff *skb, struct netlink_callback *cb) · 1198 unmodified lines
11991199 unsigned long i;
12001200 int ret = 0;
12011201
1202+ mutex_lock(&dpll_lock);
12021203 xa_for_each_marked_start(&dpll_pin_xa, i, pin, DPLL_REGISTERED,
12031204 ctx->idx) {
12041205 if (!dpll_pin_available(pin))
@@ -1218,6 +1219,8 @@ int dpll_nl_pin_get_dumpit(struct sk_buff *skb, struct netlink_callback *cb) · 13 unmodified lines
12181219 }
12191220 genlmsg_end(skb, hdr);
12201221 }
1222+ mutex_unlock(&dpll_lock);
1223+
12211224 if (ret == -EMSGSIZE) {
12221225 ctx->idx = i;
12231226 return skb->len;
@@ -1373,6 +1376,7 @@ int dpll_nl_device_get_dumpit(struct sk_buff *skb, struct netlink_callback *cb) · 149 unmodified lines
13731376 unsigned long i;
13741377 int ret = 0;
13751378
1379+ mutex_lock(&dpll_lock);
13761380 xa_for_each_marked_start(&dpll_device_xa, i, dpll, DPLL_REGISTERED,
13771381 ctx->idx) {
13781382 hdr = genlmsg_put(skb, NETLINK_CB(cb->skb).portid,
@@ -1389,6 +1393,8 @@ int dpll_nl_device_get_dumpit(struct sk_buff *skb, struct netlink_callback *cb) · 10 unmodified lines
13891393 }
13901394 genlmsg_end(skb, hdr);
13911395 }
1396+ mutex_unlock(&dpll_lock);
1397+
13921398 if (ret == -EMSGSIZE) {
13931399 ctx->idx = i;
13941400 return skb->len;
@@ -1439,20 +1445,6 @@ dpll_unlock_doit(const struct genl_split_ops *ops, struct sk_buff *skb, · 44 unmodified lines
14391445 mutex_unlock(&dpll_lock);
14401446 }
14411447
1442−int dpll_lock_dumpit(struct netlink_callback *cb)
1443−{
1444− mutex_lock(&dpll_lock);
1445−
1446− return 0;
1447−}
1448−
1449−int dpll_unlock_dumpit(struct netlink_callback *cb)
1450−{
1451− mutex_unlock(&dpll_lock);
1452−
1453− return 0;
1454−}
1455−
14561448 int dpll_pin_pre_doit(const struct genl_split_ops *ops, struct sk_buff *skb,
14571449 struct genl_info *info)
14581450 {
drivers/dpll/dpll_nl.c+0−4
@@ -95,9 +95,7 @@ static const struct genl_split_ops dpll_nl_ops[] = { · 94 unmodified lines
9595 },
9696 {
9797 .cmd = DPLL_CMD_DEVICE_GET,
98− .start = dpll_lock_dumpit,
9998 .dumpit = dpll_nl_device_get_dumpit,
100− .done = dpll_unlock_dumpit,
10199 .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DUMP,
102100 },
103101 {
@@ -129,9 +127,7 @@ static const struct genl_split_ops dpll_nl_ops[] = { · 25 unmodified lines
129127 },
130128 {
131129 .cmd = DPLL_CMD_PIN_GET,
132− .start = dpll_lock_dumpit,
133130 .dumpit = dpll_nl_pin_get_dumpit,
134− .done = dpll_unlock_dumpit,
135131 .policy = dpll_pin_get_dump_nl_policy,
136132 .maxattr = DPLL_A_PIN_ID,
137133 .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DUMP,
drivers/dpll/dpll_nl.h+0−2
@@ -30,8 +30,6 @@ dpll_post_doit(const struct genl_split_ops *ops, struct sk_buff *skb, · 29 unmodified lines
3030 void
3131 dpll_pin_post_doit(const struct genl_split_ops *ops, struct sk_buff *skb,
3232 struct genl_info *info);
33−int dpll_lock_dumpit(struct netlink_callback *cb);
34−int dpll_unlock_dumpit(struct netlink_callback *cb);
3533
3634 int dpll_nl_device_id_get_doit(struct sk_buff *skb, struct genl_info *info);
3735 int dpll_nl_device_get_doit(struct sk_buff *skb, struct genl_info *info);
drivers/net/arcnet/arc-rawmode.c+1−0
@@ -186,4 +186,5 @@ static void __exit arcnet_raw_exit(void) · 185 unmodified lines
186186 module_init(arcnet_raw_init);
187187 module_exit(arcnet_raw_exit);
188188
189+MODULE_DESCRIPTION("ARCnet raw mode packet interface module");
189190 MODULE_LICENSE("GPL");
drivers/net/arcnet/arc-rimi.c+1−0
@@ -312,6 +312,7 @@ module_param(node, int, 0); · 311 unmodified lines
312312 module_param(io, int, 0);
313313 module_param(irq, int, 0);
314314 module_param_string(device, device, sizeof(device), 0);
315+MODULE_DESCRIPTION("ARCnet COM90xx RIM I chipset driver");
315316 MODULE_LICENSE("GPL");
316317
317318 static struct net_device *my_dev;
drivers/net/arcnet/capmode.c+1−0
@@ -265,4 +265,5 @@ static void __exit capmode_module_exit(void) · 264 unmodified lines
265265 module_init(capmode_module_init);
266266 module_exit(capmode_module_exit);
267267
268+MODULE_DESCRIPTION("ARCnet CAP mode packet interface module");
268269 MODULE_LICENSE("GPL");
drivers/net/arcnet/com20020-pci.c+1−0
@@ -61,6 +61,7 @@ module_param(timeout, int, 0); · 60 unmodified lines
6161 module_param(backplane, int, 0);
6262 module_param(clockp, int, 0);
6363 module_param(clockm, int, 0);
64+MODULE_DESCRIPTION("ARCnet COM20020 chipset PCI driver");
6465 MODULE_LICENSE("GPL");
6566
6667 static void led_tx_set(struct led_classdev *led_cdev,
drivers/net/arcnet/com20020.c+1−0
@@ -399,6 +399,7 @@ EXPORT_SYMBOL(com20020_found); · 398 unmodified lines
399399 EXPORT_SYMBOL(com20020_netdev_ops);
400400 #endif
401401
402+MODULE_DESCRIPTION("ARCnet COM20020 chipset core driver");
402403 MODULE_LICENSE("GPL");
403404
404405 #ifdef MODULE
drivers/net/arcnet/com20020_cs.c+1−0
@@ -97,6 +97,7 @@ module_param(backplane, int, 0); · 96 unmodified lines
9797 module_param(clockp, int, 0);
9898 module_param(clockm, int, 0);
9999
100+MODULE_DESCRIPTION("ARCnet COM20020 chipset PCMCIA driver");
100101 MODULE_LICENSE("GPL");
101102
102103 /*====================================================================*/
drivers/net/arcnet/com90io.c+1−0
@@ -350,6 +350,7 @@ static char device[9]; /* use eg. device=arc1 to change name */ · 349 unmodified lines
350350 module_param_hw(io, int, ioport, 0);
351351 module_param_hw(irq, int, irq, 0);
352352 module_param_string(device, device, sizeof(device), 0);
353+MODULE_DESCRIPTION("ARCnet COM90xx IO mapped chipset driver");
353354 MODULE_LICENSE("GPL");
354355
355356 #ifndef MODULE
drivers/net/arcnet/com90xx.c+1−0
@@ -645,6 +645,7 @@ static void com90xx_copy_from_card(struct net_device *dev, int bufnum, · 644 unmodified lines
645645 TIME(dev, "memcpy_fromio", count, memcpy_fromio(buf, memaddr, count));
646646 }
647647
648+MODULE_DESCRIPTION("ARCnet COM90xx normal chipset driver");
648649 MODULE_LICENSE("GPL");
649650
650651 static int __init com90xx_init(void)
drivers/net/arcnet/rfc1051.c+1−0
@@ -78,6 +78,7 @@ static void __exit arcnet_rfc1051_exit(void) · 77 unmodified lines
7878 module_init(arcnet_rfc1051_init);
7979 module_exit(arcnet_rfc1051_exit);
8080
81+MODULE_DESCRIPTION("ARCNet packet format (RFC 1051) module");
8182 MODULE_LICENSE("GPL");
8283
8384 /* Determine a packet's protocol ID.
drivers/net/arcnet/rfc1201.c+1−0
@@ -35,6 +35,7 @@ · 34 unmodified lines
3535
3636 #include "arcdevice.h"
3737
38+MODULE_DESCRIPTION("ARCNet packet format (RFC 1201) module");
3839 MODULE_LICENSE("GPL");
3940
4041 static __be16 type_trans(struct sk_buff *skb, struct net_device *dev);
drivers/net/bonding/bond_main.c+2−3
@@ -1819,6 +1819,8 @@ void bond_xdp_set_features(struct net_device *bond_dev) · 1818 unmodified lines
18191819 bond_for_each_slave(bond, slave, iter)
18201820 val &= slave->dev->xdp_features;
18211821
1822+ val &= ~NETDEV_XDP_ACT_XSK_ZEROCOPY;
1823+
18221824 xdp_set_features_flag(bond_dev, val);
18231825 }
18241826
@@ -5909,9 +5911,6 @@ void bond_setup(struct net_device *bond_dev) · 4084 unmodified lines
59095911 if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP)
59105912 bond_dev->features |= BOND_XFRM_FEATURES;
59115913 #endif /* CONFIG_XFRM_OFFLOAD */
5912−
5913− if (bond_xdp_check(bond))
5914− bond_dev->xdp_features = NETDEV_XDP_ACT_MASK;
59155914 }
59165915
59175916 /* Destroy a bonding device.
drivers/net/can/dev/netlink.c+1−1
@@ -346,7 +346,7 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[], · 345 unmodified lines
346346 /* Neither of TDC parameters nor TDC flags are
347347 * provided: do calculation
348348 */
349− can_calc_tdco(&priv->tdc, priv->tdc_const, &priv->data_bittiming,
349+ can_calc_tdco(&priv->tdc, priv->tdc_const, &dbt,
350350 &priv->ctrlmode, priv->ctrlmode_supported);
351351 } /* else: both CAN_CTRLMODE_TDC_{AUTO,MANUAL} are explicitly
352352 * turned off. TDC is disabled: do nothing
drivers/net/dsa/dsa_loop_bdinfo.c+1−0
@@ -32,4 +32,5 @@ static int __init dsa_loop_bdinfo_init(void) · 31 unmodified lines
3232 }
3333 arch_initcall(dsa_loop_bdinfo_init)
3434
35+MODULE_DESCRIPTION("DSA mock-up switch driver");
3536 MODULE_LICENSE("GPL");
drivers/net/ethernet/amd/pds_core/main.c+6−0
@@ -451,6 +451,9 @@ static void pdsc_remove(struct pci_dev *pdev) · 450 unmodified lines
451451
452452 static void pdsc_stop_health_thread(struct pdsc *pdsc)
453453 {
454+ if (pdsc->pdev->is_virtfn)
455+ return;
456+
454457 timer_shutdown_sync(&pdsc->wdtimer);
455458 if (pdsc->health_work.func)
456459 cancel_work_sync(&pdsc->health_work);
@@ -458,6 +461,9 @@ static void pdsc_stop_health_thread(struct pdsc *pdsc) · 1 unmodified line
458461
459462 static void pdsc_restart_health_thread(struct pdsc *pdsc)
460463 {
464+ if (pdsc->pdev->is_virtfn)
465+ return;
466+
461467 timer_setup(&pdsc->wdtimer, pdsc_wdtimer_cb, 0);
462468 mod_timer(&pdsc->wdtimer, jiffies + 1);
463469 }
drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c+3−0
@@ -684,6 +684,8 @@ static int bcmasp_init_rx(struct bcmasp_intf *intf) · 683 unmodified lines
684684
685685 intf->rx_buf_order = get_order(RING_BUFFER_SIZE);
686686 buffer_pg = alloc_pages(GFP_KERNEL, intf->rx_buf_order);
687+ if (!buffer_pg)
688+ return -ENOMEM;
687689
688690 dma = dma_map_page(kdev, buffer_pg, 0, RING_BUFFER_SIZE,
689691 DMA_FROM_DEVICE);
@@ -1092,6 +1094,7 @@ static int bcmasp_netif_init(struct net_device *dev, bool phy_connect) · 402 unmodified lines
10921094 return 0;
10931095
10941096 err_reclaim_tx:
1097+ netif_napi_del(&intf->tx_napi);
10951098 bcmasp_reclaim_free_all_tx(intf);
10961099 err_phy_disconnect:
10971100 if (phydev)
drivers/net/ethernet/brocade/bna/bnad.c+5−7
@@ -1091,10 +1091,10 @@ bnad_cb_tx_resume(struct bnad *bnad, struct bna_tx *tx) · 1090 unmodified lines
10911091 * Free all TxQs buffers and then notify TX_E_CLEANUP_DONE to Tx fsm.
10921092 */
10931093 static void
1094−bnad_tx_cleanup(struct delayed_work *work)
1094+bnad_tx_cleanup(struct work_struct *work)
10951095 {
10961096 struct bnad_tx_info *tx_info =
1097− container_of(work, struct bnad_tx_info, tx_cleanup_work);
1097+ container_of(work, struct bnad_tx_info, tx_cleanup_work.work);
10981098 struct bnad *bnad = NULL;
10991099 struct bna_tcb *tcb;
11001100 unsigned long flags;
@@ -1170,7 +1170,7 @@ bnad_cb_rx_stall(struct bnad *bnad, struct bna_rx *rx) · 69 unmodified lines
11701170 * Free all RxQs buffers and then notify RX_E_CLEANUP_DONE to Rx fsm.
11711171 */
11721172 static void
1173−bnad_rx_cleanup(void *work)
1173+bnad_rx_cleanup(struct work_struct *work)
11741174 {
11751175 struct bnad_rx_info *rx_info =
11761176 container_of(work, struct bnad_rx_info, rx_cleanup_work);
@@ -1991,8 +1991,7 @@ bnad_setup_tx(struct bnad *bnad, u32 tx_id) · 814 unmodified lines
19911991 }
19921992 tx_info->tx = tx;
19931993
1994− INIT_DELAYED_WORK(&tx_info->tx_cleanup_work,
1995− (work_func_t)bnad_tx_cleanup);
1994+ INIT_DELAYED_WORK(&tx_info->tx_cleanup_work, bnad_tx_cleanup);
19961995
19971996 /* Register ISR for the Tx object */
19981997 if (intr_info->intr_type == BNA_INTR_T_MSIX) {
@@ -2248,8 +2247,7 @@ bnad_setup_rx(struct bnad *bnad, u32 rx_id) · 249 unmodified lines
22482247 rx_info->rx = rx;
22492248 spin_unlock_irqrestore(&bnad->bna_lock, flags);
22502249
2251− INIT_WORK(&rx_info->rx_cleanup_work,
2252− (work_func_t)(bnad_rx_cleanup));
2250+ INIT_WORK(&rx_info->rx_cleanup_work, bnad_rx_cleanup);
22532251
22542252 /*
22552253 * Init NAPI, so that state is set to NAPI_STATE_SCHED,
drivers/net/ethernet/intel/i40e/i40e_dcb.c+1−1
@@ -1523,7 +1523,7 @@ void i40e_dcb_hw_rx_ets_bw_config(struct i40e_hw *hw, u8 *bw_share, · 1522 unmodified lines
15231523 reg = rd32(hw, I40E_PRTDCB_RETSTCC(i));
15241524 reg &= ~(I40E_PRTDCB_RETSTCC_BWSHARE_MASK |
15251525 I40E_PRTDCB_RETSTCC_UPINTC_MODE_MASK |
1526− I40E_PRTDCB_RETSTCC_ETSTC_SHIFT);
1526+ I40E_PRTDCB_RETSTCC_ETSTC_MASK);
15271527 reg |= FIELD_PREP(I40E_PRTDCB_RETSTCC_BWSHARE_MASK,
15281528 bw_share[i]);
15291529 reg |= FIELD_PREP(I40E_PRTDCB_RETSTCC_UPINTC_MODE_MASK,
drivers/net/ethernet/intel/i40e/i40e_main.c+10−14
@@ -4926,27 +4926,23 @@ int i40e_vsi_start_rings(struct i40e_vsi *vsi) · 4925 unmodified lines
49264926 void i40e_vsi_stop_rings(struct i40e_vsi *vsi)
49274927 {
49284928 struct i40e_pf *pf = vsi->back;
4929− int pf_q, err, q_end;
4929+ u32 pf_q, tx_q_end, rx_q_end;
49304930
49314931 /* When port TX is suspended, don't wait */
49324932 if (test_bit(__I40E_PORT_SUSPENDED, vsi->back->state))
49334933 return i40e_vsi_stop_rings_no_wait(vsi);
49344934
4935− q_end = vsi->base_queue + vsi->num_queue_pairs;
4936− for (pf_q = vsi->base_queue; pf_q < q_end; pf_q++)
4937− i40e_pre_tx_queue_cfg(&pf->hw, (u32)pf_q, false);
4935+ tx_q_end = vsi->base_queue +
4936+ vsi->alloc_queue_pairs * (i40e_enabled_xdp_vsi(vsi) ? 2 : 1);
4937+ for (pf_q = vsi->base_queue; pf_q < tx_q_end; pf_q++)
4938+ i40e_pre_tx_queue_cfg(&pf->hw, pf_q, false);
49384939
4939− for (pf_q = vsi->base_queue; pf_q < q_end; pf_q++) {
4940− err = i40e_control_wait_rx_q(pf, pf_q, false);
4941− if (err)
4942− dev_info(&pf->pdev->dev,
4943− "VSI seid %d Rx ring %d disable timeout\n",
4944− vsi->seid, pf_q);
4945− }
4940+ rx_q_end = vsi->base_queue + vsi->num_queue_pairs;
4941+ for (pf_q = vsi->base_queue; pf_q < rx_q_end; pf_q++)
4942+ i40e_control_rx_q(pf, pf_q, false);
49464943
49474944 msleep(I40E_DISABLE_TX_GAP_MSEC);
4948− pf_q = vsi->base_queue;
4949− for (pf_q = vsi->base_queue; pf_q < q_end; pf_q++)
4945+ for (pf_q = vsi->base_queue; pf_q < tx_q_end; pf_q++)
49504946 wr32(&pf->hw, I40E_QTX_ENA(pf_q), 0);
49514947
49524948 i40e_vsi_wait_queues_disabled(vsi);
@@ -5360,7 +5356,7 @@ static int i40e_pf_wait_queues_disabled(struct i40e_pf *pf) · 407 unmodified lines
53605356 {
53615357 int v, ret = 0;
53625358
5363− for (v = 0; v < pf->hw.func_caps.num_vsis; v++) {
5359+ for (v = 0; v < pf->num_alloc_vsi; v++) {
53645360 if (pf->vsi[v]) {
53655361 ret = i40e_vsi_wait_queues_disabled(pf->vsi[v]);
53665362 if (ret)
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c+33−5
@@ -2848,6 +2848,24 @@ error_param: · 2847 unmodified lines
28482848 (u8 *)&stats, sizeof(stats));
28492849 }
28502850
2851+/**
2852+ * i40e_can_vf_change_mac
2853+ * @vf: pointer to the VF info
2854+ *
2855+ * Return true if the VF is allowed to change its MAC filters, false otherwise
2856+ */
2857+static bool i40e_can_vf_change_mac(struct i40e_vf *vf)
2858+{
2859+ /* If the VF MAC address has been set administratively (via the
2860+ * ndo_set_vf_mac command), then deny permission to the VF to
2861+ * add/delete unicast MAC addresses, unless the VF is trusted
2862+ */
2863+ if (vf->pf_set_mac && !vf->trusted)
2864+ return false;
2865+
2866+ return true;
2867+}
2868+
28512869 #define I40E_MAX_MACVLAN_PER_HW 3072
28522870 #define I40E_MAX_MACVLAN_PER_PF(num_ports) (I40E_MAX_MACVLAN_PER_HW / \
28532871 (num_ports))
@@ -2907,8 +2925,8 @@ static inline int i40e_check_vf_permission(struct i40e_vf *vf, · 53 unmodified lines
29072925 * The VF may request to set the MAC address filter already
29082926 * assigned to it so do not return an error in that case.
29092927 */
2910− if (!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps) &&
2911− !is_multicast_ether_addr(addr) && vf->pf_set_mac &&
2928+ if (!i40e_can_vf_change_mac(vf) &&
2929+ !is_multicast_ether_addr(addr) &&
29122930 !ether_addr_equal(addr, vf->default_lan_addr.addr)) {
29132931 dev_err(&pf->pdev->dev,
29142932 "VF attempting to override administratively set MAC address, bring down and up the VF interface to resume normal operation\n");
@@ -3114,19 +3132,29 @@ static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg) · 199 unmodified lines
31143132 ret = -EINVAL;
31153133 goto error_param;
31163134 }
3117− if (ether_addr_equal(al->list[i].addr, vf->default_lan_addr.addr))
3118− was_unimac_deleted = true;
31193135 }
31203136 vsi = pf->vsi[vf->lan_vsi_idx];
31213137
31223138 spin_lock_bh(&vsi->mac_filter_hash_lock);
31233139 /* delete addresses from the list */
3124− for (i = 0; i < al->num_elements; i++)
3140+ for (i = 0; i < al->num_elements; i++) {
3141+ const u8 *addr = al->list[i].addr;
3142+
3143+ /* Allow to delete VF primary MAC only if it was not set
3144+ * administratively by PF or if VF is trusted.
3145+ */
3146+ if (ether_addr_equal(addr, vf->default_lan_addr.addr) &&
3147+ i40e_can_vf_change_mac(vf))
3148+ was_unimac_deleted = true;
3149+ else
3150+ continue;
3151+
31253152 if (i40e_del_mac_filter(vsi, al->list[i].addr)) {
31263153 ret = -EINVAL;
31273154 spin_unlock_bh(&vsi->mac_filter_hash_lock);
31283155 goto error_param;
31293156 }
3157+ }
31303158
31313159 spin_unlock_bh(&vsi->mac_filter_hash_lock);
31323160
drivers/net/ethernet/intel/ice/ice_lag.c+23−2
@@ -151,6 +151,27 @@ ice_lag_find_hw_by_lport(struct ice_lag *lag, u8 lport) · 150 unmodified lines
151151 return NULL;
152152 }
153153
154+/**
155+ * ice_pkg_has_lport_extract - check if lport extraction supported
156+ * @hw: HW struct
157+ */
158+static bool ice_pkg_has_lport_extract(struct ice_hw *hw)
159+{
160+ int i;
161+
162+ for (i = 0; i < hw->blk[ICE_BLK_SW].es.count; i++) {
163+ u16 offset;
164+ u8 fv_prot;
165+
166+ ice_find_prot_off(hw, ICE_BLK_SW, ICE_SW_DEFAULT_PROFILE, i,
167+ &fv_prot, &offset);
168+ if (fv_prot == ICE_FV_PROT_MDID &&
169+ offset == ICE_LP_EXT_BUF_OFFSET)
170+ return true;
171+ }
172+ return false;
173+}
174+
154175 /**
155176 * ice_lag_find_primary - returns pointer to primary interfaces lag struct
156177 * @lag: local interfaces lag struct
@@ -1206,7 +1227,7 @@ static void ice_lag_del_prune_list(struct ice_lag *lag, struct ice_pf *event_pf) · 1049 unmodified lines
12061227 }
12071228
12081229 /**
1209− * ice_lag_init_feature_support_flag - Check for NVM support for LAG
1230+ * ice_lag_init_feature_support_flag - Check for package and NVM support for LAG
12101231 * @pf: PF struct
12111232 */
12121233 static void ice_lag_init_feature_support_flag(struct ice_pf *pf)
@@ -1219,7 +1240,7 @@ static void ice_lag_init_feature_support_flag(struct ice_pf *pf) · 6 unmodified lines
12191240 else
12201241 ice_clear_feature_support(pf, ICE_F_ROCE_LAG);
12211242
1222− if (caps->sriov_lag)
1243+ if (caps->sriov_lag && ice_pkg_has_lport_extract(&pf->hw))
12231244 ice_set_feature_support(pf, ICE_F_SRIOV_LAG);
12241245 else
12251246 ice_clear_feature_support(pf, ICE_F_SRIOV_LAG);
drivers/net/ethernet/intel/ice/ice_lag.h+3−0
@@ -17,6 +17,9 @@ enum ice_lag_role { · 16 unmodified lines
1717 #define ICE_LAG_INVALID_PORT 0xFF
1818
1919 #define ICE_LAG_RESET_RETRIES 5
20+#define ICE_SW_DEFAULT_PROFILE 0
21+#define ICE_FV_PROT_MDID 255
22+#define ICE_LP_EXT_BUF_OFFSET 32
2023
2124 struct ice_pf;
2225 struct ice_vf;
drivers/net/ethernet/intel/igb/igb.h+1−1
@@ -637,7 +637,7 @@ struct igb_adapter { · 636 unmodified lines
637637 struct timespec64 period;
638638 } perout[IGB_N_PEROUT];
639639
640− char fw_version[32];
640+ char fw_version[48];
641641 #ifdef CONFIG_IGB_HWMON
642642 struct hwmon_buff *igb_hwmon_buff;
643643 bool ets;
drivers/net/ethernet/intel/igb/igb_main.c+18−17
@@ -3069,7 +3069,6 @@ void igb_set_fw_version(struct igb_adapter *adapter) · 3068 unmodified lines
30693069 {
30703070 struct e1000_hw *hw = &adapter->hw;
30713071 struct e1000_fw_version fw;
3072− char *lbuf;
30733072
30743073 igb_get_fw_version(hw, &fw);
30753074
@@ -3077,34 +3076,36 @@ void igb_set_fw_version(struct igb_adapter *adapter) · 1 unmodified line
30773076 case e1000_i210:
30783077 case e1000_i211:
30793078 if (!(igb_get_flash_presence_i210(hw))) {
3080− lbuf = kasprintf(GFP_KERNEL, "%2d.%2d-%d",
3081− fw.invm_major, fw.invm_minor,
3082− fw.invm_img_type);
3079+ snprintf(adapter->fw_version,
3080+ sizeof(adapter->fw_version),
3081+ "%2d.%2d-%d",
3082+ fw.invm_major, fw.invm_minor,
3083+ fw.invm_img_type);
30833084 break;
30843085 }
30853086 fallthrough;
30863087 default:
30873088 /* if option rom is valid, display its version too */
30883089 if (fw.or_valid) {
3089− lbuf = kasprintf(GFP_KERNEL, "%d.%d, 0x%08x, %d.%d.%d",
3090− fw.eep_major, fw.eep_minor,
3091− fw.etrack_id, fw.or_major, fw.or_build,
3092− fw.or_patch);
3090+ snprintf(adapter->fw_version,
3091+ sizeof(adapter->fw_version),
3092+ "%d.%d, 0x%08x, %d.%d.%d",
3093+ fw.eep_major, fw.eep_minor, fw.etrack_id,
3094+ fw.or_major, fw.or_build, fw.or_patch);
30933095 /* no option rom */
30943096 } else if (fw.etrack_id != 0X0000) {
3095− lbuf = kasprintf(GFP_KERNEL, "%d.%d, 0x%08x",
3096− fw.eep_major, fw.eep_minor,
3097− fw.etrack_id);
3097+ snprintf(adapter->fw_version,
3098+ sizeof(adapter->fw_version),
3099+ "%d.%d, 0x%08x",
3100+ fw.eep_major, fw.eep_minor, fw.etrack_id);
30983101 } else {
3099− lbuf = kasprintf(GFP_KERNEL, "%d.%d.%d", fw.eep_major,
3100− fw.eep_minor, fw.eep_build);
3102+ snprintf(adapter->fw_version,
3103+ sizeof(adapter->fw_version),
3104+ "%d.%d.%d",
3105+ fw.eep_major, fw.eep_minor, fw.eep_build);
31013106 }
31023107 break;
31033108 }
3104−
3105− /* the truncate happens here if it doesn't fit */
3106− strscpy(adapter->fw_version, lbuf, sizeof(adapter->fw_version));
3107− kfree(lbuf);
31083109 }
31093110
31103111 /**
drivers/net/ethernet/intel/igc/igc_phy.c+1−5
@@ -130,11 +130,7 @@ void igc_power_down_phy_copper(struct igc_hw *hw) · 129 unmodified lines
130130 /* The PHY will retain its settings across a power down/up cycle */
131131 hw->phy.ops.read_reg(hw, PHY_CONTROL, &mii_reg);
132132 mii_reg |= MII_CR_POWER_DOWN;
133−
134− /* Temporary workaround - should be removed when PHY will implement
135− * IEEE registers as properly
136− */
137− /* hw->phy.ops.write_reg(hw, PHY_CONTROL, mii_reg);*/
133+ hw->phy.ops.write_reg(hw, PHY_CONTROL, mii_reg);
138134 usleep_range(1000, 2000);
139135 }
140136
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c+0−32
@@ -61,28 +61,6 @@ int rvu_npc_get_tx_nibble_cfg(struct rvu *rvu, u64 nibble_ena) · 60 unmodified lines
6161 return 0;
6262 }
6363
64−static int npc_mcam_verify_pf_func(struct rvu *rvu,
65− struct mcam_entry *entry_data, u8 intf,
66− u16 pcifunc)
67−{
68− u16 pf_func, pf_func_mask;
69−
70− if (is_npc_intf_rx(intf))
71− return 0;
72−
73− pf_func_mask = (entry_data->kw_mask[0] >> 32) &
74− NPC_KEX_PF_FUNC_MASK;
75− pf_func = (entry_data->kw[0] >> 32) & NPC_KEX_PF_FUNC_MASK;
76−
77− pf_func = be16_to_cpu((__force __be16)pf_func);
78− if (pf_func_mask != NPC_KEX_PF_FUNC_MASK ||
79− ((pf_func & ~RVU_PFVF_FUNC_MASK) !=
80− (pcifunc & ~RVU_PFVF_FUNC_MASK)))
81− return -EINVAL;
82−
83− return 0;
84−}
85−
8664 void rvu_npc_set_pkind(struct rvu *rvu, int pkind, struct rvu_pfvf *pfvf)
8765 {
8866 int blkaddr;
@@ -2851,12 +2829,6 @@ int rvu_mbox_handler_npc_mcam_write_entry(struct rvu *rvu, · 2762 unmodified lines
28512829 else
28522830 nix_intf = pfvf->nix_rx_intf;
28532831
2854− if (!is_pffunc_af(pcifunc) &&
2855− npc_mcam_verify_pf_func(rvu, &req->entry_data, req->intf, pcifunc)) {
2856− rc = NPC_MCAM_INVALID_REQ;
2857− goto exit;
2858− }
2859−
28602832 /* For AF installed rules, the nix_intf should be set to target NIX */
28612833 if (is_pffunc_af(req->hdr.pcifunc))
28622834 nix_intf = req->intf;
@@ -3208,10 +3180,6 @@ int rvu_mbox_handler_npc_mcam_alloc_and_write_entry(struct rvu *rvu, · 345 unmodified lines
32083180 if (!is_npc_interface_valid(rvu, req->intf))
32093181 return NPC_MCAM_INVALID_REQ;
32103182
3211− if (npc_mcam_verify_pf_func(rvu, &req->entry_data, req->intf,
3212− req->hdr.pcifunc))
3213− return NPC_MCAM_INVALID_REQ;
3214−
32153183 /* Try to allocate a MCAM entry */
32163184 entry_req.hdr.pcifunc = req->hdr.pcifunc;
32173185 entry_req.contig = true;
drivers/net/ethernet/mellanox/mlx5/core/dpll.c+1−1
@@ -389,7 +389,7 @@ static void mlx5_dpll_remove(struct auxiliary_device *adev) · 388 unmodified lines
389389 struct mlx5_dpll *mdpll = auxiliary_get_drvdata(adev);
390390 struct mlx5_core_dev *mdev = mdpll->mdev;
391391
392− cancel_delayed_work(&mdpll->work);
392+ cancel_delayed_work_sync(&mdpll->work);
393393 mlx5_dpll_mdev_netdev_untrack(mdpll, mdev);
394394 destroy_workqueue(mdpll->wq);
395395 dpll_pin_unregister(mdpll->dpll, mdpll->dpll_pin,
drivers/net/ethernet/microchip/lan966x/lan966x_lag.c+7−2
@@ -37,19 +37,24 @@ static void lan966x_lag_set_aggr_pgids(struct lan966x *lan966x) · 36 unmodified lines
3737
3838 /* Now, set PGIDs for each active LAG */
3939 for (lag = 0; lag < lan966x->num_phys_ports; ++lag) {
40− struct net_device *bond = lan966x->ports[lag]->bond;
40+ struct lan966x_port *port = lan966x->ports[lag];
4141 int num_active_ports = 0;
42+ struct net_device *bond;
4243 unsigned long bond_mask;
4344 u8 aggr_idx[16];
4445
45− if (!bond || (visited & BIT(lag)))
46+ if (!port || !port->bond || (visited & BIT(lag)))
4647 continue;
4748
49+ bond = port->bond;
4850 bond_mask = lan966x_lag_get_mask(lan966x, bond);
4951
5052 for_each_set_bit(p, &bond_mask, lan966x->num_phys_ports) {
5153 struct lan966x_port *port = lan966x->ports[p];
5254
55+ if (!port)
56+ continue;
57+
5358 lan_wr(ANA_PGID_PGID_SET(bond_mask),
5459 lan966x, ANA_PGID(p));
5560 if (port->lag_tx_active)
drivers/net/ethernet/pensando/ionic/ionic_txrx.c+9−0
@@ -579,6 +579,9 @@ int ionic_tx_napi(struct napi_struct *napi, int budget) · 578 unmodified lines
579579 work_done = ionic_cq_service(cq, budget,
580580 ionic_tx_service, NULL, NULL);
581581
582+ if (unlikely(!budget))
583+ return budget;
584+
582585 if (work_done < budget && napi_complete_done(napi, work_done)) {
583586 ionic_dim_update(qcq, IONIC_LIF_F_TX_DIM_INTR);
584587 flags |= IONIC_INTR_CRED_UNMASK;
@@ -607,6 +610,9 @@ int ionic_rx_napi(struct napi_struct *napi, int budget) · 22 unmodified lines
607610 u32 work_done = 0;
608611 u32 flags = 0;
609612
613+ if (unlikely(!budget))
614+ return budget;
615+
610616 lif = cq->bound_q->lif;
611617 idev = &lif->ionic->idev;
612618
@@ -656,6 +662,9 @@ int ionic_txrx_napi(struct napi_struct *napi, int budget) · 43 unmodified lines
656662 tx_work_done = ionic_cq_service(txcq, IONIC_TX_BUDGET_DEFAULT,
657663 ionic_tx_service, NULL, NULL);
658664
665+ if (unlikely(!budget))
666+ return budget;
667+
659668 rx_work_done = ionic_cq_service(rxcq, budget,
660669 ionic_rx_service, NULL, NULL);
661670
drivers/net/ethernet/renesas/ravb_main.c+9−13
@@ -772,29 +772,25 @@ static bool ravb_rx_gbeth(struct net_device *ndev, int *quota, int q) · 771 unmodified lines
772772 struct ravb_rx_desc *desc;
773773 struct sk_buff *skb;
774774 dma_addr_t dma_addr;
775+ int rx_packets = 0;
775776 u8 desc_status;
776− int boguscnt;
777777 u16 pkt_len;
778778 u8 die_dt;
779779 int entry;
780780 int limit;
781+ int i;
781782
782783 entry = priv->cur_rx[q] % priv->num_rx_ring[q];
783− boguscnt = priv->dirty_rx[q] + priv->num_rx_ring[q] - priv->cur_rx[q];
784+ limit = priv->dirty_rx[q] + priv->num_rx_ring[q] - priv->cur_rx[q];
784785 stats = &priv->stats[q];
785786
786− boguscnt = min(boguscnt, *quota);
787− limit = boguscnt;
788787 desc = &priv->gbeth_rx_ring[entry];
789− while (desc->die_dt != DT_FEMPTY) {
788+ for (i = 0; i < limit && rx_packets < *quota && desc->die_dt != DT_FEMPTY; i++) {
790789 /* Descriptor type must be checked before all other reads */
791790 dma_rmb();
792791 desc_status = desc->msc;
793792 pkt_len = le16_to_cpu(desc->ds_cc) & RX_DS;
794793
795− if (--boguscnt < 0)
796− break;
797−
798794 /* We use 0-byte descriptors to mark the DMA mapping errors */
799795 if (!pkt_len)
800796 continue;
@@ -820,7 +816,7 @@ static bool ravb_rx_gbeth(struct net_device *ndev, int *quota, int q) · 19 unmodified lines
820816 skb_put(skb, pkt_len);
821817 skb->protocol = eth_type_trans(skb, ndev);
822818 napi_gro_receive(&priv->napi[q], skb);
823− stats->rx_packets++;
819+ rx_packets++;
824820 stats->rx_bytes += pkt_len;
825821 break;
826822 case DT_FSTART:
@@ -848,7 +844,7 @@ static bool ravb_rx_gbeth(struct net_device *ndev, int *quota, int q) · 21 unmodified lines
848844 eth_type_trans(priv->rx_1st_skb, ndev);
849845 napi_gro_receive(&priv->napi[q],
850846 priv->rx_1st_skb);
851− stats->rx_packets++;
847+ rx_packets++;
852848 stats->rx_bytes += pkt_len;
853849 break;
854850 }
@@ -887,9 +883,9 @@ static bool ravb_rx_gbeth(struct net_device *ndev, int *quota, int q) · 32 unmodified lines
887883 desc->die_dt = DT_FEMPTY;
888884 }
889885
890− *quota -= limit - (++boguscnt);
891−
892− return boguscnt <= 0;
886+ stats->rx_packets += rx_packets;
887+ *quota -= rx_packets;
888+ return *quota == 0;
893889 }
894890
895891 /* Packet receive function for Ethernet AVB */
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c+35−34
@@ -830,41 +830,42 @@ static const struct dwxgmac3_error_desc dwxgmac3_dma_errors[32]= { · 829 unmodified lines
830830 { false, "UNKNOWN", "Unknown Error" }, /* 31 */
831831 };
832832
833−static const char * const dpp_rx_err = "Read Rx Descriptor Parity checker Error";
834−static const char * const dpp_tx_err = "Read Tx Descriptor Parity checker Error";
833+#define DPP_RX_ERR "Read Rx Descriptor Parity checker Error"
834+#define DPP_TX_ERR "Read Tx Descriptor Parity checker Error"
835+
835836 static const struct dwxgmac3_error_desc dwxgmac3_dma_dpp_errors[32] = {
836− { true, "TDPES0", dpp_tx_err },
837− { true, "TDPES1", dpp_tx_err },
838− { true, "TDPES2", dpp_tx_err },
839− { true, "TDPES3", dpp_tx_err },
840− { true, "TDPES4", dpp_tx_err },
841− { true, "TDPES5", dpp_tx_err },
842− { true, "TDPES6", dpp_tx_err },
843− { true, "TDPES7", dpp_tx_err },
844− { true, "TDPES8", dpp_tx_err },
845− { true, "TDPES9", dpp_tx_err },
846− { true, "TDPES10", dpp_tx_err },
847− { true, "TDPES11", dpp_tx_err },
848− { true, "TDPES12", dpp_tx_err },
849− { true, "TDPES13", dpp_tx_err },
850− { true, "TDPES14", dpp_tx_err },
851− { true, "TDPES15", dpp_tx_err },
852− { true, "RDPES0", dpp_rx_err },
853− { true, "RDPES1", dpp_rx_err },
854− { true, "RDPES2", dpp_rx_err },
855− { true, "RDPES3", dpp_rx_err },
856− { true, "RDPES4", dpp_rx_err },
857− { true, "RDPES5", dpp_rx_err },
858− { true, "RDPES6", dpp_rx_err },
859− { true, "RDPES7", dpp_rx_err },
860− { true, "RDPES8", dpp_rx_err },
861− { true, "RDPES9", dpp_rx_err },
862− { true, "RDPES10", dpp_rx_err },
863− { true, "RDPES11", dpp_rx_err },
864− { true, "RDPES12", dpp_rx_err },
865− { true, "RDPES13", dpp_rx_err },
866− { true, "RDPES14", dpp_rx_err },
867− { true, "RDPES15", dpp_rx_err },
837+ { true, "TDPES0", DPP_TX_ERR },
838+ { true, "TDPES1", DPP_TX_ERR },
839+ { true, "TDPES2", DPP_TX_ERR },
840+ { true, "TDPES3", DPP_TX_ERR },
841+ { true, "TDPES4", DPP_TX_ERR },
842+ { true, "TDPES5", DPP_TX_ERR },
843+ { true, "TDPES6", DPP_TX_ERR },
844+ { true, "TDPES7", DPP_TX_ERR },
845+ { true, "TDPES8", DPP_TX_ERR },
846+ { true, "TDPES9", DPP_TX_ERR },
847+ { true, "TDPES10", DPP_TX_ERR },
848+ { true, "TDPES11", DPP_TX_ERR },
849+ { true, "TDPES12", DPP_TX_ERR },
850+ { true, "TDPES13", DPP_TX_ERR },
851+ { true, "TDPES14", DPP_TX_ERR },
852+ { true, "TDPES15", DPP_TX_ERR },
853+ { true, "RDPES0", DPP_RX_ERR },
854+ { true, "RDPES1", DPP_RX_ERR },
855+ { true, "RDPES2", DPP_RX_ERR },
856+ { true, "RDPES3", DPP_RX_ERR },
857+ { true, "RDPES4", DPP_RX_ERR },
858+ { true, "RDPES5", DPP_RX_ERR },
859+ { true, "RDPES6", DPP_RX_ERR },
860+ { true, "RDPES7", DPP_RX_ERR },
861+ { true, "RDPES8", DPP_RX_ERR },
862+ { true, "RDPES9", DPP_RX_ERR },
863+ { true, "RDPES10", DPP_RX_ERR },
864+ { true, "RDPES11", DPP_RX_ERR },
865+ { true, "RDPES12", DPP_RX_ERR },
866+ { true, "RDPES13", DPP_RX_ERR },
867+ { true, "RDPES14", DPP_RX_ERR },
868+ { true, "RDPES15", DPP_RX_ERR },
868869 };
869870
870871 static void dwxgmac3_handle_dma_err(struct net_device *ndev,
drivers/net/ethernet/ti/Kconfig+1−0
@@ -189,6 +189,7 @@ config TI_ICSSG_PRUETH · 188 unmodified lines
189189 select TI_K3_CPPI_DESC_POOL
190190 depends on PRU_REMOTEPROC
191191 depends on ARCH_K3 && OF && TI_K3_UDMA_GLUE_LAYER
192+ depends on PTP_1588_CLOCK_OPTIONAL
192193 help
193194 Support dual Gigabit Ethernet ports over the ICSSG PRU Subsystem.
194195 This subsystem is available starting with the AM65 platform.
drivers/net/ethernet/ti/cpts.c+12−5
@@ -638,6 +638,16 @@ static void cpts_calc_mult_shift(struct cpts *cpts) · 637 unmodified lines
638638 freq, cpts->cc.mult, cpts->cc.shift, (ns - NSEC_PER_SEC));
639639 }
640640
641+static void cpts_clk_unregister(void *clk)
642+{
643+ clk_hw_unregister_mux(clk);
644+}
645+
646+static void cpts_clk_del_provider(void *np)
647+{
648+ of_clk_del_provider(np);
649+}
650+
641651 static int cpts_of_mux_clk_setup(struct cpts *cpts, struct device_node *node)
642652 {
643653 struct device_node *refclk_np;
@@ -687,9 +697,7 @@ static int cpts_of_mux_clk_setup(struct cpts *cpts, struct device_node *node) · 43 unmodified lines
687697 goto mux_fail;
688698 }
689699
690− ret = devm_add_action_or_reset(cpts->dev,
691− (void(*)(void *))clk_hw_unregister_mux,
692− clk_hw);
700+ ret = devm_add_action_or_reset(cpts->dev, cpts_clk_unregister, clk_hw);
693701 if (ret) {
694702 dev_err(cpts->dev, "add clkmux unreg action %d", ret);
695703 goto mux_fail;
@@ -699,8 +707,7 @@ static int cpts_of_mux_clk_setup(struct cpts *cpts, struct device_node *node) · 3 unmodified lines
699707 if (ret)
700708 goto mux_fail;
701709
702− ret = devm_add_action_or_reset(cpts->dev,
703− (void(*)(void *))of_clk_del_provider,
710+ ret = devm_add_action_or_reset(cpts->dev, cpts_clk_del_provider,
704711 refclk_np);
705712 if (ret) {
706713 dev_err(cpts->dev, "add clkmux provider unreg action %d", ret);
drivers/net/fddi/skfp/skfddi.c+1−0
@@ -153,6 +153,7 @@ static const struct pci_device_id skfddi_pci_tbl[] = { · 152 unmodified lines
153153 { } /* Terminating entry */
154154 };
155155 MODULE_DEVICE_TABLE(pci, skfddi_pci_tbl);
156+MODULE_DESCRIPTION("SysKonnect FDDI PCI driver");
156157 MODULE_LICENSE("GPL");
157158 MODULE_AUTHOR("Mirko Lindner <mlindner@syskonnect.de>");
158159
drivers/net/ieee802154/fakelb.c+1−0
@@ -259,4 +259,5 @@ static __exit void fake_remove_module(void) · 258 unmodified lines
259259
260260 module_init(fakelb_init_module);
261261 module_exit(fake_remove_module);
262+MODULE_DESCRIPTION("IEEE 802.15.4 loopback driver");
262263 MODULE_LICENSE("GPL");
drivers/net/ipvlan/ipvtap.c+1−0
@@ -237,4 +237,5 @@ static void __exit ipvtap_exit(void) · 236 unmodified lines
237237 module_exit(ipvtap_exit);
238238 MODULE_ALIAS_RTNL_LINK("ipvtap");
239239 MODULE_AUTHOR("Sainath Grandhi <sainath.grandhi@intel.com>");
240+MODULE_DESCRIPTION("IP-VLAN based tap driver");
240241 MODULE_LICENSE("GPL");
drivers/net/phy/mdio_devres.c+1−0
@@ -131,4 +131,5 @@ int __devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio, · 130 unmodified lines
131131 EXPORT_SYMBOL(__devm_of_mdiobus_register);
132132 #endif /* CONFIG_OF_MDIO */
133133
134+MODULE_DESCRIPTION("Network MDIO bus devres helpers");
134135 MODULE_LICENSE("GPL");
drivers/net/plip/plip.c+1−0
@@ -1437,4 +1437,5 @@ static int __init plip_init (void) · 1436 unmodified lines
14371437
14381438 module_init(plip_init);
14391439 module_exit(plip_cleanup_module);
1440+MODULE_DESCRIPTION("PLIP (parallel port) network module");
14401441 MODULE_LICENSE("GPL");
drivers/net/ppp/bsd_comp.c+1−0
@@ -1166,5 +1166,6 @@ static void __exit bsdcomp_cleanup(void) · 1165 unmodified lines
11661166
11671167 module_init(bsdcomp_init);
11681168 module_exit(bsdcomp_cleanup);
1169+MODULE_DESCRIPTION("PPP BSD-Compress compression module");
11691170 MODULE_LICENSE("Dual BSD/GPL");
11701171 MODULE_ALIAS("ppp-compress-" __stringify(CI_BSD_COMPRESS));
drivers/net/ppp/ppp_async.c+1−0
@@ -87,6 +87,7 @@ struct asyncppp { · 86 unmodified lines
8787 static int flag_time = HZ;
8888 module_param(flag_time, int, 0);
8989 MODULE_PARM_DESC(flag_time, "ppp_async: interval between flagged packets (in clock ticks)");
90+MODULE_DESCRIPTION("PPP async serial channel module");
9091 MODULE_LICENSE("GPL");
9192 MODULE_ALIAS_LDISC(N_PPP);
9293
drivers/net/ppp/ppp_deflate.c+1−0
@@ -630,6 +630,7 @@ static void __exit deflate_cleanup(void) · 629 unmodified lines
630630
631631 module_init(deflate_init);
632632 module_exit(deflate_cleanup);
633+MODULE_DESCRIPTION("PPP Deflate compression module");
633634 MODULE_LICENSE("Dual BSD/GPL");
634635 MODULE_ALIAS("ppp-compress-" __stringify(CI_DEFLATE));
635636 MODULE_ALIAS("ppp-compress-" __stringify(CI_DEFLATE_DRAFT));
drivers/net/ppp/ppp_generic.c+1−0
@@ -3604,6 +3604,7 @@ EXPORT_SYMBOL(ppp_input_error); · 3603 unmodified lines
36043604 EXPORT_SYMBOL(ppp_output_wakeup);
36053605 EXPORT_SYMBOL(ppp_register_compressor);
36063606 EXPORT_SYMBOL(ppp_unregister_compressor);
3607+MODULE_DESCRIPTION("Generic PPP layer driver");
36073608 MODULE_LICENSE("GPL");
36083609 MODULE_ALIAS_CHARDEV(PPP_MAJOR, 0);
36093610 MODULE_ALIAS_RTNL_LINK("ppp");
drivers/net/ppp/ppp_synctty.c+1−0
@@ -724,5 +724,6 @@ ppp_sync_cleanup(void) · 723 unmodified lines
724724
725725 module_init(ppp_sync_init);
726726 module_exit(ppp_sync_cleanup);
727+MODULE_DESCRIPTION("PPP synchronous TTY channel module");
727728 MODULE_LICENSE("GPL");
728729 MODULE_ALIAS_LDISC(N_SYNC_PPP);
drivers/net/ppp/pppoe.c+9−14
@@ -1007,26 +1007,21 @@ static int pppoe_recvmsg(struct socket *sock, struct msghdr *m, · 1006 unmodified lines
10071007 struct sk_buff *skb;
10081008 int error = 0;
10091009
1010− if (sk->sk_state & PPPOX_BOUND) {
1011− error = -EIO;
1012− goto end;
1013− }
1010+ if (sk->sk_state & PPPOX_BOUND)
1011+ return -EIO;
10141012
10151013 skb = skb_recv_datagram(sk, flags, &error);
1016− if (error < 0)
1017− goto end;
1014+ if (!skb)
1015+ return error;
10181016
1019− if (skb) {
1020− total_len = min_t(size_t, total_len, skb->len);
1021− error = skb_copy_datagram_msg(skb, 0, m, total_len);
1022− if (error == 0) {
1023− consume_skb(skb);
1024− return total_len;
1025− }
1017+ total_len = min_t(size_t, total_len, skb->len);
1018+ error = skb_copy_datagram_msg(skb, 0, m, total_len);
1019+ if (error == 0) {
1020+ consume_skb(skb);
1021+ return total_len;
10261022 }
10271023
10281024 kfree_skb(skb);
1029−end:
10301025 return error;
10311026 }
10321027
drivers/net/wireless/intel/iwlwifi/fw/acpi.c+9−6
@@ -618,7 +618,7 @@ int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt) · 617 unmodified lines
618618 &tbl_rev);
619619 if (!IS_ERR(wifi_pkg)) {
620620 if (tbl_rev != 2) {
621− ret = PTR_ERR(wifi_pkg);
621+ ret = -EINVAL;
622622 goto out_free;
623623 }
624624
@@ -634,7 +634,7 @@ int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt) · 9 unmodified lines
634634 &tbl_rev);
635635 if (!IS_ERR(wifi_pkg)) {
636636 if (tbl_rev != 1) {
637− ret = PTR_ERR(wifi_pkg);
637+ ret = -EINVAL;
638638 goto out_free;
639639 }
640640
@@ -650,7 +650,7 @@ int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt) · 9 unmodified lines
650650 &tbl_rev);
651651 if (!IS_ERR(wifi_pkg)) {
652652 if (tbl_rev != 0) {
653− ret = PTR_ERR(wifi_pkg);
653+ ret = -EINVAL;
654654 goto out_free;
655655 }
656656
@@ -707,7 +707,7 @@ int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt) · 50 unmodified lines
707707 &tbl_rev);
708708 if (!IS_ERR(wifi_pkg)) {
709709 if (tbl_rev != 2) {
710− ret = PTR_ERR(wifi_pkg);
710+ ret = -EINVAL;
711711 goto out_free;
712712 }
713713
@@ -723,7 +723,7 @@ int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt) · 9 unmodified lines
723723 &tbl_rev);
724724 if (!IS_ERR(wifi_pkg)) {
725725 if (tbl_rev != 1) {
726− ret = PTR_ERR(wifi_pkg);
726+ ret = -EINVAL;
727727 goto out_free;
728728 }
729729
@@ -739,7 +739,7 @@ int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt) · 9 unmodified lines
739739 &tbl_rev);
740740 if (!IS_ERR(wifi_pkg)) {
741741 if (tbl_rev != 0) {
742− ret = PTR_ERR(wifi_pkg);
742+ ret = -EINVAL;
743743 goto out_free;
744744 }
745745
@@ -1116,6 +1116,9 @@ int iwl_acpi_get_ppag_table(struct iwl_fw_runtime *fwrt) · 370 unmodified lines
11161116 goto read_table;
11171117 }
11181118
1119+ ret = PTR_ERR(wifi_pkg);
1120+ goto out_free;
1121+
11191122 read_table:
11201123 fwrt->ppag_ver = tbl_rev;
11211124 flags = &wifi_pkg->package.elements[1];
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c+3−0
@@ -3687,6 +3687,9 @@ iwl_mvm_sta_state_notexist_to_none(struct iwl_mvm *mvm, · 3686 unmodified lines
36873687 NL80211_TDLS_SETUP);
36883688 }
36893689
3690+ if (ret)
3691+ return ret;
3692+
36903693 for_each_sta_active_link(vif, sta, link_sta, i)
36913694 link_sta->agg.max_rc_amsdu_len = 1;
36923695
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c+4−0
@@ -505,6 +505,10 @@ static bool iwl_mvm_is_dup(struct ieee80211_sta *sta, int queue, · 504 unmodified lines
505505 return false;
506506
507507 mvm_sta = iwl_mvm_sta_from_mac80211(sta);
508+
509+ if (WARN_ON_ONCE(!mvm_sta->dup_data))
510+ return false;
511+
508512 dup_data = &mvm_sta->dup_data[queue];
509513
510514 /*
drivers/net/wireless/intel/iwlwifi/mvm/time-event.c+2−1
@@ -1,6 +1,6 @@
11 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
22 /*
3− * Copyright (C) 2012-2014, 2018-2023 Intel Corporation
3+ * Copyright (C) 2012-2014, 2018-2024 Intel Corporation
44 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
55 * Copyright (C) 2017 Intel Deutschland GmbH
66 */
@@ -972,6 +972,7 @@ void iwl_mvm_rx_session_protect_notif(struct iwl_mvm *mvm, · 965 unmodified lines
972972 if (!le32_to_cpu(notif->status) || !le32_to_cpu(notif->start)) {
973973 /* End TE, notify mac80211 */
974974 mvmvif->time_event_data.id = SESSION_PROTECT_CONF_MAX_ID;
975+ mvmvif->time_event_data.link_id = -1;
975976 iwl_mvm_p2p_roc_finished(mvm);
976977 ieee80211_remain_on_channel_expired(mvm->hw);
977978 } else if (le32_to_cpu(notif->start)) {
drivers/net/wireless/intel/iwlwifi/mvm/tx.c+59−10
@@ -520,13 +520,24 @@ static void iwl_mvm_set_tx_cmd_crypto(struct iwl_mvm *mvm, · 519 unmodified lines
520520 }
521521 }
522522
523+static void iwl_mvm_copy_hdr(void *cmd, const void *hdr, int hdrlen,
524+ const u8 *addr3_override)
525+{
526+ struct ieee80211_hdr *out_hdr = cmd;
527+
528+ memcpy(cmd, hdr, hdrlen);
529+ if (addr3_override)
530+ memcpy(out_hdr->addr3, addr3_override, ETH_ALEN);
531+}
532+
523533 /*
524534 * Allocates and sets the Tx cmd the driver data pointers in the skb
525535 */
526536 static struct iwl_device_tx_cmd *
527537 iwl_mvm_set_tx_params(struct iwl_mvm *mvm, struct sk_buff *skb,
528538 struct ieee80211_tx_info *info, int hdrlen,
529− struct ieee80211_sta *sta, u8 sta_id)
539+ struct ieee80211_sta *sta, u8 sta_id,
540+ const u8 *addr3_override)
530541 {
531542 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
532543 struct iwl_device_tx_cmd *dev_cmd;
@@ -584,7 +595,7 @@ iwl_mvm_set_tx_params(struct iwl_mvm *mvm, struct sk_buff *skb, · 51 unmodified lines
584595 cmd->len = cpu_to_le16((u16)skb->len);
585596
586597 /* Copy MAC header from skb into command buffer */
587− memcpy(cmd->hdr, hdr, hdrlen);
598+ iwl_mvm_copy_hdr(cmd->hdr, hdr, hdrlen, addr3_override);
588599
589600 cmd->flags = cpu_to_le16(flags);
590601 cmd->rate_n_flags = cpu_to_le32(rate_n_flags);
@@ -599,7 +610,7 @@ iwl_mvm_set_tx_params(struct iwl_mvm *mvm, struct sk_buff *skb, · 8 unmodified lines
599610 cmd->len = cpu_to_le16((u16)skb->len);
600611
601612 /* Copy MAC header from skb into command buffer */
602− memcpy(cmd->hdr, hdr, hdrlen);
613+ iwl_mvm_copy_hdr(cmd->hdr, hdr, hdrlen, addr3_override);
603614
604615 cmd->flags = cpu_to_le32(flags);
605616 cmd->rate_n_flags = cpu_to_le32(rate_n_flags);
@@ -617,7 +628,7 @@ iwl_mvm_set_tx_params(struct iwl_mvm *mvm, struct sk_buff *skb, · 11 unmodified lines
617628 iwl_mvm_set_tx_cmd_rate(mvm, tx_cmd, info, sta, hdr->frame_control);
618629
619630 /* Copy MAC header from skb into command buffer */
620− memcpy(tx_cmd->hdr, hdr, hdrlen);
631+ iwl_mvm_copy_hdr(tx_cmd->hdr, hdr, hdrlen, addr3_override);
621632
622633 out:
623634 return dev_cmd;
@@ -820,7 +831,8 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb) · 196 unmodified lines
820831
821832 IWL_DEBUG_TX(mvm, "station Id %d, queue=%d\n", sta_id, queue);
822833
823− dev_cmd = iwl_mvm_set_tx_params(mvm, skb, &info, hdrlen, NULL, sta_id);
834+ dev_cmd = iwl_mvm_set_tx_params(mvm, skb, &info, hdrlen, NULL, sta_id,
835+ NULL);
824836 if (!dev_cmd)
825837 return -1;
826838
@@ -1140,7 +1152,8 @@ static int iwl_mvm_tx_pkt_queued(struct iwl_mvm *mvm, · 313 unmodified lines
11401152 */
11411153 static int iwl_mvm_tx_mpdu(struct iwl_mvm *mvm, struct sk_buff *skb,
11421154 struct ieee80211_tx_info *info,
1143− struct ieee80211_sta *sta)
1155+ struct ieee80211_sta *sta,
1156+ const u8 *addr3_override)
11441157 {
11451158 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
11461159 struct iwl_mvm_sta *mvmsta;
@@ -1172,7 +1185,8 @@ static int iwl_mvm_tx_mpdu(struct iwl_mvm *mvm, struct sk_buff *skb, · 25 unmodified lines
11721185 iwl_mvm_probe_resp_set_noa(mvm, skb);
11731186
11741187 dev_cmd = iwl_mvm_set_tx_params(mvm, skb, info, hdrlen,
1175− sta, mvmsta->deflink.sta_id);
1188+ sta, mvmsta->deflink.sta_id,
1189+ addr3_override);
11761190 if (!dev_cmd)
11771191 goto drop;
11781192
@@ -1294,9 +1308,11 @@ int iwl_mvm_tx_skb_sta(struct iwl_mvm *mvm, struct sk_buff *skb, · 115 unmodified lines
12941308 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
12951309 struct ieee80211_tx_info info;
12961310 struct sk_buff_head mpdus_skbs;
1311+ struct ieee80211_vif *vif;
12971312 unsigned int payload_len;
12981313 int ret;
12991314 struct sk_buff *orig_skb = skb;
1315+ const u8 *addr3;
13001316
13011317 if (WARN_ON_ONCE(!mvmsta))
13021318 return -1;
@@ -1307,26 +1323,59 @@ int iwl_mvm_tx_skb_sta(struct iwl_mvm *mvm, struct sk_buff *skb, · 4 unmodified lines
13071323 memcpy(&info, skb->cb, sizeof(info));
13081324
13091325 if (!skb_is_gso(skb))
1310− return iwl_mvm_tx_mpdu(mvm, skb, &info, sta);
1326+ return iwl_mvm_tx_mpdu(mvm, skb, &info, sta, NULL);
13111327
13121328 payload_len = skb_tail_pointer(skb) - skb_transport_header(skb) -
13131329 tcp_hdrlen(skb) + skb->data_len;
13141330
13151331 if (payload_len <= skb_shinfo(skb)->gso_size)
1316− return iwl_mvm_tx_mpdu(mvm, skb, &info, sta);
1332+ return iwl_mvm_tx_mpdu(mvm, skb, &info, sta, NULL);
13171333
13181334 __skb_queue_head_init(&mpdus_skbs);
13191335
1336+ vif = info.control.vif;
1337+ if (!vif)
1338+ return -1;
1339+
13201340 ret = iwl_mvm_tx_tso(mvm, skb, &info, sta, &mpdus_skbs);
13211341 if (ret)
13221342 return ret;
13231343
13241344 WARN_ON(skb_queue_empty(&mpdus_skbs));
13251345
1346+ /*
1347+ * As described in IEEE sta 802.11-2020, table 9-30 (Address
1348+ * field contents), A-MSDU address 3 should contain the BSSID
1349+ * address.
1350+ * Pass address 3 down to iwl_mvm_tx_mpdu() and further to set it
1351+ * in the command header. We need to preserve the original
1352+ * address 3 in the skb header to correctly create all the
1353+ * A-MSDU subframe headers from it.
1354+ */
1355+ switch (vif->type) {
1356+ case NL80211_IFTYPE_STATION:
1357+ addr3 = vif->cfg.ap_addr;
1358+ break;
1359+ case NL80211_IFTYPE_AP:
1360+ addr3 = vif->addr;
1361+ break;
1362+ default:
1363+ addr3 = NULL;
1364+ break;
1365+ }
1366+
13261367 while (!skb_queue_empty(&mpdus_skbs)) {
1368+ struct ieee80211_hdr *hdr;
1369+ bool amsdu;
1370+
13271371 skb = __skb_dequeue(&mpdus_skbs);
1372+ hdr = (void *)skb->data;
1373+ amsdu = ieee80211_is_data_qos(hdr->frame_control) &&
1374+ (*ieee80211_get_qos_ctl(hdr) &
1375+ IEEE80211_QOS_CTL_A_MSDU_PRESENT);
13281376
1329− ret = iwl_mvm_tx_mpdu(mvm, skb, &info, sta);
1377+ ret = iwl_mvm_tx_mpdu(mvm, skb, &info, sta,
1378+ amsdu ? addr3 : NULL);
13301379 if (ret) {
13311380 /* Free skbs created as part of TSO logic that have not yet been dequeued */
13321381 __skb_queue_purge(&mpdus_skbs);
drivers/net/xen-netback/netback.c+1−0
@@ -1778,5 +1778,6 @@ static void __exit netback_fini(void) · 1777 unmodified lines
17781778 }
17791779 module_exit(netback_fini);
17801780
1781+MODULE_DESCRIPTION("Xen backend network device module");
17811782 MODULE_LICENSE("Dual BSD/GPL");
17821783 MODULE_ALIAS("xen-backend:vif");
include/linux/netdevice.h+5−5
@@ -2141,6 +2141,11 @@ struct net_device { · 2140 unmodified lines
21412141
21422142 /* TXRX read-mostly hotpath */
21432143 __cacheline_group_begin(net_device_read_txrx);
2144+ union {
2145+ struct pcpu_lstats __percpu *lstats;
2146+ struct pcpu_sw_netstats __percpu *tstats;
2147+ struct pcpu_dstats __percpu *dstats;
2148+ };
21442149 unsigned int flags;
21452150 unsigned short hard_header_len;
21462151 netdev_features_t features;
@@ -2395,11 +2400,6 @@ struct net_device { · 248 unmodified lines
23952400 enum netdev_ml_priv_type ml_priv_type;
23962401
23972402 enum netdev_stat_type pcpu_stat_type:8;
2398− union {
2399− struct pcpu_lstats __percpu *lstats;
2400− struct pcpu_sw_netstats __percpu *tstats;
2401− struct pcpu_dstats __percpu *dstats;
2402− };
24032403
24042404 #if IS_ENABLED(CONFIG_GARP)
24052405 struct garp_port __rcu *garp_port;
include/linux/tcp.h+3−3
@@ -221,8 +221,10 @@ struct tcp_sock { · 220 unmodified lines
221221 u32 lost_out; /* Lost packets */
222222 u32 sacked_out; /* SACK'd packets */
223223 u16 tcp_header_len; /* Bytes of tcp header to send */
224+ u8 scaling_ratio; /* see tcp_win_from_space() */
224225 u8 chrono_type : 2, /* current chronograph type */
225226 repair : 1,
227+ tcp_usec_ts : 1, /* TSval values in usec */
226228 is_sack_reneg:1, /* in recovery from loss with SACK reneg? */
227229 is_cwnd_limited:1;/* forward progress limited by snd_cwnd? */
228230 __cacheline_group_end(tcp_sock_read_txrx);
@@ -352,7 +354,6 @@ struct tcp_sock { · 123 unmodified lines
352354 u32 compressed_ack_rcv_nxt;
353355 struct list_head tsq_node; /* anchor in tsq_tasklet.head list */
354356
355− u8 scaling_ratio; /* see tcp_win_from_space() */
356357 /* Information of the most recently (s)acked skb */
357358 struct tcp_rack {
358359 u64 mstamp; /* (Re)sent time of the skb */
@@ -368,8 +369,7 @@ struct tcp_sock { · 9 unmodified lines
368369 u8 compressed_ack;
369370 u8 dup_ack_counter:2,
370371 tlp_retrans:1, /* TLP is a retransmission */
371− tcp_usec_ts:1, /* TSval values in usec */
372− unused:4;
372+ unused:5;
373373 u8 thin_lto : 1,/* Use linear timeouts for thin streams */
374374 recvmsg_inq : 1,/* Indicate # of bytes in queue upon recvmsg */
375375 fastopen_connect:1, /* FASTOPEN_CONNECT sockopt */
include/net/tls.h+0−5
@@ -97,9 +97,6 @@ struct tls_sw_context_tx { · 96 unmodified lines
9797 struct tls_rec *open_rec;
9898 struct list_head tx_list;
9999 atomic_t encrypt_pending;
100− /* protect crypto_wait with encrypt_pending */
101− spinlock_t encrypt_compl_lock;
102− int async_notify;
103100 u8 async_capable:1;
104101
105102 #define BIT_TX_SCHEDULED 0
@@ -136,8 +133,6 @@ struct tls_sw_context_rx { · 30 unmodified lines
136133 struct tls_strparser strp;
137134
138135 atomic_t decrypt_pending;
139− /* protect crypto_wait with decrypt_pending*/
140− spinlock_t decrypt_compl_lock;
141136 struct sk_buff_head async_hold;
142137 struct wait_queue_head wq;
143138 };
net/6lowpan/core.c+1−0
@@ -179,4 +179,5 @@ static void __exit lowpan_module_exit(void) · 178 unmodified lines
179179 module_init(lowpan_module_init);
180180 module_exit(lowpan_module_exit);
181181
182+MODULE_DESCRIPTION("IPv6 over Low-Power Wireless Personal Area Network core module");
182183 MODULE_LICENSE("GPL");
net/atm/mpc.c+1−0
@@ -1532,4 +1532,5 @@ static void __exit atm_mpoa_cleanup(void) · 1531 unmodified lines
15321532 module_init(atm_mpoa_init);
15331533 module_exit(atm_mpoa_cleanup);
15341534
1535+MODULE_DESCRIPTION("Multi-Protocol Over ATM (MPOA) driver");
15351536 MODULE_LICENSE("GPL");
net/can/j1939/j1939-priv.h+2−1
@@ -86,7 +86,7 @@ struct j1939_priv { · 85 unmodified lines
8686 unsigned int tp_max_packet_size;
8787
8888 /* lock for j1939_socks list */
89− spinlock_t j1939_socks_lock;
89+ rwlock_t j1939_socks_lock;
9090 struct list_head j1939_socks;
9191
9292 struct kref rx_kref;
@@ -301,6 +301,7 @@ struct j1939_sock { · 208 unmodified lines
301301
302302 int ifindex;
303303 struct j1939_addr addr;
304+ spinlock_t filters_lock;
304305 struct j1939_filter *filters;
305306 int nfilters;
306307 pgn_t pgn_rx_filter;
net/can/j1939/main.c+1−1
@@ -274,7 +274,7 @@ struct j1939_priv *j1939_netdev_start(struct net_device *ndev) · 273 unmodified lines
274274 return ERR_PTR(-ENOMEM);
275275
276276 j1939_tp_init(priv);
277− spin_lock_init(&priv->j1939_socks_lock);
277+ rwlock_init(&priv->j1939_socks_lock);
278278 INIT_LIST_HEAD(&priv->j1939_socks);
279279
280280 mutex_lock(&j1939_netdev_lock);
net/can/j1939/socket.c+30−16
@@ -80,16 +80,16 @@ static void j1939_jsk_add(struct j1939_priv *priv, struct j1939_sock *jsk) · 79 unmodified lines
8080 jsk->state |= J1939_SOCK_BOUND;
8181 j1939_priv_get(priv);
8282
83− spin_lock_bh(&priv->j1939_socks_lock);
83+ write_lock_bh(&priv->j1939_socks_lock);
8484 list_add_tail(&jsk->list, &priv->j1939_socks);
85− spin_unlock_bh(&priv->j1939_socks_lock);
85+ write_unlock_bh(&priv->j1939_socks_lock);
8686 }
8787
8888 static void j1939_jsk_del(struct j1939_priv *priv, struct j1939_sock *jsk)
8989 {
90− spin_lock_bh(&priv->j1939_socks_lock);
90+ write_lock_bh(&priv->j1939_socks_lock);
9191 list_del_init(&jsk->list);
92− spin_unlock_bh(&priv->j1939_socks_lock);
92+ write_unlock_bh(&priv->j1939_socks_lock);
9393
9494 j1939_priv_put(priv);
9595 jsk->state &= ~J1939_SOCK_BOUND;
@@ -262,12 +262,17 @@ static bool j1939_sk_match_dst(struct j1939_sock *jsk, · 166 unmodified lines
262262 static bool j1939_sk_match_filter(struct j1939_sock *jsk,
263263 const struct j1939_sk_buff_cb *skcb)
264264 {
265− const struct j1939_filter *f = jsk->filters;
266− int nfilter = jsk->nfilters;
265+ const struct j1939_filter *f;
266+ int nfilter;
267+
268+ spin_lock_bh(&jsk->filters_lock);
269+
270+ f = jsk->filters;
271+ nfilter = jsk->nfilters;
267272
268273 if (!nfilter)
269274 /* receive all when no filters are assigned */
270− return true;
275+ goto filter_match_found;
271276
272277 for (; nfilter; ++f, --nfilter) {
273278 if ((skcb->addr.pgn & f->pgn_mask) != f->pgn)
@@ -276,9 +281,15 @@ static bool j1939_sk_match_filter(struct j1939_sock *jsk, · 2 unmodified lines
276281 continue;
277282 if ((skcb->addr.src_name & f->name_mask) != f->name)
278283 continue;
279− return true;
284+ goto filter_match_found;
280285 }
286+
287+ spin_unlock_bh(&jsk->filters_lock);
281288 return false;
289+
290+filter_match_found:
291+ spin_unlock_bh(&jsk->filters_lock);
292+ return true;
282293 }
283294
284295 static bool j1939_sk_recv_match_one(struct j1939_sock *jsk,
@@ -329,13 +340,13 @@ bool j1939_sk_recv_match(struct j1939_priv *priv, struct j1939_sk_buff_cb *skcb) · 44 unmodified lines
329340 struct j1939_sock *jsk;
330341 bool match = false;
331342
332− spin_lock_bh(&priv->j1939_socks_lock);
343+ read_lock_bh(&priv->j1939_socks_lock);
333344 list_for_each_entry(jsk, &priv->j1939_socks, list) {
334345 match = j1939_sk_recv_match_one(jsk, skcb);
335346 if (match)
336347 break;
337348 }
338− spin_unlock_bh(&priv->j1939_socks_lock);
349+ read_unlock_bh(&priv->j1939_socks_lock);
339350
340351 return match;
341352 }
@@ -344,11 +355,11 @@ void j1939_sk_recv(struct j1939_priv *priv, struct sk_buff *skb) · 2 unmodified lines
344355 {
345356 struct j1939_sock *jsk;
346357
347− spin_lock_bh(&priv->j1939_socks_lock);
358+ read_lock_bh(&priv->j1939_socks_lock);
348359 list_for_each_entry(jsk, &priv->j1939_socks, list) {
349360 j1939_sk_recv_one(jsk, skb);
350361 }
351− spin_unlock_bh(&priv->j1939_socks_lock);
362+ read_unlock_bh(&priv->j1939_socks_lock);
352363 }
353364
354365 static void j1939_sk_sock_destruct(struct sock *sk)
@@ -401,6 +412,7 @@ static int j1939_sk_init(struct sock *sk) · 46 unmodified lines
401412 atomic_set(&jsk->skb_pending, 0);
402413 spin_lock_init(&jsk->sk_session_queue_lock);
403414 INIT_LIST_HEAD(&jsk->sk_session_queue);
415+ spin_lock_init(&jsk->filters_lock);
404416
405417 /* j1939_sk_sock_destruct() depends on SOCK_RCU_FREE flag */
406418 sock_set_flag(sk, SOCK_RCU_FREE);
@@ -703,9 +715,11 @@ static int j1939_sk_setsockopt(struct socket *sock, int level, int optname, · 296 unmodified lines
703715 }
704716
705717 lock_sock(&jsk->sk);
718+ spin_lock_bh(&jsk->filters_lock);
706719 ofilters = jsk->filters;
707720 jsk->filters = filters;
708721 jsk->nfilters = count;
722+ spin_unlock_bh(&jsk->filters_lock);
709723 release_sock(&jsk->sk);
710724 kfree(ofilters);
711725 return 0;
@@ -1080,12 +1094,12 @@ void j1939_sk_errqueue(struct j1939_session *session, · 368 unmodified lines
10801094 }
10811095
10821096 /* spread RX notifications to all sockets subscribed to this session */
1083− spin_lock_bh(&priv->j1939_socks_lock);
1097+ read_lock_bh(&priv->j1939_socks_lock);
10841098 list_for_each_entry(jsk, &priv->j1939_socks, list) {
10851099 if (j1939_sk_recv_match_one(jsk, &session->skcb))
10861100 __j1939_sk_errqueue(session, &jsk->sk, type);
10871101 }
1088− spin_unlock_bh(&priv->j1939_socks_lock);
1102+ read_unlock_bh(&priv->j1939_socks_lock);
10891103 };
10901104
10911105 void j1939_sk_send_loop_abort(struct sock *sk, int err)
@@ -1273,7 +1287,7 @@ void j1939_sk_netdev_event_netdown(struct j1939_priv *priv) · 181 unmodified lines
12731287 struct j1939_sock *jsk;
12741288 int error_code = ENETDOWN;
12751289
1276− spin_lock_bh(&priv->j1939_socks_lock);
1290+ read_lock_bh(&priv->j1939_socks_lock);
12771291 list_for_each_entry(jsk, &priv->j1939_socks, list) {
12781292 jsk->sk.sk_err = error_code;
12791293 if (!sock_flag(&jsk->sk, SOCK_DEAD))
@@ -1281,7 +1295,7 @@ void j1939_sk_netdev_event_netdown(struct j1939_priv *priv) · 1 unmodified line
12811295
12821296 j1939_sk_queue_drop_all(priv, jsk, error_code);
12831297 }
1284− spin_unlock_bh(&priv->j1939_socks_lock);
1298+ read_unlock_bh(&priv->j1939_socks_lock);
12851299 }
12861300
12871301 static int j1939_sk_no_ioctlcmd(struct socket *sock, unsigned int cmd,
net/core/dev.c+3−2
@@ -336,7 +336,7 @@ int netdev_name_node_alt_create(struct net_device *dev, const char *name) · 335 unmodified lines
336336 return -ENOMEM;
337337 netdev_name_node_add(net, name_node);
338338 /* The node that holds dev->name acts as a head of per-device list. */
339− list_add_tail(&name_node->list, &dev->name_node->list);
339+ list_add_tail_rcu(&name_node->list, &dev->name_node->list);
340340
341341 return 0;
342342 }
@@ -11652,11 +11652,12 @@ static void __init net_dev_struct_check(void) · 11309 unmodified lines
1165211652 CACHELINE_ASSERT_GROUP_SIZE(struct net_device, net_device_read_tx, 160);
1165311653
1165411654 /* TXRX read-mostly hotpath */
11655+ CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, lstats);
1165511656 CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, flags);
1165611657 CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, hard_header_len);
1165711658 CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, features);
1165811659 CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, ip6_ptr);
11659− CACHELINE_ASSERT_GROUP_SIZE(struct net_device, net_device_read_txrx, 30);
11660+ CACHELINE_ASSERT_GROUP_SIZE(struct net_device, net_device_read_txrx, 38);
1166011661
1166111662 /* RX read-mostly hotpath */
1166211663 CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_rx, ptype_specific);
net/core/rtnetlink.c+9−6
@@ -1020,14 +1020,17 @@ static size_t rtnl_xdp_size(void) · 1019 unmodified lines
10201020 static size_t rtnl_prop_list_size(const struct net_device *dev)
10211021 {
10221022 struct netdev_name_node *name_node;
1023− size_t size;
1023+ unsigned int cnt = 0;
1024+
1025+ rcu_read_lock();
1026+ list_for_each_entry_rcu(name_node, &dev->name_node->list, list)
1027+ cnt++;
1028+ rcu_read_unlock();
10241029
1025− if (list_empty(&dev->name_node->list))
1030+ if (!cnt)
10261031 return 0;
1027− size = nla_total_size(0);
1028− list_for_each_entry(name_node, &dev->name_node->list, list)
1029− size += nla_total_size(ALTIFNAMSIZ);
1030− return size;
1032+
1033+ return nla_total_size(0) + cnt * nla_total_size(ALTIFNAMSIZ);
10311034 }
10321035
10331036 static size_t rtnl_proto_down_size(const struct net_device *dev)
net/handshake/handshake-test.c+4−1
@@ -471,7 +471,10 @@ static void handshake_req_destroy_test1(struct kunit *test) · 470 unmodified lines
471471 handshake_req_cancel(sock->sk);
472472
473473 /* Act */
474− fput(filp);
474+ /* Ensure the close/release/put process has run to
475+ * completion before checking the result.
476+ */
477+ __fput_sync(filp);
475478
476479 /* Assert */
477480 KUNIT_EXPECT_PTR_EQ(test, handshake_req_destroy_test, req);
net/ipv4/ah4.c+1−0
@@ -597,5 +597,6 @@ static void __exit ah4_fini(void) · 596 unmodified lines
597597
598598 module_init(ah4_init);
599599 module_exit(ah4_fini);
600+MODULE_DESCRIPTION("IPv4 AH transformation library");
600601 MODULE_LICENSE("GPL");
601602 MODULE_ALIAS_XFRM_TYPE(AF_INET, XFRM_PROTO_AH);
net/ipv4/esp4.c+1−0
@@ -1247,5 +1247,6 @@ static void __exit esp4_fini(void) · 1246 unmodified lines
12471247
12481248 module_init(esp4_init);
12491249 module_exit(esp4_fini);
1250+MODULE_DESCRIPTION("IPv4 ESP transformation library");
12501251 MODULE_LICENSE("GPL");
12511252 MODULE_ALIAS_XFRM_TYPE(AF_INET, XFRM_PROTO_ESP);
net/ipv4/ip_gre.c+1−0
@@ -1793,6 +1793,7 @@ static void __exit ipgre_fini(void) · 1792 unmodified lines
17931793
17941794 module_init(ipgre_init);
17951795 module_exit(ipgre_fini);
1796+MODULE_DESCRIPTION("IPv4 GRE tunnels over IP library");
17961797 MODULE_LICENSE("GPL");
17971798 MODULE_ALIAS_RTNL_LINK("gre");
17981799 MODULE_ALIAS_RTNL_LINK("gretap");
net/ipv4/ip_output.c+8−5
@@ -972,8 +972,8 @@ static int __ip_append_data(struct sock *sk, · 971 unmodified lines
972972 unsigned int maxfraglen, fragheaderlen, maxnonfragsize;
973973 int csummode = CHECKSUM_NONE;
974974 struct rtable *rt = (struct rtable *)cork->dst;
975+ bool paged, hold_tskey, extra_uref = false;
975976 unsigned int wmem_alloc_delta = 0;
976− bool paged, extra_uref = false;
977977 u32 tskey = 0;
978978
979979 skb = skb_peek_tail(queue);
@@ -982,10 +982,6 @@ static int __ip_append_data(struct sock *sk, · 2 unmodified lines
982982 mtu = cork->gso_size ? IP_MAX_MTU : cork->fragsize;
983983 paged = !!cork->gso_size;
984984
985− if (cork->tx_flags & SKBTX_ANY_TSTAMP &&
986− READ_ONCE(sk->sk_tsflags) & SOF_TIMESTAMPING_OPT_ID)
987− tskey = atomic_inc_return(&sk->sk_tskey) - 1;
988−
989985 hh_len = LL_RESERVED_SPACE(rt->dst.dev);
990986
991987 fragheaderlen = sizeof(struct iphdr) + (opt ? opt->optlen : 0);
@@ -1052,6 +1048,11 @@ static int __ip_append_data(struct sock *sk, · 60 unmodified lines
10521048
10531049 cork->length += length;
10541050
1051+ hold_tskey = cork->tx_flags & SKBTX_ANY_TSTAMP &&
1052+ READ_ONCE(sk->sk_tsflags) & SOF_TIMESTAMPING_OPT_ID;
1053+ if (hold_tskey)
1054+ tskey = atomic_inc_return(&sk->sk_tskey) - 1;
1055+
10551056 /* So, what's going on in the loop below?
10561057 *
10571058 * We use calculated fragment length to generate chained skb,
@@ -1274,6 +1275,8 @@ error: · 216 unmodified lines
12741275 cork->length -= length;
12751276 IP_INC_STATS(sock_net(sk), IPSTATS_MIB_OUTDISCARDS);
12761277 refcount_add(wmem_alloc_delta, &sk->sk_wmem_alloc);
1278+ if (hold_tskey)
1279+ atomic_dec(&sk->sk_tskey);
12771280 return err;
12781281 }
12791282
net/ipv4/ip_tunnel.c+1−0
@@ -1298,4 +1298,5 @@ void ip_tunnel_setup(struct net_device *dev, unsigned int net_id) · 1297 unmodified lines
12981298 }
12991299 EXPORT_SYMBOL_GPL(ip_tunnel_setup);
13001300
1301+MODULE_DESCRIPTION("IPv4 tunnel implementation library");
13011302 MODULE_LICENSE("GPL");
net/ipv4/ip_vti.c+1−0
@@ -721,6 +721,7 @@ static void __exit vti_fini(void) · 720 unmodified lines
721721
722722 module_init(vti_init);
723723 module_exit(vti_fini);
724+MODULE_DESCRIPTION("Virtual (secure) IP tunneling library");
724725 MODULE_LICENSE("GPL");
725726 MODULE_ALIAS_RTNL_LINK("vti");
726727 MODULE_ALIAS_NETDEV("ip_vti0");
net/ipv4/ipip.c+1−0
@@ -658,6 +658,7 @@ static void __exit ipip_fini(void) · 657 unmodified lines
658658
659659 module_init(ipip_init);
660660 module_exit(ipip_fini);
661+MODULE_DESCRIPTION("IP/IP protocol decoder library");
661662 MODULE_LICENSE("GPL");
662663 MODULE_ALIAS_RTNL_LINK("ipip");
663664 MODULE_ALIAS_NETDEV("tunl0");
net/ipv4/tcp.c+2−1
@@ -4615,7 +4615,8 @@ static void __init tcp_struct_check(void) · 4614 unmodified lines
46154615 CACHELINE_ASSERT_GROUP_MEMBER(struct tcp_sock, tcp_sock_read_txrx, prr_out);
46164616 CACHELINE_ASSERT_GROUP_MEMBER(struct tcp_sock, tcp_sock_read_txrx, lost_out);
46174617 CACHELINE_ASSERT_GROUP_MEMBER(struct tcp_sock, tcp_sock_read_txrx, sacked_out);
4618− CACHELINE_ASSERT_GROUP_SIZE(struct tcp_sock, tcp_sock_read_txrx, 31);
4618+ CACHELINE_ASSERT_GROUP_MEMBER(struct tcp_sock, tcp_sock_read_txrx, scaling_ratio);
4619+ CACHELINE_ASSERT_GROUP_SIZE(struct tcp_sock, tcp_sock_read_txrx, 32);
46194620
46204621 /* RX read-mostly hotpath cache lines */
46214622 CACHELINE_ASSERT_GROUP_MEMBER(struct tcp_sock, tcp_sock_read_rx, copied_seq);
net/ipv4/tunnel4.c+1−0
@@ -294,4 +294,5 @@ static void __exit tunnel4_fini(void) · 293 unmodified lines
294294
295295 module_init(tunnel4_init);
296296 module_exit(tunnel4_fini);
297+MODULE_DESCRIPTION("IPv4 XFRM tunnel library");
297298 MODULE_LICENSE("GPL");
net/ipv4/udp_tunnel_core.c+1−0
@@ -253,4 +253,5 @@ struct rtable *udp_tunnel_dst_lookup(struct sk_buff *skb, · 252 unmodified lines
253253 }
254254 EXPORT_SYMBOL_GPL(udp_tunnel_dst_lookup);
255255
256+MODULE_DESCRIPTION("IPv4 Foo over UDP tunnel driver");
256257 MODULE_LICENSE("GPL");
net/ipv4/xfrm4_tunnel.c+1−0
@@ -114,5 +114,6 @@ static void __exit ipip_fini(void) · 113 unmodified lines
114114
115115 module_init(ipip_init);
116116 module_exit(ipip_fini);
117+MODULE_DESCRIPTION("IPv4 XFRM tunnel driver");
117118 MODULE_LICENSE("GPL");
118119 MODULE_ALIAS_XFRM_TYPE(AF_INET, XFRM_PROTO_IPIP);
net/ipv6/ah6.c+1−0
@@ -800,5 +800,6 @@ static void __exit ah6_fini(void) · 799 unmodified lines
800800 module_init(ah6_init);
801801 module_exit(ah6_fini);
802802
803+MODULE_DESCRIPTION("IPv6 AH transformation helpers");
803804 MODULE_LICENSE("GPL");
804805 MODULE_ALIAS_XFRM_TYPE(AF_INET6, XFRM_PROTO_AH);
net/ipv6/esp6.c+1−0
@@ -1301,5 +1301,6 @@ static void __exit esp6_fini(void) · 1300 unmodified lines
13011301 module_init(esp6_init);
13021302 module_exit(esp6_fini);
13031303
1304+MODULE_DESCRIPTION("IPv6 ESP transformation helpers");
13041305 MODULE_LICENSE("GPL");
13051306 MODULE_ALIAS_XFRM_TYPE(AF_INET6, XFRM_PROTO_ESP);
net/ipv6/ip6_output.c+8−5
@@ -1424,11 +1424,11 @@ static int __ip6_append_data(struct sock *sk, · 1423 unmodified lines
14241424 bool zc = false;
14251425 u32 tskey = 0;
14261426 struct rt6_info *rt = (struct rt6_info *)cork->dst;
1427+ bool paged, hold_tskey, extra_uref = false;
14271428 struct ipv6_txoptions *opt = v6_cork->opt;
14281429 int csummode = CHECKSUM_NONE;
14291430 unsigned int maxnonfragsize, headersize;
14301431 unsigned int wmem_alloc_delta = 0;
1431− bool paged, extra_uref = false;
14321432
14331433 skb = skb_peek_tail(queue);
14341434 if (!skb) {
@@ -1440,10 +1440,6 @@ static int __ip6_append_data(struct sock *sk, · 5 unmodified lines
14401440 mtu = cork->gso_size ? IP6_MAX_MTU : cork->fragsize;
14411441 orig_mtu = mtu;
14421442
1443− if (cork->tx_flags & SKBTX_ANY_TSTAMP &&
1444− READ_ONCE(sk->sk_tsflags) & SOF_TIMESTAMPING_OPT_ID)
1445− tskey = atomic_inc_return(&sk->sk_tskey) - 1;
1446−
14471443 hh_len = LL_RESERVED_SPACE(rt->dst.dev);
14481444
14491445 fragheaderlen = sizeof(struct ipv6hdr) + rt->rt6i_nfheader_len +
@@ -1538,6 +1534,11 @@ emsgsize: · 88 unmodified lines
15381534 flags &= ~MSG_SPLICE_PAGES;
15391535 }
15401536
1537+ hold_tskey = cork->tx_flags & SKBTX_ANY_TSTAMP &&
1538+ READ_ONCE(sk->sk_tsflags) & SOF_TIMESTAMPING_OPT_ID;
1539+ if (hold_tskey)
1540+ tskey = atomic_inc_return(&sk->sk_tskey) - 1;
1541+
15411542 /*
15421543 * Let's try using as much space as possible.
15431544 * Use MTU if total length of the message fits into the MTU.
@@ -1794,6 +1795,8 @@ error: · 250 unmodified lines
17941795 cork->length -= length;
17951796 IP6_INC_STATS(sock_net(sk), rt->rt6i_idev, IPSTATS_MIB_OUTDISCARDS);
17961797 refcount_add(wmem_alloc_delta, &sk->sk_wmem_alloc);
1798+ if (hold_tskey)
1799+ atomic_dec(&sk->sk_tskey);
17971800 return err;
17981801 }
17991802
net/ipv6/ip6_udp_tunnel.c+1−0
@@ -182,4 +182,5 @@ struct dst_entry *udp_tunnel6_dst_lookup(struct sk_buff *skb, · 181 unmodified lines
182182 }
183183 EXPORT_SYMBOL_GPL(udp_tunnel6_dst_lookup);
184184
185+MODULE_DESCRIPTION("IPv6 Foo over UDP tunnel driver");
185186 MODULE_LICENSE("GPL");
net/ipv6/mip6.c+1−0
@@ -405,6 +405,7 @@ static void __exit mip6_fini(void) · 404 unmodified lines
405405 module_init(mip6_init);
406406 module_exit(mip6_fini);
407407
408+MODULE_DESCRIPTION("IPv6 Mobility driver");
408409 MODULE_LICENSE("GPL");
409410 MODULE_ALIAS_XFRM_TYPE(AF_INET6, XFRM_PROTO_DSTOPTS);
410411 MODULE_ALIAS_XFRM_TYPE(AF_INET6, XFRM_PROTO_ROUTING);
net/ipv6/sit.c+1−0
@@ -1956,6 +1956,7 @@ xfrm_tunnel_failed: · 1955 unmodified lines
19561956
19571957 module_init(sit_init);
19581958 module_exit(sit_cleanup);
1959+MODULE_DESCRIPTION("IPv6-in-IPv4 tunnel SIT driver");
19591960 MODULE_LICENSE("GPL");
19601961 MODULE_ALIAS_RTNL_LINK("sit");
19611962 MODULE_ALIAS_NETDEV("sit0");
net/ipv6/tunnel6.c+1−0
@@ -302,4 +302,5 @@ static void __exit tunnel6_fini(void) · 301 unmodified lines
302302
303303 module_init(tunnel6_init);
304304 module_exit(tunnel6_fini);
305+MODULE_DESCRIPTION("IP-in-IPv6 tunnel driver");
305306 MODULE_LICENSE("GPL");
net/ipv6/xfrm6_tunnel.c+1−0
@@ -401,5 +401,6 @@ static void __exit xfrm6_tunnel_fini(void) · 400 unmodified lines
401401
402402 module_init(xfrm6_tunnel_init);
403403 module_exit(xfrm6_tunnel_fini);
404+MODULE_DESCRIPTION("IPv6 XFRM tunnel driver");
404405 MODULE_LICENSE("GPL");
405406 MODULE_ALIAS_XFRM_TYPE(AF_INET6, XFRM_PROTO_IPV6);
net/key/af_key.c+1−0
@@ -3924,5 +3924,6 @@ out_unregister_key_proto: · 3923 unmodified lines
39243924
39253925 module_init(ipsec_pfkey_init);
39263926 module_exit(ipsec_pfkey_exit);
3927+MODULE_DESCRIPTION("PF_KEY socket helpers");
39273928 MODULE_LICENSE("GPL");
39283929 MODULE_ALIAS_NETPROTO(PF_KEY);
net/mac80211/tx.c+3−2
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
66 * Copyright 2007 Johannes Berg <johannes@sipsolutions.net>
77 * Copyright 2013-2014 Intel Mobile Communications GmbH
8− * Copyright (C) 2018-2022 Intel Corporation
8+ * Copyright (C) 2018-2024 Intel Corporation
99 *
1010 * Transmit and frame generation functions.
1111 */
@@ -3927,6 +3927,7 @@ begin: · 3915 unmodified lines
39273927 goto begin;
39283928
39293929 skb = __skb_dequeue(&tx.skbs);
3930+ info = IEEE80211_SKB_CB(skb);
39303931
39313932 if (!skb_queue_empty(&tx.skbs)) {
39323933 spin_lock_bh(&fq->lock);
@@ -3971,7 +3972,7 @@ begin: · 38 unmodified lines
39713972 }
39723973
39733974 encap_out:
3974− IEEE80211_SKB_CB(skb)->control.vif = vif;
3975+ info->control.vif = vif;
39753976
39763977 if (tx.sta &&
39773978 wiphy_ext_feature_isset(local->hw.wiphy, NL80211_EXT_FEATURE_AQL)) {
net/mptcp/fastopen.c+2−4
@@ -59,13 +59,12 @@ void mptcp_fastopen_subflow_synack_set_params(struct mptcp_subflow_context *subf · 58 unmodified lines
5959 mptcp_data_unlock(sk);
6060 }
6161
62−void mptcp_fastopen_gen_msk_ackseq(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow,
63− const struct mptcp_options_received *mp_opt)
62+void __mptcp_fastopen_gen_msk_ackseq(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow,
63+ const struct mptcp_options_received *mp_opt)
6464 {
6565 struct sock *sk = (struct sock *)msk;
6666 struct sk_buff *skb;
6767
68− mptcp_data_lock(sk);
6968 skb = skb_peek_tail(&sk->sk_receive_queue);
7069 if (skb) {
7170 WARN_ON_ONCE(MPTCP_SKB_CB(skb)->end_seq);
@@ -77,5 +76,4 @@ void mptcp_fastopen_gen_msk_ackseq(struct mptcp_sock *msk, struct mptcp_subflow_ · 5 unmodified lines
7776 }
7877
7978 pr_debug("msk=%p ack_seq=%llx", msk, msk->ack_seq);
80− mptcp_data_unlock(sk);
8179 }
net/mptcp/options.c+5−4
@@ -962,9 +962,7 @@ static bool check_fully_established(struct mptcp_sock *msk, struct sock *ssk, · 961 unmodified lines
962962 /* subflows are fully established as soon as we get any
963963 * additional ack, including ADD_ADDR.
964964 */
965− subflow->fully_established = 1;
966− WRITE_ONCE(msk->fully_established, true);
967− goto check_notify;
965+ goto set_fully_established;
968966 }
969967
970968 /* If the first established packet does not contain MP_CAPABLE + data
@@ -986,7 +984,10 @@ static bool check_fully_established(struct mptcp_sock *msk, struct sock *ssk, · 15 unmodified lines
986984 set_fully_established:
987985 if (unlikely(!READ_ONCE(msk->pm.server_side)))
988986 pr_warn_once("bogus mpc option on established client sk");
989− mptcp_subflow_fully_established(subflow, mp_opt);
987+
988+ mptcp_data_lock((struct sock *)msk);
989+ __mptcp_subflow_fully_established(msk, subflow, mp_opt);
990+ mptcp_data_unlock((struct sock *)msk);
990991
991992 check_notify:
992993 /* if the subflow is not already linked into the conn_list, we can't
net/mptcp/pm_userspace.c+12−1
@@ -130,10 +130,21 @@ int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, · 129 unmodified lines
130130 int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk,
131131 struct mptcp_addr_info *skc)
132132 {
133− struct mptcp_pm_addr_entry new_entry;
133+ struct mptcp_pm_addr_entry *entry = NULL, *e, new_entry;
134134 __be16 msk_sport = ((struct inet_sock *)
135135 inet_sk((struct sock *)msk))->inet_sport;
136136
137+ spin_lock_bh(&msk->pm.lock);
138+ list_for_each_entry(e, &msk->pm.userspace_pm_local_addr_list, list) {
139+ if (mptcp_addresses_equal(&e->addr, skc, false)) {
140+ entry = e;
141+ break;
142+ }
143+ }
144+ spin_unlock_bh(&msk->pm.lock);
145+ if (entry)
146+ return entry->addr.id;
147+
137148 memset(&new_entry, 0, sizeof(struct mptcp_pm_addr_entry));
138149 new_entry.addr = *skc;
139150 new_entry.addr.id = 0;
net/mptcp/protocol.c+17−14
@@ -1505,8 +1505,11 @@ static void mptcp_update_post_push(struct mptcp_sock *msk, · 1504 unmodified lines
15051505
15061506 void mptcp_check_and_set_pending(struct sock *sk)
15071507 {
1508− if (mptcp_send_head(sk))
1509− mptcp_sk(sk)->push_pending |= BIT(MPTCP_PUSH_PENDING);
1508+ if (mptcp_send_head(sk)) {
1509+ mptcp_data_lock(sk);
1510+ mptcp_sk(sk)->cb_flags |= BIT(MPTCP_PUSH_PENDING);
1511+ mptcp_data_unlock(sk);
1512+ }
15101513 }
15111514
15121515 static int __subflow_push_pending(struct sock *sk, struct sock *ssk,
@@ -1960,6 +1963,9 @@ static void mptcp_rcv_space_adjust(struct mptcp_sock *msk, int copied) · 447 unmodified lines
19601963 if (copied <= 0)
19611964 return;
19621965
1966+ if (!msk->rcvspace_init)
1967+ mptcp_rcv_space_init(msk, msk->first);
1968+
19631969 msk->rcvq_space.copied += copied;
19641970
19651971 mstamp = div_u64(tcp_clock_ns(), NSEC_PER_USEC);
@@ -3142,7 +3148,6 @@ static int mptcp_disconnect(struct sock *sk, int flags) · 1176 unmodified lines
31423148 mptcp_destroy_common(msk, MPTCP_CF_FASTCLOSE);
31433149 WRITE_ONCE(msk->flags, 0);
31443150 msk->cb_flags = 0;
3145− msk->push_pending = 0;
31463151 msk->recovery = false;
31473152 msk->can_ack = false;
31483153 msk->fully_established = false;
@@ -3158,6 +3163,7 @@ static int mptcp_disconnect(struct sock *sk, int flags) · 9 unmodified lines
31583163 msk->bytes_received = 0;
31593164 msk->bytes_sent = 0;
31603165 msk->bytes_retrans = 0;
3166+ msk->rcvspace_init = 0;
31613167
31623168 WRITE_ONCE(sk->sk_shutdown, 0);
31633169 sk_error_report(sk);
@@ -3180,6 +3186,7 @@ struct sock *mptcp_sk_clone_init(const struct sock *sk, · 16 unmodified lines
31803186 {
31813187 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req);
31823188 struct sock *nsk = sk_clone_lock(sk, GFP_ATOMIC);
3189+ struct mptcp_subflow_context *subflow;
31833190 struct mptcp_sock *msk;
31843191
31853192 if (!nsk)
@@ -3220,7 +3227,8 @@ struct sock *mptcp_sk_clone_init(const struct sock *sk, · 34 unmodified lines
32203227
32213228 /* The msk maintain a ref to each subflow in the connections list */
32223229 WRITE_ONCE(msk->first, ssk);
3223− list_add(&mptcp_subflow_ctx(ssk)->node, &msk->conn_list);
3230+ subflow = mptcp_subflow_ctx(ssk);
3231+ list_add(&subflow->node, &msk->conn_list);
32243232 sock_hold(ssk);
32253233
32263234 /* new mpc subflow takes ownership of the newly
@@ -3235,6 +3243,9 @@ struct sock *mptcp_sk_clone_init(const struct sock *sk, · 8 unmodified lines
32353243 __mptcp_propagate_sndbuf(nsk, ssk);
32363244
32373245 mptcp_rcv_space_init(msk, ssk);
3246+
3247+ if (mp_opt->suboptions & OPTION_MPTCP_MPC_ACK)
3248+ __mptcp_subflow_fully_established(msk, subflow, mp_opt);
32383249 bh_unlock_sock(nsk);
32393250
32403251 /* note: the newly allocated socket refcount is 2 now */
@@ -3245,6 +3256,7 @@ void mptcp_rcv_space_init(struct mptcp_sock *msk, const struct sock *ssk) · 4 unmodified lines
32453256 {
32463257 const struct tcp_sock *tp = tcp_sk(ssk);
32473258
3259+ msk->rcvspace_init = 1;
32483260 msk->rcvq_space.copied = 0;
32493261 msk->rcvq_space.rtt_us = 0;
32503262
@@ -3255,8 +3267,6 @@ void mptcp_rcv_space_init(struct mptcp_sock *msk, const struct sock *ssk) · 4 unmodified lines
32553267 TCP_INIT_CWND * tp->advmss);
32563268 if (msk->rcvq_space.space == 0)
32573269 msk->rcvq_space.space = TCP_INIT_CWND * TCP_MSS_DEFAULT;
3258−
3259− WRITE_ONCE(msk->wnd_end, msk->snd_nxt + tcp_sk(ssk)->snd_wnd);
32603270 }
32613271
32623272 void mptcp_destroy_common(struct mptcp_sock *msk, unsigned int flags)
@@ -3330,8 +3340,7 @@ static void mptcp_release_cb(struct sock *sk) · 67 unmodified lines
33303340 struct mptcp_sock *msk = mptcp_sk(sk);
33313341
33323342 for (;;) {
3333− unsigned long flags = (msk->cb_flags & MPTCP_FLAGS_PROCESS_CTX_NEED) |
3334− msk->push_pending;
3343+ unsigned long flags = (msk->cb_flags & MPTCP_FLAGS_PROCESS_CTX_NEED);
33353344 struct list_head join_list;
33363345
33373346 if (!flags)
@@ -3347,7 +3356,6 @@ static void mptcp_release_cb(struct sock *sk) · 9 unmodified lines
33473356 * datapath acquires the msk socket spinlock while helding
33483357 * the subflow socket lock
33493358 */
3350− msk->push_pending = 0;
33513359 msk->cb_flags &= ~flags;
33523360 spin_unlock_bh(&sk->sk_lock.slock);
33533361
@@ -3475,13 +3483,8 @@ void mptcp_finish_connect(struct sock *ssk) · 121 unmodified lines
34753483 * accessing the field below
34763484 */
34773485 WRITE_ONCE(msk->local_key, subflow->local_key);
3478− WRITE_ONCE(msk->write_seq, subflow->idsn + 1);
3479− WRITE_ONCE(msk->snd_nxt, msk->write_seq);
3480− WRITE_ONCE(msk->snd_una, msk->write_seq);
34813486
34823487 mptcp_pm_new_connection(msk, ssk, 0);
3483−
3484− mptcp_rcv_space_init(msk, ssk);
34853488 }
34863489
34873490 void mptcp_sock_graft(struct sock *sk, struct socket *parent)
net/mptcp/protocol.h+9−7
@@ -286,7 +286,6 @@ struct mptcp_sock { · 285 unmodified lines
286286 int rmem_released;
287287 unsigned long flags;
288288 unsigned long cb_flags;
289− unsigned long push_pending;
290289 bool recovery; /* closing subflow write queue reinjected */
291290 bool can_ack;
292291 bool fully_established;
@@ -305,7 +304,8 @@ struct mptcp_sock { · 12 unmodified lines
305304 nodelay:1,
306305 fastopening:1,
307306 in_accept_queue:1,
308− free_first:1;
307+ free_first:1,
308+ rcvspace_init:1;
309309 struct work_struct work;
310310 struct sk_buff *ooo_last_skb;
311311 struct rb_root out_of_order_queue;
@@ -622,8 +622,9 @@ unsigned int mptcp_stale_loss_cnt(const struct net *net); · 310 unmodified lines
622622 unsigned int mptcp_close_timeout(const struct sock *sk);
623623 int mptcp_get_pm_type(const struct net *net);
624624 const char *mptcp_get_scheduler(const struct net *net);
625−void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow,
626− const struct mptcp_options_received *mp_opt);
625+void __mptcp_subflow_fully_established(struct mptcp_sock *msk,
626+ struct mptcp_subflow_context *subflow,
627+ const struct mptcp_options_received *mp_opt);
627628 bool __mptcp_retransmit_pending_data(struct sock *sk);
628629 void mptcp_check_and_set_pending(struct sock *sk);
629630 void __mptcp_push_pending(struct sock *sk, unsigned int flags);
@@ -952,8 +953,8 @@ void mptcp_event_pm_listener(const struct sock *ssk, · 322 unmodified lines
952953 enum mptcp_event_type event);
953954 bool mptcp_userspace_pm_active(const struct mptcp_sock *msk);
954955
955−void mptcp_fastopen_gen_msk_ackseq(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow,
956− const struct mptcp_options_received *mp_opt);
956+void __mptcp_fastopen_gen_msk_ackseq(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow,
957+ const struct mptcp_options_received *mp_opt);
957958 void mptcp_fastopen_subflow_synack_set_params(struct mptcp_subflow_context *subflow,
958959 struct request_sock *req);
959960
@@ -1128,7 +1129,8 @@ static inline bool subflow_simultaneous_connect(struct sock *sk) · 168 unmodified lines
11281129 {
11291130 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk);
11301131
1131− return (1 << sk->sk_state) & (TCPF_ESTABLISHED | TCPF_FIN_WAIT1) &&
1132+ return (1 << sk->sk_state) &
1133+ (TCPF_ESTABLISHED | TCPF_FIN_WAIT1 | TCPF_FIN_WAIT2 | TCPF_CLOSING) &&
11321134 is_active_ssk(subflow) &&
11331135 !subflow->conn_finished;
11341136 }
net/mptcp/subflow.c+44−27
@@ -421,29 +421,26 @@ static bool subflow_use_different_dport(struct mptcp_sock *msk, const struct soc · 420 unmodified lines
421421
422422 void __mptcp_sync_state(struct sock *sk, int state)
423423 {
424+ struct mptcp_subflow_context *subflow;
424425 struct mptcp_sock *msk = mptcp_sk(sk);
426+ struct sock *ssk = msk->first;
427+
428+ subflow = mptcp_subflow_ctx(ssk);
429+ __mptcp_propagate_sndbuf(sk, ssk);
430+ if (!msk->rcvspace_init)
431+ mptcp_rcv_space_init(msk, ssk);
425432
426− __mptcp_propagate_sndbuf(sk, msk->first);
427433 if (sk->sk_state == TCP_SYN_SENT) {
434+ /* subflow->idsn is always available is TCP_SYN_SENT state,
435+ * even for the FASTOPEN scenarios
436+ */
437+ WRITE_ONCE(msk->write_seq, subflow->idsn + 1);
438+ WRITE_ONCE(msk->snd_nxt, msk->write_seq);
428439 mptcp_set_state(sk, state);
429440 sk->sk_state_change(sk);
430441 }
431442 }
432443
433−static void mptcp_propagate_state(struct sock *sk, struct sock *ssk)
434−{
435− struct mptcp_sock *msk = mptcp_sk(sk);
436−
437− mptcp_data_lock(sk);
438− if (!sock_owned_by_user(sk)) {
439− __mptcp_sync_state(sk, ssk->sk_state);
440− } else {
441− msk->pending_state = ssk->sk_state;
442− __set_bit(MPTCP_SYNC_STATE, &msk->cb_flags);
443− }
444− mptcp_data_unlock(sk);
445−}
446−
447444 static void subflow_set_remote_key(struct mptcp_sock *msk,
448445 struct mptcp_subflow_context *subflow,
449446 const struct mptcp_options_received *mp_opt)
@@ -465,6 +462,31 @@ static void subflow_set_remote_key(struct mptcp_sock *msk, · 15 unmodified lines
465462 atomic64_set(&msk->rcv_wnd_sent, subflow->iasn);
466463 }
467464
465+static void mptcp_propagate_state(struct sock *sk, struct sock *ssk,
466+ struct mptcp_subflow_context *subflow,
467+ const struct mptcp_options_received *mp_opt)
468+{
469+ struct mptcp_sock *msk = mptcp_sk(sk);
470+
471+ mptcp_data_lock(sk);
472+ if (mp_opt) {
473+ /* Options are available only in the non fallback cases
474+ * avoid updating rx path fields otherwise
475+ */
476+ WRITE_ONCE(msk->snd_una, subflow->idsn + 1);
477+ WRITE_ONCE(msk->wnd_end, subflow->idsn + 1 + tcp_sk(ssk)->snd_wnd);
478+ subflow_set_remote_key(msk, subflow, mp_opt);
479+ }
480+
481+ if (!sock_owned_by_user(sk)) {
482+ __mptcp_sync_state(sk, ssk->sk_state);
483+ } else {
484+ msk->pending_state = ssk->sk_state;
485+ __set_bit(MPTCP_SYNC_STATE, &msk->cb_flags);
486+ }
487+ mptcp_data_unlock(sk);
488+}
489+
468490 static void subflow_finish_connect(struct sock *sk, const struct sk_buff *skb)
469491 {
470492 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk);
@@ -499,10 +521,9 @@ static void subflow_finish_connect(struct sock *sk, const struct sk_buff *skb) · 28 unmodified lines
499521 if (mp_opt.deny_join_id0)
500522 WRITE_ONCE(msk->pm.remote_deny_join_id0, true);
501523 subflow->mp_capable = 1;
502− subflow_set_remote_key(msk, subflow, &mp_opt);
503524 MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPCAPABLEACTIVEACK);
504525 mptcp_finish_connect(sk);
505− mptcp_propagate_state(parent, sk);
526+ mptcp_propagate_state(parent, sk, subflow, &mp_opt);
506527 } else if (subflow->request_join) {
507528 u8 hmac[SHA256_DIGEST_SIZE];
508529
@@ -545,8 +566,7 @@ static void subflow_finish_connect(struct sock *sk, const struct sk_buff *skb) · 36 unmodified lines
545566 }
546567 } else if (mptcp_check_fallback(sk)) {
547568 fallback:
548− mptcp_rcv_space_init(msk, sk);
549− mptcp_propagate_state(parent, sk);
569+ mptcp_propagate_state(parent, sk, subflow, NULL);
550570 }
551571 return;
552572
@@ -731,17 +751,16 @@ void mptcp_subflow_drop_ctx(struct sock *ssk) · 178 unmodified lines
731751 kfree_rcu(ctx, rcu);
732752 }
733753
734−void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow,
735− const struct mptcp_options_received *mp_opt)
754+void __mptcp_subflow_fully_established(struct mptcp_sock *msk,
755+ struct mptcp_subflow_context *subflow,
756+ const struct mptcp_options_received *mp_opt)
736757 {
737− struct mptcp_sock *msk = mptcp_sk(subflow->conn);
738−
739758 subflow_set_remote_key(msk, subflow, mp_opt);
740759 subflow->fully_established = 1;
741760 WRITE_ONCE(msk->fully_established, true);
742761
743762 if (subflow->is_mptfo)
744− mptcp_fastopen_gen_msk_ackseq(msk, subflow, mp_opt);
763+ __mptcp_fastopen_gen_msk_ackseq(msk, subflow, mp_opt);
745764 }
746765
747766 static struct sock *subflow_syn_recv_sock(const struct sock *sk,
@@ -834,7 +853,6 @@ create_child: · 86 unmodified lines
834853 * mpc option
835854 */
836855 if (mp_opt.suboptions & OPTION_MPTCP_MPC_ACK) {
837− mptcp_subflow_fully_established(ctx, &mp_opt);
838856 mptcp_pm_fully_established(owner, child);
839857 ctx->pm_notified = 1;
840858 }
@@ -1744,10 +1762,9 @@ static void subflow_state_change(struct sock *sk) · 903 unmodified lines
17441762 msk = mptcp_sk(parent);
17451763 if (subflow_simultaneous_connect(sk)) {
17461764 mptcp_do_fallback(sk);
1747− mptcp_rcv_space_init(msk, sk);
17481765 pr_fallback(msk);
17491766 subflow->conn_finished = 1;
1750− mptcp_propagate_state(parent, sk);
1767+ mptcp_propagate_state(parent, sk, subflow, NULL);
17511768 }
17521769
17531770 /* as recvmsg() does not acquire the subflow socket for ssk selection
net/netfilter/nf_nat_core.c+4−1
@@ -551,8 +551,11 @@ static void nf_nat_l4proto_unique_tuple(struct nf_conntrack_tuple *tuple, · 550 unmodified lines
551551 find_free_id:
552552 if (range->flags & NF_NAT_RANGE_PROTO_OFFSET)
553553 off = (ntohs(*keyptr) - ntohs(range->base_proto.all));
554− else
554+ else if ((range->flags & NF_NAT_RANGE_PROTO_RANDOM_ALL) ||
555+ maniptype != NF_NAT_MANIP_DST)
555556 off = get_random_u16();
557+ else
558+ off = 0;
556559
557560 attempts = range_size;
558561 if (attempts > NF_NAT_MAX_ATTEMPTS)
net/netfilter/nft_flow_offload.c+1−0
@@ -361,6 +361,7 @@ static void nft_flow_offload_eval(const struct nft_expr *expr, · 360 unmodified lines
361361 ct->proto.tcp.seen[1].flags |= IP_CT_TCP_FLAG_BE_LIBERAL;
362362 }
363363
364+ __set_bit(NF_FLOW_HW_BIDIRECTIONAL, &flow->flags);
364365 ret = flow_offload_add(flowtable, flow);
365366 if (ret < 0)
366367 goto err_flow_add;
net/netfilter/nft_set_pipapo.h+2−2
@@ -144,10 +144,10 @@ struct nft_pipapo_scratch { · 143 unmodified lines
144144
145145 /**
146146 * struct nft_pipapo_match - Data used for lookup and matching
147− * @field_count Amount of fields in set
147+ * @field_count: Amount of fields in set
148148 * @scratch: Preallocated per-CPU maps for partial matching results
149149 * @bsize_max: Maximum lookup table bucket size of all fields, in longs
150− * @rcu Matching data is swapped on commits
150+ * @rcu: Matching data is swapped on commits
151151 * @f: Fields, with lookup and mapping tables
152152 */
153153 struct nft_pipapo_match {
net/openvswitch/flow_netlink.c+33−16
@@ -48,6 +48,7 @@ struct ovs_len_tbl { · 47 unmodified lines
4848
4949 #define OVS_ATTR_NESTED -1
5050 #define OVS_ATTR_VARIABLE -2
51+#define OVS_COPY_ACTIONS_MAX_DEPTH 16
5152
5253 static bool actions_may_change_flow(const struct nlattr *actions)
5354 {
@@ -2545,13 +2546,15 @@ static int __ovs_nla_copy_actions(struct net *net, const struct nlattr *attr, · 2491 unmodified lines
25452546 const struct sw_flow_key *key,
25462547 struct sw_flow_actions **sfa,
25472548 __be16 eth_type, __be16 vlan_tci,
2548− u32 mpls_label_count, bool log);
2549+ u32 mpls_label_count, bool log,
2550+ u32 depth);
25492551
25502552 static int validate_and_copy_sample(struct net *net, const struct nlattr *attr,
25512553 const struct sw_flow_key *key,
25522554 struct sw_flow_actions **sfa,
25532555 __be16 eth_type, __be16 vlan_tci,
2554− u32 mpls_label_count, bool log, bool last)
2556+ u32 mpls_label_count, bool log, bool last,
2557+ u32 depth)
25552558 {
25562559 const struct nlattr *attrs[OVS_SAMPLE_ATTR_MAX + 1];
25572560 const struct nlattr *probability, *actions;
@@ -2602,7 +2605,8 @@ static int validate_and_copy_sample(struct net *net, const struct nlattr *attr, · 44 unmodified lines
26022605 return err;
26032606
26042607 err = __ovs_nla_copy_actions(net, actions, key, sfa,
2605− eth_type, vlan_tci, mpls_label_count, log);
2608+ eth_type, vlan_tci, mpls_label_count, log,
2609+ depth + 1);
26062610
26072611 if (err)
26082612 return err;
@@ -2617,7 +2621,8 @@ static int validate_and_copy_dec_ttl(struct net *net, · 8 unmodified lines
26172621 const struct sw_flow_key *key,
26182622 struct sw_flow_actions **sfa,
26192623 __be16 eth_type, __be16 vlan_tci,
2620− u32 mpls_label_count, bool log)
2624+ u32 mpls_label_count, bool log,
2625+ u32 depth)
26212626 {
26222627 const struct nlattr *attrs[OVS_DEC_TTL_ATTR_MAX + 1];
26232628 int start, action_start, err, rem;
@@ -2660,7 +2665,8 @@ static int validate_and_copy_dec_ttl(struct net *net, · 36 unmodified lines
26602665 return action_start;
26612666
26622667 err = __ovs_nla_copy_actions(net, actions, key, sfa, eth_type,
2663− vlan_tci, mpls_label_count, log);
2668+ vlan_tci, mpls_label_count, log,
2669+ depth + 1);
26642670 if (err)
26652671 return err;
26662672
@@ -2674,7 +2680,8 @@ static int validate_and_copy_clone(struct net *net, · 7 unmodified lines
26742680 const struct sw_flow_key *key,
26752681 struct sw_flow_actions **sfa,
26762682 __be16 eth_type, __be16 vlan_tci,
2677− u32 mpls_label_count, bool log, bool last)
2683+ u32 mpls_label_count, bool log, bool last,
2684+ u32 depth)
26782685 {
26792686 int start, err;
26802687 u32 exec;
@@ -2694,7 +2701,8 @@ static int validate_and_copy_clone(struct net *net, · 13 unmodified lines
26942701 return err;
26952702
26962703 err = __ovs_nla_copy_actions(net, attr, key, sfa,
2697− eth_type, vlan_tci, mpls_label_count, log);
2704+ eth_type, vlan_tci, mpls_label_count, log,
2705+ depth + 1);
26982706 if (err)
26992707 return err;
27002708
@@ -3063,7 +3071,7 @@ static int validate_and_copy_check_pkt_len(struct net *net, · 362 unmodified lines
30633071 struct sw_flow_actions **sfa,
30643072 __be16 eth_type, __be16 vlan_tci,
30653073 u32 mpls_label_count,
3066− bool log, bool last)
3074+ bool log, bool last, u32 depth)
30673075 {
30683076 const struct nlattr *acts_if_greater, *acts_if_lesser_eq;
30693077 struct nlattr *a[OVS_CHECK_PKT_LEN_ATTR_MAX + 1];
@@ -3111,7 +3119,8 @@ static int validate_and_copy_check_pkt_len(struct net *net, · 41 unmodified lines
31113119 return nested_acts_start;
31123120
31133121 err = __ovs_nla_copy_actions(net, acts_if_lesser_eq, key, sfa,
3114− eth_type, vlan_tci, mpls_label_count, log);
3122+ eth_type, vlan_tci, mpls_label_count, log,
3123+ depth + 1);
31153124
31163125 if (err)
31173126 return err;
@@ -3124,7 +3133,8 @@ static int validate_and_copy_check_pkt_len(struct net *net, · 6 unmodified lines
31243133 return nested_acts_start;
31253134
31263135 err = __ovs_nla_copy_actions(net, acts_if_greater, key, sfa,
3127− eth_type, vlan_tci, mpls_label_count, log);
3136+ eth_type, vlan_tci, mpls_label_count, log,
3137+ depth + 1);
31283138
31293139 if (err)
31303140 return err;
@@ -3152,12 +3162,16 @@ static int __ovs_nla_copy_actions(struct net *net, const struct nlattr *attr, · 21 unmodified lines
31523162 const struct sw_flow_key *key,
31533163 struct sw_flow_actions **sfa,
31543164 __be16 eth_type, __be16 vlan_tci,
3155− u32 mpls_label_count, bool log)
3165+ u32 mpls_label_count, bool log,
3166+ u32 depth)
31563167 {
31573168 u8 mac_proto = ovs_key_mac_proto(key);
31583169 const struct nlattr *a;
31593170 int rem, err;
31603171
3172+ if (depth > OVS_COPY_ACTIONS_MAX_DEPTH)
3173+ return -EOVERFLOW;
3174+
31613175 nla_for_each_nested(a, attr, rem) {
31623176 /* Expected argument lengths, (u32)-1 for variable length. */
31633177 static const u32 action_lens[OVS_ACTION_ATTR_MAX + 1] = {
@@ -3355,7 +3369,7 @@ static int __ovs_nla_copy_actions(struct net *net, const struct nlattr *attr, · 191 unmodified lines
33553369 err = validate_and_copy_sample(net, a, key, sfa,
33563370 eth_type, vlan_tci,
33573371 mpls_label_count,
3358− log, last);
3372+ log, last, depth);
33593373 if (err)
33603374 return err;
33613375 skip_copy = true;
@@ -3426,7 +3440,7 @@ static int __ovs_nla_copy_actions(struct net *net, const struct nlattr *attr, · 64 unmodified lines
34263440 err = validate_and_copy_clone(net, a, key, sfa,
34273441 eth_type, vlan_tci,
34283442 mpls_label_count,
3429− log, last);
3443+ log, last, depth);
34303444 if (err)
34313445 return err;
34323446 skip_copy = true;
@@ -3440,7 +3454,8 @@ static int __ovs_nla_copy_actions(struct net *net, const struct nlattr *attr, · 7 unmodified lines
34403454 eth_type,
34413455 vlan_tci,
34423456 mpls_label_count,
3443− log, last);
3457+ log, last,
3458+ depth);
34443459 if (err)
34453460 return err;
34463461 skip_copy = true;
@@ -3450,7 +3465,8 @@ static int __ovs_nla_copy_actions(struct net *net, const struct nlattr *attr, · 3 unmodified lines
34503465 case OVS_ACTION_ATTR_DEC_TTL:
34513466 err = validate_and_copy_dec_ttl(net, a, key, sfa,
34523467 eth_type, vlan_tci,
3453− mpls_label_count, log);
3468+ mpls_label_count, log,
3469+ depth);
34543470 if (err)
34553471 return err;
34563472 skip_copy = true;
@@ -3495,7 +3511,8 @@ int ovs_nla_copy_actions(struct net *net, const struct nlattr *attr, · 38 unmodified lines
34953511
34963512 (*sfa)->orig_len = nla_len(attr);
34973513 err = __ovs_nla_copy_actions(net, attr, key, sfa, key->eth.type,
3498− key->eth.vlan.tci, mpls_label_count, log);
3514+ key->eth.vlan.tci, mpls_label_count, log,
3515+ 0);
34993516 if (err)
35003517 ovs_nla_free_flow_actions(*sfa);
35013518
net/rds/recv.c+11−2
@@ -425,6 +425,7 @@ static int rds_still_queued(struct rds_sock *rs, struct rds_incoming *inc, · 424 unmodified lines
425425 struct sock *sk = rds_rs_to_sk(rs);
426426 int ret = 0;
427427 unsigned long flags;
428+ struct rds_incoming *to_drop = NULL;
428429
429430 write_lock_irqsave(&rs->rs_recv_lock, flags);
430431 if (!list_empty(&inc->i_item)) {
@@ -435,11 +436,14 @@ static int rds_still_queued(struct rds_sock *rs, struct rds_incoming *inc, · 4 unmodified lines
435436 -be32_to_cpu(inc->i_hdr.h_len),
436437 inc->i_hdr.h_dport);
437438 list_del_init(&inc->i_item);
438− rds_inc_put(inc);
439+ to_drop = inc;
439440 }
440441 }
441442 write_unlock_irqrestore(&rs->rs_recv_lock, flags);
442443
444+ if (to_drop)
445+ rds_inc_put(to_drop);
446+
443447 rdsdebug("inc %p rs %p still %d dropped %d\n", inc, rs, ret, drop);
444448 return ret;
445449 }
@@ -758,16 +762,21 @@ void rds_clear_recv_queue(struct rds_sock *rs) · 312 unmodified lines
758762 struct sock *sk = rds_rs_to_sk(rs);
759763 struct rds_incoming *inc, *tmp;
760764 unsigned long flags;
765+ LIST_HEAD(to_drop);
761766
762767 write_lock_irqsave(&rs->rs_recv_lock, flags);
763768 list_for_each_entry_safe(inc, tmp, &rs->rs_recv_queue, i_item) {
764769 rds_recv_rcvbuf_delta(rs, sk, inc->i_conn->c_lcong,
765770 -be32_to_cpu(inc->i_hdr.h_len),
766771 inc->i_hdr.h_dport);
772+ list_move(&inc->i_item, &to_drop);
773+ }
774+ write_unlock_irqrestore(&rs->rs_recv_lock, flags);
775+
776+ list_for_each_entry_safe(inc, tmp, &to_drop, i_item) {
767777 list_del_init(&inc->i_item);
768778 rds_inc_put(inc);
769779 }
770− write_unlock_irqrestore(&rs->rs_recv_lock, flags);
771780 }
772781
773782 /*
net/sched/act_mirred.c+0−2
@@ -533,8 +533,6 @@ static int mirred_device_event(struct notifier_block *unused, · 532 unmodified lines
533533 * net_device are already rcu protected.
534534 */
535535 RCU_INIT_POINTER(m->tcfm_dev, NULL);
536− } else if (m->tcfm_blockid) {
537− m->tcfm_blockid = 0;
538536 }
539537 spin_unlock_bh(&m->tcf_lock);
540538 }
net/sched/em_canid.c+1−0
@@ -222,6 +222,7 @@ static void __exit exit_em_canid(void) · 221 unmodified lines
222222 tcf_em_unregister(&em_canid_ops);
223223 }
224224
225+MODULE_DESCRIPTION("ematch classifier to match CAN IDs embedded in skb CAN frames");
225226 MODULE_LICENSE("GPL");
226227
227228 module_init(init_em_canid);
net/sched/em_cmp.c+1−0
@@ -87,6 +87,7 @@ static void __exit exit_em_cmp(void) · 86 unmodified lines
8787 tcf_em_unregister(&em_cmp_ops);
8888 }
8989
90+MODULE_DESCRIPTION("ematch classifier for basic data types(8/16/32 bit) against skb data");
9091 MODULE_LICENSE("GPL");
9192
9293 module_init(init_em_cmp);
net/sched/em_meta.c+1−0
@@ -1006,6 +1006,7 @@ static void __exit exit_em_meta(void) · 1005 unmodified lines
10061006 tcf_em_unregister(&em_meta_ops);
10071007 }
10081008
1009+MODULE_DESCRIPTION("ematch classifier for various internal kernel metadata, skb metadata and sk metadata");
10091010 MODULE_LICENSE("GPL");
10101011
10111012 module_init(init_em_meta);
net/sched/em_nbyte.c+1−0
@@ -68,6 +68,7 @@ static void __exit exit_em_nbyte(void) · 67 unmodified lines
6868 tcf_em_unregister(&em_nbyte_ops);
6969 }
7070
71+MODULE_DESCRIPTION("ematch classifier for arbitrary skb multi-bytes");
7172 MODULE_LICENSE("GPL");
7273
7374 module_init(init_em_nbyte);
net/sched/em_text.c+1−0
@@ -147,6 +147,7 @@ static void __exit exit_em_text(void) · 146 unmodified lines
147147 tcf_em_unregister(&em_text_ops);
148148 }
149149
150+MODULE_DESCRIPTION("ematch classifier for embedded text in skbs");
150151 MODULE_LICENSE("GPL");
151152
152153 module_init(init_em_text);
net/sched/em_u32.c+1−0
@@ -52,6 +52,7 @@ static void __exit exit_em_u32(void) · 51 unmodified lines
5252 tcf_em_unregister(&em_u32_ops);
5353 }
5454
55+MODULE_DESCRIPTION("ematch skb classifier using 32 bit chunks of data");
5556 MODULE_LICENSE("GPL");
5657
5758 module_init(init_em_u32);
net/sctp/inqueue.c+10−4
@@ -38,6 +38,14 @@ void sctp_inq_init(struct sctp_inq *queue) · 37 unmodified lines
3838 INIT_WORK(&queue->immediate, NULL);
3939 }
4040
41+/* Properly release the chunk which is being worked on. */
42+static inline void sctp_inq_chunk_free(struct sctp_chunk *chunk)
43+{
44+ if (chunk->head_skb)
45+ chunk->skb = chunk->head_skb;
46+ sctp_chunk_free(chunk);
47+}
48+
4149 /* Release the memory associated with an SCTP inqueue. */
4250 void sctp_inq_free(struct sctp_inq *queue)
4351 {
@@ -53,7 +61,7 @@ void sctp_inq_free(struct sctp_inq *queue) · 9 unmodified lines
5361 * free it as well.
5462 */
5563 if (queue->in_progress) {
56− sctp_chunk_free(queue->in_progress);
64+ sctp_inq_chunk_free(queue->in_progress);
5765 queue->in_progress = NULL;
5866 }
5967 }
@@ -130,9 +138,7 @@ struct sctp_chunk *sctp_inq_pop(struct sctp_inq *queue) · 70 unmodified lines
130138 goto new_skb;
131139 }
132140
133− if (chunk->head_skb)
134− chunk->skb = chunk->head_skb;
135− sctp_chunk_free(chunk);
141+ sctp_inq_chunk_free(chunk);
136142 chunk = queue->in_progress = NULL;
137143 } else {
138144 /* Nothing to do. Next chunk in the packet, please. */
net/smc/af_smc.c+1−0
@@ -924,6 +924,7 @@ static int smc_switch_to_fallback(struct smc_sock *smc, int reason_code) · 923 unmodified lines
924924 smc->clcsock->file->private_data = smc->clcsock;
925925 smc->clcsock->wq.fasync_list =
926926 smc->sk.sk_socket->wq.fasync_list;
927+ smc->sk.sk_socket->wq.fasync_list = NULL;
927928
928929 /* There might be some wait entries remaining
929930 * in smc sk->sk_wq and they should be woken up
net/tls/tls_sw.c+62−73
@@ -63,6 +63,7 @@ struct tls_decrypt_ctx { · 62 unmodified lines
6363 u8 iv[TLS_MAX_IV_SIZE];
6464 u8 aad[TLS_MAX_AAD_SIZE];
6565 u8 tail;
66+ bool free_sgout;
6667 struct scatterlist sg[];
6768 };
6869
@@ -187,7 +188,6 @@ static void tls_decrypt_done(void *data, int err) · 118 unmodified lines
187188 struct aead_request *aead_req = data;
188189 struct crypto_aead *aead = crypto_aead_reqtfm(aead_req);
189190 struct scatterlist *sgout = aead_req->dst;
190− struct scatterlist *sgin = aead_req->src;
191191 struct tls_sw_context_rx *ctx;
192192 struct tls_decrypt_ctx *dctx;
193193 struct tls_context *tls_ctx;
@@ -196,6 +196,17 @@ static void tls_decrypt_done(void *data, int err) · 2 unmodified lines
196196 struct sock *sk;
197197 int aead_size;
198198
199+ /* If requests get too backlogged crypto API returns -EBUSY and calls
200+ * ->complete(-EINPROGRESS) immediately followed by ->complete(0)
201+ * to make waiting for backlog to flush with crypto_wait_req() easier.
202+ * First wait converts -EBUSY -> -EINPROGRESS, and the second one
203+ * -EINPROGRESS -> 0.
204+ * We have a single struct crypto_async_request per direction, this
205+ * scheme doesn't help us, so just ignore the first ->complete().
206+ */
207+ if (err == -EINPROGRESS)
208+ return;
209+
199210 aead_size = sizeof(*aead_req) + crypto_aead_reqsize(aead);
200211 aead_size = ALIGN(aead_size, __alignof__(*dctx));
201212 dctx = (void *)((u8 *)aead_req + aead_size);
@@ -213,7 +224,7 @@ static void tls_decrypt_done(void *data, int err) · 11 unmodified lines
213224 }
214225
215226 /* Free the destination pages if skb was not decrypted inplace */
216− if (sgout != sgin) {
227+ if (dctx->free_sgout) {
217228 /* Skip the first S/G entry as it points to AAD */
218229 for_each_sg(sg_next(sgout), sg, UINT_MAX, pages) {
219230 if (!sg)
@@ -224,10 +235,17 @@ static void tls_decrypt_done(void *data, int err) · 4 unmodified lines
224235
225236 kfree(aead_req);
226237
227− spin_lock_bh(&ctx->decrypt_compl_lock);
228− if (!atomic_dec_return(&ctx->decrypt_pending))
238+ if (atomic_dec_and_test(&ctx->decrypt_pending))
229239 complete(&ctx->async_wait.completion);
230− spin_unlock_bh(&ctx->decrypt_compl_lock);
240+}
241+
242+static int tls_decrypt_async_wait(struct tls_sw_context_rx *ctx)
243+{
244+ if (!atomic_dec_and_test(&ctx->decrypt_pending))
245+ crypto_wait_req(-EINPROGRESS, &ctx->async_wait);
246+ atomic_inc(&ctx->decrypt_pending);
247+
248+ return ctx->async_wait.err;
231249 }
232250
233251 static int tls_do_decryption(struct sock *sk,
@@ -253,6 +271,7 @@ static int tls_do_decryption(struct sock *sk, · 19 unmodified lines
253271 aead_request_set_callback(aead_req,
254272 CRYPTO_TFM_REQ_MAY_BACKLOG,
255273 tls_decrypt_done, aead_req);
274+ DEBUG_NET_WARN_ON_ONCE(atomic_read(&ctx->decrypt_pending) < 1);
256275 atomic_inc(&ctx->decrypt_pending);
257276 } else {
258277 aead_request_set_callback(aead_req,
@@ -261,6 +280,10 @@ static int tls_do_decryption(struct sock *sk, · 2 unmodified lines
261280 }
262281
263282 ret = crypto_aead_decrypt(aead_req);
283+ if (ret == -EBUSY) {
284+ ret = tls_decrypt_async_wait(ctx);
285+ ret = ret ?: -EINPROGRESS;
286+ }
264287 if (ret == -EINPROGRESS) {
265288 if (darg->async)
266289 return 0;
@@ -439,9 +462,10 @@ static void tls_encrypt_done(void *data, int err) · 172 unmodified lines
439462 struct tls_rec *rec = data;
440463 struct scatterlist *sge;
441464 struct sk_msg *msg_en;
442− bool ready = false;
443465 struct sock *sk;
444− int pending;
466+
467+ if (err == -EINPROGRESS) /* see the comment in tls_decrypt_done() */
468+ return;
445469
446470 msg_en = &rec->msg_encrypted;
447471
@@ -476,23 +500,25 @@ static void tls_encrypt_done(void *data, int err) · 28 unmodified lines
476500 /* If received record is at head of tx_list, schedule tx */
477501 first_rec = list_first_entry(&ctx->tx_list,
478502 struct tls_rec, list);
479− if (rec == first_rec)
480− ready = true;
503+ if (rec == first_rec) {
504+ /* Schedule the transmission */
505+ if (!test_and_set_bit(BIT_TX_SCHEDULED,
506+ &ctx->tx_bitmask))
507+ schedule_delayed_work(&ctx->tx_work.work, 1);
508+ }
481509 }
482510
483− spin_lock_bh(&ctx->encrypt_compl_lock);
484− pending = atomic_dec_return(&ctx->encrypt_pending);
485−
486− if (!pending && ctx->async_notify)
511+ if (atomic_dec_and_test(&ctx->encrypt_pending))
487512 complete(&ctx->async_wait.completion);
488− spin_unlock_bh(&ctx->encrypt_compl_lock);
513+}
489514
490− if (!ready)
491− return;
515+static int tls_encrypt_async_wait(struct tls_sw_context_tx *ctx)
516+{
517+ if (!atomic_dec_and_test(&ctx->encrypt_pending))
518+ crypto_wait_req(-EINPROGRESS, &ctx->async_wait);
519+ atomic_inc(&ctx->encrypt_pending);
492520
493− /* Schedule the transmission */
494− if (!test_and_set_bit(BIT_TX_SCHEDULED, &ctx->tx_bitmask))
495− schedule_delayed_work(&ctx->tx_work.work, 1);
521+ return ctx->async_wait.err;
496522 }
497523
498524 static int tls_do_encryption(struct sock *sk,
@@ -541,9 +567,14 @@ static int tls_do_encryption(struct sock *sk, · 42 unmodified lines
541567
542568 /* Add the record in tx_list */
543569 list_add_tail((struct list_head *)&rec->list, &ctx->tx_list);
570+ DEBUG_NET_WARN_ON_ONCE(atomic_read(&ctx->encrypt_pending) < 1);
544571 atomic_inc(&ctx->encrypt_pending);
545572
546573 rc = crypto_aead_encrypt(aead_req);
574+ if (rc == -EBUSY) {
575+ rc = tls_encrypt_async_wait(ctx);
576+ rc = rc ?: -EINPROGRESS;
577+ }
547578 if (!rc || rc != -EINPROGRESS) {
548579 atomic_dec(&ctx->encrypt_pending);
549580 sge->offset -= prot->prepend_size;
@@ -984,7 +1015,6 @@ static int tls_sw_sendmsg_locked(struct sock *sk, struct msghdr *msg, · 434 unmodified lines
9841015 int num_zc = 0;
9851016 int orig_size;
9861017 int ret = 0;
987− int pending;
9881018
9891019 if (!eor && (msg->msg_flags & MSG_EOR))
9901020 return -EINVAL;
@@ -1163,24 +1193,12 @@ trim_sgl: · 172 unmodified lines
11631193 if (!num_async) {
11641194 goto send_end;
11651195 } else if (num_zc) {
1166− /* Wait for pending encryptions to get completed */
1167− spin_lock_bh(&ctx->encrypt_compl_lock);
1168− ctx->async_notify = true;
1169−
1170− pending = atomic_read(&ctx->encrypt_pending);
1171− spin_unlock_bh(&ctx->encrypt_compl_lock);
1172− if (pending)
1173− crypto_wait_req(-EINPROGRESS, &ctx->async_wait);
1174− else
1175− reinit_completion(&ctx->async_wait.completion);
1176−
1177− /* There can be no concurrent accesses, since we have no
1178− * pending encrypt operations
1179− */
1180− WRITE_ONCE(ctx->async_notify, false);
1196+ int err;
11811197
1182− if (ctx->async_wait.err) {
1183− ret = ctx->async_wait.err;
1198+ /* Wait for pending encryptions to get completed */
1199+ err = tls_encrypt_async_wait(ctx);
1200+ if (err) {
1201+ ret = err;
11841202 copied = 0;
11851203 }
11861204 }
@@ -1229,7 +1247,6 @@ void tls_sw_splice_eof(struct socket *sock) · 42 unmodified lines
12291247 ssize_t copied = 0;
12301248 bool retrying = false;
12311249 int ret = 0;
1232− int pending;
12331250
12341251 if (!ctx->open_rec)
12351252 return;
@@ -1264,22 +1281,7 @@ retry: · 28 unmodified lines
12641281 }
12651282
12661283 /* Wait for pending encryptions to get completed */
1267− spin_lock_bh(&ctx->encrypt_compl_lock);
1268− ctx->async_notify = true;
1269−
1270− pending = atomic_read(&ctx->encrypt_pending);
1271− spin_unlock_bh(&ctx->encrypt_compl_lock);
1272− if (pending)
1273− crypto_wait_req(-EINPROGRESS, &ctx->async_wait);
1274− else
1275− reinit_completion(&ctx->async_wait.completion);
1276−
1277− /* There can be no concurrent accesses, since we have no pending
1278− * encrypt operations
1279− */
1280− WRITE_ONCE(ctx->async_notify, false);
1281−
1282− if (ctx->async_wait.err)
1284+ if (tls_encrypt_async_wait(ctx))
12831285 goto unlock;
12841286
12851287 /* Transmit if any encryptions have completed */
@@ -1581,6 +1583,7 @@ static int tls_decrypt_sg(struct sock *sk, struct iov_iter *out_iov, · 295 unmodified lines
15811583 } else if (out_sg) {
15821584 memcpy(sgout, out_sg, n_sgout * sizeof(*sgout));
15831585 }
1586+ dctx->free_sgout = !!pages;
15841587
15851588 /* Prepare and submit AEAD request */
15861589 err = tls_do_decryption(sk, sgin, sgout, dctx->iv,
@@ -2109,16 +2112,10 @@ put_on_rx_list: · 522 unmodified lines
21092112
21102113 recv_end:
21112114 if (async) {
2112− int ret, pending;
2115+ int ret;
21132116
21142117 /* Wait for all previously submitted records to be decrypted */
2115− spin_lock_bh(&ctx->decrypt_compl_lock);
2116− reinit_completion(&ctx->async_wait.completion);
2117− pending = atomic_read(&ctx->decrypt_pending);
2118− spin_unlock_bh(&ctx->decrypt_compl_lock);
2119− ret = 0;
2120− if (pending)
2121− ret = crypto_wait_req(-EINPROGRESS, &ctx->async_wait);
2118+ ret = tls_decrypt_async_wait(ctx);
21222119 __skb_queue_purge(&ctx->async_hold);
21232120
21242121 if (ret) {
@@ -2135,7 +2132,6 @@ recv_end: · 10 unmodified lines
21352132 else
21362133 err = process_rx_list(ctx, msg, &control, 0,
21372134 async_copy_bytes, is_peek);
2138− decrypted += max(err, 0);
21392135 }
21402136
21412137 copied += decrypted;
@@ -2435,16 +2431,9 @@ void tls_sw_release_resources_tx(struct sock *sk) · 293 unmodified lines
24352431 struct tls_context *tls_ctx = tls_get_ctx(sk);
24362432 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx);
24372433 struct tls_rec *rec, *tmp;
2438− int pending;
24392434
24402435 /* Wait for any pending async encryptions to complete */
2441− spin_lock_bh(&ctx->encrypt_compl_lock);
2442− ctx->async_notify = true;
2443− pending = atomic_read(&ctx->encrypt_pending);
2444− spin_unlock_bh(&ctx->encrypt_compl_lock);
2445−
2446− if (pending)
2447− crypto_wait_req(-EINPROGRESS, &ctx->async_wait);
2436+ tls_encrypt_async_wait(ctx);
24482437
24492438 tls_tx_records(sk, -1);
24502439
@@ -2607,7 +2596,7 @@ static struct tls_sw_context_tx *init_ctx_tx(struct tls_context *ctx, struct soc · 156 unmodified lines
26072596 }
26082597
26092598 crypto_init_wait(&sw_ctx_tx->async_wait);
2610− spin_lock_init(&sw_ctx_tx->encrypt_compl_lock);
2599+ atomic_set(&sw_ctx_tx->encrypt_pending, 1);
26112600 INIT_LIST_HEAD(&sw_ctx_tx->tx_list);
26122601 INIT_DELAYED_WORK(&sw_ctx_tx->tx_work.work, tx_work_handler);
26132602 sw_ctx_tx->tx_work.sk = sk;
@@ -2628,7 +2617,7 @@ static struct tls_sw_context_rx *init_ctx_rx(struct tls_context *ctx) · 14 unmodified lines
26282617 }
26292618
26302619 crypto_init_wait(&sw_ctx_rx->async_wait);
2631− spin_lock_init(&sw_ctx_rx->decrypt_compl_lock);
2620+ atomic_set(&sw_ctx_rx->decrypt_pending, 1);
26322621 init_waitqueue_head(&sw_ctx_rx->wq);
26332622 skb_queue_head_init(&sw_ctx_rx->rx_list);
26342623 skb_queue_head_init(&sw_ctx_rx->async_hold);
net/unix/garbage.c+4−3
@@ -315,10 +315,11 @@ void unix_gc(void) · 314 unmodified lines
315315 __skb_queue_purge(&hitlist);
316316
317317 #if IS_ENABLED(CONFIG_AF_UNIX_OOB)
318− list_for_each_entry_safe(u, next, &gc_candidates, link) {
319− struct sk_buff *skb = u->oob_skb;
318+ while (!list_empty(&gc_candidates)) {
319+ u = list_entry(gc_candidates.next, struct unix_sock, link);
320+ if (u->oob_skb) {
321+ struct sk_buff *skb = u->oob_skb;
320322
321− if (skb) {
322323 u->oob_skb = NULL;
323324 kfree_skb(skb);
324325 }
net/xfrm/xfrm_algo.c+1−0
@@ -858,4 +858,5 @@ int xfrm_count_pfkey_enc_supported(void) · 857 unmodified lines
858858 }
859859 EXPORT_SYMBOL_GPL(xfrm_count_pfkey_enc_supported);
860860
861+MODULE_DESCRIPTION("XFRM Algorithm interface");
861862 MODULE_LICENSE("GPL");
net/xfrm/xfrm_user.c+1−0
@@ -3888,5 +3888,6 @@ static void __exit xfrm_user_exit(void) · 3887 unmodified lines
38883888
38893889 module_init(xfrm_user_init);
38903890 module_exit(xfrm_user_exit);
3891+MODULE_DESCRIPTION("XFRM User interface");
38913892 MODULE_LICENSE("GPL");
38923893 MODULE_ALIAS_NET_PF_PROTO(PF_NETLINK, NETLINK_XFRM);
tools/testing/selftests/net/config+5−1
@@ -24,10 +24,14 @@ CONFIG_IFB=y · 23 unmodified lines
2424 CONFIG_INET_DIAG=y
2525 CONFIG_INET_ESP=y
2626 CONFIG_INET_ESP_OFFLOAD=y
27+CONFIG_NET_FOU=y
28+CONFIG_NET_FOU_IP_TUNNELS=y
2729 CONFIG_IP_GRE=m
2830 CONFIG_NETFILTER=y
2931 CONFIG_NETFILTER_ADVANCED=y
3032 CONFIG_NF_CONNTRACK=m
33+CONFIG_IPV6_SIT=y
34+CONFIG_IP_DCCP=m
3135 CONFIG_NF_NAT=m
3236 CONFIG_IP6_NF_IPTABLES=m
3337 CONFIG_IP_NF_IPTABLES=m
@@ -62,6 +66,7 @@ CONFIG_NET_CLS_MATCHALL=m · 28 unmodified lines
6266 CONFIG_NET_CLS_U32=m
6367 CONFIG_NET_IPGRE_DEMUX=m
6468 CONFIG_NET_IPGRE=m
69+CONFIG_NET_IPIP=y
6570 CONFIG_NET_SCH_FQ_CODEL=m
6671 CONFIG_NET_SCH_HTB=m
6772 CONFIG_NET_SCH_FQ=m
@@ -78,7 +83,6 @@ CONFIG_TLS=m · 10 unmodified lines
7883 CONFIG_TRACEPOINTS=y
7984 CONFIG_NET_DROP_MONITOR=m
8085 CONFIG_NETDEVSIM=m
81−CONFIG_NET_FOU=m
8286 CONFIG_MPLS_ROUTING=m
8387 CONFIG_MPLS_IPTUNNEL=m
8488 CONFIG_NET_SCH_INGRESS=m
tools/testing/selftests/net/forwarding/bridge_locked_port.sh+2−2
@@ -327,10 +327,10 @@ locked_port_mab_redirect() · 326 unmodified lines
327327 RET=0
328328 check_port_mab_support || return 0
329329
330− bridge link set dev $swp1 learning on locked on mab on
331330 tc qdisc add dev $swp1 clsact
332331 tc filter add dev $swp1 ingress protocol all pref 1 handle 101 flower \
333332 action mirred egress redirect dev $swp2
333+ bridge link set dev $swp1 learning on locked on mab on
334334
335335 ping_do $h1 192.0.2.2
336336 check_err $? "Ping did not work with redirection"
@@ -349,8 +349,8 @@ locked_port_mab_redirect() · 12 unmodified lines
349349 check_err $? "Locked entry not created after deleting filter"
350350
351351 bridge fdb del `mac_get $h1` vlan 1 dev $swp1 master
352− tc qdisc del dev $swp1 clsact
353352 bridge link set dev $swp1 learning off locked off mab off
353+ tc qdisc del dev $swp1 clsact
354354
355355 log_test "Locked port MAB redirect"
356356 }
tools/testing/selftests/net/forwarding/bridge_mdb.sh+9−5
@@ -329,7 +329,7 @@ __cfg_test_port_ip_star_g() · 328 unmodified lines
329329
330330 bridge -d -s mdb get dev br0 grp $grp vid 10 | grep -q " 0.00"
331331 check_err $? "(*, G) \"permanent\" entry has a pending group timer"
332− bridge -d -s mdb get dev br0 grp $grp vid 10 | grep -q "\/0.00"
332+ bridge -d -s mdb get dev br0 grp $grp vid 10 | grep -q "/0.00"
333333 check_err $? "\"permanent\" source entry has a pending source timer"
334334
335335 bridge mdb del dev br0 port $swp1 grp $grp vid 10
@@ -346,7 +346,7 @@ __cfg_test_port_ip_star_g() · 10 unmodified lines
346346
347347 bridge -d -s mdb get dev br0 grp $grp vid 10 | grep -q " 0.00"
348348 check_fail $? "(*, G) EXCLUDE entry does not have a pending group timer"
349− bridge -d -s mdb get dev br0 grp $grp vid 10 | grep -q "\/0.00"
349+ bridge -d -s mdb get dev br0 grp $grp vid 10 | grep -q "/0.00"
350350 check_err $? "\"blocked\" source entry has a pending source timer"
351351
352352 bridge mdb del dev br0 port $swp1 grp $grp vid 10
@@ -363,7 +363,7 @@ __cfg_test_port_ip_star_g() · 10 unmodified lines
363363
364364 bridge -d -s mdb get dev br0 grp $grp vid 10 | grep -q " 0.00"
365365 check_err $? "(*, G) INCLUDE entry has a pending group timer"
366− bridge -d -s mdb get dev br0 grp $grp vid 10 | grep -q "\/0.00"
366+ bridge -d -s mdb get dev br0 grp $grp vid 10 | grep -q "/0.00"
367367 check_fail $? "Source entry does not have a pending source timer"
368368
369369 bridge mdb del dev br0 port $swp1 grp $grp vid 10
@@ -1252,14 +1252,17 @@ fwd_test() · 882 unmodified lines
12521252 echo
12531253 log_info "# Forwarding tests"
12541254
1255+ # Set the Max Response Delay to 100 centiseconds (1 second) so that the
1256+ # bridge will start forwarding according to its MDB soon after a
1257+ # multicast querier is enabled.
1258+ ip link set dev br0 type bridge mcast_query_response_interval 100
1259+
12551260 # Forwarding according to MDB entries only takes place when the bridge
12561261 # detects that there is a valid querier in the network. Set the bridge
12571262 # as the querier and assign it a valid IPv6 link-local address to be
12581263 # used as the source address for MLD queries.
12591264 ip -6 address add fe80::1/64 nodad dev br0
12601265 ip link set dev br0 type bridge mcast_querier 1
1261− # Wait the default Query Response Interval (10 seconds) for the bridge
1262− # to determine that there are no other queriers in the network.
12631266 sleep 10
12641267
12651268 fwd_test_host
@@ -1267,6 +1270,7 @@ fwd_test() · 1 unmodified line
12671270
12681271 ip link set dev br0 type bridge mcast_querier 0
12691272 ip -6 address del fe80::1/64 dev br0
1273+ ip link set dev br0 type bridge mcast_query_response_interval 1000
12701274 }
12711275
12721276 ctrl_igmpv3_is_in_test()
tools/testing/selftests/net/forwarding/tc_flower_l2_miss.sh+6−2
@@ -209,14 +209,17 @@ test_l2_miss_multicast() · 208 unmodified lines
209209 # both registered and unregistered multicast traffic.
210210 bridge link set dev $swp2 mcast_router 2
211211
212+ # Set the Max Response Delay to 100 centiseconds (1 second) so that the
213+ # bridge will start forwarding according to its MDB soon after a
214+ # multicast querier is enabled.
215+ ip link set dev br1 type bridge mcast_query_response_interval 100
216+
212217 # Forwarding according to MDB entries only takes place when the bridge
213218 # detects that there is a valid querier in the network. Set the bridge
214219 # as the querier and assign it a valid IPv6 link-local address to be
215220 # used as the source address for MLD queries.
216221 ip link set dev br1 type bridge mcast_querier 1
217222 ip -6 address add fe80::1/64 nodad dev br1
218− # Wait the default Query Response Interval (10 seconds) for the bridge
219− # to determine that there are no other queriers in the network.
220223 sleep 10
221224
222225 test_l2_miss_multicast_ipv4
@@ -224,6 +227,7 @@ test_l2_miss_multicast() · 1 unmodified line
224227
225228 ip -6 address del fe80::1/64 dev br1
226229 ip link set dev br1 type bridge mcast_querier 0
230+ ip link set dev br1 type bridge mcast_query_response_interval 1000
227231 bridge link set dev $swp2 mcast_router 1
228232 }
229233
tools/testing/selftests/net/gro.sh+5−0
@@ -31,6 +31,11 @@ run_test() { · 30 unmodified lines
3131 1>>log.txt
3232 wait "${server_pid}"
3333 exit_code=$?
34+ if [[ ${test} == "large" && -n "${KSFT_MACHINE_SLOW}" && \
35+ ${exit_code} -ne 0 ]]; then
36+ echo "Ignoring errors due to slow environment" 1>&2
37+ exit_code=0
38+ fi
3439 if [[ "${exit_code}" -eq 0 ]]; then
3540 break;
3641 fi
tools/testing/selftests/net/ip_local_port_range.c+4−0
@@ -16,6 +16,10 @@ · 15 unmodified lines
1616 #define IP_LOCAL_PORT_RANGE 51
1717 #endif
1818
19+#ifndef IPPROTO_MPTCP
20+#define IPPROTO_MPTCP 262
21+#endif
22+
1923 static __u32 pack_port_range(__u16 lo, __u16 hi)
2024 {
2125 return (hi << 16) | (lo << 0);
tools/testing/selftests/net/net_helper.sh+7−4
@@ -8,13 +8,16 @@ wait_local_port_listen() · 7 unmodified lines
88 local listener_ns="${1}"
99 local port="${2}"
1010 local protocol="${3}"
11− local port_hex
11+ local pattern
1212 local i
1313
14− port_hex="$(printf "%04X" "${port}")"
14+ pattern=":$(printf "%04X" "${port}") "
15+
16+ # for tcp protocol additionally check the socket state
17+ [ ${protocol} = "tcp" ] && pattern="${pattern}0A"
1518 for i in $(seq 10); do
16− if ip netns exec "${listener_ns}" cat /proc/net/"${protocol}"* | \
17− grep -q "${port_hex}"; then
19+ if ip netns exec "${listener_ns}" awk '{print $2" "$4}' \
20+ /proc/net/"${protocol}"* | grep -q "${pattern}"; then
1821 break
1922 fi
2023 sleep 0.1
tools/testing/selftests/net/openvswitch/openvswitch.sh+13−0
@@ -502,7 +502,20 @@ test_netlink_checks () { · 501 unmodified lines
502502 wc -l) == 2 ] || \
503503 return 1
504504
505+ info "Checking clone depth"
505506 ERR_MSG="Flow actions may not be safe on all matching packets"
507+ PRE_TEST=$(dmesg | grep -c "${ERR_MSG}")
508+ ovs_add_flow "test_netlink_checks" nv0 \
509+ 'in_port(1),eth(),eth_type(0x800),ipv4()' \
510+ 'clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(drop)))))))))))))))))' \
511+ >/dev/null 2>&1 && return 1
512+ POST_TEST=$(dmesg | grep -c "${ERR_MSG}")
513+
514+ if [ "$PRE_TEST" == "$POST_TEST" ]; then
515+ info "failed - clone depth too large"
516+ return 1
517+ fi
518+
506519 PRE_TEST=$(dmesg | grep -c "${ERR_MSG}")
507520 ovs_add_flow "test_netlink_checks" nv0 \
508521 'in_port(1),eth(),eth_type(0x0806),arp()' 'drop(0),2' \
tools/testing/selftests/net/openvswitch/ovs-dpctl.py+56−15
@@ -299,7 +299,7 @@ class ovsactions(nla): · 298 unmodified lines
299299 ("OVS_ACTION_ATTR_PUSH_NSH", "none"),
300300 ("OVS_ACTION_ATTR_POP_NSH", "flag"),
301301 ("OVS_ACTION_ATTR_METER", "none"),
302− ("OVS_ACTION_ATTR_CLONE", "none"),
302+ ("OVS_ACTION_ATTR_CLONE", "recursive"),
303303 ("OVS_ACTION_ATTR_CHECK_PKT_LEN", "none"),
304304 ("OVS_ACTION_ATTR_ADD_MPLS", "none"),
305305 ("OVS_ACTION_ATTR_DEC_TTL", "none"),
@@ -465,29 +465,42 @@ class ovsactions(nla): · 159 unmodified lines
465465 print_str += "pop_mpls"
466466 else:
467467 datum = self.get_attr(field[0])
468− print_str += datum.dpstr(more)
468+ if field[0] == "OVS_ACTION_ATTR_CLONE":
469+ print_str += "clone("
470+ print_str += datum.dpstr(more)
471+ print_str += ")"
472+ else:
473+ print_str += datum.dpstr(more)
469474
470475 return print_str
471476
472477 def parse(self, actstr):
478+ totallen = len(actstr)
473479 while len(actstr) != 0:
474480 parsed = False
481+ parencount = 0
475482 if actstr.startswith("drop"):
476483 # If no reason is provided, the implicit drop is used (i.e no
477484 # action). If some reason is given, an explicit action is used.
478− actstr, reason = parse_extract_field(
479− actstr,
480− "drop(",
481− "([0-9]+)",
482− lambda x: int(x, 0),
483− False,
484− None,
485− )
485+ reason = None
486+ if actstr.startswith("drop("):
487+ parencount += 1
488+
489+ actstr, reason = parse_extract_field(
490+ actstr,
491+ "drop(",
492+ "([0-9]+)",
493+ lambda x: int(x, 0),
494+ False,
495+ None,
496+ )
497+
486498 if reason is not None:
487499 self["attrs"].append(["OVS_ACTION_ATTR_DROP", reason])
488500 parsed = True
489501 else:
490− return
502+ actstr = actstr[len("drop"): ]
503+ return (totallen - len(actstr))
491504
492505 elif parse_starts_block(actstr, "^(\d+)", False, True):
493506 actstr, output = parse_extract_field(
@@ -504,6 +517,7 @@ class ovsactions(nla): · 10 unmodified lines
504517 False,
505518 0,
506519 )
520+ parencount += 1
507521 self["attrs"].append(["OVS_ACTION_ATTR_RECIRC", recircid])
508522 parsed = True
509523
@@ -516,12 +530,22 @@ class ovsactions(nla): · 6 unmodified lines
516530
517531 for flat_act in parse_flat_map:
518532 if parse_starts_block(actstr, flat_act[0], False):
519− actstr += len(flat_act[0])
533+ actstr = actstr[len(flat_act[0]):]
520534 self["attrs"].append([flat_act[1]])
521535 actstr = actstr[strspn(actstr, ", ") :]
522536 parsed = True
523537
524− if parse_starts_block(actstr, "ct(", False):
538+ if parse_starts_block(actstr, "clone(", False):
539+ parencount += 1
540+ subacts = ovsactions()
541+ actstr = actstr[len("clone("):]
542+ parsedLen = subacts.parse(actstr)
543+ lst = []
544+ self["attrs"].append(("OVS_ACTION_ATTR_CLONE", subacts))
545+ actstr = actstr[parsedLen:]
546+ parsed = True
547+ elif parse_starts_block(actstr, "ct(", False):
548+ parencount += 1
525549 actstr = actstr[len("ct(") :]
526550 ctact = ovsactions.ctact()
527551
@@ -553,6 +577,7 @@ class ovsactions(nla): · 25 unmodified lines
553577 natact = ovsactions.ctact.natattr()
554578
555579 if actstr.startswith("("):
580+ parencount += 1
556581 t = None
557582 actstr = actstr[1:]
558583 if actstr.startswith("src"):
@@ -607,15 +632,29 @@ class ovsactions(nla): · 48 unmodified lines
607632 actstr = actstr[strspn(actstr, ", ") :]
608633
609634 ctact["attrs"].append(["OVS_CT_ATTR_NAT", natact])
610− actstr = actstr[strspn(actstr, ",) ") :]
635+ actstr = actstr[strspn(actstr, ", ") :]
611636
612637 self["attrs"].append(["OVS_ACTION_ATTR_CT", ctact])
613638 parsed = True
614639
615− actstr = actstr[strspn(actstr, "), ") :]
640+ actstr = actstr[strspn(actstr, ", ") :]
641+ while parencount > 0:
642+ parencount -= 1
643+ actstr = actstr[strspn(actstr, " "):]
644+ if len(actstr) and actstr[0] != ")":
645+ raise ValueError("Action str: '%s' unbalanced" % actstr)
646+ actstr = actstr[1:]
647+
648+ if len(actstr) and actstr[0] == ")":
649+ return (totallen - len(actstr))
650+
651+ actstr = actstr[strspn(actstr, ", ") :]
652+
616653 if not parsed:
617654 raise ValueError("Action str: '%s' not supported" % actstr)
618655
656+ return (totallen - len(actstr))
657+
619658
620659 class ovskey(nla):
621660 nla_flags = NLA_F_NESTED
@@ -2111,6 +2150,8 @@ def main(argv): · 1489 unmodified lines
21112150 ovsflow = OvsFlow()
21122151 ndb = NDB()
21132152
2153+ sys.setrecursionlimit(100000)
2154+
21142155 if hasattr(args, "showdp"):
21152156 found = False
21162157 for iface in ndb.interfaces:
tools/testing/selftests/net/pmtu.sh+2−2
@@ -1336,16 +1336,16 @@ test_pmtu_ipvX_over_bridged_vxlanY_or_geneveY_exception() { · 1335 unmodified lines
13361336 else
13371337 TCPDST="TCP:[${dst}]:50000"
13381338 fi
1339− ${ns_b} socat -T 3 -u -6 TCP-LISTEN:50000 STDOUT > $tmpoutfile &
1339+ ${ns_b} socat -T 3 -u -6 TCP-LISTEN:50000,reuseaddr STDOUT > $tmpoutfile &
13401340 local socat_pid=$!
13411341
13421342 wait_local_port_listen ${NS_B} 50000 tcp
13431343
13441344 dd if=/dev/zero status=none bs=1M count=1 | ${target} socat -T 3 -u STDIN $TCPDST,connect-timeout=3
13451345
1346+ wait ${socat_pid}
13461347 size=$(du -sb $tmpoutfile)
13471348 size=${size%%/tmp/*}
1348− wait ${socat_pid}
13491349
13501350 [ $size -ne 1048576 ] && err "File size $size mismatches exepcted value in locally bridged vxlan test" && return 1
13511351 done
tools/testing/selftests/net/so_txtime.sh+25−4
@@ -5,6 +5,7 @@ · 4 unmodified lines
55
66 set -e
77
8+readonly ksft_skip=4
89 readonly DEV="veth0"
910 readonly BIN="./so_txtime"
1011
@@ -46,7 +47,7 @@ ip -netns "${NS2}" addr add 192.168.1.2/24 dev "${DEV}" · 35 unmodified lines
4647 ip -netns "${NS1}" addr add fd::1/64 dev "${DEV}" nodad
4748 ip -netns "${NS2}" addr add fd::2/64 dev "${DEV}" nodad
4849
49−do_test() {
50+run_test() {
5051 local readonly IP="$1"
5152 local readonly CLOCK="$2"
5253 local readonly TXARGS="$3"
@@ -64,12 +65,25 @@ do_test() { · 11 unmodified lines
6465 fi
6566
6667 local readonly START="$(date +%s%N --date="+ 0.1 seconds")"
68+
6769 ip netns exec "${NS2}" "${BIN}" -"${IP}" -c "${CLOCK}" -t "${START}" -S "${SADDR}" -D "${DADDR}" "${RXARGS}" -r &
6870 ip netns exec "${NS1}" "${BIN}" -"${IP}" -c "${CLOCK}" -t "${START}" -S "${SADDR}" -D "${DADDR}" "${TXARGS}"
6971 wait "$!"
7072 }
7173
74+do_test() {
75+ run_test $@
76+ [ $? -ne 0 ] && ret=1
77+}
78+
79+do_fail_test() {
80+ run_test $@
81+ [ $? -eq 0 ] && ret=1
82+}
83+
7284 ip netns exec "${NS1}" tc qdisc add dev "${DEV}" root fq
85+set +e
86+ret=0
7387 do_test 4 mono a,-1 a,-1
7488 do_test 6 mono a,0 a,0
7589 do_test 6 mono a,10 a,10
@@ -77,13 +91,20 @@ do_test 4 mono a,10,b,20 a,10,b,20 · 1 unmodified line
7791 do_test 6 mono a,20,b,10 b,20,a,20
7892
7993 if ip netns exec "${NS1}" tc qdisc replace dev "${DEV}" root etf clockid CLOCK_TAI delta 400000; then
80− ! do_test 4 tai a,-1 a,-1
81− ! do_test 6 tai a,0 a,0
94+ do_fail_test 4 tai a,-1 a,-1
95+ do_fail_test 6 tai a,0 a,0
8296 do_test 6 tai a,10 a,10
8397 do_test 4 tai a,10,b,20 a,10,b,20
8498 do_test 6 tai a,20,b,10 b,10,a,20
8599 else
86100 echo "tc ($(tc -V)) does not support qdisc etf. skipping"
101+ [ $ret -eq 0 ] && ret=$ksft_skip
87102 fi
88103
89−echo OK. All tests passed
104+if [ $ret -eq 0 ]; then
105+ echo OK. All tests passed
106+elif [[ $ret -ne $ksft_skip && -n "$KSFT_MACHINE_SLOW" ]]; then
107+ echo "Ignoring errors due to slow environment" 1>&2
108+ ret=0
109+fi
110+exit $ret
tools/testing/selftests/net/test_bridge_backup_port.sh+23−0
@@ -124,6 +124,16 @@ tc_check_packets() · 123 unmodified lines
124124 [[ $pkts == $count ]]
125125 }
126126
127+bridge_link_check()
128+{
129+ local ns=$1; shift
130+ local dev=$1; shift
131+ local state=$1; shift
132+
133+ bridge -n $ns -d -j link show dev $dev | \
134+ jq -e ".[][\"state\"] == \"$state\"" &> /dev/null
135+}
136+
127137 ################################################################################
128138 # Setup
129139
@@ -259,6 +269,7 @@ backup_port() · 129 unmodified lines
259269 log_test $? 0 "No forwarding out of vx0"
260270
261271 run_cmd "ip -n $sw1 link set dev swp1 carrier off"
272+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 disabled
262273 log_test $? 0 "swp1 carrier off"
263274
264275 run_cmd "ip netns exec $sw1 mausezahn br0.10 -a $smac -b $dmac -A 198.51.100.1 -B 198.51.100.2 -t ip -p 100 -q -c 1"
@@ -268,6 +279,7 @@ backup_port() · 3 unmodified lines
268279 log_test $? 0 "No forwarding out of vx0"
269280
270281 run_cmd "ip -n $sw1 link set dev swp1 carrier on"
282+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 forwarding
271283 log_test $? 0 "swp1 carrier on"
272284
273285 # Configure vx0 as the backup port of swp1 and check that packets are
@@ -284,6 +296,7 @@ backup_port() · 10 unmodified lines
284296 log_test $? 0 "No forwarding out of vx0"
285297
286298 run_cmd "ip -n $sw1 link set dev swp1 carrier off"
299+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 disabled
287300 log_test $? 0 "swp1 carrier off"
288301
289302 run_cmd "ip netns exec $sw1 mausezahn br0.10 -a $smac -b $dmac -A 198.51.100.1 -B 198.51.100.2 -t ip -p 100 -q -c 1"
@@ -293,6 +306,7 @@ backup_port() · 3 unmodified lines
293306 log_test $? 0 "Forwarding out of vx0"
294307
295308 run_cmd "ip -n $sw1 link set dev swp1 carrier on"
309+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 forwarding
296310 log_test $? 0 "swp1 carrier on"
297311
298312 run_cmd "ip netns exec $sw1 mausezahn br0.10 -a $smac -b $dmac -A 198.51.100.1 -B 198.51.100.2 -t ip -p 100 -q -c 1"
@@ -314,6 +328,7 @@ backup_port() · 15 unmodified lines
314328 log_test $? 0 "No forwarding out of vx0"
315329
316330 run_cmd "ip -n $sw1 link set dev swp1 carrier off"
331+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 disabled
317332 log_test $? 0 "swp1 carrier off"
318333
319334 run_cmd "ip netns exec $sw1 mausezahn br0.10 -a $smac -b $dmac -A 198.51.100.1 -B 198.51.100.2 -t ip -p 100 -q -c 1"
@@ -369,6 +384,7 @@ backup_nhid() · 49 unmodified lines
369384 log_test $? 0 "No forwarding out of vx0"
370385
371386 run_cmd "ip -n $sw1 link set dev swp1 carrier off"
387+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 disabled
372388 log_test $? 0 "swp1 carrier off"
373389
374390 run_cmd "ip netns exec $sw1 mausezahn br0.10 -a $smac -b $dmac -A 198.51.100.1 -B 198.51.100.2 -t ip -p 100 -q -c 1"
@@ -382,6 +398,7 @@ backup_nhid() · 7 unmodified lines
382398 log_test $? 0 "Forwarding using VXLAN FDB entry"
383399
384400 run_cmd "ip -n $sw1 link set dev swp1 carrier on"
401+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 forwarding
385402 log_test $? 0 "swp1 carrier on"
386403
387404 # Configure nexthop ID 10 as the backup nexthop ID of swp1 and check
@@ -398,6 +415,7 @@ backup_nhid() · 10 unmodified lines
398415 log_test $? 0 "No forwarding out of vx0"
399416
400417 run_cmd "ip -n $sw1 link set dev swp1 carrier off"
418+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 disabled
401419 log_test $? 0 "swp1 carrier off"
402420
403421 run_cmd "ip netns exec $sw1 mausezahn br0.10 -a $smac -b $dmac -A 198.51.100.1 -B 198.51.100.2 -t ip -p 100 -q -c 1"
@@ -411,6 +429,7 @@ backup_nhid() · 7 unmodified lines
411429 log_test $? 0 "No forwarding using VXLAN FDB entry"
412430
413431 run_cmd "ip -n $sw1 link set dev swp1 carrier on"
432+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 forwarding
414433 log_test $? 0 "swp1 carrier on"
415434
416435 run_cmd "ip netns exec $sw1 mausezahn br0.10 -a $smac -b $dmac -A 198.51.100.1 -B 198.51.100.2 -t ip -p 100 -q -c 1"
@@ -441,6 +460,7 @@ backup_nhid() · 24 unmodified lines
441460 log_test $? 0 "No forwarding using VXLAN FDB entry"
442461
443462 run_cmd "ip -n $sw1 link set dev swp1 carrier off"
463+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 disabled
444464 log_test $? 0 "swp1 carrier off"
445465
446466 run_cmd "ip netns exec $sw1 mausezahn br0.10 -a $smac -b $dmac -A 198.51.100.1 -B 198.51.100.2 -t ip -p 100 -q -c 1"
@@ -497,6 +517,7 @@ backup_nhid_invalid() · 50 unmodified lines
497517 log_test $? 0 "Valid nexthop as backup nexthop"
498518
499519 run_cmd "ip -n $sw1 link set dev swp1 carrier off"
520+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 disabled
500521 log_test $? 0 "swp1 carrier off"
501522
502523 run_cmd "ip netns exec $sw1 mausezahn br0.10 -a $smac -b $dmac -A 198.51.100.1 -B 198.51.100.2 -t ip -p 100 -q -c 1"
@@ -604,7 +625,9 @@ backup_nhid_ping() · 101 unmodified lines
604625 run_cmd "bridge -n $sw2 link set dev swp1 backup_nhid 10"
605626
606627 run_cmd "ip -n $sw1 link set dev swp1 carrier off"
628+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw1 swp1 disabled
607629 run_cmd "ip -n $sw2 link set dev swp1 carrier off"
630+ busywait $BUSYWAIT_TIMEOUT bridge_link_check $sw2 swp1 disabled
608631
609632 run_cmd "ip netns exec $sw1 ping -i 0.1 -c 10 -w $PING_TIMEOUT 192.0.2.66"
610633 log_test $? 0 "Ping with backup nexthop ID"
tools/testing/selftests/net/tls.c+6−6
@@ -1002,12 +1002,12 @@ TEST_F(tls, recv_partial) · 1001 unmodified lines
10021002
10031003 memset(recv_mem, 0, sizeof(recv_mem));
10041004 EXPECT_EQ(send(self->fd, test_str, send_len, 0), send_len);
1005− EXPECT_NE(recv(self->cfd, recv_mem, strlen(test_str_first),
1006− MSG_WAITALL), -1);
1005+ EXPECT_EQ(recv(self->cfd, recv_mem, strlen(test_str_first),
1006+ MSG_WAITALL), strlen(test_str_first));
10071007 EXPECT_EQ(memcmp(test_str_first, recv_mem, strlen(test_str_first)), 0);
10081008 memset(recv_mem, 0, sizeof(recv_mem));
1009− EXPECT_NE(recv(self->cfd, recv_mem, strlen(test_str_second),
1010− MSG_WAITALL), -1);
1009+ EXPECT_EQ(recv(self->cfd, recv_mem, strlen(test_str_second),
1010+ MSG_WAITALL), strlen(test_str_second));
10111011 EXPECT_EQ(memcmp(test_str_second, recv_mem, strlen(test_str_second)),
10121012 0);
10131013 }
@@ -1874,13 +1874,13 @@ TEST_F(tls_err, poll_partial_rec_async) · 860 unmodified lines
18741874 /* Child should sleep in poll(), never get a wake */
18751875 pfd.fd = self->cfd2;
18761876 pfd.events = POLLIN;
1877− EXPECT_EQ(poll(&pfd, 1, 5), 0);
1877+ EXPECT_EQ(poll(&pfd, 1, 20), 0);
18781878
18791879 EXPECT_EQ(write(p[1], &token, 1), 1); /* Barrier #1 */
18801880
18811881 pfd.fd = self->cfd2;
18821882 pfd.events = POLLIN;
1883− EXPECT_EQ(poll(&pfd, 1, 5), 1);
1883+ EXPECT_EQ(poll(&pfd, 1, 20), 1);
18841884
18851885 exit(!_metadata->passed);
18861886 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t