projects/linux·commit 7d0ae236

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net

7d0ae236 · Linus Torvalds <[email protected]> · 2019-01-21 12:52:31 +13:00

Pull networking fixes from David Miller:

 1) Fix endless loop in nf_tables, from Phil Sutter.

 2) Fix cross namespace ip6_gre tunnel hash list corruption, from
    Olivier Matz.

 3) Don't be too strict in phy_start_aneg() otherwise we might not allow
    restarting auto negotiation. From Heiner Kallweit.

 4) Fix various KMSAN uninitialized value cases in tipc, from Ying Xue.

 5) Memory leak in act_tunnel_key, from Davide Caratti.

 6) Handle chip errata of mv88e6390 PHY, from Andrew Lunn.

 7) Remove linear SKB assumption in fou/fou6, from Eric Dumazet.

 8) Missing udplite rehash callbacks, from Alexey Kodanev.

 9) Log dirty pages properly in vhost, from Jason Wang.

10) Use consume_skb() in neigh_probe() as this is a normal free not a
    drop, from Yang Wei. Likewise in macvlan_process_broadcast().

11) Missing device_del() in mdiobus_register() error paths, from Thomas
    Petazzoni.

12) Fix checksum handling of short packets in mlx5, from Cong Wang.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (96 commits)
  bpf: in __bpf_redirect_no_mac pull mac only if present
  virtio_net: bulk free tx skbs
  net: phy: phy driver features are mandatory
  isdn: avm: Fix string plus integer warning from Clang
  net/mlx5e: Fix cb_ident duplicate in indirect block register
  net/mlx5e: Fix wrong (zero) TX drop counter indication for representor
  net/mlx5e: Fix wrong error code return on FEC query failure
  net/mlx5e: Force CHECKSUM_UNNECESSARY for short ethernet frames
  tools: bpftool: Cleanup license mess
  bpf: fix inner map masking to prevent oob under speculation
  bpf: pull in pkt_sched.h header for tooling to fix bpftool build
  selftests: forwarding: Add a test case for externally learned FDB entries
  selftests: mlxsw: Test FDB offload indication
  mlxsw: spectrum_switchdev: Do not treat static FDB entries as sticky
  net: bridge: Mark FDB entries that were added by user as such
  mlxsw: spectrum_fid: Update dummy FID index
  mlxsw: pci: Return error on PCI reset timeout
  mlxsw: pci: Increase PCI SW reset timeout
  mlxsw: pci: Ring CQ's doorbell before RDQ's
  MAINTAINERS: update email addresses of liquidio driver maintainers
  ...
Commit
7d0ae236ed13d7645fb73b85e7c95deee46c4656
Parents
bb617b9b · 6436408e

Merge commit. Changes below are compared with the first parent: bb617b9b.

Changes

114 files changed · +2090 −602

