]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop net-smc patches from 6.5
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Oct 2023 10:15:00 +0000 (12:15 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Oct 2023 10:15:00 +0000 (12:15 +0200)
queue-6.5/net-smc-fix-smc-clc-failed-issue-when-netdevice-not-.patch [deleted file]
queue-6.5/net-smc-support-smc-release-version-negotiation-in-c.patch [deleted file]
queue-6.5/net-smc-support-smc-v2.x-features-validate.patch [deleted file]
queue-6.5/series

diff --git a/queue-6.5/net-smc-fix-smc-clc-failed-issue-when-netdevice-not-.patch b/queue-6.5/net-smc-fix-smc-clc-failed-issue-when-netdevice-not-.patch
deleted file mode 100644 (file)
index 09d45de..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-From 61576515c6913e1ae2c4e7c01d832b985f66500e Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 11 Oct 2023 15:48:51 +0800
-Subject: net/smc: fix smc clc failed issue when netdevice not in init_net
-
-From: Albert Huang <huangjie.albert@bytedance.com>
-
-[ Upstream commit c68681ae46eaaa1640b52fe366d21a93b2185df5 ]
-
-If the netdevice is within a container and communicates externally
-through network technologies such as VxLAN, we won't be able to find
-routing information in the init_net namespace. To address this issue,
-we need to add a struct net parameter to the smc_ib_find_route function.
-This allow us to locate the routing information within the corresponding
-net namespace, ensuring the correct completion of the SMC CLC interaction.
-
-Fixes: e5c4744cfb59 ("net/smc: add SMC-Rv2 connection establishment")
-Signed-off-by: Albert Huang <huangjie.albert@bytedance.com>
-Reviewed-by: Dust Li <dust.li@linux.alibaba.com>
-Reviewed-by: Wenjia Zhang <wenjia@linux.ibm.com>
-Link: https://lore.kernel.org/r/20231011074851.95280-1-huangjie.albert@bytedance.com
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- net/smc/af_smc.c | 3 ++-
- net/smc/smc_ib.c | 7 ++++---
- net/smc/smc_ib.h | 2 +-
- 3 files changed, 7 insertions(+), 5 deletions(-)
-
-diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
-index fa7b8015cd7bb..01bd576ffa5e1 100644
---- a/net/smc/af_smc.c
-+++ b/net/smc/af_smc.c
-@@ -1199,6 +1199,7 @@ static int smc_connect_rdma_v2_prepare(struct smc_sock *smc,
-               (struct smc_clc_msg_accept_confirm_v2 *)aclc;
-       struct smc_clc_first_contact_ext *fce =
-               smc_get_clc_first_contact_ext(clc_v2, false);
-+      struct net *net = sock_net(&smc->sk);
-       int rc;
-       if (!ini->first_contact_peer || aclc->hdr.version == SMC_V1)
-@@ -1208,7 +1209,7 @@ static int smc_connect_rdma_v2_prepare(struct smc_sock *smc,
-               memcpy(ini->smcrv2.nexthop_mac, &aclc->r0.lcl.mac, ETH_ALEN);
-               ini->smcrv2.uses_gateway = false;
-       } else {
--              if (smc_ib_find_route(smc->clcsock->sk->sk_rcv_saddr,
-+              if (smc_ib_find_route(net, smc->clcsock->sk->sk_rcv_saddr,
-                                     smc_ib_gid_to_ipv4(aclc->r0.lcl.gid),
-                                     ini->smcrv2.nexthop_mac,
-                                     &ini->smcrv2.uses_gateway))
-diff --git a/net/smc/smc_ib.c b/net/smc/smc_ib.c
-index 9b66d6aeeb1ae..89981dbe46c94 100644
---- a/net/smc/smc_ib.c
-+++ b/net/smc/smc_ib.c
-@@ -193,7 +193,7 @@ bool smc_ib_port_active(struct smc_ib_device *smcibdev, u8 ibport)
-       return smcibdev->pattr[ibport - 1].state == IB_PORT_ACTIVE;
- }
--int smc_ib_find_route(__be32 saddr, __be32 daddr,
-+int smc_ib_find_route(struct net *net, __be32 saddr, __be32 daddr,
-                     u8 nexthop_mac[], u8 *uses_gateway)
- {
-       struct neighbour *neigh = NULL;
-@@ -205,7 +205,7 @@ int smc_ib_find_route(__be32 saddr, __be32 daddr,
-       if (daddr == cpu_to_be32(INADDR_NONE))
-               goto out;
--      rt = ip_route_output_flow(&init_net, &fl4, NULL);
-+      rt = ip_route_output_flow(net, &fl4, NULL);
-       if (IS_ERR(rt))
-               goto out;
-       if (rt->rt_uses_gateway && rt->rt_gw_family != AF_INET)
-@@ -235,6 +235,7 @@ static int smc_ib_determine_gid_rcu(const struct net_device *ndev,
-       if (smcrv2 && attr->gid_type == IB_GID_TYPE_ROCE_UDP_ENCAP &&
-           smc_ib_gid_to_ipv4((u8 *)&attr->gid) != cpu_to_be32(INADDR_NONE)) {
-               struct in_device *in_dev = __in_dev_get_rcu(ndev);
-+              struct net *net = dev_net(ndev);
-               const struct in_ifaddr *ifa;
-               bool subnet_match = false;
-@@ -248,7 +249,7 @@ static int smc_ib_determine_gid_rcu(const struct net_device *ndev,
-               }
-               if (!subnet_match)
-                       goto out;
--              if (smcrv2->daddr && smc_ib_find_route(smcrv2->saddr,
-+              if (smcrv2->daddr && smc_ib_find_route(net, smcrv2->saddr,
-                                                      smcrv2->daddr,
-                                                      smcrv2->nexthop_mac,
-                                                      &smcrv2->uses_gateway))
-diff --git a/net/smc/smc_ib.h b/net/smc/smc_ib.h
-index 034295676e881..ebcb05ede7f55 100644
---- a/net/smc/smc_ib.h
-+++ b/net/smc/smc_ib.h
-@@ -113,7 +113,7 @@ void smc_ib_sync_sg_for_device(struct smc_link *lnk,
- int smc_ib_determine_gid(struct smc_ib_device *smcibdev, u8 ibport,
-                        unsigned short vlan_id, u8 gid[], u8 *sgid_index,
-                        struct smc_init_info_smcrv2 *smcrv2);
--int smc_ib_find_route(__be32 saddr, __be32 daddr,
-+int smc_ib_find_route(struct net *net, __be32 saddr, __be32 daddr,
-                     u8 nexthop_mac[], u8 *uses_gateway);
- bool smc_ib_is_valid_local_systemid(void);
- int smcr_nl_get_device(struct sk_buff *skb, struct netlink_callback *cb);
--- 
-2.40.1
-
diff --git a/queue-6.5/net-smc-support-smc-release-version-negotiation-in-c.patch b/queue-6.5/net-smc-support-smc-release-version-negotiation-in-c.patch
deleted file mode 100644 (file)
index 23d2faa..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-From a1e70723561808918567b223a81c29b808e3b664 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 17 Aug 2023 21:20:27 +0800
-Subject: net/smc: support smc release version negotiation in clc handshake
-
-From: Guangguan Wang <guangguan.wang@linux.alibaba.com>
-
-[ Upstream commit 1e700948c9db0d09f691f715e8f4b947e51e35b5 ]
-
-Support smc release version negotiation in clc handshake based on
-SMC v2, where no negotiation process for different releases, but
-for different versions. The latest smc release version was updated
-to v2.1. And currently there are two release versions of SMCv2, v2.0
-and v2.1. In the release version negotiation, client sends the preferred
-release version by CLC Proposal Message, server makes decision for which
-release version to use based on the client preferred release version and
-self-supported release version (here choose the minimum release version
-of the client preferred and server latest supported), then the decision
-returns to client by CLC Accept Message. Client confirms the decision by
-CLC Confirm Message.
-
-Client                                    Server
-      Proposal(preferred release version)
-     ------------------------------------>
-
-      Accept(accpeted release version)
- min(client preferred, server latest supported)
-     <------------------------------------
-
-      Confirm(accpeted release version)
-     ------------------------------------>
-
-Signed-off-by: Guangguan Wang <guangguan.wang@linux.alibaba.com>
-Reviewed-by: Tony Lu <tonylu@linux.alibaba.com>
-Reviewed-by: Jan Karcher <jaka@linux.ibm.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Stable-dep-of: c68681ae46ea ("net/smc: fix smc clc failed issue when netdevice not in init_net")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- net/smc/af_smc.c   | 21 +++++++++++++++++----
- net/smc/smc.h      |  5 ++++-
- net/smc/smc_clc.c  | 14 +++++++-------
- net/smc/smc_clc.h  | 23 ++++++++++++++++++++++-
- net/smc/smc_core.h |  1 +
- 5 files changed, 51 insertions(+), 13 deletions(-)
-
-diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
-index c0e4e587b4994..077e5864fc441 100644
---- a/net/smc/af_smc.c
-+++ b/net/smc/af_smc.c
-@@ -1198,8 +1198,7 @@ static int smc_connect_rdma_v2_prepare(struct smc_sock *smc,
-       struct smc_clc_msg_accept_confirm_v2 *clc_v2 =
-               (struct smc_clc_msg_accept_confirm_v2 *)aclc;
-       struct smc_clc_first_contact_ext *fce =
--              (struct smc_clc_first_contact_ext *)
--                      (((u8 *)clc_v2) + sizeof(*clc_v2));
-+              smc_get_clc_first_contact_ext(clc_v2, false);
-       if (!ini->first_contact_peer || aclc->hdr.version == SMC_V1)
-               return 0;
-@@ -1218,6 +1217,9 @@ static int smc_connect_rdma_v2_prepare(struct smc_sock *smc,
-                       return SMC_CLC_DECL_NOINDIRECT;
-               }
-       }
-+
-+      ini->release_nr = fce->release;
-+
-       return 0;
- }
-@@ -1386,6 +1388,13 @@ static int smc_connect_ism(struct smc_sock *smc,
-               struct smc_clc_msg_accept_confirm_v2 *aclc_v2 =
-                       (struct smc_clc_msg_accept_confirm_v2 *)aclc;
-+              if (ini->first_contact_peer) {
-+                      struct smc_clc_first_contact_ext *fce =
-+                              smc_get_clc_first_contact_ext(aclc_v2, true);
-+
-+                      ini->release_nr = fce->release;
-+              }
-+
-               rc = smc_v2_determine_accepted_chid(aclc_v2, ini);
-               if (rc)
-                       return rc;
-@@ -1420,7 +1429,7 @@ static int smc_connect_ism(struct smc_sock *smc,
-       }
-       rc = smc_clc_send_confirm(smc, ini->first_contact_local,
--                                aclc->hdr.version, eid, NULL);
-+                                aclc->hdr.version, eid, ini);
-       if (rc)
-               goto connect_abort;
-       mutex_unlock(&smc_server_lgr_pending);
-@@ -1996,6 +2005,10 @@ static int smc_listen_v2_check(struct smc_sock *new_smc,
-               }
-       }
-+      ini->release_nr = pclc_v2_ext->hdr.flag.release;
-+      if (pclc_v2_ext->hdr.flag.release > SMC_RELEASE)
-+              ini->release_nr = SMC_RELEASE;
-+
- out:
-       if (!ini->smcd_version && !ini->smcr_version)
-               return rc;
-@@ -2443,7 +2456,7 @@ static void smc_listen_work(struct work_struct *work)
-       /* send SMC Accept CLC message */
-       accept_version = ini->is_smcd ? ini->smcd_version : ini->smcr_version;
-       rc = smc_clc_send_accept(new_smc, ini->first_contact_local,
--                               accept_version, ini->negotiated_eid);
-+                               accept_version, ini->negotiated_eid, ini);
-       if (rc)
-               goto out_unlock;
-diff --git a/net/smc/smc.h b/net/smc/smc.h
-index 1f2b912c43d10..24745fde4ac26 100644
---- a/net/smc/smc.h
-+++ b/net/smc/smc.h
-@@ -21,7 +21,10 @@
- #define SMC_V1                1               /* SMC version V1 */
- #define SMC_V2                2               /* SMC version V2 */
--#define SMC_RELEASE   0
-+
-+#define SMC_RELEASE_0 0
-+#define SMC_RELEASE_1 1
-+#define SMC_RELEASE   SMC_RELEASE_1 /* the latest release version */
- #define SMCPROTO_SMC          0       /* SMC protocol, IPv4 */
- #define SMCPROTO_SMC6         1       /* SMC protocol, IPv6 */
-diff --git a/net/smc/smc_clc.c b/net/smc/smc_clc.c
-index c90d9e5dda540..fb0be0817e8a5 100644
---- a/net/smc/smc_clc.c
-+++ b/net/smc/smc_clc.c
-@@ -420,11 +420,11 @@ smc_clc_msg_decl_valid(struct smc_clc_msg_decline *dclc)
-       return true;
- }
--static void smc_clc_fill_fce(struct smc_clc_first_contact_ext *fce, int *len)
-+static void smc_clc_fill_fce(struct smc_clc_first_contact_ext *fce, int *len, int release_nr)
- {
-       memset(fce, 0, sizeof(*fce));
-       fce->os_type = SMC_CLC_OS_LINUX;
--      fce->release = SMC_RELEASE;
-+      fce->release = release_nr;
-       memcpy(fce->hostname, smc_hostname, sizeof(smc_hostname));
-       (*len) += sizeof(*fce);
- }
-@@ -1019,7 +1019,7 @@ static int smc_clc_send_confirm_accept(struct smc_sock *smc,
-                               memcpy(clc_v2->d1.eid, eid, SMC_MAX_EID_LEN);
-                       len = SMCD_CLC_ACCEPT_CONFIRM_LEN_V2;
-                       if (first_contact)
--                              smc_clc_fill_fce(&fce, &len);
-+                              smc_clc_fill_fce(&fce, &len, ini->release_nr);
-                       clc_v2->hdr.length = htons(len);
-               }
-               memcpy(trl.eyecatcher, SMCD_EYECATCHER,
-@@ -1063,10 +1063,10 @@ static int smc_clc_send_confirm_accept(struct smc_sock *smc,
-                               memcpy(clc_v2->r1.eid, eid, SMC_MAX_EID_LEN);
-                       len = SMCR_CLC_ACCEPT_CONFIRM_LEN_V2;
-                       if (first_contact) {
--                              smc_clc_fill_fce(&fce, &len);
-+                              smc_clc_fill_fce(&fce, &len, ini->release_nr);
-                               fce.v2_direct = !link->lgr->uses_gateway;
-                               memset(&gle, 0, sizeof(gle));
--                              if (ini && clc->hdr.type == SMC_CLC_CONFIRM) {
-+                              if (clc->hdr.type == SMC_CLC_CONFIRM) {
-                                       gle.gid_cnt = ini->smcrv2.gidlist.len;
-                                       len += sizeof(gle);
-                                       len += gle.gid_cnt * sizeof(gle.gid[0]);
-@@ -1141,7 +1141,7 @@ int smc_clc_send_confirm(struct smc_sock *smc, bool clnt_first_contact,
- /* send CLC ACCEPT message across internal TCP socket */
- int smc_clc_send_accept(struct smc_sock *new_smc, bool srv_first_contact,
--                      u8 version, u8 *negotiated_eid)
-+                      u8 version, u8 *negotiated_eid, struct smc_init_info *ini)
- {
-       struct smc_clc_msg_accept_confirm_v2 aclc_v2;
-       int len;
-@@ -1149,7 +1149,7 @@ int smc_clc_send_accept(struct smc_sock *new_smc, bool srv_first_contact,
-       memset(&aclc_v2, 0, sizeof(aclc_v2));
-       aclc_v2.hdr.type = SMC_CLC_ACCEPT;
-       len = smc_clc_send_confirm_accept(new_smc, &aclc_v2, srv_first_contact,
--                                        version, negotiated_eid, NULL);
-+                                        version, negotiated_eid, ini);
-       if (len < ntohs(aclc_v2.hdr.length))
-               len = len >= 0 ? -EPROTO : -new_smc->clcsock->sk->sk_err;
-diff --git a/net/smc/smc_clc.h b/net/smc/smc_clc.h
-index 5fee545c9a109..b923e89acafb0 100644
---- a/net/smc/smc_clc.h
-+++ b/net/smc/smc_clc.h
-@@ -370,6 +370,27 @@ smc_get_clc_smcd_v2_ext(struct smc_clc_v2_extension *prop_v2ext)
-                ntohs(prop_v2ext->hdr.smcd_v2_ext_offset));
- }
-+static inline struct smc_clc_first_contact_ext *
-+smc_get_clc_first_contact_ext(struct smc_clc_msg_accept_confirm_v2 *clc_v2,
-+                            bool is_smcd)
-+{
-+      int clc_v2_len;
-+
-+      if (clc_v2->hdr.version == SMC_V1 ||
-+          !(clc_v2->hdr.typev2 & SMC_FIRST_CONTACT_MASK))
-+              return NULL;
-+
-+      if (is_smcd)
-+              clc_v2_len =
-+                      offsetofend(struct smc_clc_msg_accept_confirm_v2, d1);
-+      else
-+              clc_v2_len =
-+                      offsetofend(struct smc_clc_msg_accept_confirm_v2, r1);
-+
-+      return (struct smc_clc_first_contact_ext *)(((u8 *)clc_v2) +
-+                                                  clc_v2_len);
-+}
-+
- struct smcd_dev;
- struct smc_init_info;
-@@ -382,7 +403,7 @@ int smc_clc_send_proposal(struct smc_sock *smc, struct smc_init_info *ini);
- int smc_clc_send_confirm(struct smc_sock *smc, bool clnt_first_contact,
-                        u8 version, u8 *eid, struct smc_init_info *ini);
- int smc_clc_send_accept(struct smc_sock *smc, bool srv_first_contact,
--                      u8 version, u8 *negotiated_eid);
-+                      u8 version, u8 *negotiated_eid, struct smc_init_info *ini);
- void smc_clc_init(void) __init;
- void smc_clc_exit(void);
- void smc_clc_get_hostname(u8 **host);
-diff --git a/net/smc/smc_core.h b/net/smc/smc_core.h
-index 1645fba0d2d38..5bbc16f851e05 100644
---- a/net/smc/smc_core.h
-+++ b/net/smc/smc_core.h
-@@ -374,6 +374,7 @@ struct smc_init_info {
-       u8                      is_smcd;
-       u8                      smc_type_v1;
-       u8                      smc_type_v2;
-+      u8                      release_nr;
-       u8                      first_contact_peer;
-       u8                      first_contact_local;
-       unsigned short          vlan_id;
--- 
-2.40.1
-
diff --git a/queue-6.5/net-smc-support-smc-v2.x-features-validate.patch b/queue-6.5/net-smc-support-smc-v2.x-features-validate.patch
deleted file mode 100644 (file)
index feeb334..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-From 6a0b0a9ecf20c93587831891cd4b1f11447de56c Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 17 Aug 2023 21:20:29 +0800
-Subject: net/smc: support smc v2.x features validate
-
-From: Guangguan Wang <guangguan.wang@linux.alibaba.com>
-
-[ Upstream commit 6ac1e6563f5915cd38b6bc6a8b26964b2252f751 ]
-
-Support SMC v2.x features validate for SMC v2.1. This is the frame
-code for SMC v2.x features validate, and will take effects only when
-the negotiated release version is v2.1 or later.
-
-For Server, v2.x features' validation should be done in smc_clc_srv_
-v2x_features_validate when receiving v2.1 or later CLC Proposal Message,
-such as max conns, max links negotiation, the decision of the final
-value of max conns and max links should be made in this function.
-And final check for server when receiving v2.1 or later CLC Confirm
-Message should be done in smc_clc_v2x_features_confirm_check.
-
-For client, v2.x features' validation should be done in smc_clc_clnt_
-v2x_features_validate when receiving v2.1 or later CLC Accept Message,
-for example, the decision to accpt the accepted value or to decline
-should be made in this function.
-
-Signed-off-by: Guangguan Wang <guangguan.wang@linux.alibaba.com>
-Reviewed-by: Tony Lu <tonylu@linux.alibaba.com>
-Reviewed-by: Jan Karcher <jaka@linux.ibm.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Stable-dep-of: c68681ae46ea ("net/smc: fix smc clc failed issue when netdevice not in init_net")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- net/smc/af_smc.c  | 18 ++++++++++++++++++
- net/smc/smc_clc.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
- net/smc/smc_clc.h |  7 +++++++
- 3 files changed, 71 insertions(+)
-
-diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
-index 077e5864fc441..fa7b8015cd7bb 100644
---- a/net/smc/af_smc.c
-+++ b/net/smc/af_smc.c
-@@ -1199,6 +1199,7 @@ static int smc_connect_rdma_v2_prepare(struct smc_sock *smc,
-               (struct smc_clc_msg_accept_confirm_v2 *)aclc;
-       struct smc_clc_first_contact_ext *fce =
-               smc_get_clc_first_contact_ext(clc_v2, false);
-+      int rc;
-       if (!ini->first_contact_peer || aclc->hdr.version == SMC_V1)
-               return 0;
-@@ -1219,6 +1220,9 @@ static int smc_connect_rdma_v2_prepare(struct smc_sock *smc,
-       }
-       ini->release_nr = fce->release;
-+      rc = smc_clc_clnt_v2x_features_validate(fce, ini);
-+      if (rc)
-+              return rc;
-       return 0;
- }
-@@ -1393,6 +1397,9 @@ static int smc_connect_ism(struct smc_sock *smc,
-                               smc_get_clc_first_contact_ext(aclc_v2, true);
-                       ini->release_nr = fce->release;
-+                      rc = smc_clc_clnt_v2x_features_validate(fce, ini);
-+                      if (rc)
-+                              return rc;
-               }
-               rc = smc_v2_determine_accepted_chid(aclc_v2, ini);
-@@ -2443,6 +2450,10 @@ static void smc_listen_work(struct work_struct *work)
-       if (rc)
-               goto out_decl;
-+      rc = smc_clc_srv_v2x_features_validate(pclc, ini);
-+      if (rc)
-+              goto out_decl;
-+
-       mutex_lock(&smc_server_lgr_pending);
-       smc_close_init(new_smc);
-       smc_rx_init(new_smc);
-@@ -2475,6 +2486,13 @@ static void smc_listen_work(struct work_struct *work)
-               goto out_decl;
-       }
-+      rc = smc_clc_v2x_features_confirm_check(cclc, ini);
-+      if (rc) {
-+              if (!ini->is_smcd)
-+                      goto out_unlock;
-+              goto out_decl;
-+      }
-+
-       /* finish worker */
-       if (!ini->is_smcd) {
-               rc = smc_listen_rdma_finish(new_smc, cclc,
-diff --git a/net/smc/smc_clc.c b/net/smc/smc_clc.c
-index fb0be0817e8a5..f50d1b019a80f 100644
---- a/net/smc/smc_clc.c
-+++ b/net/smc/smc_clc.c
-@@ -1156,6 +1156,52 @@ int smc_clc_send_accept(struct smc_sock *new_smc, bool srv_first_contact,
-       return len > 0 ? 0 : len;
- }
-+int smc_clc_srv_v2x_features_validate(struct smc_clc_msg_proposal *pclc,
-+                                    struct smc_init_info *ini)
-+{
-+      struct smc_clc_v2_extension *pclc_v2_ext;
-+
-+      if ((!(ini->smcd_version & SMC_V2) && !(ini->smcr_version & SMC_V2)) ||
-+          ini->release_nr < SMC_RELEASE_1)
-+              return 0;
-+
-+      pclc_v2_ext = smc_get_clc_v2_ext(pclc);
-+      if (!pclc_v2_ext)
-+              return SMC_CLC_DECL_NOV2EXT;
-+
-+      return 0;
-+}
-+
-+int smc_clc_clnt_v2x_features_validate(struct smc_clc_first_contact_ext *fce,
-+                                     struct smc_init_info *ini)
-+{
-+      if (ini->release_nr < SMC_RELEASE_1)
-+              return 0;
-+
-+      return 0;
-+}
-+
-+int smc_clc_v2x_features_confirm_check(struct smc_clc_msg_accept_confirm *cclc,
-+                                     struct smc_init_info *ini)
-+{
-+      struct smc_clc_msg_accept_confirm_v2 *clc_v2 =
-+              (struct smc_clc_msg_accept_confirm_v2 *)cclc;
-+      struct smc_clc_first_contact_ext *fce =
-+              smc_get_clc_first_contact_ext(clc_v2, ini->is_smcd);
-+
-+      if (cclc->hdr.version == SMC_V1 ||
-+          !(cclc->hdr.typev2 & SMC_FIRST_CONTACT_MASK))
-+              return 0;
-+
-+      if (ini->release_nr != fce->release)
-+              return SMC_CLC_DECL_RELEASEERR;
-+
-+      if (fce->release < SMC_RELEASE_1)
-+              return 0;
-+
-+      return 0;
-+}
-+
- void smc_clc_get_hostname(u8 **host)
- {
-       *host = &smc_hostname[0];
-diff --git a/net/smc/smc_clc.h b/net/smc/smc_clc.h
-index b923e89acafb0..32fa56bfa06d5 100644
---- a/net/smc/smc_clc.h
-+++ b/net/smc/smc_clc.h
-@@ -45,6 +45,7 @@
- #define SMC_CLC_DECL_NOSEID   0x03030006  /* peer sent no SEID              */
- #define SMC_CLC_DECL_NOSMCD2DEV       0x03030007  /* no SMC-Dv2 device found        */
- #define SMC_CLC_DECL_NOUEID   0x03030008  /* peer sent no UEID              */
-+#define SMC_CLC_DECL_RELEASEERR       0x03030009  /* release version negotiate failed */
- #define SMC_CLC_DECL_MODEUNSUPP       0x03040000  /* smc modes do not match (R or D)*/
- #define SMC_CLC_DECL_RMBE_EC  0x03050000  /* peer has eyecatcher in RMBE    */
- #define SMC_CLC_DECL_OPTUNSUPP        0x03060000  /* fastopen sockopt not supported */
-@@ -404,6 +405,12 @@ int smc_clc_send_confirm(struct smc_sock *smc, bool clnt_first_contact,
-                        u8 version, u8 *eid, struct smc_init_info *ini);
- int smc_clc_send_accept(struct smc_sock *smc, bool srv_first_contact,
-                       u8 version, u8 *negotiated_eid, struct smc_init_info *ini);
-+int smc_clc_srv_v2x_features_validate(struct smc_clc_msg_proposal *pclc,
-+                                    struct smc_init_info *ini);
-+int smc_clc_clnt_v2x_features_validate(struct smc_clc_first_contact_ext *fce,
-+                                     struct smc_init_info *ini);
-+int smc_clc_v2x_features_confirm_check(struct smc_clc_msg_accept_confirm *cclc,
-+                                     struct smc_init_info *ini);
- void smc_clc_init(void) __init;
- void smc_clc_exit(void);
- void smc_clc_get_hostname(u8 **host);
--- 
-2.40.1
-
index 39ff780fbccd9c569a5bf89e60f236907dec53c7..78be5b94b0c9dca100ac13343f6c52e0a991793b 100644 (file)
@@ -156,9 +156,6 @@ net-mlx5e-don-t-offload-internal-port-if-filter-devi.patch
 net-mlx5e-fix-vf-representors-reporting-zero-counter.patch
 net-tls-split-tls_rx_reader_lock.patch
 tcp-allow-again-tcp_disconnect-when-threads-are-wait.patch
-net-smc-support-smc-release-version-negotiation-in-c.patch
-net-smc-support-smc-v2.x-features-validate.patch
-net-smc-fix-smc-clc-failed-issue-when-netdevice-not-.patch
 bluetooth-hci_event-fix-using-memcmp-when-comparing-.patch
 tcp_bpf-properly-release-resources-on-error-paths.patch
 mtd-rawnand-qcom-unmap-the-right-resource-upon-probe-failure.patch