From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Jason Gunthorpe <jgg@mellanox.com>
Cc: David Miller <davem@davemloft.net>,
Networking <netdev@vger.kernel.org>,
Doug Ledford <dledford@redhat.com>,
Linux-Next Mailing List <linux-next@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Parav Pandit <parav@mellanox.com>,
Ursula Braun <ubraun@linux.ibm.com>,
Leon Romanovsky <leonro@mellanox.com>,
linux-rdma@vger.kernel.org
Subject: Re: linux-next: manual merge of the net-next tree with the rdma tree
Date: Fri, 27 Jul 2018 13:45:24 +1000 [thread overview]
Message-ID: <20180727134524.366e9425@canb.auug.org.au> (raw)
In-Reply-To: <20180727132847.2be8563b@canb.auug.org.au>
[-- Attachment #1: Type: text/plain, Size: 4213 bytes --]
Hi all,
On Fri, 27 Jul 2018 13:28:47 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>
> I applied this merge fix patch:
The final conflict resolution actually looks like this:
(the rdma tree changes to net/smc/smc_core.c are dropped)
c1d4bb2af93573ee4a21538a1a97b568a2344499
diff --cc net/smc/smc_ib.c
index 74f29f814ec1,2cc64bc8ae20..debc6e44f738
--- a/net/smc/smc_ib.c
+++ b/net/smc/smc_ib.c
@@@ -144,6 -142,93 +143,95 @@@ out
return rc;
}
+ static int smc_ib_fill_mac(struct smc_ib_device *smcibdev, u8 ibport)
+ {
- struct ib_gid_attr gattr;
- union ib_gid gid;
- int rc;
++ const struct ib_gid_attr *gattr;
++ int rc = 0;
+
- rc = ib_query_gid(smcibdev->ibdev, ibport, 0, &gid, &gattr);
- if (rc || !gattr.ndev)
- return -ENODEV;
++ gattr = rdma_get_gid_attr(smcibdev->ibdev, ibport, 0);
++ if (IS_ERR(gattr))
++ return PTR_ERR(gattr);
++ if (!gattr->ndev) {
++ rc = -ENODEV;
++ goto done;
++ }
+
- memcpy(smcibdev->mac[ibport - 1], gattr.ndev->dev_addr, ETH_ALEN);
- dev_put(gattr.ndev);
- return 0;
++ memcpy(smcibdev->mac[ibport - 1], gattr->ndev->dev_addr, ETH_ALEN);
++done:
++ rdma_put_gid_attr(gattr);
++ return rc;
+ }
+
+ /* Create an identifier unique for this instance of SMC-R.
+ * The MAC-address of the first active registered IB device
+ * plus a random 2-byte number is used to create this identifier.
+ * This name is delivered to the peer during connection initialization.
+ */
+ static inline void smc_ib_define_local_systemid(struct smc_ib_device *smcibdev,
+ u8 ibport)
+ {
+ memcpy(&local_systemid[2], &smcibdev->mac[ibport - 1],
+ sizeof(smcibdev->mac[ibport - 1]));
+ get_random_bytes(&local_systemid[0], 2);
+ }
+
+ bool smc_ib_port_active(struct smc_ib_device *smcibdev, u8 ibport)
+ {
+ return smcibdev->pattr[ibport - 1].state == IB_PORT_ACTIVE;
+ }
+
+ /* determine the gid for an ib-device port and vlan id */
+ int smc_ib_determine_gid(struct smc_ib_device *smcibdev, u8 ibport,
+ unsigned short vlan_id, u8 gid[], u8 *sgid_index)
+ {
- struct ib_gid_attr gattr;
- union ib_gid _gid;
++ const struct ib_gid_attr *gattr;
+ int i;
+
+ for (i = 0; i < smcibdev->pattr[ibport - 1].gid_tbl_len; i++) {
- memset(&_gid, 0, SMC_GID_SIZE);
- memset(&gattr, 0, sizeof(gattr));
- if (ib_query_gid(smcibdev->ibdev, ibport, i, &_gid, &gattr))
++ gattr = rdma_get_gid_attr(smcibdev->ibdev, ibport, i);
++ if (IS_ERR(gattr))
+ continue;
- if (!gattr.ndev)
++ if (!gattr->ndev)
+ continue;
- if (((!vlan_id && !is_vlan_dev(gattr.ndev)) ||
- (vlan_id && is_vlan_dev(gattr.ndev) &&
- vlan_dev_vlan_id(gattr.ndev) == vlan_id)) &&
- gattr.gid_type == IB_GID_TYPE_IB) {
++ if (((!vlan_id && !is_vlan_dev(gattr->ndev)) ||
++ (vlan_id && is_vlan_dev(gattr->ndev) &&
++ vlan_dev_vlan_id(gattr->ndev) == vlan_id)) &&
++ gattr->gid_type == IB_GID_TYPE_IB) {
+ if (gid)
- memcpy(gid, &_gid, SMC_GID_SIZE);
++ memcpy(gid, &gattr->gid, SMC_GID_SIZE);
+ if (sgid_index)
+ *sgid_index = i;
- dev_put(gattr.ndev);
++ rdma_put_gid_attr(gattr);
+ return 0;
+ }
- dev_put(gattr.ndev);
++ rdma_put_gid_attr(gattr);
+ }
+ return -ENODEV;
+ }
+
+ static int smc_ib_remember_port_attr(struct smc_ib_device *smcibdev, u8 ibport)
+ {
+ int rc;
+
+ memset(&smcibdev->pattr[ibport - 1], 0,
+ sizeof(smcibdev->pattr[ibport - 1]));
+ rc = ib_query_port(smcibdev->ibdev, ibport,
+ &smcibdev->pattr[ibport - 1]);
+ if (rc)
+ goto out;
+ /* the SMC protocol requires specification of the RoCE MAC address */
+ rc = smc_ib_fill_mac(smcibdev, ibport);
+ if (rc)
+ goto out;
+ if (!strncmp(local_systemid, SMC_LOCAL_SYSTEMID_RESET,
+ sizeof(local_systemid)) &&
+ smc_ib_port_active(smcibdev, ibport))
+ /* create unique system identifier */
+ smc_ib_define_local_systemid(smcibdev, ibport);
+ out:
+ return rc;
+ }
+
/* process context wrapper for might_sleep smc_ib_remember_port_attr */
static void smc_ib_port_event_work(struct work_struct *work)
{
--
Cheers,
Stephen Rothwell
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2018-07-27 3:45 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-27 2:33 linux-next: manual merge of the net-next tree with the rdma tree Stephen Rothwell
2018-07-27 2:48 ` Jason Gunthorpe
2018-07-27 3:28 ` Stephen Rothwell
2018-07-27 3:45 ` Stephen Rothwell [this message]
2018-07-27 5:03 ` Parav Pandit
2018-07-27 4:57 ` Parav Pandit
2018-07-27 5:09 ` Stephen Rothwell
2018-07-31 21:12 ` Parav Pandit
2018-08-01 5:33 ` Stephen Rothwell
2018-08-01 17:13 ` Jason Gunthorpe
2018-08-01 18:30 ` Parav Pandit
-- strict thread matches above, loose matches on Subject: below --
2021-10-28 0:56 Stephen Rothwell
2021-10-28 7:48 ` Saeed Mahameed
2021-10-19 23:34 Stephen Rothwell
2020-05-08 3:18 Stephen Rothwell
2020-05-08 12:35 ` Jason Gunthorpe
2020-05-09 7:49 ` Saeed Mahameed
2020-05-09 7:40 ` Saeed Mahameed
2019-06-20 2:15 Stephen Rothwell
2019-02-27 0:25 Stephen Rothwell
2019-02-27 16:24 ` Doug Ledford
2019-02-28 9:05 ` Leon Romanovsky
2019-02-18 0:05 Stephen Rothwell
2019-02-18 10:48 ` Leon Romanovsky
2018-08-02 2:05 Stephen Rothwell
2018-08-15 23:45 ` Stephen Rothwell
2018-07-02 0:21 Stephen Rothwell
2018-08-15 23:41 ` Stephen Rothwell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180727134524.366e9425@canb.auug.org.au \
--to=sfr@canb.auug.org.au \
--cc=davem@davemloft.net \
--cc=dledford@redhat.com \
--cc=jgg@mellanox.com \
--cc=leonro@mellanox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=parav@mellanox.com \
--cc=ubraun@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).