FileStatusAddDelContent
Documentation/networking/index.rstmodified+13−13View file
Documentation/networking/rxrpc.txtmodified+0−45View file
Documentation/networking/snmp_counter.rstmodified+125−5View file
Documentation/networking/timestamping.txtmodified+2−2View file
MAINTAINERSmodified+3−4View file
drivers/atm/he.cmodified+1−1View file
drivers/isdn/hardware/avm/b1.cmodified+1−1View file
drivers/net/Kconfigmodified+1−1View file
drivers/net/dsa/realtek-smi.cmodified+13−5View file
drivers/net/ethernet/amd/xgbe/xgbe-common.hmodified+0−2View file
drivers/net/ethernet/amd/xgbe/xgbe-dev.cmodified+16−6View file
drivers/net/ethernet/freescale/dpaa/dpaa_eth.cmodified+6−0View file
drivers/net/ethernet/intel/igb/igb.hmodified+1−1View file
drivers/net/ethernet/intel/igb/igb_ethtool.cmodified+2−2View file
drivers/net/ethernet/intel/igb/igb_main.cmodified+7−7View file
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.cmodified+4−1View file
drivers/net/ethernet/mellanox/mlx5/core/en_rep.cmodified+17−13View file
drivers/net/ethernet/mellanox/mlx5/core/en_rx.cmodified+13−0View file
drivers/net/ethernet/mellanox/mlxsw/pci.cmodified+9−7View file
drivers/net/ethernet/mellanox/mlxsw/pci_hw.hmodified+2−1View file
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.cmodified+2−2View file
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.cmodified+6−6View file
drivers/net/macvlan.cmodified+1−1View file
drivers/net/phy/bcm87xx.cmodified+2−0View file
drivers/net/phy/cortina.cmodified+1−0View file
drivers/net/phy/marvell.cmodified+35−2View file
drivers/net/phy/mdio_bus.cmodified+1−0View file
drivers/net/phy/meson-gxl.cmodified+1−0View file
drivers/net/phy/micrel.cmodified+2−0View file
drivers/net/phy/phy.cmodified+7−12View file
drivers/net/phy/phy_device.cmodified+17−0View file
drivers/net/phy/teranetics.cmodified+1−0View file
drivers/net/ppp/pppoe.cmodified+1−0View file
drivers/net/usb/aqc111.cmodified+15−0View file
drivers/net/usb/cdc_ether.cmodified+8−0View file
drivers/net/virtio_net.cmodified+6−6View file
drivers/vhost/net.cmodified+2−1View file
drivers/vhost/vhost.cmodified+83−14View file
drivers/vhost/vhost.hmodified+2−1View file
include/linux/phy.hmodified+4−2View file
include/linux/skbuff.hmodified+1−0View file
include/net/af_rxrpc.hmodified+0−16View file
include/net/ip_fib.hmodified+1−1View file
include/net/netfilter/nf_flow_table.hmodified+0−1View file
include/uapi/linux/in.hmodified+1−1View file
kernel/bpf/btf.cmodified+1−1View file
kernel/bpf/cgroup.cmodified+1−0View file
kernel/bpf/map_in_map.cmodified+15−2View file
kernel/bpf/stackmap.cmodified+7−2View file
net/bpfilter/bpfilter_umh_blob.Smodified+1−1View file
net/bridge/br_fdb.cmodified+5−0View file
net/bridge/br_forward.cmodified+4−5View file
net/bridge/br_netfilter_ipv6.cmodified+1−0View file
net/bridge/netfilter/ebtables.cmodified+4−2View file
net/bridge/netfilter/nft_reject_bridge.cmodified+1−0View file
net/core/filter.cmodified+20−12View file
net/core/lwt_bpf.cmodified+1−0View file
net/core/neighbour.cmodified+2−2View file
net/ipv4/fib_frontend.cmodified+2−2View file
net/ipv4/fib_trie.cmodified+12−3View file
net/ipv4/fou.cmodified+7−2View file
net/ipv4/ip_gre.cmodified+14−9View file
net/ipv4/ip_input.cmodified+1−0View file
net/ipv4/tcp.cmodified+1−1View file
net/ipv4/udp.cmodified+13−5View file
net/ipv4/udp_impl.hmodified+1−0View file
net/ipv4/udplite.cmodified+1−0View file
net/ipv6/fou6.cmodified+7−2View file
net/ipv6/ip6_gre.cmodified+10−4View file
net/ipv6/route.cmodified+2−12View file
net/ipv6/udp.cmodified+13−5View file
net/ipv6/udp_impl.hmodified+1−0View file
net/ipv6/udplite.cmodified+1−0View file
net/netfilter/nf_flow_table_core.cmodified+3−2View file
net/netfilter/nf_tables_api.cmodified+7−7View file
net/netfilter/nft_flow_offload.cmodified+8−5View file
net/openvswitch/flow_netlink.cmodified+1−1View file
net/packet/af_packet.cmodified+2−1View file
net/rxrpc/af_rxrpc.cmodified+0−70View file
net/rxrpc/ar-internal.hmodified+12−7View file
net/rxrpc/call_object.cmodified+0−97View file
net/rxrpc/conn_client.cmodified+1−4View file
net/rxrpc/sendmsg.cmodified+11−13View file
net/sched/act_tunnel_key.cmodified+11−8View file
net/sched/cls_api.cmodified+1−2View file
net/sched/cls_flower.cmodified+14−5View file
net/sched/sch_cake.cmodified+3−2View file
net/sched/sch_cbs.cmodified+2−1View file
net/sched/sch_drr.cmodified+5−2View file
net/sched/sch_dsmark.cmodified+2−1View file
net/sched/sch_hfsc.cmodified+5−4View file
net/sched/sch_htb.cmodified+2−1View file
net/sched/sch_prio.cmodified+2−1View file
net/sched/sch_qfq.cmodified+12−8View file
net/sched/sch_tbf.cmodified+2−1View file
net/sctp/ipv6.cmodified+1−4View file
net/sctp/protocol.cmodified+1−3View file
net/tipc/netlink_compat.cmodified+49−1View file
net/tipc/topsrv.cmodified+1−1View file
net/xdp/xdp_umem.cmodified+13−3View file
samples/bpf/Makefilemodified+1−0View file
samples/bpf/asm_goto_workaround.hadded+16−0View file
tools/bpf/bpftool/Makefilemodified+8−1View file
tools/bpf/bpftool/json_writer.cmodified+1−6View file
tools/bpf/bpftool/json_writer.hmodified+0−5View file
tools/include/uapi/linux/pkt_sched.hadded+1163−0View file
tools/lib/bpf/bpf.cmodified+15−4View file
tools/testing/selftests/bpf/Makefilemodified+1−0View file
tools/testing/selftests/bpf/test_progs.cmodified+30−0View file
tools/testing/selftests/drivers/net/mlxsw/rtnetlink.shmodified+20−0View file
tools/testing/selftests/net/forwarding/bridge_vlan_aware.shmodified+33−1View file
tools/testing/selftests/networking/timestamping/txtimestamp.cmodified+1−1View file
tools/testing/selftests/tc-testing/tc-tests/actions/ife.jsonmodified+44−44View file
tools/testing/selftests/tc-testing/tc-tests/actions/tunnel_key.jsonmodified+1−30View file

Only the first 600 diff lines are shown. Download the complete patch.

