From: mohammad <goody698@gmail.com>
To: Zhu Yanjun <zyjzyj2000@gmail.com>, linux-rdma@vger.kernel.org
Cc: dledford@redhat.com, jgg@ziepe.ca, kamalheib1@gmail.com, leon@kernel.org
Subject: Re: [PATCH] RDMA/rxe: prevent rxe creation on top of vlan interface
Date: Thu, 13 Aug 2020 12:52:51 +0300 [thread overview]
Message-ID: <bf68fa99-3300-0e63-9b72-3bf143b74a3d@gmail.com> (raw)
In-Reply-To: <72e827bd-2934-8947-15e5-3692ab7409ae@gmail.com>
On 8/13/20 6:16 AM, Zhu Yanjun wrote:
> On 8/11/2020 11:04 PM, Mohammad Heib wrote:
>> Creating rxe device on top of vlan interface will create a
>> non-functional device
>> that has an empty gids table and can't be used for rdma cm
>> communication.
>
> Can we fix this empty gids table?
I'm not sure if that can be done in the rxe only, since the IP's of the
netdev enrolls into
the gids table by the ibcore in the device registration
stage(gid_table_setup_one) and that requires making changes in the ibcore.
we can enroll those IP's into the device gids table after the rxe device
registration but still
we have to expose some ibcore functions (add_netdev_ips) and track the
address change events of the
vlan interface and update the gids table accordingly to those IP's changes.
>
> So this gids table can be used for rdma cm communication.
>
> Zhu Yanjun
>
>>
>> This is caused by the logic in
>> enum_all_gids_of_dev_cb()/is_eth_port_of_netdev(),
>> which only considers networks connected to "upper devices" of the
>> configured
>> network device, resulting in an empty set of gids for a vlan interface,
>> and attempts to connect via this rdma device fail in
>> cm_init_av_for_response
>> because no gids can be resolved.
>>
>> apparently, this behavior was implemented to fit the HW-RoCE devices
>> that create
>> RoCE device per port, therefore RXE must behave the same like HW-RoCE
>> devices
>> and create rxe device per real device only.
>>
>> In order to communicate via a vlan interface, the user must use the
>> gid index of
>> the vlan address instead of creating rxe over vlan.
>>
>> Signed-off-by: Mohammad Heib <goody698@gmail.com>
>> ---
>> drivers/infiniband/sw/rxe/rxe.c | 6 ++++++
>> drivers/infiniband/sw/rxe/rxe_sysfs.c | 6 ++++++
>> 2 files changed, 12 insertions(+)
>>
>> diff --git a/drivers/infiniband/sw/rxe/rxe.c
>> b/drivers/infiniband/sw/rxe/rxe.c
>> index 5642eefb4ba1..d2076aa7a732 100644
>> --- a/drivers/infiniband/sw/rxe/rxe.c
>> +++ b/drivers/infiniband/sw/rxe/rxe.c
>> @@ -310,6 +310,12 @@ static int rxe_newlink(const char *ibdev_name,
>> struct net_device *ndev)
>> struct rxe_dev *exists;
>> int err = 0;
>> + if (is_vlan_dev(ndev)) {
>> + pr_err("rxe creation allowed on top of a real device only\n");
>> + err = -EPERM;
>> + goto err;
>> + }
>> +
>> exists = rxe_get_dev_from_net(ndev);
>> if (exists) {
>> ib_device_put(&exists->ib_dev);
>> diff --git a/drivers/infiniband/sw/rxe/rxe_sysfs.c
>> b/drivers/infiniband/sw/rxe/rxe_sysfs.c
>> index ccda5f5a3bc0..0a083c3d900a 100644
>> --- a/drivers/infiniband/sw/rxe/rxe_sysfs.c
>> +++ b/drivers/infiniband/sw/rxe/rxe_sysfs.c
>> @@ -73,6 +73,12 @@ static int rxe_param_set_add(const char *val,
>> const struct kernel_param *kp)
>> return -EINVAL;
>> }
>> + if (is_vlan_dev(ndev)) {
>> + pr_err("rxe creation allowed on top of a real device only\n");
>> + err = -EPERM;
>> + goto err;
>> + }
>> +
>> exists = rxe_get_dev_from_net(ndev);
>> if (exists) {
>> ib_device_put(&exists->ib_dev);
>
>
next prev parent reply other threads:[~2020-08-13 9:52 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-11 15:04 [PATCH] RDMA/rxe: prevent rxe creation on top of vlan interface Mohammad Heib
2020-08-13 3:16 ` Zhu Yanjun
2020-08-13 9:52 ` mohammad [this message]
2020-08-13 16:13 ` Zhu Yanjun
2020-08-24 17:14 ` Jason Gunthorpe
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=bf68fa99-3300-0e63-9b72-3bf143b74a3d@gmail.com \
--to=goody698@gmail.com \
--cc=dledford@redhat.com \
--cc=jgg@ziepe.ca \
--cc=kamalheib1@gmail.com \
--cc=leon@kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=zyjzyj2000@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.