]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.11-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 4 Mar 2021 15:17:44 +0000 (16:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 4 Mar 2021 15:17:44 +0000 (16:17 +0100)
added patches:
asoc-qcom-remove-useless-debug-print.patch
dt-bindings-ethernet-controller-fix-fixed-link-specification.patch
dt-bindings-net-btusb-dt-fix-s-interrupt-name-interrupt-names.patch
i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch
mptcp-do-not-wakeup-listener-for-mpj-subflows.patch
mptcp-fix-data_fin-generation-on-early-shutdown.patch
mptcp-provide-subflow-aware-release-function.patch
net-ag71xx-remove-unnecessary-mtu-reservation.patch
net-bridge-use-switchdev-for-port-flags-set-through-sysfs-too.patch
net-dsa-tag_rtl4_a-support-also-egress-tags.patch
net-fix-dev_ifsioc_locked-race-condition.patch
net-hsr-add-support-for-entryforgettime.patch
net-psample-fix-netlink-skb-length-with-tunnel-info.patch
net-sched-cls_flower-reject-invalid-ct_state-flags-rules.patch
rdma-rtrs-clt-use-bitmask-to-check-sess-flags.patch
rdma-rtrs-do-not-signal-for-heatbeat.patch
rdma-rtrs-srv-do-not-signal-reg_mr.patch
soundwire-debugfs-use-controller-id-instead-of-link_id.patch
tcp-fix-tcp_rmem-documentation.patch

20 files changed:
queue-5.11/asoc-qcom-remove-useless-debug-print.patch [new file with mode: 0644]
queue-5.11/dt-bindings-ethernet-controller-fix-fixed-link-specification.patch [new file with mode: 0644]
queue-5.11/dt-bindings-net-btusb-dt-fix-s-interrupt-name-interrupt-names.patch [new file with mode: 0644]
queue-5.11/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch [new file with mode: 0644]
queue-5.11/mptcp-do-not-wakeup-listener-for-mpj-subflows.patch [new file with mode: 0644]
queue-5.11/mptcp-fix-data_fin-generation-on-early-shutdown.patch [new file with mode: 0644]
queue-5.11/mptcp-provide-subflow-aware-release-function.patch [new file with mode: 0644]
queue-5.11/net-ag71xx-remove-unnecessary-mtu-reservation.patch [new file with mode: 0644]
queue-5.11/net-bridge-use-switchdev-for-port-flags-set-through-sysfs-too.patch [new file with mode: 0644]
queue-5.11/net-dsa-tag_rtl4_a-support-also-egress-tags.patch [new file with mode: 0644]
queue-5.11/net-fix-dev_ifsioc_locked-race-condition.patch [new file with mode: 0644]
queue-5.11/net-hsr-add-support-for-entryforgettime.patch [new file with mode: 0644]
queue-5.11/net-psample-fix-netlink-skb-length-with-tunnel-info.patch [new file with mode: 0644]
queue-5.11/net-sched-cls_flower-reject-invalid-ct_state-flags-rules.patch [new file with mode: 0644]
queue-5.11/rdma-rtrs-clt-use-bitmask-to-check-sess-flags.patch [new file with mode: 0644]
queue-5.11/rdma-rtrs-do-not-signal-for-heatbeat.patch [new file with mode: 0644]
queue-5.11/rdma-rtrs-srv-do-not-signal-reg_mr.patch [new file with mode: 0644]
queue-5.11/series
queue-5.11/soundwire-debugfs-use-controller-id-instead-of-link_id.patch [new file with mode: 0644]
queue-5.11/tcp-fix-tcp_rmem-documentation.patch [new file with mode: 0644]

diff --git a/queue-5.11/asoc-qcom-remove-useless-debug-print.patch b/queue-5.11/asoc-qcom-remove-useless-debug-print.patch
new file mode 100644 (file)
index 0000000..261888c
--- /dev/null
@@ -0,0 +1,37 @@
+From 16117beb16f01a470d40339960ffae1e287c03be Mon Sep 17 00:00:00 2001
+From: Stephen Boyd <swboyd@chromium.org>
+Date: Thu, 14 Jan 2021 19:43:24 -0800
+Subject: ASoC: qcom: Remove useless debug print
+
+From: Stephen Boyd <swboyd@chromium.org>
+
+commit 16117beb16f01a470d40339960ffae1e287c03be upstream.
+
+This looks like a left over debug print that tells us that HDMI is
+enabled. Let's remove it as that's definitely not an error to have HDMI
+enabled.
+
+Cc: V Sujith Kumar Reddy <vsujithk@codeaurora.org>
+Cc: Srinivasa Rao <srivasam@codeaurora.org>
+Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+Cc: Cheng-Yi Chiang <cychiang@chromium.org>
+Fixes: 7cb37b7bd0d3 ("ASoC: qcom: Add support for lpass hdmi driver")
+Signed-off-by: Stephen Boyd <swboyd@chromium.org>
+Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+Link: https://lore.kernel.org/r/20210115034327.617223-2-swboyd@chromium.org
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/qcom/lpass-cpu.c |    1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/sound/soc/qcom/lpass-cpu.c
++++ b/sound/soc/qcom/lpass-cpu.c
+@@ -743,7 +743,6 @@ static void of_lpass_cpu_parse_dai_data(
+               }
+               if (id == LPASS_DP_RX) {
+                       data->hdmi_port_enable = 1;
+-                      dev_err(dev, "HDMI Port is enabled: %d\n", id);
+               } else {
+                       data->mi2s_playback_sd_mode[id] =
+                               of_lpass_cpu_parse_sd_lines(dev, node,
diff --git a/queue-5.11/dt-bindings-ethernet-controller-fix-fixed-link-specification.patch b/queue-5.11/dt-bindings-ethernet-controller-fix-fixed-link-specification.patch
new file mode 100644 (file)
index 0000000..b73d7ea
--- /dev/null
@@ -0,0 +1,36 @@
+From 322322d15b9b912bc8710c367a95a7de62220a72 Mon Sep 17 00:00:00 2001
+From: Russell King <rmk+kernel@armlinux.org.uk>
+Date: Mon, 1 Feb 2021 10:02:20 +0000
+Subject: dt-bindings: ethernet-controller: fix fixed-link specification
+
+From: Russell King <rmk+kernel@armlinux.org.uk>
+
+commit 322322d15b9b912bc8710c367a95a7de62220a72 upstream.
+
+The original fixed-link.txt allowed a pause property for fixed link.
+This has been missed in the conversion to yaml format.
+
+Fixes: 9d3de3c58347 ("dt-bindings: net: Add YAML schemas for the generic Ethernet options")
+Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Link: https://lore.kernel.org/r/E1l6W2G-0002Ga-0O@rmk-PC.armlinux.org.uk
+Signed-off-by: Rob Herring <robh@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ Documentation/devicetree/bindings/net/ethernet-controller.yaml |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/Documentation/devicetree/bindings/net/ethernet-controller.yaml
++++ b/Documentation/devicetree/bindings/net/ethernet-controller.yaml
+@@ -205,6 +205,11 @@ properties:
+                 Indicates that full-duplex is used. When absent, half
+                 duplex is assumed.
++            pause:
++              $ref: /schemas/types.yaml#definitions/flag
++              description:
++                Indicates that pause should be enabled.
++
+             asym-pause:
+               $ref: /schemas/types.yaml#/definitions/flag
+               description:
diff --git a/queue-5.11/dt-bindings-net-btusb-dt-fix-s-interrupt-name-interrupt-names.patch b/queue-5.11/dt-bindings-net-btusb-dt-fix-s-interrupt-name-interrupt-names.patch
new file mode 100644 (file)
index 0000000..9428327
--- /dev/null
@@ -0,0 +1,33 @@
+From f288988930e93857e0375bdf88bb670c312b82eb Mon Sep 17 00:00:00 2001
+From: Geert Uytterhoeven <geert+renesas@glider.be>
+Date: Thu, 14 Jan 2021 14:13:33 +0100
+Subject: dt-bindings: net: btusb: DT fix s/interrupt-name/interrupt-names/
+
+From: Geert Uytterhoeven <geert+renesas@glider.be>
+
+commit f288988930e93857e0375bdf88bb670c312b82eb upstream.
+
+The standard DT property name is "interrupt-names".
+
+Fixes: fd913ef7ce619467 ("Bluetooth: btusb: Add out-of-band wakeup support")
+Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
+Acked-by: Rob Herring <robh@kernel.org>
+Reviewed-by: Brian Norris <briannorris@chromium.org>
+Acked-by: Rajat Jain <rajatja@google.com>
+Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ Documentation/devicetree/bindings/net/btusb.txt |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/Documentation/devicetree/bindings/net/btusb.txt
++++ b/Documentation/devicetree/bindings/net/btusb.txt
+@@ -38,7 +38,7 @@ Following example uses irq pin number 3
+       compatible = "usb1286,204e";
+       reg = <1>;
+       interrupt-parent = <&gpio0>;
+-      interrupt-name = "wakeup";
++      interrupt-names = "wakeup";
+       interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+     };
+ };
diff --git a/queue-5.11/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch b/queue-5.11/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch
new file mode 100644 (file)
index 0000000..9e2c145
--- /dev/null
@@ -0,0 +1,84 @@
+From e0371298ddc51761be257698554ea507ac8bf831 Mon Sep 17 00:00:00 2001
+From: Roja Rani Yarubandi <rojay@codeaurora.org>
+Date: Fri, 8 Jan 2021 20:35:45 +0530
+Subject: i2c: i2c-qcom-geni: Add shutdown callback for i2c
+
+From: Roja Rani Yarubandi <rojay@codeaurora.org>
+
+commit e0371298ddc51761be257698554ea507ac8bf831 upstream.
+
+If the hardware is still accessing memory after SMMU translation
+is disabled (as part of smmu shutdown callback), then the
+IOVAs (I/O virtual address) which it was using will go on the bus
+as the physical addresses which will result in unknown crashes
+like NoC/interconnect errors.
+
+So, implement shutdown callback to i2c driver to stop on-going transfer
+and unmap DMA mappings during system "reboot" or "shutdown".
+
+Fixes: 37692de5d523 ("i2c: i2c-qcom-geni: Add bus driver for the Qualcomm GENI I2C controller")
+Signed-off-by: Roja Rani Yarubandi <rojay@codeaurora.org>
+Reviewed-by: Akash Asthana <akashast@codeaurora.org>
+Signed-off-by: Wolfram Sang <wsa@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/i2c/busses/i2c-qcom-geni.c |   34 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 34 insertions(+)
+
+--- a/drivers/i2c/busses/i2c-qcom-geni.c
++++ b/drivers/i2c/busses/i2c-qcom-geni.c
+@@ -375,6 +375,32 @@ static void geni_i2c_tx_msg_cleanup(stru
+       }
+ }
++static void geni_i2c_stop_xfer(struct geni_i2c_dev *gi2c)
++{
++      int ret;
++      u32 geni_status;
++      struct i2c_msg *cur;
++
++      /* Resume device, as runtime suspend can happen anytime during transfer */
++      ret = pm_runtime_get_sync(gi2c->se.dev);
++      if (ret < 0) {
++              dev_err(gi2c->se.dev, "Failed to resume device: %d\n", ret);
++              return;
++      }
++
++      geni_status = readl_relaxed(gi2c->se.base + SE_GENI_STATUS);
++      if (geni_status & M_GENI_CMD_ACTIVE) {
++              cur = gi2c->cur;
++              geni_i2c_abort_xfer(gi2c);
++              if (cur->flags & I2C_M_RD)
++                      geni_i2c_rx_msg_cleanup(gi2c, cur);
++              else
++                      geni_i2c_tx_msg_cleanup(gi2c, cur);
++      }
++
++      pm_runtime_put_sync_suspend(gi2c->se.dev);
++}
++
+ static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
+                               u32 m_param)
+ {
+@@ -650,6 +676,13 @@ static int geni_i2c_remove(struct platfo
+       return 0;
+ }
++static void  geni_i2c_shutdown(struct platform_device *pdev)
++{
++      struct geni_i2c_dev *gi2c = platform_get_drvdata(pdev);
++
++      geni_i2c_stop_xfer(gi2c);
++}
++
+ static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev)
+ {
+       int ret;
+@@ -714,6 +747,7 @@ MODULE_DEVICE_TABLE(of, geni_i2c_dt_matc
+ static struct platform_driver geni_i2c_driver = {
+       .probe  = geni_i2c_probe,
+       .remove = geni_i2c_remove,
++      .shutdown = geni_i2c_shutdown,
+       .driver = {
+               .name = "geni_i2c",
+               .pm = &geni_i2c_pm_ops,
diff --git a/queue-5.11/mptcp-do-not-wakeup-listener-for-mpj-subflows.patch b/queue-5.11/mptcp-do-not-wakeup-listener-for-mpj-subflows.patch
new file mode 100644 (file)
index 0000000..0220756
--- /dev/null
@@ -0,0 +1,46 @@
+From 52557dbc7538ecceb27ef2206719a47a8039a335 Mon Sep 17 00:00:00 2001
+From: Paolo Abeni <pabeni@redhat.com>
+Date: Fri, 19 Feb 2021 18:35:40 +0100
+Subject: mptcp: do not wakeup listener for MPJ subflows
+
+From: Paolo Abeni <pabeni@redhat.com>
+
+commit 52557dbc7538ecceb27ef2206719a47a8039a335 upstream.
+
+MPJ subflows are not exposed as fds to user spaces. As such,
+incoming MPJ subflows are removed from the accept queue by
+tcp_check_req()/tcp_get_cookie_sock().
+
+Later tcp_child_process() invokes subflow_data_ready() on the
+parent socket regardless of the subflow kind, leading to poll
+wakeups even if the later accept will block.
+
+Address the issue by double-checking the queue state before
+waking the user-space.
+
+Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/164
+Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
+Fixes: f296234c98a8 ("mptcp: Add handling of incoming MP_JOIN requests")
+Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
+Signed-off-by: Paolo Abeni <pabeni@redhat.com>
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/mptcp/subflow.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/net/mptcp/subflow.c
++++ b/net/mptcp/subflow.c
+@@ -1026,6 +1026,12 @@ static void subflow_data_ready(struct so
+       msk = mptcp_sk(parent);
+       if (state & TCPF_LISTEN) {
++              /* MPJ subflow are removed from accept queue before reaching here,
++               * avoid stray wakeups
++               */
++              if (reqsk_queue_empty(&inet_csk(sk)->icsk_accept_queue))
++                      return;
++
+               set_bit(MPTCP_DATA_READY, &msk->flags);
+               parent->sk_data_ready(parent);
+               return;
diff --git a/queue-5.11/mptcp-fix-data_fin-generation-on-early-shutdown.patch b/queue-5.11/mptcp-fix-data_fin-generation-on-early-shutdown.patch
new file mode 100644 (file)
index 0000000..6287b43
--- /dev/null
@@ -0,0 +1,112 @@
+From d87903b63e3ce1eafaa701aec5cc1d0ecd0d84dc Mon Sep 17 00:00:00 2001
+From: Paolo Abeni <pabeni@redhat.com>
+Date: Fri, 19 Feb 2021 18:35:38 +0100
+Subject: mptcp: fix DATA_FIN generation on early shutdown
+
+From: Paolo Abeni <pabeni@redhat.com>
+
+commit d87903b63e3ce1eafaa701aec5cc1d0ecd0d84dc upstream.
+
+If the msk is closed before sending or receiving any data,
+no DATA_FIN is generated, instead an MPC ack packet is
+crafted out.
+
+In the above scenario, the MPTCP protocol creates and sends a
+pure ack and such packets matches also the criteria for an
+MPC ack and the protocol tries first to insert MPC options,
+leading to the described error.
+
+This change addresses the issue by avoiding the insertion of an
+MPC option for DATA_FIN packets or if the sub-flow is not
+established.
+
+To avoid doing multiple times the same test, fetch the data_fin
+flag in a bool variable and pass it to both the interested
+helpers.
+
+Fixes: 6d0060f600ad ("mptcp: Write MPTCP DSS headers to outgoing data packets")
+Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
+Signed-off-by: Paolo Abeni <pabeni@redhat.com>
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/mptcp/options.c |   22 +++++++++++++---------
+ 1 file changed, 13 insertions(+), 9 deletions(-)
+
+--- a/net/mptcp/options.c
++++ b/net/mptcp/options.c
+@@ -401,6 +401,7 @@ static void clear_3rdack_retransmission(
+ }
+ static bool mptcp_established_options_mp(struct sock *sk, struct sk_buff *skb,
++                                       bool snd_data_fin_enable,
+                                        unsigned int *size,
+                                        unsigned int remaining,
+                                        struct mptcp_out_options *opts)
+@@ -418,9 +419,10 @@ static bool mptcp_established_options_mp
+       if (!skb)
+               return false;
+-      /* MPC/MPJ needed only on 3rd ack packet */
+-      if (subflow->fully_established ||
+-          subflow->snd_isn != TCP_SKB_CB(skb)->seq)
++      /* MPC/MPJ needed only on 3rd ack packet, DATA_FIN and TCP shutdown take precedence */
++      if (subflow->fully_established || snd_data_fin_enable ||
++          subflow->snd_isn != TCP_SKB_CB(skb)->seq ||
++          sk->sk_state != TCP_ESTABLISHED)
+               return false;
+       if (subflow->mp_capable) {
+@@ -492,6 +494,7 @@ static void mptcp_write_data_fin(struct
+ }
+ static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb,
++                                        bool snd_data_fin_enable,
+                                         unsigned int *size,
+                                         unsigned int remaining,
+                                         struct mptcp_out_options *opts)
+@@ -499,13 +502,11 @@ static bool mptcp_established_options_ds
+       struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk);
+       struct mptcp_sock *msk = mptcp_sk(subflow->conn);
+       unsigned int dss_size = 0;
+-      u64 snd_data_fin_enable;
+       struct mptcp_ext *mpext;
+       unsigned int ack_size;
+       bool ret = false;
+       mpext = skb ? mptcp_get_ext(skb) : NULL;
+-      snd_data_fin_enable = mptcp_data_fin_enabled(msk);
+       if (!skb || (mpext && mpext->use_map) || snd_data_fin_enable) {
+               unsigned int map_size;
+@@ -683,12 +684,15 @@ bool mptcp_established_options(struct so
+                              unsigned int *size, unsigned int remaining,
+                              struct mptcp_out_options *opts)
+ {
++      struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk);
++      struct mptcp_sock *msk = mptcp_sk(subflow->conn);
+       unsigned int opt_size = 0;
++      bool snd_data_fin;
+       bool ret = false;
+       opts->suboptions = 0;
+-      if (unlikely(mptcp_check_fallback(sk)))
++      if (unlikely(__mptcp_check_fallback(msk)))
+               return false;
+       /* prevent adding of any MPTCP related options on reset packet
+@@ -697,10 +701,10 @@ bool mptcp_established_options(struct so
+       if (unlikely(skb && TCP_SKB_CB(skb)->tcp_flags & TCPHDR_RST))
+               return false;
+-      if (mptcp_established_options_mp(sk, skb, &opt_size, remaining, opts))
++      snd_data_fin = mptcp_data_fin_enabled(msk);
++      if (mptcp_established_options_mp(sk, skb, snd_data_fin, &opt_size, remaining, opts))
+               ret = true;
+-      else if (mptcp_established_options_dss(sk, skb, &opt_size, remaining,
+-                                             opts))
++      else if (mptcp_established_options_dss(sk, skb, snd_data_fin, &opt_size, remaining, opts))
+               ret = true;
+       /* we reserved enough space for the above options, and exceeding the
diff --git a/queue-5.11/mptcp-provide-subflow-aware-release-function.patch b/queue-5.11/mptcp-provide-subflow-aware-release-function.patch
new file mode 100644 (file)
index 0000000..6f32107
--- /dev/null
@@ -0,0 +1,114 @@
+From ad98dd37051e14fa8c785609430d907fcfd518ba Mon Sep 17 00:00:00 2001
+From: Florian Westphal <fw@strlen.de>
+Date: Fri, 19 Feb 2021 18:35:39 +0100
+Subject: mptcp: provide subflow aware release function
+
+From: Florian Westphal <fw@strlen.de>
+
+commit ad98dd37051e14fa8c785609430d907fcfd518ba upstream.
+
+mptcp re-used inet(6)_release, so the subflow sockets are ignored.
+Need to invoke ip(v6)_mc_drop_socket function to ensure mcast join
+resources get free'd.
+
+Fixes: 717e79c867ca5 ("mptcp: Add setsockopt()/getsockopt() socket operations")
+Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/110
+Acked-by: Paolo Abeni <pabeni@redhat.com>
+Signed-off-by: Florian Westphal <fw@strlen.de>
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/mptcp/protocol.c |   55 +++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 53 insertions(+), 2 deletions(-)
+
+--- a/net/mptcp/protocol.c
++++ b/net/mptcp/protocol.c
+@@ -11,6 +11,7 @@
+ #include <linux/netdevice.h>
+ #include <linux/sched/signal.h>
+ #include <linux/atomic.h>
++#include <linux/igmp.h>
+ #include <net/sock.h>
+ #include <net/inet_common.h>
+ #include <net/inet_hashtables.h>
+@@ -19,6 +20,7 @@
+ #include <net/tcp_states.h>
+ #if IS_ENABLED(CONFIG_MPTCP_IPV6)
+ #include <net/transp_v6.h>
++#include <net/addrconf.h>
+ #endif
+ #include <net/mptcp.h>
+ #include <net/xfrm.h>
+@@ -3357,10 +3359,34 @@ static __poll_t mptcp_poll(struct file *
+       return mask;
+ }
++static int mptcp_release(struct socket *sock)
++{
++      struct mptcp_subflow_context *subflow;
++      struct sock *sk = sock->sk;
++      struct mptcp_sock *msk;
++
++      if (!sk)
++              return 0;
++
++      lock_sock(sk);
++
++      msk = mptcp_sk(sk);
++
++      mptcp_for_each_subflow(msk, subflow) {
++              struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
++
++              ip_mc_drop_socket(ssk);
++      }
++
++      release_sock(sk);
++
++      return inet_release(sock);
++}
++
+ static const struct proto_ops mptcp_stream_ops = {
+       .family            = PF_INET,
+       .owner             = THIS_MODULE,
+-      .release           = inet_release,
++      .release           = mptcp_release,
+       .bind              = mptcp_bind,
+       .connect           = mptcp_stream_connect,
+       .socketpair        = sock_no_socketpair,
+@@ -3407,10 +3433,35 @@ void __init mptcp_proto_init(void)
+ }
+ #if IS_ENABLED(CONFIG_MPTCP_IPV6)
++static int mptcp6_release(struct socket *sock)
++{
++      struct mptcp_subflow_context *subflow;
++      struct mptcp_sock *msk;
++      struct sock *sk = sock->sk;
++
++      if (!sk)
++              return 0;
++
++      lock_sock(sk);
++
++      msk = mptcp_sk(sk);
++
++      mptcp_for_each_subflow(msk, subflow) {
++              struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
++
++              ip_mc_drop_socket(ssk);
++              ipv6_sock_mc_close(ssk);
++              ipv6_sock_ac_close(ssk);
++      }
++
++      release_sock(sk);
++      return inet6_release(sock);
++}
++
+ static const struct proto_ops mptcp_v6_stream_ops = {
+       .family            = PF_INET6,
+       .owner             = THIS_MODULE,
+-      .release           = inet6_release,
++      .release           = mptcp6_release,
+       .bind              = mptcp_bind,
+       .connect           = mptcp_stream_connect,
+       .socketpair        = sock_no_socketpair,
diff --git a/queue-5.11/net-ag71xx-remove-unnecessary-mtu-reservation.patch b/queue-5.11/net-ag71xx-remove-unnecessary-mtu-reservation.patch
new file mode 100644 (file)
index 0000000..95ad7a8
--- /dev/null
@@ -0,0 +1,43 @@
+From 04b385f325080157ab1b5f8ce1b1de07ce0d9e27 Mon Sep 17 00:00:00 2001
+From: DENG Qingfang <dqfext@gmail.com>
+Date: Thu, 18 Feb 2021 11:45:14 +0800
+Subject: net: ag71xx: remove unnecessary MTU reservation
+
+From: DENG Qingfang <dqfext@gmail.com>
+
+commit 04b385f325080157ab1b5f8ce1b1de07ce0d9e27 upstream.
+
+2 bytes of the MTU are reserved for Atheros DSA tag, but DSA core
+has already handled that since commit dc0fe7d47f9f.
+Remove the unnecessary reservation.
+
+Fixes: d51b6ce441d3 ("net: ethernet: add ag71xx driver")
+Signed-off-by: DENG Qingfang <dqfext@gmail.com>
+Reviewed-by: Oleksij Rempel <o.rempel@pengutronix.de>
+Link: https://lore.kernel.org/r/20210218034514.3421-1-dqfext@gmail.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/atheros/ag71xx.c |    4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/drivers/net/ethernet/atheros/ag71xx.c
++++ b/drivers/net/ethernet/atheros/ag71xx.c
+@@ -223,8 +223,6 @@
+ #define AG71XX_REG_RX_SM      0x01b0
+ #define AG71XX_REG_TX_SM      0x01b4
+-#define ETH_SWITCH_HEADER_LEN 2
+-
+ #define AG71XX_DEFAULT_MSG_ENABLE     \
+       (NETIF_MSG_DRV                  \
+       | NETIF_MSG_PROBE               \
+@@ -933,7 +931,7 @@ static void ag71xx_hw_setup(struct ag71x
+ static unsigned int ag71xx_max_frame_len(unsigned int mtu)
+ {
+-      return ETH_SWITCH_HEADER_LEN + ETH_HLEN + VLAN_HLEN + mtu + ETH_FCS_LEN;
++      return ETH_HLEN + VLAN_HLEN + mtu + ETH_FCS_LEN;
+ }
+ static void ag71xx_hw_set_macaddr(struct ag71xx *ag, unsigned char *mac)
diff --git a/queue-5.11/net-bridge-use-switchdev-for-port-flags-set-through-sysfs-too.patch b/queue-5.11/net-bridge-use-switchdev-for-port-flags-set-through-sysfs-too.patch
new file mode 100644 (file)
index 0000000..8b1e7d9
--- /dev/null
@@ -0,0 +1,52 @@
+From 8043c845b63a2dd88daf2d2d268a33e1872800f0 Mon Sep 17 00:00:00 2001
+From: Vladimir Oltean <vladimir.oltean@nxp.com>
+Date: Sun, 7 Feb 2021 21:47:33 +0200
+Subject: net: bridge: use switchdev for port flags set through sysfs too
+
+From: Vladimir Oltean <vladimir.oltean@nxp.com>
+
+commit 8043c845b63a2dd88daf2d2d268a33e1872800f0 upstream.
+
+Looking through patchwork I don't see that there was any consensus to
+use switchdev notifiers only in case of netlink provided port flags but
+not sysfs (as a sort of deprecation, punishment or anything like that),
+so we should probably keep the user interface consistent in terms of
+functionality.
+
+http://patchwork.ozlabs.org/project/netdev/patch/20170605092043.3523-3-jiri@resnulli.us/
+http://patchwork.ozlabs.org/project/netdev/patch/20170608064428.4785-3-jiri@resnulli.us/
+
+Fixes: 3922285d96e7 ("net: bridge: Add support for offloading port attributes")
+Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
+Acked-by: Nikolay Aleksandrov <nikolay@nvidia.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/bridge/br_sysfs_if.c |    9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+--- a/net/bridge/br_sysfs_if.c
++++ b/net/bridge/br_sysfs_if.c
+@@ -55,9 +55,8 @@ static BRPORT_ATTR(_name, 0644,                                      \
+ static int store_flag(struct net_bridge_port *p, unsigned long v,
+                     unsigned long mask)
+ {
+-      unsigned long flags;
+-
+-      flags = p->flags;
++      unsigned long flags = p->flags;
++      int err;
+       if (v)
+               flags |= mask;
+@@ -65,6 +64,10 @@ static int store_flag(struct net_bridge_
+               flags &= ~mask;
+       if (flags != p->flags) {
++              err = br_switchdev_set_port_flag(p, flags, mask);
++              if (err)
++                      return err;
++
+               p->flags = flags;
+               br_port_flags_change(p, mask);
+       }
diff --git a/queue-5.11/net-dsa-tag_rtl4_a-support-also-egress-tags.patch b/queue-5.11/net-dsa-tag_rtl4_a-support-also-egress-tags.patch
new file mode 100644 (file)
index 0000000..b889a35
--- /dev/null
@@ -0,0 +1,85 @@
+From 86dd9868b8788a9063893a97649594af93cd5aa6 Mon Sep 17 00:00:00 2001
+From: Linus Walleij <linus.walleij@linaro.org>
+Date: Wed, 17 Feb 2021 00:55:42 +0100
+Subject: net: dsa: tag_rtl4_a: Support also egress tags
+
+From: Linus Walleij <linus.walleij@linaro.org>
+
+commit 86dd9868b8788a9063893a97649594af93cd5aa6 upstream.
+
+Support also transmitting frames using the custom "8899 A"
+4 byte tag.
+
+Qingfang came up with the solution: we need to pad the
+ethernet frame to 60 bytes using eth_skb_pad(), then the
+switch will happily accept frames with custom tags.
+
+Cc: Mauri Sandberg <sandberg@mailfence.com>
+Reported-by: DENG Qingfang <dqfext@gmail.com>
+Fixes: efd7fe68f0c6 ("net: dsa: tag_rtl4_a: Implement Realtek 4 byte A tag")
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/dsa/tag_rtl4_a.c |   43 +++++++++++++++++++++++++++++--------------
+ 1 file changed, 29 insertions(+), 14 deletions(-)
+
+--- a/net/dsa/tag_rtl4_a.c
++++ b/net/dsa/tag_rtl4_a.c
+@@ -12,9 +12,7 @@
+  *
+  * The 2 bytes tag form a 16 bit big endian word. The exact
+  * meaning has been guessed from packet dumps from ingress
+- * frames, as no working egress traffic has been available
+- * we do not know the format of the egress tags or if they
+- * are even supported.
++ * frames.
+  */
+ #include <linux/etherdevice.h>
+@@ -36,17 +34,34 @@
+ static struct sk_buff *rtl4a_tag_xmit(struct sk_buff *skb,
+                                     struct net_device *dev)
+ {
+-      /*
+-       * Just let it pass thru, we don't know if it is possible
+-       * to tag a frame with the 0x8899 ethertype and direct it
+-       * to a specific port, all attempts at reverse-engineering have
+-       * ended up with the frames getting dropped.
+-       *
+-       * The VLAN set-up needs to restrict the frames to the right port.
+-       *
+-       * If you have documentation on the tagging format for RTL8366RB
+-       * (tag type A) then please contribute.
+-       */
++      struct dsa_port *dp = dsa_slave_to_port(dev);
++      u8 *tag;
++      u16 *p;
++      u16 out;
++
++      /* Pad out to at least 60 bytes */
++      if (unlikely(eth_skb_pad(skb)))
++              return NULL;
++      if (skb_cow_head(skb, RTL4_A_HDR_LEN) < 0)
++              return NULL;
++
++      netdev_dbg(dev, "add realtek tag to package to port %d\n",
++                 dp->index);
++      skb_push(skb, RTL4_A_HDR_LEN);
++
++      memmove(skb->data, skb->data + RTL4_A_HDR_LEN, 2 * ETH_ALEN);
++      tag = skb->data + 2 * ETH_ALEN;
++
++      /* Set Ethertype */
++      p = (u16 *)tag;
++      *p = htons(RTL4_A_ETHERTYPE);
++
++      out = (RTL4_A_PROTOCOL_RTL8366RB << 12) | (2 << 8);
++      /* The lower bits is the port numer */
++      out |= (u8)dp->index;
++      p = (u16 *)(tag + 2);
++      *p = htons(out);
++
+       return skb;
+ }
diff --git a/queue-5.11/net-fix-dev_ifsioc_locked-race-condition.patch b/queue-5.11/net-fix-dev_ifsioc_locked-race-condition.patch
new file mode 100644 (file)
index 0000000..4aadad6
--- /dev/null
@@ -0,0 +1,214 @@
+From 3b23a32a63219f51a5298bc55a65ecee866e79d0 Mon Sep 17 00:00:00 2001
+From: Cong Wang <cong.wang@bytedance.com>
+Date: Thu, 11 Feb 2021 11:34:10 -0800
+Subject: net: fix dev_ifsioc_locked() race condition
+
+From: Cong Wang <cong.wang@bytedance.com>
+
+commit 3b23a32a63219f51a5298bc55a65ecee866e79d0 upstream.
+
+dev_ifsioc_locked() is called with only RCU read lock, so when
+there is a parallel writer changing the mac address, it could
+get a partially updated mac address, as shown below:
+
+Thread 1                       Thread 2
+// eth_commit_mac_addr_change()
+memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
+                               // dev_ifsioc_locked()
+                               memcpy(ifr->ifr_hwaddr.sa_data,
+                                       dev->dev_addr,...);
+
+Close this race condition by guarding them with a RW semaphore,
+like netdev_get_name(). We can not use seqlock here as it does not
+allow blocking. The writers already take RTNL anyway, so this does
+not affect the slow path. To avoid bothering existing
+dev_set_mac_address() callers in drivers, introduce a new wrapper
+just for user-facing callers on ioctl and rtnetlink paths.
+
+Note, bonding also changes slave mac addresses but that requires
+a separate patch due to the complexity of bonding code.
+
+Fixes: 3710becf8a58 ("net: RCU locking for simple ioctl()")
+Reported-by: "Gong, Sishuai" <sishuai@purdue.edu>
+Cc: Eric Dumazet <eric.dumazet@gmail.com>
+Cc: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Cong Wang <cong.wang@bytedance.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/tap.c         |    7 +++----
+ drivers/net/tun.c         |    5 ++---
+ include/linux/netdevice.h |    3 +++
+ net/core/dev.c            |   42 ++++++++++++++++++++++++++++++++++++++++++
+ net/core/dev_ioctl.c      |   20 +++++++-------------
+ net/core/rtnetlink.c      |    2 +-
+ 6 files changed, 58 insertions(+), 21 deletions(-)
+
+--- a/drivers/net/tap.c
++++ b/drivers/net/tap.c
+@@ -1093,10 +1093,9 @@ static long tap_ioctl(struct file *file,
+                       return -ENOLINK;
+               }
+               ret = 0;
+-              u = tap->dev->type;
++              dev_get_mac_address(&sa, dev_net(tap->dev), tap->dev->name);
+               if (copy_to_user(&ifr->ifr_name, tap->dev->name, IFNAMSIZ) ||
+-                  copy_to_user(&ifr->ifr_hwaddr.sa_data, tap->dev->dev_addr, ETH_ALEN) ||
+-                  put_user(u, &ifr->ifr_hwaddr.sa_family))
++                  copy_to_user(&ifr->ifr_hwaddr, &sa, sizeof(sa)))
+                       ret = -EFAULT;
+               tap_put_tap_dev(tap);
+               rtnl_unlock();
+@@ -1111,7 +1110,7 @@ static long tap_ioctl(struct file *file,
+                       rtnl_unlock();
+                       return -ENOLINK;
+               }
+-              ret = dev_set_mac_address(tap->dev, &sa, NULL);
++              ret = dev_set_mac_address_user(tap->dev, &sa, NULL);
+               tap_put_tap_dev(tap);
+               rtnl_unlock();
+               return ret;
+--- a/drivers/net/tun.c
++++ b/drivers/net/tun.c
+@@ -3113,15 +3113,14 @@ static long __tun_chr_ioctl(struct file
+       case SIOCGIFHWADDR:
+               /* Get hw address */
+-              memcpy(ifr.ifr_hwaddr.sa_data, tun->dev->dev_addr, ETH_ALEN);
+-              ifr.ifr_hwaddr.sa_family = tun->dev->type;
++              dev_get_mac_address(&ifr.ifr_hwaddr, net, tun->dev->name);
+               if (copy_to_user(argp, &ifr, ifreq_len))
+                       ret = -EFAULT;
+               break;
+       case SIOCSIFHWADDR:
+               /* Set hw address */
+-              ret = dev_set_mac_address(tun->dev, &ifr.ifr_hwaddr, NULL);
++              ret = dev_set_mac_address_user(tun->dev, &ifr.ifr_hwaddr, NULL);
+               break;
+       case TUNGETSNDBUF:
+--- a/include/linux/netdevice.h
++++ b/include/linux/netdevice.h
+@@ -3918,6 +3918,9 @@ int dev_pre_changeaddr_notify(struct net
+                             struct netlink_ext_ack *extack);
+ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
+                       struct netlink_ext_ack *extack);
++int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
++                           struct netlink_ext_ack *extack);
++int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name);
+ int dev_change_carrier(struct net_device *, bool new_carrier);
+ int dev_get_phys_port_id(struct net_device *dev,
+                        struct netdev_phys_item_id *ppid);
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -8743,6 +8743,48 @@ int dev_set_mac_address(struct net_devic
+ }
+ EXPORT_SYMBOL(dev_set_mac_address);
++static DECLARE_RWSEM(dev_addr_sem);
++
++int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
++                           struct netlink_ext_ack *extack)
++{
++      int ret;
++
++      down_write(&dev_addr_sem);
++      ret = dev_set_mac_address(dev, sa, extack);
++      up_write(&dev_addr_sem);
++      return ret;
++}
++EXPORT_SYMBOL(dev_set_mac_address_user);
++
++int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name)
++{
++      size_t size = sizeof(sa->sa_data);
++      struct net_device *dev;
++      int ret = 0;
++
++      down_read(&dev_addr_sem);
++      rcu_read_lock();
++
++      dev = dev_get_by_name_rcu(net, dev_name);
++      if (!dev) {
++              ret = -ENODEV;
++              goto unlock;
++      }
++      if (!dev->addr_len)
++              memset(sa->sa_data, 0, size);
++      else
++              memcpy(sa->sa_data, dev->dev_addr,
++                     min_t(size_t, size, dev->addr_len));
++      sa->sa_family = dev->type;
++
++unlock:
++      rcu_read_unlock();
++      up_read(&dev_addr_sem);
++      return ret;
++}
++EXPORT_SYMBOL(dev_get_mac_address);
++
+ /**
+  *    dev_change_carrier - Change device carrier
+  *    @dev: device
+--- a/net/core/dev_ioctl.c
++++ b/net/core/dev_ioctl.c
+@@ -123,17 +123,6 @@ static int dev_ifsioc_locked(struct net
+               ifr->ifr_mtu = dev->mtu;
+               return 0;
+-      case SIOCGIFHWADDR:
+-              if (!dev->addr_len)
+-                      memset(ifr->ifr_hwaddr.sa_data, 0,
+-                             sizeof(ifr->ifr_hwaddr.sa_data));
+-              else
+-                      memcpy(ifr->ifr_hwaddr.sa_data, dev->dev_addr,
+-                             min(sizeof(ifr->ifr_hwaddr.sa_data),
+-                                 (size_t)dev->addr_len));
+-              ifr->ifr_hwaddr.sa_family = dev->type;
+-              return 0;
+-
+       case SIOCGIFSLAVE:
+               err = -EINVAL;
+               break;
+@@ -274,7 +263,7 @@ static int dev_ifsioc(struct net *net, s
+       case SIOCSIFHWADDR:
+               if (dev->addr_len > sizeof(struct sockaddr))
+                       return -EINVAL;
+-              return dev_set_mac_address(dev, &ifr->ifr_hwaddr, NULL);
++              return dev_set_mac_address_user(dev, &ifr->ifr_hwaddr, NULL);
+       case SIOCSIFHWBROADCAST:
+               if (ifr->ifr_hwaddr.sa_family != dev->type)
+@@ -418,6 +407,12 @@ int dev_ioctl(struct net *net, unsigned
+        */
+       switch (cmd) {
++      case SIOCGIFHWADDR:
++              dev_load(net, ifr->ifr_name);
++              ret = dev_get_mac_address(&ifr->ifr_hwaddr, net, ifr->ifr_name);
++              if (colon)
++                      *colon = ':';
++              return ret;
+       /*
+        *      These ioctl calls:
+        *      - can be done by all.
+@@ -427,7 +422,6 @@ int dev_ioctl(struct net *net, unsigned
+       case SIOCGIFFLAGS:
+       case SIOCGIFMETRIC:
+       case SIOCGIFMTU:
+-      case SIOCGIFHWADDR:
+       case SIOCGIFSLAVE:
+       case SIOCGIFMAP:
+       case SIOCGIFINDEX:
+--- a/net/core/rtnetlink.c
++++ b/net/core/rtnetlink.c
+@@ -2660,7 +2660,7 @@ static int do_setlink(const struct sk_bu
+               sa->sa_family = dev->type;
+               memcpy(sa->sa_data, nla_data(tb[IFLA_ADDRESS]),
+                      dev->addr_len);
+-              err = dev_set_mac_address(dev, sa, extack);
++              err = dev_set_mac_address_user(dev, sa, extack);
+               kfree(sa);
+               if (err)
+                       goto errout;
diff --git a/queue-5.11/net-hsr-add-support-for-entryforgettime.patch b/queue-5.11/net-hsr-add-support-for-entryforgettime.patch
new file mode 100644 (file)
index 0000000..29cb6e3
--- /dev/null
@@ -0,0 +1,76 @@
+From f176411401127a07a9360dec14eca448eb2e9d45 Mon Sep 17 00:00:00 2001
+From: Marco Wenzel <marco.wenzel@a-eberle.de>
+Date: Wed, 24 Feb 2021 10:46:49 +0100
+Subject: net: hsr: add support for EntryForgetTime
+
+From: Marco Wenzel <marco.wenzel@a-eberle.de>
+
+commit f176411401127a07a9360dec14eca448eb2e9d45 upstream.
+
+In IEC 62439-3 EntryForgetTime is defined with a value of 400 ms. When a
+node does not send any frame within this time, the sequence number check
+for can be ignored. This solves communication issues with Cisco IE 2000
+in Redbox mode.
+
+Fixes: f421436a591d ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)")
+Signed-off-by: Marco Wenzel <marco.wenzel@a-eberle.de>
+Reviewed-by: George McCollister <george.mccollister@gmail.com>
+Tested-by: George McCollister <george.mccollister@gmail.com>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Link: https://lore.kernel.org/r/20210224094653.1440-1-marco.wenzel@a-eberle.de
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/hsr/hsr_framereg.c |    9 +++++++--
+ net/hsr/hsr_framereg.h |    1 +
+ net/hsr/hsr_main.h     |    1 +
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+--- a/net/hsr/hsr_framereg.c
++++ b/net/hsr/hsr_framereg.c
+@@ -164,8 +164,10 @@ static struct hsr_node *hsr_add_node(str
+        * as initialization. (0 could trigger an spurious ring error warning).
+        */
+       now = jiffies;
+-      for (i = 0; i < HSR_PT_PORTS; i++)
++      for (i = 0; i < HSR_PT_PORTS; i++) {
+               new_node->time_in[i] = now;
++              new_node->time_out[i] = now;
++      }
+       for (i = 0; i < HSR_PT_PORTS; i++)
+               new_node->seq_out[i] = seq_out;
+@@ -411,9 +413,12 @@ void hsr_register_frame_in(struct hsr_no
+ int hsr_register_frame_out(struct hsr_port *port, struct hsr_node *node,
+                          u16 sequence_nr)
+ {
+-      if (seq_nr_before_or_eq(sequence_nr, node->seq_out[port->type]))
++      if (seq_nr_before_or_eq(sequence_nr, node->seq_out[port->type]) &&
++          time_is_after_jiffies(node->time_out[port->type] +
++          msecs_to_jiffies(HSR_ENTRY_FORGET_TIME)))
+               return 1;
++      node->time_out[port->type] = jiffies;
+       node->seq_out[port->type] = sequence_nr;
+       return 0;
+ }
+--- a/net/hsr/hsr_framereg.h
++++ b/net/hsr/hsr_framereg.h
+@@ -75,6 +75,7 @@ struct hsr_node {
+       enum hsr_port_type      addr_B_port;
+       unsigned long           time_in[HSR_PT_PORTS];
+       bool                    time_in_stale[HSR_PT_PORTS];
++      unsigned long           time_out[HSR_PT_PORTS];
+       /* if the node is a SAN */
+       bool                    san_a;
+       bool                    san_b;
+--- a/net/hsr/hsr_main.h
++++ b/net/hsr/hsr_main.h
+@@ -21,6 +21,7 @@
+ #define HSR_LIFE_CHECK_INTERVAL                2000 /* ms */
+ #define HSR_NODE_FORGET_TIME          60000 /* ms */
+ #define HSR_ANNOUNCE_INTERVAL           100 /* ms */
++#define HSR_ENTRY_FORGET_TIME           400 /* ms */
+ /* By how much may slave1 and slave2 timestamps of latest received frame from
+  * each node differ before we notify of communication problem?
diff --git a/queue-5.11/net-psample-fix-netlink-skb-length-with-tunnel-info.patch b/queue-5.11/net-psample-fix-netlink-skb-length-with-tunnel-info.patch
new file mode 100644 (file)
index 0000000..4f2f2cd
--- /dev/null
@@ -0,0 +1,46 @@
+From a93dcaada2ddb58dbc72652b42548adedd646d7a Mon Sep 17 00:00:00 2001
+From: Chris Mi <cmi@nvidia.com>
+Date: Thu, 25 Feb 2021 15:51:45 +0800
+Subject: net: psample: Fix netlink skb length with tunnel info
+
+From: Chris Mi <cmi@nvidia.com>
+
+commit a93dcaada2ddb58dbc72652b42548adedd646d7a upstream.
+
+Currently, the psample netlink skb is allocated with a size that does
+not account for the nested 'PSAMPLE_ATTR_TUNNEL' attribute and the
+padding required for the 64-bit attribute 'PSAMPLE_TUNNEL_KEY_ATTR_ID'.
+This can result in failure to add attributes to the netlink skb due
+to insufficient tail room. The following error message is printed to
+the kernel log: "Could not create psample log message".
+
+Fix this by adjusting the allocation size to take into account the
+nested attribute and the padding.
+
+Fixes: d8bed686ab96 ("net: psample: Add tunnel support")
+CC: Yotam Gigi <yotam.gi@gmail.com>
+Reviewed-by: Ido Schimmel <idosch@nvidia.com>
+Reviewed-by: Jiri Pirko <jiri@nvidia.com>
+Signed-off-by: Chris Mi <cmi@nvidia.com>
+Link: https://lore.kernel.org/r/20210225075145.184314-1-cmi@nvidia.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/psample/psample.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/net/psample/psample.c
++++ b/net/psample/psample.c
+@@ -309,10 +309,10 @@ static int psample_tunnel_meta_len(struc
+       unsigned short tun_proto = ip_tunnel_info_af(tun_info);
+       const struct ip_tunnel_key *tun_key = &tun_info->key;
+       int tun_opts_len = tun_info->options_len;
+-      int sum = 0;
++      int sum = nla_total_size(0);    /* PSAMPLE_ATTR_TUNNEL */
+       if (tun_key->tun_flags & TUNNEL_KEY)
+-              sum += nla_total_size(sizeof(u64));
++              sum += nla_total_size_64bit(sizeof(u64));
+       if (tun_info->mode & IP_TUNNEL_INFO_BRIDGE)
+               sum += nla_total_size(0);
diff --git a/queue-5.11/net-sched-cls_flower-reject-invalid-ct_state-flags-rules.patch b/queue-5.11/net-sched-cls_flower-reject-invalid-ct_state-flags-rules.patch
new file mode 100644 (file)
index 0000000..23404a1
--- /dev/null
@@ -0,0 +1,108 @@
+From 1bcc51ac0731aab1b109b2cd5c3d495f1884e5ca Mon Sep 17 00:00:00 2001
+From: wenxu <wenxu@ucloud.cn>
+Date: Tue, 9 Feb 2021 14:37:49 +0800
+Subject: net/sched: cls_flower: Reject invalid ct_state flags rules
+
+From: wenxu <wenxu@ucloud.cn>
+
+commit 1bcc51ac0731aab1b109b2cd5c3d495f1884e5ca upstream.
+
+Reject the unsupported and invalid ct_state flags of cls flower rules.
+
+Fixes: e0ace68af2ac ("net/sched: cls_flower: Add matching on conntrack info")
+Signed-off-by: wenxu <wenxu@ucloud.cn>
+Reviewed-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
+Reviewed-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ include/uapi/linux/pkt_cls.h |    2 ++
+ net/sched/cls_flower.c       |   39 +++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 39 insertions(+), 2 deletions(-)
+
+--- a/include/uapi/linux/pkt_cls.h
++++ b/include/uapi/linux/pkt_cls.h
+@@ -591,6 +591,8 @@ enum {
+       TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED = 1 << 1, /* Part of an existing connection. */
+       TCA_FLOWER_KEY_CT_FLAGS_RELATED = 1 << 2, /* Related to an established connection. */
+       TCA_FLOWER_KEY_CT_FLAGS_TRACKED = 1 << 3, /* Conntrack has occurred. */
++
++      __TCA_FLOWER_KEY_CT_FLAGS_MAX,
+ };
+ enum {
+--- a/net/sched/cls_flower.c
++++ b/net/sched/cls_flower.c
+@@ -30,6 +30,11 @@
+ #include <uapi/linux/netfilter/nf_conntrack_common.h>
++#define TCA_FLOWER_KEY_CT_FLAGS_MAX \
++              ((__TCA_FLOWER_KEY_CT_FLAGS_MAX - 1) << 1)
++#define TCA_FLOWER_KEY_CT_FLAGS_MASK \
++              (TCA_FLOWER_KEY_CT_FLAGS_MAX - 1)
++
+ struct fl_flow_key {
+       struct flow_dissector_key_meta meta;
+       struct flow_dissector_key_control control;
+@@ -686,8 +691,10 @@ static const struct nla_policy fl_policy
+       [TCA_FLOWER_KEY_ENC_IP_TTL_MASK] = { .type = NLA_U8 },
+       [TCA_FLOWER_KEY_ENC_OPTS]       = { .type = NLA_NESTED },
+       [TCA_FLOWER_KEY_ENC_OPTS_MASK]  = { .type = NLA_NESTED },
+-      [TCA_FLOWER_KEY_CT_STATE]       = { .type = NLA_U16 },
+-      [TCA_FLOWER_KEY_CT_STATE_MASK]  = { .type = NLA_U16 },
++      [TCA_FLOWER_KEY_CT_STATE]       =
++              NLA_POLICY_MASK(NLA_U16, TCA_FLOWER_KEY_CT_FLAGS_MASK),
++      [TCA_FLOWER_KEY_CT_STATE_MASK]  =
++              NLA_POLICY_MASK(NLA_U16, TCA_FLOWER_KEY_CT_FLAGS_MASK),
+       [TCA_FLOWER_KEY_CT_ZONE]        = { .type = NLA_U16 },
+       [TCA_FLOWER_KEY_CT_ZONE_MASK]   = { .type = NLA_U16 },
+       [TCA_FLOWER_KEY_CT_MARK]        = { .type = NLA_U32 },
+@@ -1390,12 +1397,33 @@ static int fl_set_enc_opt(struct nlattr
+       return 0;
+ }
++static int fl_validate_ct_state(u16 state, struct nlattr *tb,
++                              struct netlink_ext_ack *extack)
++{
++      if (state && !(state & TCA_FLOWER_KEY_CT_FLAGS_TRACKED)) {
++              NL_SET_ERR_MSG_ATTR(extack, tb,
++                                  "no trk, so no other flag can be set");
++              return -EINVAL;
++      }
++
++      if (state & TCA_FLOWER_KEY_CT_FLAGS_NEW &&
++          state & TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED) {
++              NL_SET_ERR_MSG_ATTR(extack, tb,
++                                  "new and est are mutually exclusive");
++              return -EINVAL;
++      }
++
++      return 0;
++}
++
+ static int fl_set_key_ct(struct nlattr **tb,
+                        struct flow_dissector_key_ct *key,
+                        struct flow_dissector_key_ct *mask,
+                        struct netlink_ext_ack *extack)
+ {
+       if (tb[TCA_FLOWER_KEY_CT_STATE]) {
++              int err;
++
+               if (!IS_ENABLED(CONFIG_NF_CONNTRACK)) {
+                       NL_SET_ERR_MSG(extack, "Conntrack isn't enabled");
+                       return -EOPNOTSUPP;
+@@ -1403,6 +1431,13 @@ static int fl_set_key_ct(struct nlattr *
+               fl_set_key_val(tb, &key->ct_state, TCA_FLOWER_KEY_CT_STATE,
+                              &mask->ct_state, TCA_FLOWER_KEY_CT_STATE_MASK,
+                              sizeof(key->ct_state));
++
++              err = fl_validate_ct_state(mask->ct_state,
++                                         tb[TCA_FLOWER_KEY_CT_STATE_MASK],
++                                         extack);
++              if (err)
++                      return err;
++
+       }
+       if (tb[TCA_FLOWER_KEY_CT_ZONE]) {
+               if (!IS_ENABLED(CONFIG_NF_CONNTRACK_ZONES)) {
diff --git a/queue-5.11/rdma-rtrs-clt-use-bitmask-to-check-sess-flags.patch b/queue-5.11/rdma-rtrs-clt-use-bitmask-to-check-sess-flags.patch
new file mode 100644 (file)
index 0000000..dcabd8d
--- /dev/null
@@ -0,0 +1,83 @@
+From aaed465f761700dace9ab39521013cddaae4f5a3 Mon Sep 17 00:00:00 2001
+From: Jack Wang <jinpu.wang@cloud.ionos.com>
+Date: Thu, 17 Dec 2020 15:19:12 +0100
+Subject: RDMA/rtrs-clt: Use bitmask to check sess->flags
+
+From: Jack Wang <jinpu.wang@cloud.ionos.com>
+
+commit aaed465f761700dace9ab39521013cddaae4f5a3 upstream.
+
+We may want to add new flags, so it's better to use bitmask to check flags.
+
+Fixes: 6a98d71daea1 ("RDMA/rtrs: client: main functionality")
+Link: https://lore.kernel.org/r/20201217141915.56989-17-jinpu.wang@cloud.ionos.com
+Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com>
+Signed-off-by: Gioh Kim <gi-oh.kim@cloud.ionos.com>
+Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/infiniband/ulp/rtrs/rtrs-clt.c |   14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+--- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c
++++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
+@@ -496,7 +496,7 @@ static void rtrs_clt_recv_done(struct rt
+       int err;
+       struct rtrs_clt_sess *sess = to_clt_sess(con->c.sess);
+-      WARN_ON(sess->flags != RTRS_MSG_NEW_RKEY_F);
++      WARN_ON((sess->flags & RTRS_MSG_NEW_RKEY_F) == 0);
+       iu = container_of(wc->wr_cqe, struct rtrs_iu,
+                         cqe);
+       err = rtrs_iu_post_recv(&con->c, iu);
+@@ -516,7 +516,7 @@ static void rtrs_clt_rkey_rsp_done(struc
+       u32 buf_id;
+       int err;
+-      WARN_ON(sess->flags != RTRS_MSG_NEW_RKEY_F);
++      WARN_ON((sess->flags & RTRS_MSG_NEW_RKEY_F) == 0);
+       iu = container_of(wc->wr_cqe, struct rtrs_iu, cqe);
+@@ -623,12 +623,12 @@ static void rtrs_clt_rdma_done(struct ib
+               } else if (imm_type == RTRS_HB_MSG_IMM) {
+                       WARN_ON(con->c.cid);
+                       rtrs_send_hb_ack(&sess->s);
+-                      if (sess->flags == RTRS_MSG_NEW_RKEY_F)
++                      if (sess->flags & RTRS_MSG_NEW_RKEY_F)
+                               return  rtrs_clt_recv_done(con, wc);
+               } else if (imm_type == RTRS_HB_ACK_IMM) {
+                       WARN_ON(con->c.cid);
+                       sess->s.hb_missed_cnt = 0;
+-                      if (sess->flags == RTRS_MSG_NEW_RKEY_F)
++                      if (sess->flags & RTRS_MSG_NEW_RKEY_F)
+                               return  rtrs_clt_recv_done(con, wc);
+               } else {
+                       rtrs_wrn(con->c.sess, "Unknown IMM type %u\n",
+@@ -656,7 +656,7 @@ static void rtrs_clt_rdma_done(struct ib
+               WARN_ON(!(wc->wc_flags & IB_WC_WITH_INVALIDATE ||
+                         wc->wc_flags & IB_WC_WITH_IMM));
+               WARN_ON(wc->wr_cqe->done != rtrs_clt_rdma_done);
+-              if (sess->flags == RTRS_MSG_NEW_RKEY_F) {
++              if (sess->flags & RTRS_MSG_NEW_RKEY_F) {
+                       if (wc->wc_flags & IB_WC_WITH_INVALIDATE)
+                               return  rtrs_clt_recv_done(con, wc);
+@@ -681,7 +681,7 @@ static int post_recv_io(struct rtrs_clt_
+       struct rtrs_clt_sess *sess = to_clt_sess(con->c.sess);
+       for (i = 0; i < q_size; i++) {
+-              if (sess->flags == RTRS_MSG_NEW_RKEY_F) {
++              if (sess->flags & RTRS_MSG_NEW_RKEY_F) {
+                       struct rtrs_iu *iu = &con->rsp_ius[i];
+                       err = rtrs_iu_post_recv(&con->c, iu);
+@@ -1566,7 +1566,7 @@ static int create_con_cq_qp(struct rtrs_
+                             sess->queue_depth * 3 + 1);
+       }
+       /* alloc iu to recv new rkey reply when server reports flags set */
+-      if (sess->flags == RTRS_MSG_NEW_RKEY_F || con->c.cid == 0) {
++      if (sess->flags & RTRS_MSG_NEW_RKEY_F || con->c.cid == 0) {
+               con->rsp_ius = rtrs_iu_alloc(max_recv_wr, sizeof(*rsp),
+                                             GFP_KERNEL, sess->s.dev->ib_dev,
+                                             DMA_FROM_DEVICE,
diff --git a/queue-5.11/rdma-rtrs-do-not-signal-for-heatbeat.patch b/queue-5.11/rdma-rtrs-do-not-signal-for-heatbeat.patch
new file mode 100644 (file)
index 0000000..c5e6b0f
--- /dev/null
@@ -0,0 +1,65 @@
+From b38041d50add1c881fbc60eb2be93b58fc58ea21 Mon Sep 17 00:00:00 2001
+From: Jack Wang <jinpu.wang@cloud.ionos.com>
+Date: Thu, 17 Dec 2020 15:19:11 +0100
+Subject: RDMA/rtrs: Do not signal for heatbeat
+
+From: Jack Wang <jinpu.wang@cloud.ionos.com>
+
+commit b38041d50add1c881fbc60eb2be93b58fc58ea21 upstream.
+
+For HB, there is no need to generate signal for completion.
+
+Also remove a comment accordingly.
+
+Fixes: c0894b3ea69d ("RDMA/rtrs: core: lib functions shared between client and server modules")
+Link: https://lore.kernel.org/r/20201217141915.56989-16-jinpu.wang@cloud.ionos.com
+Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com>
+Reported-by: Gioh Kim <gi-oh.kim@cloud.ionos.com>
+Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/infiniband/ulp/rtrs/rtrs-clt.c |    1 -
+ drivers/infiniband/ulp/rtrs/rtrs-srv.c |    1 -
+ drivers/infiniband/ulp/rtrs/rtrs.c     |    4 ++--
+ 3 files changed, 2 insertions(+), 4 deletions(-)
+
+--- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c
++++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
+@@ -666,7 +666,6 @@ static void rtrs_clt_rdma_done(struct ib
+       case IB_WC_RDMA_WRITE:
+               /*
+                * post_send() RDMA write completions of IO reqs (read/write)
+-               * and hb
+                */
+               break;
+--- a/drivers/infiniband/ulp/rtrs/rtrs-srv.c
++++ b/drivers/infiniband/ulp/rtrs/rtrs-srv.c
+@@ -1244,7 +1244,6 @@ static void rtrs_srv_rdma_done(struct ib
+       case IB_WC_SEND:
+               /*
+                * post_send() RDMA write completions of IO reqs (read/write)
+-               * and hb
+                */
+               atomic_add(srv->queue_depth, &con->sq_wr_avail);
+--- a/drivers/infiniband/ulp/rtrs/rtrs.c
++++ b/drivers/infiniband/ulp/rtrs/rtrs.c
+@@ -310,7 +310,7 @@ void rtrs_send_hb_ack(struct rtrs_sess *
+       imm = rtrs_to_imm(RTRS_HB_ACK_IMM, 0);
+       err = rtrs_post_rdma_write_imm_empty(usr_con, sess->hb_cqe, imm,
+-                                            IB_SEND_SIGNALED, NULL);
++                                           0, NULL);
+       if (err) {
+               sess->hb_err_handler(usr_con);
+               return;
+@@ -339,7 +339,7 @@ static void hb_work(struct work_struct *
+       }
+       imm = rtrs_to_imm(RTRS_HB_MSG_IMM, 0);
+       err = rtrs_post_rdma_write_imm_empty(usr_con, sess->hb_cqe, imm,
+-                                            IB_SEND_SIGNALED, NULL);
++                                           0, NULL);
+       if (err) {
+               sess->hb_err_handler(usr_con);
+               return;
diff --git a/queue-5.11/rdma-rtrs-srv-do-not-signal-reg_mr.patch b/queue-5.11/rdma-rtrs-srv-do-not-signal-reg_mr.patch
new file mode 100644 (file)
index 0000000..e6b69c4
--- /dev/null
@@ -0,0 +1,33 @@
+From e8ae7ddb48a1b81fd1e67da34a0cb59daf0445d6 Mon Sep 17 00:00:00 2001
+From: Jack Wang <jinpu.wang@cloud.ionos.com>
+Date: Thu, 17 Dec 2020 15:19:13 +0100
+Subject: RDMA/rtrs-srv: Do not signal REG_MR
+
+From: Jack Wang <jinpu.wang@cloud.ionos.com>
+
+commit e8ae7ddb48a1b81fd1e67da34a0cb59daf0445d6 upstream.
+
+We do not need to wait for REG_MR completion, so remove the
+SIGNAL flag.
+
+Fixes: 9cb837480424 ("RDMA/rtrs: server: main functionality")
+Link: https://lore.kernel.org/r/20201217141915.56989-18-jinpu.wang@cloud.ionos.com
+Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com>
+Signed-off-by: Gioh Kim <gi-oh.kim@cloud.ionos.com>
+Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/infiniband/ulp/rtrs/rtrs-srv.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/infiniband/ulp/rtrs/rtrs-srv.c
++++ b/drivers/infiniband/ulp/rtrs/rtrs-srv.c
+@@ -820,7 +820,7 @@ static int process_info_req(struct rtrs_
+               rwr[mri].wr.opcode = IB_WR_REG_MR;
+               rwr[mri].wr.wr_cqe = &local_reg_cqe;
+               rwr[mri].wr.num_sge = 0;
+-              rwr[mri].wr.send_flags = mri ? 0 : IB_SEND_SIGNALED;
++              rwr[mri].wr.send_flags = 0;
+               rwr[mri].mr = mr;
+               rwr[mri].key = mr->rkey;
+               rwr[mri].access = (IB_ACCESS_LOCAL_WRITE |
index 6f18c002092f79c6a3e5c16987dddf12e6627e8a..18032cb8d9f6dcff61327df62fac0ed6f4d8311d 100644 (file)
@@ -18,3 +18,22 @@ riscv-get-rid-of-max_early_mapping_size.patch
 nbd-handle-device-refs-for-destroy_on_disconnect-properly.patch
 mm-hugetlb.c-fix-unnecessary-address-expansion-of-pmd-sharing.patch
 vfio-type1-use-follow_pte.patch
+rdma-rtrs-do-not-signal-for-heatbeat.patch
+rdma-rtrs-clt-use-bitmask-to-check-sess-flags.patch
+rdma-rtrs-srv-do-not-signal-reg_mr.patch
+tcp-fix-tcp_rmem-documentation.patch
+mptcp-provide-subflow-aware-release-function.patch
+mptcp-do-not-wakeup-listener-for-mpj-subflows.patch
+mptcp-fix-data_fin-generation-on-early-shutdown.patch
+net-bridge-use-switchdev-for-port-flags-set-through-sysfs-too.patch
+net-sched-cls_flower-reject-invalid-ct_state-flags-rules.patch
+net-dsa-tag_rtl4_a-support-also-egress-tags.patch
+net-ag71xx-remove-unnecessary-mtu-reservation.patch
+net-hsr-add-support-for-entryforgettime.patch
+net-psample-fix-netlink-skb-length-with-tunnel-info.patch
+net-fix-dev_ifsioc_locked-race-condition.patch
+dt-bindings-ethernet-controller-fix-fixed-link-specification.patch
+dt-bindings-net-btusb-dt-fix-s-interrupt-name-interrupt-names.patch
+i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch
+asoc-qcom-remove-useless-debug-print.patch
+soundwire-debugfs-use-controller-id-instead-of-link_id.patch
diff --git a/queue-5.11/soundwire-debugfs-use-controller-id-instead-of-link_id.patch b/queue-5.11/soundwire-debugfs-use-controller-id-instead-of-link_id.patch
new file mode 100644 (file)
index 0000000..89c83dd
--- /dev/null
@@ -0,0 +1,37 @@
+From 6d5e7af1f6f5924de5dd1ebe97675c2363100878 Mon Sep 17 00:00:00 2001
+From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+Date: Fri, 15 Jan 2021 16:25:59 +0000
+Subject: soundwire: debugfs: use controller id instead of link_id
+
+From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+
+commit 6d5e7af1f6f5924de5dd1ebe97675c2363100878 upstream.
+
+link_id can be zero and if we have multiple controller instances
+in a system like Qualcomm debugfs will end-up with duplicate namespace
+resulting in incorrect debugfs entries.
+
+Using id should give a unique debugfs directory entry and should fix below
+warning too.
+"debugfs: Directory 'master-0' with parent 'soundwire' already present!"
+
+Fixes: bf03473d5bcc ("soundwire: add debugfs support")
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+Link: https://lore.kernel.org/r/20210115162559.20869-1-srinivas.kandagatla@linaro.org
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/soundwire/debugfs.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/soundwire/debugfs.c
++++ b/drivers/soundwire/debugfs.c
+@@ -19,7 +19,7 @@ void sdw_bus_debugfs_init(struct sdw_bus
+               return;
+       /* create the debugfs master-N */
+-      snprintf(name, sizeof(name), "master-%d", bus->link_id);
++      snprintf(name, sizeof(name), "master-%d", bus->id);
+       bus->debugfs = debugfs_create_dir(name, sdw_debugfs_root);
+ }
diff --git a/queue-5.11/tcp-fix-tcp_rmem-documentation.patch b/queue-5.11/tcp-fix-tcp_rmem-documentation.patch
new file mode 100644 (file)
index 0000000..381db75
--- /dev/null
@@ -0,0 +1,44 @@
+From 1d1be91254bbdd189796041561fd430f7553bb88 Mon Sep 17 00:00:00 2001
+From: Eric Dumazet <edumazet@google.com>
+Date: Wed, 10 Feb 2021 09:13:33 -0800
+Subject: tcp: fix tcp_rmem documentation
+
+From: Eric Dumazet <edumazet@google.com>
+
+commit 1d1be91254bbdd189796041561fd430f7553bb88 upstream.
+
+tcp_rmem[1] has been changed to 131072, we should update the documentation
+to reflect this.
+
+Fixes: a337531b942b ("tcp: up initial rmem to 128KB and SYN rwin to around 64KB")
+Signed-off-by: Eric Dumazet <edumazet@google.com>
+Reported-by: Zhibin Liu <zhibinliu@google.com>
+Cc: Yuchung Cheng <ycheng@google.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ Documentation/networking/ip-sysctl.rst |    7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/Documentation/networking/ip-sysctl.rst
++++ b/Documentation/networking/ip-sysctl.rst
+@@ -630,16 +630,15 @@ tcp_rmem - vector of 3 INTEGERs: min, de
+       default: initial size of receive buffer used by TCP sockets.
+       This value overrides net.core.rmem_default used by other protocols.
+-      Default: 87380 bytes. This value results in window of 65535 with
+-      default setting of tcp_adv_win_scale and tcp_app_win:0 and a bit
+-      less for default tcp_app_win. See below about these variables.
++      Default: 131072 bytes.
++      This value results in initial window of 65535.
+       max: maximal size of receive buffer allowed for automatically
+       selected receiver buffers for TCP socket. This value does not override
+       net.core.rmem_max.  Calling setsockopt() with SO_RCVBUF disables
+       automatic tuning of that socket's receive buffer size, in which
+       case this value is ignored.
+-      Default: between 87380B and 6MB, depending on RAM size.
++      Default: between 131072 and 6MB, depending on RAM size.
+ tcp_sack - BOOLEAN
+       Enable select acknowledgments (SACKS).