Documentation/networking/index.rst

View file
diff --git a/Documentation/networking/index.rst b/Documentation/networking/index.rst
index 6a47629..59e86de 100644
--- a/Documentation/networking/index.rst
+++ b/Documentation/networking/index.rst
@@ -11,19 +11,19 @@ Contents:
batman-adv
can
can_ucan_protocol
- dpaa2/index
- e100
- e1000
- e1000e
- fm10k
- igb
- igbvf
- ixgb
- ixgbe
- ixgbevf
- i40e
- iavf
- ice
+ device_drivers/freescale/dpaa2/index
+ device_drivers/intel/e100
+ device_drivers/intel/e1000
+ device_drivers/intel/e1000e
+ device_drivers/intel/fm10k
+ device_drivers/intel/igb
+ device_drivers/intel/igbvf
+ device_drivers/intel/ixgb
+ device_drivers/intel/ixgbe
+ device_drivers/intel/ixgbevf
+ device_drivers/intel/i40e
+ device_drivers/intel/iavf
+ device_drivers/intel/ice
kapi
z8530book
msg_zerocopy

Documentation/networking/rxrpc.txt

View file
diff --git a/Documentation/networking/rxrpc.txt b/Documentation/networking/rxrpc.txt
index c9d052e..2df5894 100644
--- a/Documentation/networking/rxrpc.txt
+++ b/Documentation/networking/rxrpc.txt
@@ -1000,51 +1000,6 @@ The kernel interface functions are as follows:
size should be set when the call is begun. tx_total_len may not be less
than zero.
- (*) Check to see the completion state of a call so that the caller can assess
- whether it needs to be retried.
-
- enum rxrpc_call_completion {
- RXRPC_CALL_SUCCEEDED,
- RXRPC_CALL_REMOTELY_ABORTED,
- RXRPC_CALL_LOCALLY_ABORTED,
- RXRPC_CALL_LOCAL_ERROR,
- RXRPC_CALL_NETWORK_ERROR,
- };
-
- int rxrpc_kernel_check_call(struct socket *sock, struct rxrpc_call *call,
- enum rxrpc_call_completion *_compl,
- u32 *_abort_code);
-
- On return, -EINPROGRESS will be returned if the call is still ongoing; if
- it is finished, *_compl will be set to indicate the manner of completion,
- *_abort_code will be set to any abort code that occurred. 0 will be
- returned on a successful completion, -ECONNABORTED will be returned if the
- client failed due to a remote abort and anything else will return an
- appropriate error code.
-
- The caller should look at this information to decide if it's worth
- retrying the call.
-
- (*) Retry a client call.
-
- int rxrpc_kernel_retry_call(struct socket *sock,
- struct rxrpc_call *call,
- struct sockaddr_rxrpc *srx,
- struct key *key);
-
- This attempts to partially reinitialise a call and submit it again while
- reusing the original call's Tx queue to avoid the need to repackage and
- re-encrypt the data to be sent. call indicates the call to retry, srx the
- new address to send it to and key the encryption key to use for signing or
- encrypting the packets.
-
- For this to work, the first Tx data packet must still be in the transmit
- queue, and currently this is only permitted for local and network errors
- and the call must not have been aborted. Any partially constructed Tx
- packet is left as is and can continue being filled afterwards.
-
- It returns 0 if the call was requeued and an error otherwise.
-
(*) Get call RTT.
u64 rxrpc_kernel_get_rtt(struct socket *sock, struct rxrpc_call *call);

Documentation/networking/snmp_counter.rst

