forked from luck/tmp_suning_uos_patched
RDMA/cma: Use rdma_read_gid_attr_ndev_rcu to access netdev
To access the netdevice of the GID attribute, use an existing API rdma_read_gid_attr_ndev_rcu(). This further reduces dependency on open access to netdevice of GID attribute. Signed-off-by: Parav Pandit <parav@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
a70c07397f
commit
adb4a57a7a
|
@ -45,6 +45,7 @@
|
|||
#include <net/addrconf.h>
|
||||
#include <net/ip6_route.h>
|
||||
#include <rdma/ib_addr.h>
|
||||
#include <rdma/ib_cache.h>
|
||||
#include <rdma/ib_sa.h>
|
||||
#include <rdma/ib.h>
|
||||
#include <rdma/rdma_netlink.h>
|
||||
|
|
|
@ -1249,6 +1249,7 @@ struct net_device *rdma_read_gid_attr_ndev_rcu(const struct ib_gid_attr *attr)
|
|||
read_unlock_irqrestore(&table->rwlock, flags);
|
||||
return ndev;
|
||||
}
|
||||
EXPORT_SYMBOL(rdma_read_gid_attr_ndev_rcu);
|
||||
|
||||
static int get_lower_dev_vlan(struct net_device *lower_dev, void *data)
|
||||
{
|
||||
|
|
|
@ -1486,6 +1486,7 @@ static struct net_device *
|
|||
roce_get_net_dev_by_cm_event(const struct ib_cm_event *ib_event)
|
||||
{
|
||||
const struct ib_gid_attr *sgid_attr = NULL;
|
||||
struct net_device *ndev;
|
||||
|
||||
if (ib_event->event == IB_CM_REQ_RECEIVED)
|
||||
sgid_attr = ib_event->param.req_rcvd.ppath_sgid_attr;
|
||||
|
@ -1494,8 +1495,15 @@ roce_get_net_dev_by_cm_event(const struct ib_cm_event *ib_event)
|
|||
|
||||
if (!sgid_attr)
|
||||
return NULL;
|
||||
dev_hold(sgid_attr->ndev);
|
||||
return sgid_attr->ndev;
|
||||
|
||||
rcu_read_lock();
|
||||
ndev = rdma_read_gid_attr_ndev_rcu(sgid_attr);
|
||||
if (IS_ERR(ndev))
|
||||
ndev = NULL;
|
||||
else
|
||||
dev_hold(ndev);
|
||||
rcu_read_unlock();
|
||||
return ndev;
|
||||
}
|
||||
|
||||
static struct net_device *cma_get_net_dev(const struct ib_cm_event *ib_event,
|
||||
|
|
|
@ -56,6 +56,7 @@ const struct ib_gid_attr *rdma_find_gid_by_filter(
|
|||
|
||||
int rdma_read_gid_l2_fields(const struct ib_gid_attr *attr,
|
||||
u16 *vlan_id, u8 *smac);
|
||||
struct net_device *rdma_read_gid_attr_ndev_rcu(const struct ib_gid_attr *attr);
|
||||
|
||||
/**
|
||||
* ib_get_cached_pkey - Returns a cached PKey table entry
|
||||
|
|
Loading…
Reference in New Issue
Block a user