View file
diff --git a/Documentation/networking/snmp_counter.rst b/Documentation/networking/snmp_counter.rst
index b0dfdaa..fe8f741 100644
--- a/Documentation/networking/snmp_counter.rst
+++ b/Documentation/networking/snmp_counter.rst
@@ -336,7 +336,26 @@ time client replies ACK, this socket will get another chance to move
to the accept queue.
-TCP Fast Open
+* TcpEstabResets
+Defined in `RFC1213 tcpEstabResets`_.
+
+.. _RFC1213 tcpEstabResets: https://tools.ietf.org/html/rfc1213#page-48
+
+* TcpAttemptFails
+Defined in `RFC1213 tcpAttemptFails`_.
+
+.. _RFC1213 tcpAttemptFails: https://tools.ietf.org/html/rfc1213#page-48
+
+* TcpOutRsts
+Defined in `RFC1213 tcpOutRsts`_. The RFC says this counter indicates
+the 'segments sent containing the RST flag', but in linux kernel, this
+couner indicates the segments kerenl tried to send. The sending
+process might be failed due to some errors (e.g. memory alloc failed).
+
+.. _RFC1213 tcpOutRsts: https://tools.ietf.org/html/rfc1213#page-52
+
+
+TCP Fast Path
============
When kernel receives a TCP packet, it has two paths to handler the
packet, one is fast path, another is slow path. The comment in kernel
@@ -383,8 +402,6 @@ increase 1.
TCP abort
========
-
-
* TcpExtTCPAbortOnData
It means TCP layer has data in flight, but need to close the
connection. So TCP layer sends a RST to the other side, indicate the
@@ -545,7 +562,6 @@ packet yet, the sender would know packet 4 is out of order. The TCP
stack of kernel will increase TcpExtTCPSACKReorder for both of the
above scenarios.
-
DSACK
=====
The DSACK is defined in `RFC2883`_. The receiver uses DSACK to report
@@ -566,13 +582,63 @@ The TCP stack receives an out of order duplicate packet, so it sends a
DSACK to the sender.
* TcpExtTCPDSACKRecv
-The TCP stack receives a DSACK, which indicate an acknowledged
+The TCP stack receives a DSACK, which indicates an acknowledged
duplicate packet is received.
* TcpExtTCPDSACKOfoRecv
The TCP stack receives a DSACK, which indicate an out of order
duplicate packet is received.
+invalid SACK and DSACK
+====================
+When a SACK (or DSACK) block is invalid, a corresponding counter would
+be updated. The validation method is base on the start/end sequence
+number of the SACK block. For more details, please refer the comment
+of the function tcp_is_sackblock_valid in the kernel source code. A
+SACK option could have up to 4 blocks, they are checked
+individually. E.g., if 3 blocks of a SACk is invalid, the
+corresponding counter would be updated 3 times. The comment of the
+`Add counters for discarded SACK blocks`_ patch has additional
+explaination:
+
+.. _Add counters for discarded SACK blocks: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=18f02545a9a16c9a89778b91a162ad16d510bb32
+
+* TcpExtTCPSACKDiscard
+This counter indicates how many SACK blocks are invalid. If the invalid
+SACK block is caused by ACK recording, the TCP stack will only ignore
+it and won't update this counter.
+
+* TcpExtTCPDSACKIgnoredOld and TcpExtTCPDSACKIgnoredNoUndo
+When a DSACK block is invalid, one of these two counters would be
+updated. Which counter will be updated depends on the undo_marker flag
+of the TCP socket. If the undo_marker is not set, the TCP stack isn't
+likely to re-transmit any packets, and we still receive an invalid
+DSACK block, the reason might be that the packet is duplicated in the
+middle of the network. In such scenario, TcpExtTCPDSACKIgnoredNoUndo
+will be updated. If the undo_marker is set, TcpExtTCPDSACKIgnoredOld
+will be updated. As implied in its name, it might be an old packet.
+
+SACK shift
+=========
+The linux networking stack stores data in sk_buff struct (skb for
+short). If a SACK block acrosses multiple skb, the TCP stack will try
+to re-arrange data in these skb. E.g. if a SACK block acknowledges seq
+10 to 15, skb1 has seq 10 to 13, skb2 has seq 14 to 20. The seq 14 and
+15 in skb2 would be moved to skb1. This operation is 'shift'. If a
+SACK block acknowledges seq 10 to 20, skb1 has seq 10 to 13, skb2 has
+seq 14 to 20. All data in skb2 will be moved to skb1, and skb2 will be
+discard, this operation is 'merge'.
+
+* TcpExtTCPSackShifted
+A skb is shifted
+
+* TcpExtTCPSackMerged
+A skb is merged
+
+* TcpExtTCPSackShiftFallback
+A skb should be shifted or merged, but the TCP stack doesn't do it for
+some reasons.
+
TCP out of order
===============
* TcpExtTCPOFOQueue
@@ -662,6 +728,60 @@ unacknowledged number (more strict than `RFC 5961 section 5.2`_).
.. _RFC 5961 section 4.2: https://tools.ietf.org/html/rfc5961#page-9
.. _RFC 5961 section 5.2: https://tools.ietf.org/html/rfc5961#page-11
+TCP receive window
+=================
+* TcpExtTCPWantZeroWindowAdv
+Depending on current memory usage, the TCP stack tries to set receive
+window to zero. But the receive window might still be a no-zero
+value. For example, if the previous window size is 10, and the TCP
+stack receives 3 bytes, the current window size would be 7 even if the
+window size calculated by the memory usage is zero.
+
+* TcpExtTCPToZeroWindowAdv
+The TCP receive window is set to zero from a no-zero value.
+
+* TcpExtTCPFromZeroWindowAdv
+The TCP receive window is set to no-zero value from zero.
+
+
+Delayed ACK
+==========
+The TCP Delayed ACK is a technique which is used for reducing the
+packet count in the network. For more details, please refer the
+`Delayed ACK wiki`_
+
+.. _Delayed ACK wiki: https://en.wikipedia.org/wiki/TCP_delayed_acknowledgment
+
+* TcpExtDelayedACKs
+A delayed ACK timer expires. The TCP stack will send a pure ACK packet
+and exit the delayed ACK mode.
+
+* TcpExtDelayedACKLocked
+A delayed ACK timer expires, but the TCP stack can't send an ACK
+immediately due to the socket is locked by a userspace program. The
+TCP stack will send a pure ACK later (after the userspace program
+unlock the socket). When the TCP stack sends the pure ACK later, the
+TCP stack will also update TcpExtDelayedACKs and exit the delayed ACK
+mode.
+
+* TcpExtDelayedACKLost
+It will be updated when the TCP stack receives a packet which has been
+ACKed. A Delayed ACK loss might cause this issue, but it would also be
+triggered by other reasons, such as a packet is duplicated in the
+network.
+
+Tail Loss Probe (TLP)
+===================
+TLP is an algorithm which is used to detect TCP packet loss. For more
+details, please refer the `TLP paper`_.
+
+.. _TLP paper: https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01
+
+* TcpExtTCPLossProbes
+A TLP probe packet is sent.
+
+* TcpExtTCPLossProbeRecovery
+A packet loss is detected and recovered by TLP.
examples
=======

Documentation/networking/timestamping.txt

View file
diff --git a/Documentation/networking/timestamping.txt b/Documentation/networking/timestamping.txt
index 1be0b6f..9d1432e 100644
--- a/Documentation/networking/timestamping.txt
+++ b/Documentation/networking/timestamping.txt
@@ -417,7 +417,7 @@ is again deprecated and ts[2] holds a hardware timestamp if set.
Hardware time stamping must also be initialized for each device driver
that is expected to do hardware time stamping. The parameter is defined in
-/include/linux/net_tstamp.h as:
+include/uapi/linux/net_tstamp.h as:
struct hwtstamp_config {
int flags; /* no flags defined right now, must be zero */
@@ -487,7 +487,7 @@ enum {
HWTSTAMP_FILTER_PTP_V1_L4_EVENT,
/* for the complete list of values, please check
- * the include file /include/linux/net_tstamp.h
+ * the include file include/uapi/linux/net_tstamp.h
*/
};

MAINTAINERS

View file
diff --git a/MAINTAINERS b/MAINTAINERS
index 4d04ceb..51029a4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3471,10 +3471,9 @@ F: drivers/i2c/busses/i2c-octeon*
F: drivers/i2c/busses/i2c-thunderx*
CAVIUM LIQUIDIO NETWORK DRIVER
-M: Derek Chickles <[email protected]>
-M: Satanand Burla <[email protected]>
-M: Felix Manlunas <[email protected]>
-M: Raghu Vatsavayi <[email protected]>
+M: Derek Chickles <[email protected]>
+M: Satanand Burla <[email protected]>
+M: Felix Manlunas <[email protected]>
W: http://www.cavium.com
S: Supported

drivers/atm/he.c

View file
diff --git a/drivers/atm/he.c b/drivers/atm/he.c
index 2e9d1cf..2116079 100644
--- a/drivers/atm/he.c
+++ b/drivers/atm/he.c
@@ -718,7 +718,7 @@ static int he_init_cs_block_rcm(struct he_dev *he_dev)
instead of '/ 512', use '>> 9' to prevent a call
to divdu3 on x86 platforms
*/
- rate_cps = (unsigned long long) (1 << exp) * (man + 512) >> 9;
+ rate_cps = (unsigned long long) (1UL << exp) * (man + 512) >> 9;
if (rate_cps < 10)
rate_cps = 10; /* 2.2.1 minimum payload rate is 10 cps */

drivers/isdn/hardware/avm/b1.c

View file
diff --git a/drivers/isdn/hardware/avm/b1.c b/drivers/isdn/hardware/avm/b1.c
index 4ac378e..40ca1e8 100644
--- a/drivers/isdn/hardware/avm/b1.c
+++ b/drivers/isdn/hardware/avm/b1.c
@@ -423,7 +423,7 @@ void b1_parse_version(avmctrl_info *cinfo)
int i, j;
for (j = 0; j < AVM_MAXVERSION; j++)
- cinfo->version[j] = "\0\0" + 1;
+ cinfo->version[j] = "";
for (i = 0, j = 0;
j < AVM_MAXVERSION && i < cinfo->versionlen;
j++, i += cinfo->versionbuf[i] + 1)

drivers/net/Kconfig

View file
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 6371958..edb1c02 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -519,7 +519,7 @@ config NET_FAILOVER
and destroy a failover master netdev and manages a primary and
standby slave netdevs that get registered via the generic failover
infrastructure. This can be used by paravirtual drivers to enable
- an alternate low latency datapath. It alsoenables live migration of
+ an alternate low latency datapath. It also enables live migration of
a VM with direct attached VF by failing over to the paravirtual
datapath when the VF is unplugged.

drivers/net/dsa/realtek-smi.c

View file
diff --git a/drivers/net/dsa/realtek-smi.c b/drivers/net/dsa/realtek-smi.c
index b4b839a..ad41ec6 100644
--- a/drivers/net/dsa/realtek-smi.c
+++ b/drivers/net/dsa/realtek-smi.c
@@ -347,16 +347,17 @@ int realtek_smi_setup_mdio(struct realtek_smi *smi)
struct device_node *mdio_np;
int ret;
- mdio_np = of_find_compatible_node(smi->dev->of_node, NULL,
- "realtek,smi-mdio");
+ mdio_np = of_get_compatible_child(smi->dev->of_node, "realtek,smi-mdio");
if (!mdio_np) {
dev_err(smi->dev, "no MDIO bus node\n");
return -ENODEV;
}
smi->slave_mii_bus = devm_mdiobus_alloc(smi->dev);
- if (!smi->slave_mii_bus)
- return -ENOMEM;
+ if (!smi->slave_mii_bus) {
+ ret = -ENOMEM;
+ goto err_put_node;
+ }
smi->slave_mii_bus->priv = smi;
smi->slave_mii_bus->name = "SMI slave MII";
smi->slave_mii_bus->read = realtek_smi_mdio_read;
@@ -371,10 +372,15 @@ int realtek_smi_setup_mdio(struct realtek_smi *smi)
if (ret) {
dev_err(smi->dev, "unable to register MDIO bus %s\n",
smi->slave_mii_bus->id);
- of_node_put(mdio_np);
+ goto err_put_node;
}
return 0;
+
+err_put_node:
+ of_node_put(mdio_np);
+
+ return ret;
}
static int realtek_smi_probe(struct platform_device *pdev)
@@ -457,6 +463,8 @@ static int realtek_smi_remove(struct platform_device *pdev)
struct realtek_smi *smi = dev_get_drvdata(&pdev->dev);
dsa_unregister_switch(smi->ds);
+ if (smi->slave_mii_bus)
+ of_node_put(smi->slave_mii_bus->dev.of_node);
gpiod_set_value(smi->reset, 1);
return 0;

drivers/net/ethernet/amd/xgbe/xgbe-common.h

View file
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-common.h b/drivers/net/ethernet/amd/xgbe/xgbe-common.h
index d272dc6..b40d437 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-common.h
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-common.h
@@ -431,8 +431,6 @@
#define MAC_MDIOSCAR_PA_WIDTH 5
#define MAC_MDIOSCAR_RA_INDEX 0
#define MAC_MDIOSCAR_RA_WIDTH 16
-#define MAC_MDIOSCAR_REG_INDEX 0
-#define MAC_MDIOSCAR_REG_WIDTH 21
#define MAC_MDIOSCCDR_BUSY_INDEX 22
#define MAC_MDIOSCCDR_BUSY_WIDTH 1
#define MAC_MDIOSCCDR_CMD_INDEX 16

drivers/net/ethernet/amd/xgbe/xgbe-dev.c

View file
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
index 1e929a1..4666084 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
@@ -1284,6 +1284,20 @@ static void xgbe_write_mmd_regs(struct xgbe_prv_data *pdata, int prtad,
}
}
+static unsigned int xgbe_create_mdio_sca(int port, int reg)
+{
+ unsigned int mdio_sca, da;
+
+ da = (reg & MII_ADDR_C45) ? reg >> 16 : 0;
+
+ mdio_sca = 0;
+ XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, RA, reg);
+ XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, PA, port);
+ XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, da);
+
+ return mdio_sca;
+}
+
static int xgbe_write_ext_mii_regs(struct xgbe_prv_data *pdata, int addr,
int reg, u16 val)
{
@@ -1291,9 +1305,7 @@ static int xgbe_write_ext_mii_regs(struct xgbe_prv_data *pdata, int addr,
reinit_completion(&pdata->mdio_complete);
- mdio_sca = 0;
- XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, REG, reg);
- XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, addr);
+ mdio_sca = xgbe_create_mdio_sca(addr, reg);
XGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca);
mdio_sccd = 0;
@@ -1317,9 +1329,7 @@ static int xgbe_read_ext_mii_regs(struct xgbe_prv_data *pdata, int addr,
reinit_completion(&pdata->mdio_complete);
- mdio_sca = 0;
- XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, REG, reg);
- XGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, addr);
+ mdio_sca = xgbe_create_mdio_sca(addr, reg);
XGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca);
mdio_sccd = 0;

drivers/net/ethernet/freescale/dpaa/dpaa_eth.c

View file
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
index f53090c..dfebc30 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
@@ -2051,6 +2051,7 @@ dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
bool nonlinear = skb_is_nonlinear(skb);
struct rtnl_link_stats64 *percpu_stats;
struct dpaa_percpu_priv *percpu_priv;
+ struct netdev_queue *txq;
struct dpaa_priv *priv;
struct qm_fd fd;
int offset = 0;
@@ -2100,6 +2101,11 @@ dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
if (unlikely(err < 0))
goto skb_to_fd_failed;
+ txq = netdev_get_tx_queue(net_dev, queue_mapping);
+
+ /* LLTX requires to do our own update of trans_start */
+ txq->trans_start = jiffies;
+
if (priv->tx_tstamp && skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) {
fd.cmd |= cpu_to_be32(FM_FD_CMD_UPD);
skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;

drivers/net/ethernet/intel/igb/igb.h

View file
diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h
index fe1592a..ca54e26 100644
--- a/drivers/net/ethernet/intel/igb/igb.h
+++ b/drivers/net/ethernet/intel/igb/igb.h
@@ -515,7 +515,7 @@ struct igb_adapter {
/* OS defined structs */
struct pci_dev *pdev;
- struct mutex stats64_lock;
+ spinlock_t stats64_lock;
struct rtnl_link_stats64 stats64;
/* structs defined in e1000_hw.h */

drivers/net/ethernet/intel/igb/igb_ethtool.c

View file
diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c
index 7426060..c576710 100644
--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
@@ -2295,7 +2295,7 @@ static void igb_get_ethtool_stats(struct net_device *netdev,
int i, j;
char *p;
- mutex_lock(&adapter->stats64_lock);
+ spin_lock(&adapter->stats64_lock);
igb_update_stats(adapter);
for (i = 0; i < IGB_GLOBAL_STATS_LEN; i++) {
@@ -2338,7 +2338,7 @@ static void igb_get_ethtool_stats(struct net_device *netdev,
} while (u64_stats_fetch_retry_irq(&ring->rx_syncp, start));
i += IGB_RX_QUEUE_STATS_LEN;
}
- mutex_unlock(&adapter->stats64_lock);
+ spin_unlock(&adapter->stats64_lock);
}
static void igb_get_strings(struct net_device *netdev, u32 stringset, u8 *data)

drivers/net/ethernet/intel/igb/igb_main.c

View file
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 87bdf16..7137e7f 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -2203,9 +2203,9 @@ void igb_down(struct igb_adapter *adapter)
del_timer_sync(&adapter->phy_info_timer);
/* record the stats before reset*/
- mutex_lock(&adapter->stats64_lock);
+ spin_lock(&adapter->stats64_lock);
igb_update_stats(adapter);
- mutex_unlock(&adapter->stats64_lock);
+ spin_unlock(&adapter->stats64_lock);
adapter->link_speed = 0;
adapter->link_duplex = 0;
@@ -3840,7 +3840,7 @@ static int igb_sw_init(struct igb_adapter *adapter)
adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN;
spin_lock_init(&adapter->nfc_lock);
- mutex_init(&adapter->stats64_lock);
+ spin_lock_init(&adapter->stats64_lock);
#ifdef CONFIG_PCI_IOV
switch (hw->mac.type) {
case e1000_82576:
@@ -5406,9 +5406,9 @@ no_wait:
}
}
- mutex_lock(&adapter->stats64_lock);
+ spin_lock(&adapter->stats64_lock);
igb_update_stats(adapter);
- mutex_unlock(&adapter->stats64_lock);
+ spin_unlock(&adapter->stats64_lock);
for (i = 0; i < adapter->num_tx_queues; i++) {
struct igb_ring *tx_ring = adapter->tx_ring[i];
@@ -6235,10 +6235,10 @@ static void igb_get_stats64(struct net_device *netdev,
{
struct igb_adapter *adapter = netdev_priv(netdev);
- mutex_lock(&adapter->stats64_lock);
+ spin_lock(&adapter->stats64_lock);
igb_update_stats(adapter);
memcpy(stats, &adapter->stats64, sizeof(*stats));
- mutex_unlock(&adapter->stats64_lock);
+ spin_unlock(&adapter->stats64_lock);
}
/**

drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c

View file
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
index c9df081..3bbccea 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
@@ -844,9 +844,12 @@ int mlx5e_ethtool_get_link_ksettings(struct mlx5e_priv *priv,
ethtool_link_ksettings_add_link_mode(link_ksettings, supported,
Autoneg);
- if (get_fec_supported_advertised(mdev, link_ksettings))
+ err = get_fec_supported_advertised(mdev, link_ksettings);
+ if (err) {
netdev_dbg(priv->netdev, "%s: FEC caps query failed: %d\n",
__func__, err);
+ err = 0; /* don't fail caps query because of FEC error */
+ }
if (!an_disable_admin)
ethtool_link_ksettings_add_link_mode(link_ksettings,

drivers/net/ethernet/mellanox/mlx5/core/en_rep.c

View file
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
index 96cc0c6..0473621 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -58,7 +58,8 @@ struct mlx5e_rep_indr_block_priv {
struct list_head list;
};
-static void mlx5e_rep_indr_unregister_block(struct net_device *netdev);
+static void mlx5e_rep_indr_unregister_block(struct mlx5e_rep_priv *rpriv,
+ struct net_device *netdev);
static void mlx5e_rep_get_drvinfo(struct net_device *dev,
struct ethtool_drvinfo *drvinfo)

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/en_rx.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlxsw/pci.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlxsw/pci_hw.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/macvlan.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/phy/bcm87xx.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/phy/cortina.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/phy/marvell.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/phy/mdio_bus.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/phy/meson-gxl.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/phy/micrel.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/phy/phy.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/phy/phy_device.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/phy/teranetics.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ppp/pppoe.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/usb/aqc111.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/usb/cdc_ether.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/virtio_net.c

View file

This diff is incomplete. Download the complete patch.

drivers/vhost/net.c

View file

This diff is incomplete. Download the complete patch.

drivers/vhost/vhost.c

View file

This diff is incomplete. Download the complete patch.

drivers/vhost/vhost.h

View file

This diff is incomplete. Download the complete patch.

include/linux/phy.h

View file

This diff is incomplete. Download the complete patch.

include/linux/skbuff.h

View file

This diff is incomplete. Download the complete patch.

include/net/af_rxrpc.h

View file

This diff is incomplete. Download the complete patch.

include/net/ip_fib.h

View file

This diff is incomplete. Download the complete patch.

include/net/netfilter/nf_flow_table.h

View file

This diff is incomplete. Download the complete patch.

include/uapi/linux/in.h

View file

This diff is incomplete. Download the complete patch.

kernel/bpf/btf.c

View file

This diff is incomplete. Download the complete patch.

kernel/bpf/cgroup.c

View file

This diff is incomplete. Download the complete patch.

kernel/bpf/map_in_map.c

View file

This diff is incomplete. Download the complete patch.

kernel/bpf/stackmap.c

View file

This diff is incomplete. Download the complete patch.

net/bpfilter/bpfilter_umh_blob.S

View file

This diff is incomplete. Download the complete patch.

net/bridge/br_fdb.c

View file

This diff is incomplete. Download the complete patch.

net/bridge/br_forward.c

View file

This diff is incomplete. Download the complete patch.

net/bridge/br_netfilter_ipv6.c

View file

This diff is incomplete. Download the complete patch.

net/bridge/netfilter/ebtables.c

View file

This diff is incomplete. Download the complete patch.

net/bridge/netfilter/nft_reject_bridge.c

View file

This diff is incomplete. Download the complete patch.

net/core/filter.c

View file

This diff is incomplete. Download the complete patch.

net/core/lwt_bpf.c

View file

This diff is incomplete. Download the complete patch.

net/core/neighbour.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/fib_frontend.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/fib_trie.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/fou.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/ip_gre.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/ip_input.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/tcp.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/udp.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/udp_impl.h

View file

This diff is incomplete. Download the complete patch.

net/ipv4/udplite.c

View file

This diff is incomplete. Download the complete patch.

net/ipv6/fou6.c

View file

This diff is incomplete. Download the complete patch.

net/ipv6/ip6_gre.c

View file

This diff is incomplete. Download the complete patch.

net/ipv6/route.c

View file

This diff is incomplete. Download the complete patch.

net/ipv6/udp.c

View file

This diff is incomplete. Download the complete patch.

net/ipv6/udp_impl.h

View file

This diff is incomplete. Download the complete patch.

net/ipv6/udplite.c

View file

This diff is incomplete. Download the complete patch.

net/netfilter/nf_flow_table_core.c

View file

This diff is incomplete. Download the complete patch.

net/netfilter/nf_tables_api.c

View file

This diff is incomplete. Download the complete patch.

net/netfilter/nft_flow_offload.c

View file

This diff is incomplete. Download the complete patch.

net/openvswitch/flow_netlink.c

View file

This diff is incomplete. Download the complete patch.

net/packet/af_packet.c

View file

This diff is incomplete. Download the complete patch.

net/rxrpc/af_rxrpc.c

View file

This diff is incomplete. Download the complete patch.

net/rxrpc/ar-internal.h

View file

This diff is incomplete. Download the complete patch.

net/rxrpc/call_object.c

View file

This diff is incomplete. Download the complete patch.

net/rxrpc/conn_client.c

View file

This diff is incomplete. Download the complete patch.

net/rxrpc/sendmsg.c

View file

This diff is incomplete. Download the complete patch.

net/sched/act_tunnel_key.c

View file

This diff is incomplete. Download the complete patch.

net/sched/cls_api.c

View file

This diff is incomplete. Download the complete patch.

net/sched/cls_flower.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_cake.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_cbs.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_drr.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_dsmark.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_hfsc.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_htb.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_prio.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_qfq.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_tbf.c

View file

This diff is incomplete. Download the complete patch.

net/sctp/ipv6.c

View file

This diff is incomplete. Download the complete patch.

net/sctp/protocol.c

View file

This diff is incomplete. Download the complete patch.

net/tipc/netlink_compat.c

View file

This diff is incomplete. Download the complete patch.

net/tipc/topsrv.c

View file

This diff is incomplete. Download the complete patch.

net/xdp/xdp_umem.c

View file

This diff is incomplete. Download the complete patch.

samples/bpf/Makefile

View file

This diff is incomplete. Download the complete patch.

samples/bpf/asm_goto_workaround.h

View file

This diff is incomplete. Download the complete patch.

tools/bpf/bpftool/Makefile

View file

This diff is incomplete. Download the complete patch.

tools/bpf/bpftool/json_writer.c

View file

This diff is incomplete. Download the complete patch.

tools/bpf/bpftool/json_writer.h

View file

This diff is incomplete. Download the complete patch.

tools/include/uapi/linux/pkt_sched.h

View file

This diff is incomplete. Download the complete patch.

tools/lib/bpf/bpf.c

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/bpf/Makefile

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/bpf/test_progs.c

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/drivers/net/mlxsw/rtnetlink.sh

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/net/forwarding/bridge_vlan_aware.sh

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/networking/timestamping/txtimestamp.c

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/tc-testing/tc-tests/actions/ife.json

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/tc-testing/tc-tests/actions/tunnel_key.json

View file

This diff is incomplete. Download the complete patch.