RDMA core, drivers and IPoIB fixes
Subsystems (7)
Hi,
This is bunch of fixes to the RDMA stack which we found during code review, static checkers cleanups and by various code inspections.
There is one exception to this batch - patch from Feras to add statistics support to SRIOV VF in IPoIB.
However, the diff stat of that change is so small and I didn't find other batch to attach it.
drivers/infiniband/ulp/ipoib/ipoib_main.c | 1 + 1 file changed, 1 insertion(+)
Thanks
----------------------------------------------------------------
The following changes since commit 1bb77b8c1d57149ed0aa6825255ead80ae584034:
RDMA/netlink: Export node_type (2017-08-10 13:28:14 +0300)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git tags/rdma-next-2017-08-11
for you to fetch changes up to a7e86e252ef327616d6ce20f7eacfa8380851221:
IB/ipoib: Add get statistics support to SRIOV VF (2017-08-11 13:40:48 +0300)
----------------------------------------------------------------
RDMA core, drivers and IPoIB fixes
----------------------------------------------------------------
Erez Shitrit (1):
IB/ipoib: Sync between remove_one to sysfs calls that use rtnl_lock
Feras Daoud (1):
IB/ipoib: Add get statistics support to SRIOV VF
Guy Levi (4):
IB/mlx4: Fix RSS QP type in creation verb
IB/mlx4: Fix struct mlx4_ib_create_wq alignment
IB/mlx4: Remove redundant attribute in mlx4_ib_create_qp_rss struct IB/mlx4: Check that reserved fields in mlx4_ib_create_qp_rss are zero
Leon Romanovsky (11):
IB/cma: Fix erroneous validation of supported default GID type RDMA/mlx4: Don't use uninitialized variable RDMA/(core,ulp): Convert register/unregister event handler to be void RDMA/core: Cleanup device capability enum
RDMA/core: Remove unimplemented node_types and node transport RDMA/core: Delete BUG() from unreachable flow
RDMA/core: Refactor get link layer wrapper
RDMA/mlx4: Remove gfp_mask argument from acquire_group call RDMA/usnic: Fix remove address space warning
RDMA/mthca: Make explicit conversion to 64bit value RDMA/hns: Remove empty functions
Maor Gottlieb (2):
RDMA/mlx4: Fix create qp command alignment IB/mlx5: Add necessary delay drop assignment
Parav Pandit (1):
IB/uverbs: Introduce and use helper functions to copy ah attributes
Talat Batheesh (2):
IB/mlx4: Fix some spelling mistakes
IB/mlx5: Fix some spelling mistakes
drivers/infiniband/core/cache.c | 23 ++--- drivers/infiniband/core/cma.c | 4 +- drivers/infiniband/core/device.c | 8 +- drivers/infiniband/core/sa_query.c | 3 +- drivers/infiniband/core/sysfs.c | 3 - drivers/infiniband/core/uverbs_cmd.c | 124 ++++++++++-------------- drivers/infiniband/core/uverbs_main.c | 13 +-- drivers/infiniband/core/verbs.c | 32 ++---- drivers/infiniband/hw/hns/hns_roce_main.c | 14 --- drivers/infiniband/hw/mlx4/alias_GUID.c | 2 +- drivers/infiniband/hw/mlx4/cq.c | 2 +- drivers/infiniband/hw/mlx4/mcg.c | 9 +- drivers/infiniband/hw/mlx4/qp.c | 18 ++-- drivers/infiniband/hw/mlx5/cq.c | 2 +- drivers/infiniband/hw/mlx5/mad.c | 2 +- drivers/infiniband/hw/mlx5/main.c | 2 + drivers/infiniband/hw/mthca/mthca_cmd.c | 2 +- drivers/infiniband/hw/usnic/usnic_fwd.c | 12 +-- drivers/infiniband/hw/usnic/usnic_fwd.h | 2 +- drivers/infiniband/hw/usnic/usnic_ib_main.c | 10 +- drivers/infiniband/ulp/ipoib/ipoib.h | 1 + drivers/infiniband/ulp/ipoib/ipoib_cm.c | 8 +- drivers/infiniband/ulp/ipoib/ipoib_main.c | 16 ++- drivers/infiniband/ulp/ipoib/ipoib_vlan.c | 22 ++++- drivers/infiniband/ulp/iser/iser_verbs.c | 6 +- drivers/infiniband/ulp/opa_vnic/opa_vnic_vema.c | 7 +- drivers/infiniband/ulp/srpt/ib_srpt.c | 5 +- include/rdma/ib_verbs.h | 26 +++-- include/uapi/rdma/mlx4-abi.h | 6 +- 29 files changed, 155 insertions(+), 229 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20170811105003.7661-1-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
PATCH 1/22 IB/cma: Fix erroneous validation of supported default GID type
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
When rdma_cm is initializing a cma_device it checks if this device supports the preferred default GID type. This check was done in a wrong way and therefore sometimes rdma_cm is coming up with default GID type that is not supported by the device.
Fix that by checking for supported GID type properly.
--- drivers/infiniband/core/cma.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/infiniband/core/cma.c +2 -2
@@ -72,7 +72,7 @@ MODULE_LICENSE("Dual BSD/GPL");#define CMA_MAX_CM_RETRIES 15#define CMA_CM_MRA_SETTING (IB_CM_MRA_FLAG_DELAY | 24)#define CMA_IBOE_PACKET_LIFETIME 18 -#define CMA_PREFERRED_ROCE_GID_TYPE (1 << IB_GID_TYPE_ROCE_UDP_ENCAP) +#define CMA_PREFERRED_ROCE_GID_TYPE IB_GID_TYPE_ROCE_UDP_ENCAPstatic const char *const cma_events[] = { [RDMA_CM_EVENT_ADDR_RESOLVED ] ="address resolved" ,
@@ -4282,7 +4282,7 @@ static void cma_add_one(struct ib_device *device)for (i =rdma_start_port (device); i <=rdma_end_port (device); i++) { supported_gids =roce_gid_type_mask_support (device, i);WARN_ON (!supported_gids); -if (supported_gids &CMA_PREFERRED_ROCE_GID_TYPE ) +if (supported_gids & (1 <<CMA_PREFERRED_ROCE_GID_TYPE )) cma_dev->default_gid_type[i -rdma_start_port (device)] =CMA_PREFERRED_ROCE_GID_TYPE ;else
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 2/22 IB/uverbs: Introduce and use helper functions to copy ah attributes
In reply to a message not in the archiveFrom: Parav Pandit <parav-VPRAkNaXOzVWk0Htik3J/[email protected]>
This patch introduces two helper functions to copy ah attributes from uverbs to internal ib_ah_attr structure and the other way during modify qp and query qp respectively.
--- drivers/infiniband/core/uverbs_cmd.c | 124 ++++++++++++++--------------------- 1 file changed, 49 insertions(+), 75 deletions(-)
drivers/infiniband/core/uverbs_cmd.c +49 -75
@@ -1801,6 +1801,28 @@ ssize_t ib_uverbs_open_qp(struct ib_uverbs_file *file,return ret; } +static void copy_ah_attr_to_uverbs (struct ib_uverbs_qp_dest *uverb_attr, +struct rdma_ah_attr *rdma_attr) +{ +const struct ib_global_route *grh; + + uverb_attr->dlid =rdma_ah_get_dlid (rdma_attr); + uverb_attr->sl =rdma_ah_get_sl (rdma_attr); + uverb_attr->src_path_bits =rdma_ah_get_path_bits (rdma_attr); + uverb_attr->static_rate =rdma_ah_get_static_rate (rdma_attr); + uverb_attr->is_global = !!(rdma_ah_get_ah_flags (rdma_attr) & +IB_AH_GRH ); +if (uverb_attr->is_global) { + grh =rdma_ah_read_grh (rdma_attr); +memcpy (uverb_attr->dgid, grh->dgid.raw,16 ); + uverb_attr->flow_label = grh->flow_label; + uverb_attr->sgid_index = grh->sgid_index; + uverb_attr->hop_limit = grh->hop_limit; + uverb_attr->traffic_class = grh->traffic_class; + } + uverb_attr->port_num =rdma_ah_get_port_num (rdma_attr); +} + ssize_t ib_uverbs_query_qp(struct ib_uverbs_file *file, struct ib_device *ib_dev, const char __user *buf, int in_len,
@@ -1811,7 +1833,6 @@ ssize_t ib_uverbs_query_qp(struct ib_uverbs_file *file,struct ib_qp *qp;struct ib_qp_attr *attr;struct ib_qp_init_attr *init_attr; -const struct ib_global_route *grh;int ret;if (copy_from_user (&cmd, buf,sizeof cmd))
@@ -1861,39 +1882,8 @@ ssize_t ib_uverbs_query_qp(struct ib_uverbs_file *file, resp.alt_port_num = attr->alt_port_num; resp.alt_timeout = attr->alt_timeout; - resp.dest.dlid =rdma_ah_get_dlid (&attr->ah_attr); - resp.dest.sl =rdma_ah_get_sl (&attr->ah_attr); - resp.dest.src_path_bits =rdma_ah_get_path_bits (&attr->ah_attr); - resp.dest.static_rate =rdma_ah_get_static_rate (&attr->ah_attr); - resp.dest.is_global = !!(rdma_ah_get_ah_flags (&attr->ah_attr) & -IB_AH_GRH ); -if (resp.dest.is_global) { - grh =rdma_ah_read_grh (&attr->ah_attr); -memcpy (resp.dest.dgid, grh->dgid.raw,16 ); - resp.dest.flow_label = grh->flow_label; - resp.dest.sgid_index = grh->sgid_index; - resp.dest.hop_limit = grh->hop_limit; - resp.dest.traffic_class = grh->traffic_class; - } - resp.dest.port_num =rdma_ah_get_port_num (&attr->ah_attr); - - resp.alt_dest.dlid =rdma_ah_get_dlid (&attr->alt_ah_attr); - resp.alt_dest.sl =rdma_ah_get_sl (&attr->alt_ah_attr); - resp.alt_dest.src_path_bits =rdma_ah_get_path_bits (&attr->alt_ah_attr); - resp.alt_dest.static_rate - =rdma_ah_get_static_rate (&attr->alt_ah_attr); - resp.alt_dest.is_global - = !!(rdma_ah_get_ah_flags (&attr->alt_ah_attr) & -IB_AH_GRH ); -if (resp.alt_dest.is_global) { - grh =rdma_ah_read_grh (&attr->alt_ah_attr); -memcpy (resp.alt_dest.dgid, grh->dgid.raw,16 ); - resp.alt_dest.flow_label = grh->flow_label; - resp.alt_dest.sgid_index = grh->sgid_index; - resp.alt_dest.hop_limit = grh->hop_limit; - resp.alt_dest.traffic_class = grh->traffic_class; - } - resp.alt_dest.port_num =rdma_ah_get_port_num (&attr->alt_ah_attr); +copy_ah_attr_to_uverbs (&resp.dest, &attr->ah_attr); +copy_ah_attr_to_uverbs (&resp.alt_dest, &attr->alt_ah_attr); resp.max_send_wr = init_attr->cap.max_send_wr; resp.max_recv_wr = init_attr->cap.max_recv_wr;
@@ -1927,6 +1917,28 @@ static int modify_qp_mask(enum ib_qp_type qp_type, int mask) } } +static void copy_ah_attr_from_uverbs (struct ib_device *dev, +struct rdma_ah_attr *rdma_attr, +struct ib_uverbs_qp_dest *uverb_attr) +{ + rdma_attr->type =rdma_ah_find_type (dev, uverb_attr->port_num); +if (uverb_attr->is_global) { +rdma_ah_set_grh (rdma_attr,NULL , + uverb_attr->flow_label, + uverb_attr->sgid_index, + uverb_attr->hop_limit, + uverb_attr->traffic_class); +rdma_ah_set_dgid_raw (rdma_attr, uverb_attr->dgid); + }else { +rdma_ah_set_ah_flags (rdma_attr,0 ); + } +rdma_ah_set_dlid (rdma_attr, uverb_attr->dlid); +rdma_ah_set_sl (rdma_attr, uverb_attr->sl); +rdma_ah_set_path_bits (rdma_attr, uverb_attr->src_path_bits); +rdma_ah_set_static_rate (rdma_attr, uverb_attr->static_rate); +rdma_ah_set_port_num (rdma_attr, uverb_attr->port_num); +} +static int modify_qp (struct ib_uverbs_file *file,struct ib_uverbs_ex_modify_qp *cmd,struct ib_udata *udata) {
@@ -1973,47 +1985,9 @@ static int modify_qp(struct ib_uverbs_file *file, attr->alt_timeout = cmd->base.alt_timeout; attr->rate_limit = cmd->rate_limit; - attr->ah_attr.type =rdma_ah_find_type (qp->device, - cmd->base.dest.port_num); -if (cmd->base.dest.is_global) { -rdma_ah_set_grh (&attr->ah_attr,NULL , - cmd->base.dest.flow_label, - cmd->base.dest.sgid_index, - cmd->base.dest.hop_limit, - cmd->base.dest.traffic_class); -rdma_ah_set_dgid_raw (&attr->ah_attr, cmd->base.dest.dgid); - }else { -rdma_ah_set_ah_flags (&attr->ah_attr,0 ); - } -rdma_ah_set_dlid (&attr->ah_attr, cmd->base.dest.dlid); -rdma_ah_set_sl (&attr->ah_attr, cmd->base.dest.sl); -rdma_ah_set_path_bits (&attr->ah_attr, cmd->base.dest.src_path_bits); -rdma_ah_set_static_rate (&attr->ah_attr, cmd->base.dest.static_rate); -rdma_ah_set_port_num (&attr->ah_attr, - cmd->base.dest.port_num); - - attr->alt_ah_attr.type =rdma_ah_find_type (qp->device, - cmd->base.dest.port_num); -if (cmd->base.alt_dest.is_global) { -rdma_ah_set_grh (&attr->alt_ah_attr,NULL , - cmd->base.alt_dest.flow_label, - cmd->base.alt_dest.sgid_index, - cmd->base.alt_dest.hop_limit, - cmd->base.alt_dest.traffic_class); -rdma_ah_set_dgid_raw (&attr->alt_ah_attr, - cmd->base.alt_dest.dgid); - }else { -rdma_ah_set_ah_flags (&attr->alt_ah_attr,0 ); - } - -rdma_ah_set_dlid (&attr->alt_ah_attr, cmd->base.alt_dest.dlid); -rdma_ah_set_sl (&attr->alt_ah_attr, cmd->base.alt_dest.sl); -rdma_ah_set_path_bits (&attr->alt_ah_attr, - cmd->base.alt_dest.src_path_bits); -rdma_ah_set_static_rate (&attr->alt_ah_attr, - cmd->base.alt_dest.static_rate); -rdma_ah_set_port_num (&attr->alt_ah_attr, - cmd->base.alt_dest.port_num); +copy_ah_attr_from_uverbs (qp->device, &attr->ah_attr, &cmd->base.dest); +copy_ah_attr_from_uverbs (qp->device, &attr->alt_ah_attr, + &cmd->base.alt_dest); ret = ib_modify_qp_with_udata(qp, attr, modify_qp_mask(qp->qp_type,
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20170811105003.7661-3-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Dennis Dalessandro
Reviewed-byRe: [rdma-next 02/22] IB/uverbs: Introduce and use helper functions to copy ah attributes
Quoted 10 lines · Leon Romanovsky
From: Parav Pandit <parav-VPRAkNaXOzVWk0Htik3J/[email protected]>
This patch introduces two helper functions to copy ah attributes from uverbs to internal
ib_ah_attrstructure and the other way during modify qp and query qp respectively.Signed-off-by Leon Romanovsky <[email protected]>---
Thanks for this cleanup.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 3/22 RDMA/mlx4: Don't use uninitialized variable
In reply to a message not in the archiveFrom: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
Avoid usage of uninitialized variable.
--- drivers/infiniband/hw/mlx4/qp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/infiniband/hw/mlx4/qp.c +1 -1
@@ -2034,8 +2034,8 @@ static u8 gid_type_to_qpc(enum ib_gid_type gid_type)*/ static int bringup_rss_rwqs (struct ib_rwq_ind_table *ind_tbl,u8 port_num) { +int err =0 ;int i; -int err;for (i =0 ; i < (1 << ind_tbl->log_ind_tbl_size); i++) {struct ib_wq *ibwq = ind_tbl->ind_tbl[i];
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 4/22 RDMA/mlx4: Fix create qp command alignment
In reply to a message not in the archiveFrom: Maor Gottlieb <maorg-VPRAkNaXOzVWk0Htik3J/[email protected]>
Avoid extra padding by replacing the order of inl_recv_sz and reserved, otherwise 'mlx4_ib_create_qp' structure might be larger than legacy user input leading to copy of some garbage data from the user space buffer.
--- include/uapi/rdma/mlx4-abi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/uapi/rdma/mlx4-abi.h +1 -1
@@ -111,8 +111,8 @@ struct mlx4_ib_create_qp {__u8 log_sq_bb_count;__u8 log_sq_stride;__u8 sq_no_prefetch; -__u32 inl_recv_sz;__u8 reserved; +__u32 inl_recv_sz; };struct mlx4_ib_create_wq {
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 5/22 RDMA/(core,ulp): Convert register/unregister event handler to be void
In reply to a message not in the archiveFrom: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
The functions ib_register_event_handler() and ib_unregister_event_handler() always returned success and they can't fail.
Let's convert those functions to be void, remove redundant checks and cleanup tons of goto statements.
--- drivers/infiniband/core/cache.c | 23 ++++++++--------------- drivers/infiniband/core/device.c | 8 ++------ drivers/infiniband/core/sa_query.c | 3 +-- drivers/infiniband/core/uverbs_main.c | 13 +------------ drivers/infiniband/ulp/ipoib/ipoib_main.c | 10 +--------- drivers/infiniband/ulp/iser/iser_verbs.c | 6 ++---- drivers/infiniband/ulp/opa_vnic/opa_vnic_vema.c | 7 +------ drivers/infiniband/ulp/srpt/ib_srpt.c | 5 ++--- include/rdma/ib_verbs.h | 4 ++-- 9 files changed, 20 insertions(+), 59 deletions(-)
drivers/infiniband/core/cache.c +8 -15
@@ -1199,30 +1199,23 @@ int ib_cache_setup_one(struct ib_device *device) device->cache.ports =kzalloc (sizeof (*device->cache.ports) * (rdma_end_port (device) -rdma_start_port (device) +1 ),GFP_KERNEL ); -if (!device->cache.ports) { - err = -ENOMEM ; - goto out; - } +if (!device->cache.ports) +return -ENOMEM ; err =gid_table_setup_one (device); -if (err) - goto out; +if (err) { +kfree (device->cache.ports); + device->cache.ports =NULL ; +return err; + }for (p =0 ; p <=rdma_end_port (device) -rdma_start_port (device); ++p)ib_cache_update (device, p +rdma_start_port (device), true);INIT_IB_EVENT_HANDLER (&device->cache.event_handler, device, ib_cache_event); - err =ib_register_event_handler (&device->cache.event_handler); -if (err) - goto err; - +ib_register_event_handler (&device->cache.event_handler);return 0 ; - -err: -gid_table_cleanup_one (device); -out: -return err; }void ib_cache_release_one (struct ib_device *device)
drivers/infiniband/core/device.c +2 -6
@@ -746,7 +746,7 @@ EXPORT_SYMBOL(ib_set_client_data);* chapter 11 of the InfiniBand Architecture Specification). This * callback may occur in interrupt context. */ -int ib_register_event_handler (struct ib_event_handler *event_handler) +void ib_register_event_handler (struct ib_event_handler *event_handler) {unsigned long flags;
@@ -754,8 +754,6 @@ int ib_register_event_handler (struct ib_event_handler *event_handler)list_add_tail (&event_handler->list, &event_handler->device->event_handler_list);spin_unlock_irqrestore (&event_handler->device->event_handler_lock, flags); - -return 0 ; }EXPORT_SYMBOL (ib_register_event_handler);
@@ -766,15 +764,13 @@ EXPORT_SYMBOL(ib_register_event_handler);* Unregister an event handler registered with * ib_register_event_handler(). */ -int ib_unregister_event_handler (struct ib_event_handler *event_handler) +void ib_unregister_event_handler (struct ib_event_handler *event_handler) {unsigned long flags;spin_lock_irqsave (&event_handler->device->event_handler_lock, flags);list_del (&event_handler->list);spin_unlock_irqrestore (&event_handler->device->event_handler_lock, flags); - -return 0 ; }EXPORT_SYMBOL (ib_unregister_event_handler);
drivers/infiniband/core/sa_query.c +1 -2
@@ -2408,8 +2408,7 @@ static void ib_sa_add_one(struct ib_device *device)*/ INIT_IB_EVENT_HANDLER (&sa_dev->event_handler, device, ib_sa_event); -if (ib_register_event_handler (&sa_dev->event_handler)) - goto err; +ib_register_event_handler (&sa_dev->event_handler);for (i =0 ; i <= e - s; ++i) {if (rdma_cap_ib_sa (device, i +1 ))
drivers/infiniband/core/uverbs_main.c +1 -12
@@ -594,7 +594,6 @@ struct file *ib_uverbs_alloc_async_event_file(struct ib_uverbs_file *uverbs_file {struct ib_uverbs_async_event_file *ev_file;struct file *filp; -int ret; ev_file =kzalloc (sizeof (*ev_file),GFP_KERNEL );if (!ev_file)
@@ -620,21 +619,11 @@ struct file *ib_uverbs_alloc_async_event_file(struct ib_uverbs_file *uverbs_fileINIT_IB_EVENT_HANDLER (&uverbs_file->event_handler, ib_dev, ib_uverbs_event_handler); - ret =ib_register_event_handler (&uverbs_file->event_handler); -if (ret) - goto err_put_file; - +ib_register_event_handler (&uverbs_file->event_handler);/* At that point async file stuff was fully set */ return filp; -err_put_file: -fput (filp); -kref_put (&uverbs_file->async_file->ref, - ib_uverbs_release_async_event_file); - uverbs_file->async_file =NULL ; -return ERR_PTR (ret); - err_put_refs:kref_put (&ev_file->uverbs_file->ref, ib_uverbs_release_file);kref_put (&ev_file->ref, ib_uverbs_release_async_event_file);
drivers/infiniband/ulp/ipoib/ipoib_main.c +1 -9
@@ -2223,13 +2223,7 @@ static struct net_device *ipoib_add_port(const char *format,INIT_IB_EVENT_HANDLER (&priv->event_handler, priv->ca, ipoib_event); - result =ib_register_event_handler (&priv->event_handler); -if (result <0 ) { -printk (KERN_WARNING "%s: ib_register_event_handler failed for " -"port %d (ret = %d)\n" , - hca->name, port, result); - goto event_failed; - } +ib_register_event_handler (&priv->event_handler); result =register_netdev (priv->dev);if (result) {
@@ -2262,8 +2256,6 @@ static struct net_device *ipoib_add_port(const char *format,set_bit (IPOIB_STOP_NEIGH_GC , &priv->flags);cancel_delayed_work (&priv->neigh_reap_task);flush_workqueue (priv->wq); - -event_failed:ipoib_dev_cleanup (priv->dev); device_init_failed:
drivers/infiniband/ulp/iser/iser_verbs.c +2 -4
@@ -106,9 +106,7 @@ static int iser_create_device_ib_res(struct iser_device *device)INIT_IB_EVENT_HANDLER (&device->event_handler, ib_dev, iser_event_handler); -if (ib_register_event_handler (&device->event_handler)) - goto cq_err; - +ib_register_event_handler (&device->event_handler);return 0 ; cq_err:
@@ -141,7 +139,7 @@ static void iser_free_device_ib_res(struct iser_device *device) comp->cq =NULL ; } - (void )ib_unregister_event_handler (&device->event_handler); +ib_unregister_event_handler (&device->event_handler);ib_dealloc_pd (device->pd);kfree (device->comps);
drivers/infiniband/ulp/opa_vnic/opa_vnic_vema.c +1 -6
@@ -954,12 +954,7 @@ static int vema_register(struct opa_vnic_ctrl_port *cport)INIT_IB_EVENT_HANDLER (&port->event_handler, cport->ibdev, opa_vnic_event); - ret =ib_register_event_handler (&port->event_handler); -if (ret) { -c_err ("port %d: event handler register failed\n" , i); -vema_unregister (cport); -return ret; - } +ib_register_event_handler (&port->event_handler);idr_init (&port->vport_idr);mutex_init (&port->lock);
drivers/infiniband/ulp/srpt/ib_srpt.c +2 -3
@@ -2238,7 +2238,7 @@ static int srpt_write_pending(struct se_cmd *se_cmd) cqe, first_wr); cqe =NULL ; } - + ret =ib_post_send (ch->qp, first_wr, &bad_wr);if (ret) { pr_err("%s: ib_post_send() returned %d for %d (avail: %d)\n",
@@ -2530,8 +2530,7 @@ static void srpt_add_one(struct ib_device *device)INIT_IB_EVENT_HANDLER (&sdev->event_handler, sdev->device, srpt_event_handler); -if (ib_register_event_handler (&sdev->event_handler)) - goto err_cm; +ib_register_event_handler (&sdev->event_handler); sdev->ioctx_ring = (struct srpt_recv_ioctx **) srpt_alloc_ioctx_ring(sdev, sdev->srq_size,
include/rdma/ib_verbs.h +2 -2
@@ -2409,8 +2409,8 @@ int ib_modify_qp_is_ok(enum ib_qp_state cur_state, enum ib_qp_state next_state, enum ib_qp_type type, enum ib_qp_attr_mask mask, enum rdma_link_layer ll); -int ib_register_event_handler (struct ib_event_handler *event_handler); -int ib_unregister_event_handler (struct ib_event_handler *event_handler); +void ib_register_event_handler (struct ib_event_handler *event_handler); +void ib_unregister_event_handler (struct ib_event_handler *event_handler);void ib_dispatch_event (struct ib_event *event); int ib_query_port(struct ib_device *device,
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 6/22 RDMA/core: Cleanup device capability enum
In reply to a message not in the archiveFrom: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
Cleanup patch prior exporting the ib_device_cap_flags to the user space. In this patch, we are aligning the indentation, removing IB_DEVICE_INIT_TYPE and IB_DEVICE_RESERVED fields, because it is not used in the kernel.
--- include/rdma/ib_verbs.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
include/rdma/ib_verbs.h +3 -3
@@ -170,7 +170,7 @@ enum ib_device_cap_flags {IB_DEVICE_UD_AV_PORT_ENFORCE = (1 <<6 ),IB_DEVICE_CURR_QP_STATE_MOD = (1 <<7 ),IB_DEVICE_SHUTDOWN_PORT = (1 <<8 ), -IB_DEVICE_INIT_TYPE = (1 <<9 ), +/* Not in use, former INIT_TYPE = (1 << 9),*/ IB_DEVICE_PORT_ACTIVE_EVENT = (1 <<10 ),IB_DEVICE_SYS_IMAGE_GUID = (1 <<11 ), IB_DEVICE_RC_RNR_NAK_GEN = (1 << 12),
@@ -185,7 +185,7 @@ enum ib_device_cap_flags {* which will always contain a usable lkey. */ IB_DEVICE_LOCAL_DMA_LKEY = (1 <<15 ), -IB_DEVICE_RESERVED /* old SEND_W_INV */ = (1 <<16 ), +/* Reserved, old SEND_W_INV = (1 << 16),*/ IB_DEVICE_MEM_WINDOW = (1 << 17),/* * Devices should set IB_DEVICE_UD_IP_SUM if they support
@@ -220,7 +220,7 @@ enum ib_device_cap_flags {* of I/O operations with single completion queue managed * by hardware. */ -IB_DEVICE_CROSS_CHANNEL = (1 <<27 ), +IB_DEVICE_CROSS_CHANNEL = (1 <<27 ),IB_DEVICE_MANAGED_FLOW_STEERING = (1 <<29 ),IB_DEVICE_SIGNATURE_HANDOVER = (1 <<30 ), IB_DEVICE_ON_DEMAND_PAGING = (1ULL << 31),
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 7/22 RDMA/core: Remove unimplemented node_types and node transport
In reply to a message not in the archiveFrom: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
There is no need to carry code, which is not implemented in any underlying hardware. This patch removes unimplemented node_types and their respective node transport layers.
--- drivers/infiniband/core/sysfs.c | 3 --- drivers/infiniband/core/verbs.c | 5 ----- include/rdma/ib_verbs.h | 16 ++++++---------- 3 files changed, 6 insertions(+), 18 deletions(-)
drivers/infiniband/core/sysfs.c +0 -3
@@ -1146,10 +1146,7 @@ static ssize_t show_node_type(struct device *device,switch (dev->node_type) {case RDMA_NODE_IB_CA :return sprintf (buf,"%d: CA\n" , dev->node_type);case RDMA_NODE_RNIC :return sprintf (buf,"%d: RNIC\n" , dev->node_type); -case RDMA_NODE_USNIC :return sprintf (buf,"%d: usNIC\n" , dev->node_type);case RDMA_NODE_USNIC_UDP :return sprintf (buf,"%d: usNIC UDP\n" , dev->node_type); -case RDMA_NODE_IB_SWITCH :return sprintf (buf,"%d: switch\n" , dev->node_type); -case RDMA_NODE_IB_ROUTER :return sprintf (buf,"%d: router\n" , dev->node_type);default :return sprintf (buf,"%d: <unknown>\n" , dev->node_type); } }
drivers/infiniband/core/verbs.c +0 -5
@@ -182,13 +182,9 @@ rdma_node_get_transport(enum rdma_node_type node_type) {switch (node_type) {case RDMA_NODE_IB_CA : -case RDMA_NODE_IB_SWITCH : -case RDMA_NODE_IB_ROUTER :return RDMA_TRANSPORT_IB ;case RDMA_NODE_RNIC :return RDMA_TRANSPORT_IWARP ; -case RDMA_NODE_USNIC : -return RDMA_TRANSPORT_USNIC ;case RDMA_NODE_USNIC_UDP :return RDMA_TRANSPORT_USNIC_UDP ;default :
@@ -207,7 +203,6 @@ enum rdma_link_layer rdma_port_get_link_layer(struct ib_device *device, u8 port_case RDMA_TRANSPORT_IB :return IB_LINK_LAYER_INFINIBAND ;case RDMA_TRANSPORT_IWARP : -case RDMA_TRANSPORT_USNIC :case RDMA_TRANSPORT_USNIC_UDP :return IB_LINK_LAYER_ETHERNET ;default :
include/rdma/ib_verbs.h +6 -10
@@ -95,12 +95,9 @@ struct ib_gid_attr {enum rdma_node_type {/* IB values map to NodeInfo:NodeType. */ -RDMA_NODE_IB_CA =1 , -RDMA_NODE_IB_SWITCH , -RDMA_NODE_IB_ROUTER , -RDMA_NODE_RNIC , -RDMA_NODE_USNIC , -RDMA_NODE_USNIC_UDP , +RDMA_NODE_IB_CA =1 , +RDMA_NODE_RNIC =4 , +RDMA_NODE_USNIC_UDP =6 , };enum {
@@ -109,10 +106,9 @@ enum { };enum rdma_transport_type { -RDMA_TRANSPORT_IB , -RDMA_TRANSPORT_IWARP , -RDMA_TRANSPORT_USNIC , -RDMA_TRANSPORT_USNIC_UDP +RDMA_TRANSPORT_IB =0 , +RDMA_TRANSPORT_IWARP =1 , +RDMA_TRANSPORT_USNIC_UDP =3 , };enum rdma_protocol_type {
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20170811105003.7661-8-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Dennis Dalessandro
Reviewed-byRe: [rdma-next 07/22] RDMA/core: Remove unimplemented node_types and node transport
Quoted 7 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
There is no need to carry code, which is not implemented in any underlying hardware. This patch removes unimplemented
node_typesand their respective node transport layers.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [rdma-next 07/22] RDMA/core: Remove unimplemented node_types and node transport
In reply to a message not in the archiveQuoted 5 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
There is no need to carry code, which is not implemented in any underlying hardware. This patch removes unimplemented
node_typesand their respective node transport layers.
We have supported IB switches and routers since day 1 of OpenIB and linux-rdma. Although not the original intent, there are still no in-tree consumers, but there are several out of tree ones. Every time this issue has come up in the past, it has been decided to continue to support them. Effectively, IB routers and switches are grandfathered.
Rather than doing this, perhaps a better approach would be to supply some skeleton drivers for IB switch and router.
-- Hal
Quoted 73 lines
--- drivers/infiniband/core/sysfs.c | 3 --- drivers/infiniband/core/verbs.c | 5 ----- include/rdma/ib_verbs.h | 16 ++++++---------- 3 files changed, 6 insertions(+), 18 deletions(-)drivers/infiniband/core/sysfs.c +0
-3@@ -1146,10 +1146,7 @@ static ssize_t show_node_type(struct device *device,switch (dev->node_type) {case RDMA_NODE_IB_CA :return sprintf (buf,"%d: CA\n" , dev->node_type);case RDMA_NODE_RNIC :return sprintf (buf,"%d: RNIC\n" , dev->node_type); -case RDMA_NODE_USNIC :return sprintf (buf,"%d: usNIC\n" , dev->node_type);case RDMA_NODE_SNIC_UDP :return sprintf (buf,"%d: usNIC UDP\n" , dev->node_type); -case RDMA_NODE_IB_SWITCH :return sprintf (buf,"%d: switch\n" , dev->node_type); -case RDMA_NODE_IB_ROUTER :return sprintf (buf,"%d: router\n" , dev->node_type);default :return sprintf (buf,"%d: <unknown>\n" , dev->node_type); } }drivers/infiniband/core/verbs.c +0
-5@@ -182,13 +182,9 @@ rdma_node_get_transport(enum rdma_node_type node_type) {switch (node_type) {case RDMA_NODE_IB_CA : -case RDMA_NODE_IB_SWITCH : -case RDMA_NODE_IB_ROUTER :return RDMA_TRANSPORT_IB ;case RDMA_NODE_RNIC :return RDMA_TRANSPORT_IWARP ; -case RDMA_NODE_USNIC : -return RDMA_TRANSPORT_USNIC ;case RDMA_NODE_USNIC_UDP :return RDMA_TRANSPORT_USNIC_UDP ;default :@@ -207,7 +203,6 @@ enum rdma_link_layer rdma_port_get_link_layer(struct ib_device *device, u8 port_case RDMA_TRANSPORT_IB :return IB_LINK_LAYER_INFINIBAND ;case RDMA_TRANSPORT_IWARP : -case RDMA_TRANSPORT_USNIC :case RDMA_TRANSPORT_USNIC_UDP :return IB_LINK_LAYER_ETHERNET ;default :include/rdma/ib_verbs.h +3
-6@@ -95,12 +95,9 @@ struct ib_gid_attr {enum rdma_node_type {/* IB values map to NodeInfo:NodeType. */ -RDMA_NODE_IB_CA =1 , -RDMA_NODE_IB_SWITCH , -RDMA_NODE_IB_ROUTER , -RDMA_NODE_RNIC , -RDMA_NODE_USNIC , -RDMA_NODE_USNIC_UDP , +RDMA_NODE_IB_CA =1 , +RDMA_NODE_RNIC =4 , +RDMA_NODE_USNIC_UDP =6 , };enum {@@ -109,10 +106,9 @@ enum { };enum rdma_transport_type {
include/rdma/ib_verbs.h enum { · line 114
Quoted 10 lines
include/rdma/ib_verbs.h +3
-4-RDMA_TRANSPORT_IB , -RDMA_TRANSPORT_IWARP , -RDMA_TRANSPORT_USNIC , -RDMA_TRANSPORT_USNIC_UDP +RDMA_TRANSPORT_IB =0 , +RDMA_TRANSPORT_IWARP =1 , + RDMA_TRANSPORT_USNIC_UDP = 3, }; enum rdma_protocol_type {
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 36aea320-a018-040d-c44a-3a23d54771cd-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org
Re: [rdma-next 07/22] RDMA/core: Remove unimplemented node_types and node transport
Quoted 7 lines · Hal Rosenstock
Quoted 5 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
There is no need to carry code, which is not implemented in any underlying hardware. This patch removes unimplemented
node_typesand their respective node transport layers.
Quoted 5 lines
We have supported IB switches and routers since day 1 of OpenIB and linux-rdma. Although not the original intent, there are still no in-tree consumers, but there are several out of tree ones. Every time this issue has come up in the past, it has been decided to continue to support them. Effectively, IB routers and switches are grandfathered.
I swear I remember having this exact conversation but can't find it in my mail. Figures. Well regardless...
Quoted 2 lines
Rather than doing this, perhaps a better approach would be to supply some skeleton drivers for IB switch and router.
If someone were to volunteer to do that I could see leaving the functionality, no not functionality, the non-functioning code, leaving that in on a _temporary_ basis. In reality though it's been years that this has been sitting there.
I can see the grandfather clause applying to stuff in the kernel tree, or even publicly available implementations at a stretch (even then still probably not). If there any any out of tree switch/router drivers, what is the likelihood that they support the latest and greatest kernel out of the box anyway? Is this really going to be a huge problem for them? I doubt it.
On the flip side, is this code that's been there for forever and a day really that big of a problem? No not really. It would be good to clean it up if no one has that big of a problem and I'm not going to argue very strongly on one side or the other.
-Denny
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 72f3047f-8b29-435d-57bf-be0734606368-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org
Re: [rdma-next 07/22] RDMA/core: Remove unimplemented node_types and node transport
Quoted 8 lines · Dennis Dalessandro
Quoted 7 lines · Hal Rosenstock
Quoted 5 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
There is no need to carry code, which is not implemented in any underlying hardware. This patch removes unimplemented
node_typesand their respective node transport layers.
Quoted 8 lines
Quoted 5 lines
We have supported IB switches and routers since day 1 of OpenIB and linux-rdma. Although not the original intent, there are still no in-tree consumers, but there are several out of tree ones. Every time this issue has come up in the past, it has been decided to continue to support them. Effectively, IB routers and switches are grandfathered.
I swear I remember having this exact conversation but can't find it in my mail. Figures. Well regardless...
I posted it as material for -rcX and at that time we discussed it in regards of bnxt_re unimplemented functions.
Thanks
Re: [rdma-next 07/22] RDMA/core: Remove unimplemented node_types and node transport
In reply to a message not in the archiveQuoted 7 lines · Hal Rosenstock
Quoted 5 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
There is no need to carry code, which is not implemented in any underlying hardware. This patch removes unimplemented
node_typesand their respective node transport layers.
Quoted 5 lines
We have supported IB switches and routers since day 1 of OpenIB and linux-rdma. Although not the original intent, there are still no in-tree consumers, but there are several out of tree ones. Every time this issue has come up in the past, it has been decided to continue to support them. Effectively, IB routers and switches are grandfathered.
If from day 1, they didn't care to provide such implementation, I don't feel any obligations to care about them now.
Quoted 3 lines
Rather than doing this, perhaps a better approach would be to supply some skeleton drivers for IB switch and router.
Feel free to revert this patch, once you introduce such skeleton, till when it is dead code and should be removed.
Quoted 86 lines
-- Hal
Quoted 83 lines
--- drivers/infiniband/core/sysfs.c | 3 --- drivers/infiniband/core/verbs.c | 5 ----- include/rdma/ib_verbs.h | 16 ++++++---------- 3 files changed, 6 insertions(+), 18 deletions(-)drivers/infiniband/core/sysfs.c +0
-3@@ -1146,10 +1146,7 @@ static ssize_t show_node_type(struct device *device,switch (dev->node_type) {case RDMA_NODE_IB_CA :return sprintf (buf,"%d: CA\n" , dev->node_type);case RDMA_NODE_RNIC :return sprintf (buf,"%d: RNIC\n" , dev->node_type); -case RDMA_NODE_USNIC :return sprintf (buf,"%d: usNIC\n" , dev->node_type);case RDMA_NODE_SNIC_UDP :return sprintf (buf,"%d: usNIC UDP\n" , dev->node_type); -case RDMA_NODE_IB_SWITCH :return sprintf (buf,"%d: switch\n" , dev->node_type); -case RDMA_NODE_IB_ROUTER :return sprintf (buf,"%d: router\n" , dev->node_type);default :return sprintf (buf,"%d: <unknown>\n" , dev->node_type); } }drivers/infiniband/core/verbs.c +0
-5@@ -182,13 +182,9 @@ rdma_node_get_transport(enum rdma_node_type node_type) {switch (node_type) {case RDMA_NODE_IB_CA : -case RDMA_NODE_IB_SWITCH : -case RDMA_NODE_IB_ROUTER :return RDMA_TRANSPORT_IB ;case RDMA_NODE_RNIC :return RDMA_TRANSPORT_IWARP ; -case RDMA_NODE_USNIC : -return RDMA_TRANSPORT_USNIC ;case RDMA_NODE_USNIC_UDP :return RDMA_TRANSPORT_USNIC_UDP ;default :@@ -207,7 +203,6 @@ enum rdma_link_layer rdma_port_get_link_layer(struct ib_device *device, u8 port_case RDMA_TRANSPORT_IB :return IB_LINK_LAYER_INFINIBAND ;case RDMA_TRANSPORT_IWARP : -case RDMA_TRANSPORT_USNIC :case RDMA_TRANSPORT_USNIC_UDP :return IB_LINK_LAYER_ETHERNET ;default :include/rdma/ib_verbs.h +6
-10@@ -95,12 +95,9 @@ struct ib_gid_attr {enum rdma_node_type {/* IB values map to NodeInfo:NodeType. */ -RDMA_NODE_IB_CA =1 , -RDMA_NODE_IB_SWITCH , -RDMA_NODE_IB_ROUTER , -RDMA_NODE_RNIC , -RDMA_NODE_USNIC , -RDMA_NODE_USNIC_UDP , +RDMA_NODE_IB_CA =1 , +RDMA_NODE_RNIC =4 , +RDMA_NODE_USNIC_UDP =6 , };enum {@@ -109,10 +106,9 @@ enum { };enum rdma_transport_type { -RDMA_TRANSPORT_IB , -RDMA_TRANSPORT_IWARP , -RDMA_TRANSPORT_USNIC , -RDMA_TRANSPORT_USNIC_UDP +RDMA_TRANSPORT_IB =0 , +RDMA_TRANSPORT_IWARP =1 , +RDMA_TRANSPORT_USNIC_UDP =3 , };enum rdma_protocol_type {
PATCH 8/22 RDMA/core: Delete BUG() from unreachable flow
In reply to a message not in the archiveFrom: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
Remove call to BUG() in case wrong node_type was provided. This flow is unreachable, because node_types are supplied from specific enum.
--- drivers/infiniband/core/verbs.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)
drivers/infiniband/core/verbs.c +5 -9
@@ -180,17 +180,13 @@ EXPORT_SYMBOL(ib_rate_to_mbps); __attribute_const__ enum rdma_transport_typerdma_node_get_transport (enum rdma_node_type node_type) { -switch (node_type) { -case RDMA_NODE_IB_CA : +if (node_type ==RDMA_NODE_IB_CA )return RDMA_TRANSPORT_IB ; -case RDMA_NODE_RNIC : + +if (node_type ==RDMA_NODE_RNIC )return RDMA_TRANSPORT_IWARP ; -case RDMA_NODE_USNIC_UDP : -return RDMA_TRANSPORT_USNIC_UDP ; -default : -BUG (); -return 0 ; - } + +return RDMA_TRANSPORT_USNIC_UDP ; }EXPORT_SYMBOL (rdma_node_get_transport);
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20170811105003.7661-9-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Re: [rdma-next 08/22] RDMA/core: Delete BUG() from unreachable flow
Quoted 18 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
Remove call to
BUG()in case wrongnode_typewas provided. This flow is unreachable, becausenode_typesare supplied from specific enum.Reviewed-by Dennis Dalessandro <[email protected]>--- drivers/infiniband/core/verbs.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)drivers/infiniband/core/verbs.c +0
-0@@ -180,17 +180,13 @@ EXPORT_SYMBOL(ib_rate_to_mbps); __attribute_const__ enum rdma_transport_type
drivers/infiniband/core/verbs.c EXPORT_SYMBOL(ib_rate_to_mbps); · line 187
Quoted 10 lines
drivers/infiniband/core/verbs.c +3
-3rdma_node_get_transport(enum rdma_node_type node_type) { -switch (node_type) { -case RDMA_NODE_IB_CA : +if (node_type ==RDMA_NODE_IB_CA )return RDMA_TRANSPORT_IB ; -case RDMA_NODE_RNIC : + +if (node_type ==RDMA_NODE_RNIC )return RDMA_TRANSPORT_IWARP ;
Looking at for-next, there is case for RDMA_NODE_USNIC. Which branch this patch is based on?
Quoted 18 lines
drivers/infiniband/core/verbs.c +2
-6-case RDMA_NODE_USNIC_UDP : -return RDMA_TRANSPORT_USNIC_UDP ; -default : -BUG (); -return 0 ; - } + +return RDMA_TRANSPORT_USNIC_UDP ; }EXPORT_SYMBOL (rdma_node_get_transport);Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [rdma-next 08/22] RDMA/core: Delete BUG() from unreachable flow
Quoted 24 lines · Yuval Shaia
Quoted 23 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
Remove call to
BUG()in case wrongnode_typewas provided. This flow is unreachable, becausenode_typesare supplied from specific enum.Reviewed-by Dennis Dalessandro <[email protected]>--- drivers/infiniband/core/verbs.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)drivers/infiniband/core/verbs.c +1
-2@@ -180,17 +180,13 @@ EXPORT_SYMBOL(ib_rate_to_mbps); __attribute_const__ enum rdma_transport_typerdma_node_get_transport (enum rdma_node_type node_type) { -switch (node_type) { -case RDMA_NODE_IB_CA : +if (node_type ==RDMA_NODE_IB_CA )
Quoted 8 lines
drivers/infiniband/core/verbs.c EXPORT_SYMBOL(ib_rate_to_mbps); · line 187
Quoted 5 lines
drivers/infiniband/core/verbs.c +2
-1return RDMA_TRANSPORT_IB ; -case RDMA_NODE_RNIC : + +if (node_type ==RDMA_NODE_RNIC )return RDMA_TRANSPORT_IWARP ;Looking at for-next, there is case for
RDMA_NODE_USNIC. Which branch this patch is based on?
for-next, in case of RDMA_NODE_USNIC, we are using the RDMA_TRANSPORT_USNIC_UDP return type.
Quoted 19 lines
Quoted 19 lines
drivers/infiniband/core/verbs.c +2
-7-case RDMA_NODE_USNIC_UDP : -return RDMA_TRANSPORT_USNIC_UDP ; -default : -BUG (); -return 0 ; - } + +return RDMA_TRANSPORT_USNIC_UDP ; }EXPORT_SYMBOL (rdma_node_get_transport); --2.14.0
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20170813102904.GV24282-U/[email protected]
Re: [rdma-next 08/22] RDMA/core: Delete BUG() from unreachable flow
Quoted 34 lines · Leon Romanovsky
Quoted 24 lines · Yuval Shaia
Quoted 23 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
Remove call to
BUG()in case wrongnode_typewas provided. This flow is unreachable, becausenode_typesare supplied from specific enum.Reviewed-by Dennis Dalessandro <[email protected]>--- drivers/infiniband/core/verbs.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)drivers/infiniband/core/verbs.c +1
-2@@ -180,17 +180,13 @@ EXPORT_SYMBOL(ib_rate_to_mbps); __attribute_const__ enum rdma_transport_typerdma_node_get_transport (enum rdma_node_type node_type) { -switch (node_type) { -case RDMA_NODE_IB_CA : +if (node_type ==RDMA_NODE_IB_CA )Quoted 8 lines
drivers/infiniband/core/verbs.c EXPORT_SYMBOL(ib_rate_to_mbps); · line 187
Quoted 5 lines
drivers/infiniband/core/verbs.c +2
-1return RDMA_TRANSPORT_IB ; -case RDMA_NODE_RNIC : + +if (node_type ==RDMA_NODE_RNIC )return RDMA_TRANSPORT_IWARP ;Looking at for-next, there is case for
RDMA_NODE_USNIC. Which branch this patch is based on?
Quoted 2 lines
for-next, in case of
RDMA_NODE_USNIC, we are using theRDMA_TRANSPORT_USNIC_UDPreturn type.
I see, but then i would expect to see these lines in the patch:
- case RDMA_NODE_USNIC:
- return RDMA_TRANSPORT_USNIC;
Quoted 13 lines
Quoted 13 lines
Quoted 13 lines
drivers/infiniband/core/verbs.c +2
-6-case RDMA_NODE_USNIC_UDP : -return RDMA_TRANSPORT_USNIC_UDP ; -default : -BUG (); -return 0 ; - } + +return RDMA_TRANSPORT_USNIC_UDP ; }EXPORT_SYMBOL (rdma_node_get_transport);
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
--
2.14.0--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [rdma-next 08/22] RDMA/core: Delete BUG() from unreachable flow
Quoted 39 lines · Yuval Shaia
Quoted 34 lines · Leon Romanovsky
Quoted 24 lines · Yuval Shaia
Quoted 23 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
Remove call to
BUG()in case wrongnode_typewas provided. This flow is unreachable, becausenode_typesare supplied from specific enum.Reviewed-by Dennis Dalessandro <[email protected]>--- drivers/infiniband/core/verbs.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)drivers/infiniband/core/verbs.c +1
-2@@ -180,17 +180,13 @@ EXPORT_SYMBOL(ib_rate_to_mbps); __attribute_const__ enum rdma_transport_typerdma_node_get_transport (enum rdma_node_type node_type) { -switch (node_type) { -case RDMA_NODE_IB_CA : +if (node_type ==RDMA_NODE_IB_CA )Quoted 8 lines
drivers/infiniband/core/verbs.c EXPORT_SYMBOL(ib_rate_to_mbps); · line 187
Quoted 5 lines
drivers/infiniband/core/verbs.c +2
-1return RDMA_TRANSPORT_IB ; -case RDMA_NODE_RNIC : + +if (node_type ==RDMA_NODE_RNIC )return RDMA_TRANSPORT_IWARP ;Looking at for-next, there is case for
RDMA_NODE_USNIC. Which branch this patch is based on?Quoted 2 lines
for-next, in case of
RDMA_NODE_USNIC, we are using theRDMA_TRANSPORT_USNIC_UDPreturn type.I see, but then i would expect to see these lines in the patch:
Review
Quoted 2 lines
(quoted diff) +0
-2- case RDMA_NODE_USNIC: - return RDMA_TRANSPORT_USNIC;
Please see patch #7 from this series.
Thanks
A message that is not in the archive (sent off-list or not yet received): 20170813110017.GX24282-U/[email protected]
Yuval Shaia
Reviewed-byRe: [rdma-next 08/22] RDMA/core: Delete BUG() from unreachable flow
Quoted 36 lines · Leon Romanovsky
Quoted 35 lines · Yuval Shaia
Quoted 34 lines · Leon Romanovsky
Quoted 32 lines · Yuval Shaia
Quoted 18 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
Remove call to
BUG()in case wrongnode_typewas provided. This flow is unreachable, becausenode_typesare supplied from specific enum.Reviewed-by Dennis Dalessandro <[email protected]>--- drivers/infiniband/core/verbs.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)drivers/infiniband/core/verbs.c +0
-0@@ -180,17 +180,13 @@ EXPORT_SYMBOL(ib_rate_to_mbps); __attribute_const__ enum rdma_transport_typedrivers/infiniband/core/verbs.c EXPORT_SYMBOL(ib_rate_to_mbps); · line 187
Quoted 10 lines
drivers/infiniband/core/verbs.c +3
-3rdma_node_get_transport(enum rdma_node_type node_type) { -switch (node_type) { -case RDMA_NODE_IB_CA : +if (node_type ==RDMA_NODE_IB_CA )return RDMA_TRANSPORT_IB ; -case RDMA_NODE_RNIC : + +if (node_type ==RDMA_NODE_RNIC )return RDMA_TRANSPORT_IWARP ;Looking at for-next, there is case for
RDMA_NODE_USNIC. Which branch this patch is based on?
Quoted 8 lines
Review
Quoted 6 lines
Quoted 2 lines
for-next, in case of
RDMA_NODE_USNIC, we are using theRDMA_TRANSPORT_USNIC_UDPreturn type.I see, but then i would expect to see these lines in the patch:
(quoted diff) +0
-2- case RDMA_NODE_USNIC: - return RDMA_TRANSPORT_USNIC;Please see patch #7 from this series.
Oops,
Quoted 2 lines
Thanks
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 9/22 RDMA/core: Refactor get link layer wrapper
In reply to a message not in the archiveFrom: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
The return values from rdma_node_get_transport() are strict and IB_LINK_LAYER_UNSPECIFIED is unreachable in this flow.
--- drivers/infiniband/core/verbs.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)
drivers/infiniband/core/verbs.c +5 -8
@@ -192,18 +192,15 @@ EXPORT_SYMBOL(rdma_node_get_transport);enum rdma_link_layer rdma_port_get_link_layer (struct ib_device *device,u8 port_num) { +enum rdma_transport_type lt;if (device->get_link_layer)return device->get_link_layer (device, port_num); -switch (rdma_node_get_transport (device->node_type)) { -case RDMA_TRANSPORT_IB : + lt =rdma_node_get_transport (device->node_type); +if (lt ==RDMA_TRANSPORT_IB )return IB_LINK_LAYER_INFINIBAND ; -case RDMA_TRANSPORT_IWARP : -case RDMA_TRANSPORT_USNIC_UDP : -return IB_LINK_LAYER_ETHERNET ; -default : -return IB_LINK_LAYER_UNSPECIFIED ; - } + +return IB_LINK_LAYER_ETHERNET ; }EXPORT_SYMBOL (rdma_port_get_link_layer);
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20170811105003.7661-10-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Yuval Shaia
Reviewed-byRe: [rdma-next 09/22] RDMA/core: Refactor get link layer wrapper
Quoted 29 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
The return values from
rdma_node_get_transport()are strict andIB_LINK_LAYER_UNSPECIFIEDis unreachable in this flow.Reviewed-by Dennis Dalessandro <[email protected]>--- drivers/infiniband/core/verbs.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)drivers/infiniband/core/verbs.c +3
-3@@ -192,18 +192,15 @@ EXPORT_SYMBOL(rdma_node_get_transport);enum rdma_link_layer rdma_port_get_link_layer (struct ib_device *device,u8 port_num) { +enum rdma_transport_type lt;if (device->get_link_layer)return device->get_link_layer (device, port_num); -switch (rdma_node_get_transport (device->node_type)) { -case RDMA_TRANSPORT_IB : + lt =rdma_node_get_transport (device->node_type); +if (lt ==RDMA_TRANSPORT_IB )return IB_LINK_LAYER_INFINIBAND ; -case RDMA_TRANSPORT_IWARP :
drivers/infiniband/core/verbs.c EXPORT_SYMBOL(rdma_node_get_transport); · line 206
Quoted 10 lines
drivers/infiniband/core/verbs.c +2
-5-case RDMA_TRANSPORT_USNIC_UDP : -return IB_LINK_LAYER_ETHERNET ; -default : -return IB_LINK_LAYER_UNSPECIFIED ; - } + +return IB_LINK_LAYER_ETHERNET ; }EXPORT_SYMBOL (rdma_port_get_link_layer);
Quoted 7 lines
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 10/22 RDMA/mlx4: Remove gfp_mask argument from acquire_group call
In reply to a message not in the archiveFrom: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
All callers of acquire_group() passed the same gfp_mask to it and it is safe to remove it.
--- drivers/infiniband/hw/mlx4/mcg.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/infiniband/hw/mlx4/mcg.c +4 -5
@@ -808,8 +808,7 @@ static ssize_t sysfs_show_group(struct device *dev, struct device_attribute *attr, char *buf);static struct mcast_group *acquire_group (struct mlx4_ib_demux_ctx *ctx, -union ib_gid *mgid,int create, -gfp_t gfp_mask) +union ib_gid *mgid,int create) {struct mcast_group *group, *cur_group;int is_mgid0;
@@ -825,7 +824,7 @@ static struct mcast_group *acquire_group(struct mlx4_ib_demux_ctx *ctx,if (!create)return ERR_PTR (-ENOENT ); - group =kzalloc (sizeof *group, gfp_mask); + group =kzalloc (sizeof (*group),GFP_KERNEL );if (!group)return ERR_PTR (-ENOMEM );
@@ -892,7 +891,7 @@ int mlx4_ib_mcg_demux_handler(struct ib_device *ibdev, int port, int slave,case IB_MGMT_METHOD_GET_RESP :case IB_SA_METHOD_DELETE_RESP :mutex_lock (&ctx->mcg_table_lock); - group =acquire_group (ctx, &rec->mgid,0 ,GFP_KERNEL ); + group =acquire_group (ctx, &rec->mgid,0 );mutex_unlock (&ctx->mcg_table_lock);if (IS_ERR (group)) {if (mad->mad_hdr.method ==IB_MGMT_METHOD_GET_RESP ) {
@@ -954,7 +953,7 @@ int mlx4_ib_mcg_multiplex_handler(struct ib_device *ibdev, int port, req->sa_mad = *sa_mad;mutex_lock (&ctx->mcg_table_lock); - group =acquire_group (ctx, &rec->mgid, may_create,GFP_KERNEL ); + group =acquire_group (ctx, &rec->mgid, may_create);mutex_unlock (&ctx->mcg_table_lock);if (IS_ERR (group)) {kfree (req);
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 11/22 RDMA/usnic: Fix remove address space warning
In reply to a message not in the archiveFrom: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
Sparse tool complains with the following error:drivers/infiniband/hw/usnic/usnic_ib_main.c:445:16: warning: cast removes
address space of expression
Fix it by doing casting on correct field and convert function helper which sets ifaddr to be void, because there are no users who are interested in returned value.
--- drivers/infiniband/hw/usnic/usnic_fwd.c | 12 ++---------- drivers/infiniband/hw/usnic/usnic_fwd.h | 2 +- drivers/infiniband/hw/usnic/usnic_ib_main.c | 10 ++++++---- 3 files changed, 9 insertions(+), 15 deletions(-)
drivers/infiniband/hw/usnic/usnic_fwd.c +2 -10
@@ -110,20 +110,12 @@ void usnic_fwd_set_mac(struct usnic_fwd_dev *ufdev, char mac[ETH_ALEN])spin_unlock (&ufdev->lock); } -int usnic_fwd_add_ipaddr (struct usnic_fwd_dev *ufdev,__be32 inaddr) +void usnic_fwd_add_ipaddr (struct usnic_fwd_dev *ufdev,__be32 inaddr) { -int status; -spin_lock (&ufdev->lock); -if (ufdev->inaddr ==0 ) { +if (!ufdev->inaddr) ufdev->inaddr = inaddr; - status =0 ; - }else { - status = -EFAULT ; - }spin_unlock (&ufdev->lock); - -return status; }void usnic_fwd_del_ipaddr (struct usnic_fwd_dev *ufdev)
drivers/infiniband/hw/usnic/usnic_fwd.h +1 -1
@@ -75,7 +75,7 @@ struct usnic_fwd_dev *usnic_fwd_dev_alloc(struct pci_dev *pdev);void usnic_fwd_dev_free (struct usnic_fwd_dev *ufdev);void usnic_fwd_set_mac (struct usnic_fwd_dev *ufdev,char mac[ETH_ALEN ]); -int usnic_fwd_add_ipaddr (struct usnic_fwd_dev *ufdev,__be32 inaddr); +void usnic_fwd_add_ipaddr (struct usnic_fwd_dev *ufdev,__be32 inaddr);void usnic_fwd_del_ipaddr (struct usnic_fwd_dev *ufdev);void usnic_fwd_carrier_up (struct usnic_fwd_dev *ufdev);void usnic_fwd_carrier_down (struct usnic_fwd_dev *ufdev);
drivers/infiniband/hw/usnic/usnic_ib_main.c +6 -4
@@ -351,7 +351,7 @@ static void *usnic_ib_device_add(struct pci_dev *dev) {struct usnic_ib_dev *us_ibdev;union ib_gid gid; -struct in_ifaddr *in; +struct in_device *ind;struct net_device *netdev;usnic_dbg ("\n" );
@@ -441,9 +441,11 @@ static void *usnic_ib_device_add(struct pci_dev *dev)if (netif_carrier_ok (us_ibdev->netdev))usnic_fwd_carrier_up (us_ibdev->ufdev); - in = ((struct in_device *)(netdev->ip_ptr))->ifa_list; -if (in !=NULL ) -usnic_fwd_add_ipaddr (us_ibdev->ufdev, in->ifa_address); + ind =in_dev_get (netdev); +if (ind->ifa_list) +usnic_fwd_add_ipaddr (us_ibdev->ufdev, + ind->ifa_list->ifa_address); +in_dev_put (ind);usnic_mac_ip_to_gid (us_ibdev->netdev->perm_addr, us_ibdev->ufdev->inaddr, &gid.raw[0 ]);
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 12/22 RDMA/mthca: Make explicit conversion to 64bit value
In reply to a message not in the archiveFrom: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
The "lg" variable is declared as int so in all places where this variable is used as a shift operand, the output will be int too.
This produces the following smatch warning:drivers/infiniband/hw/mthca/mthca_cmd.c:701 mthca_map_cmd() warn:
should '1 << lg' be a 64 bit type?
Simple declaration of "1" to be "1ULL" will fix the issue.
--- drivers/infiniband/hw/mthca/mthca_cmd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/infiniband/hw/mthca/mthca_cmd.c +1 -1
@@ -698,7 +698,7 @@ static int mthca_map_cmd(struct mthca_dev *dev, u16 op, struct mthca_icm *icm,for (i =0 ; i <mthca_icm_size (&iter) >> lg; ++i) {if (virt !=-1 ) { pages[nent *2 ] =cpu_to_be64 (virt); - virt +=1 << lg; + virt +=1ULL << lg; } pages[nent * 2 + 1] =
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 13/22 RDMA/hns: Remove empty functions
In reply to a message not in the archiveFrom: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
The functions which are not implemented can be simply ignored instead of defining empty function. This patch removes such functions from hns driver.
--- drivers/infiniband/hw/hns/hns_roce_main.c | 14 -------------- 1 file changed, 14 deletions(-)
drivers/infiniband/hw/hns/hns_roce_main.c +0 -14
@@ -285,12 +285,6 @@ static enum rdma_link_layer hns_roce_get_link_layer(struct ib_device *device,return IB_LINK_LAYER_ETHERNET ; } -static int hns_roce_query_gid (struct ib_device *ib_dev,u8 port_num,int index, -union ib_gid *gid) -{ -return 0 ; -} -static int hns_roce_query_pkey (struct ib_device *ib_dev,u8 port,u16 index,u16 *pkey) {
@@ -316,12 +310,6 @@ static int hns_roce_modify_device(struct ib_device *ib_dev, int mask,return 0 ; } -static int hns_roce_modify_port (struct ib_device *ib_dev,u8 port_num,int mask, -struct ib_port_modify *props) -{ -return 0 ; -} -static struct ib_ucontext *hns_roce_alloc_ucontext (struct ib_device *ib_dev,struct ib_udata *udata) {
@@ -462,10 +450,8 @@ static int hns_roce_register_device(struct hns_roce_dev *hr_dev) ib_dev->modify_device = hns_roce_modify_device; ib_dev->query_device = hns_roce_query_device; ib_dev->query_port = hns_roce_query_port; - ib_dev->modify_port = hns_roce_modify_port; ib_dev->get_link_layer = hns_roce_get_link_layer; ib_dev->get_netdev = hns_roce_get_netdev; - ib_dev->query_gid = hns_roce_query_gid; ib_dev->add_gid = hns_roce_add_gid; ib_dev->del_gid = hns_roce_del_gid; ib_dev->query_pkey = hns_roce_query_pkey;
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20170811105003.7661-14-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Dennis Dalessandro
Reviewed-byRe: [rdma-next 13/22] RDMA/hns: Remove empty functions
Quoted 7 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
The functions which are not implemented can be simply ignored instead of defining empty function. This patch removes such functions from hns driver.
I thought I replied about this or a very similar patch, but can't find the link. Regardless, I think these sort of work-in-progress stubs are OK as incremental development, part of "showing your work" but I would have expected to see them implemented in the same series, or at least soon there-after. So the fact that these are still empty after this much time. I agree, get rid of them.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): fe444f34-ec1e-a5bb-34cb-0c34499d1e21-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org
Re: [rdma-next 13/22] RDMA/hns: Remove empty functions
Quoted 7 lines · Dennis Dalessandro
Quoted 6 lines · Leon Romanovsky
From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/[email protected]>
The functions which are not implemented can be simply ignored instead of defining empty function. This patch removes such functions from hns driver.
Quoted 12 lines
Quoted 1 line
I thought I replied about this or a very similar patch, but can't find the link. Regardless, I think these sort of work-in-progress stubs are OK as incremental development, part of "showing your work" but I would have expected to see them implemented in the same series, or at least soon there-after. So the fact that these are still empty after this much time. I agree, get rid of them.
Reviewed-by Dennis Dalessandro <[email protected]>Signature · 5 lines
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html .
Hi, Dennis Dalessandro
I have tested it on D05 board and the result is fail. The detail anlaysis refer to my reply email for
[rdma-next v1 13/22] patch.
Thanks
Lijun Ou
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 14/22 IB/mlx4: Fix some spelling mistakes
In reply to a message not in the archiveFrom: Talat Batheesh <talatb-VPRAkNaXOzVWk0Htik3J/[email protected]>
Fix spelling mistakes in remarks
"retrun"->"return"
"cancell"->"cancel"--- drivers/infiniband/hw/mlx4/alias_GUID.c | 2 +- drivers/infiniband/hw/mlx4/cq.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/infiniband/hw/mlx4/alias_GUID.c +1 -1
@@ -781,7 +781,7 @@ void mlx4_ib_init_alias_guid_work(struct mlx4_ib_dev *dev, int port)spin_lock_irqsave (&dev->sriov.going_down_lock, flags);spin_lock_irqsave (&dev->sriov.alias_guid.ag_work_lock, flags1);if (!dev->sriov.is_going_down) { -/* If there is pending one should cancell then run, otherwise +/* If there is pending one should cancel then run, otherwise * won't run till previous one is ended as same work * struct is used. */
drivers/infiniband/hw/mlx4/cq.c +1 -1
@@ -637,7 +637,7 @@ static void mlx4_ib_poll_sw_comp(struct mlx4_ib_cq *cq, int num_entries,struct mlx4_ib_qp *qp; *npolled =0 ; -/* Find uncompleted WQEs belonging to that cq and retrun +/* Find uncompleted WQEs belonging to that cq and return * simulated FLUSH_ERR completions */ list_for_each_entry (qp, &cq->send_qp_list, cq_send_list) {
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 15/22 IB/mlx5: Fix some spelling mistakes
In reply to a message not in the archiveFrom: Talat Batheesh <talatb-VPRAkNaXOzVWk0Htik3J/[email protected]>
Fix spelling mistakes in remarks
"retrun"->"return"
"Decalring"->"Declaring"--- drivers/infiniband/hw/mlx5/cq.c | 2 +- drivers/infiniband/hw/mlx5/mad.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/infiniband/hw/mlx5/cq.c +1 -1
@@ -499,7 +499,7 @@ static void mlx5_ib_poll_sw_comp(struct mlx5_ib_cq *cq, int num_entries,struct mlx5_ib_qp *qp; *npolled =0 ; -/* Find uncompleted WQEs belonging to that cq and retrun mmics ones */ +/* Find uncompleted WQEs belonging to that cq and return mmics ones */ list_for_each_entry (qp, &cq->list_send_qp, cq_send_list) {sw_send_comp (qp, num_entries, wc + *npolled, npolled);if (*npolled >= num_entries)
drivers/infiniband/hw/mlx5/mad.c +1 -1
@@ -204,7 +204,7 @@ static int process_pma_cmd(struct ib_device *ibdev, u8 port_num,int err;void *out_cnt; -/* Decalring support of extended counters */ +/* Declaring support of extended counters */ if (in_mad->mad_hdr.attr_id ==IB_PMA_CLASS_PORT_INFO ) {struct ib_class_port_info cpi = {};
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 16/22 IB/mlx5: Add necessary delay drop assignment
In reply to a message not in the archiveFrom: Maor Gottlieb <maorg-VPRAkNaXOzVWk0Htik3J/[email protected]>
Assign the statistics and configuration structure pointer on success.
--- drivers/infiniband/hw/mlx5/main.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/infiniband/hw/mlx5/main.c +2 -0
@@ -3792,6 +3792,8 @@ static int delay_drop_debugfs_init(struct mlx5_ib_dev *dev)if (!dbg->timeout_debugfs) goto out_debugfs; + dev->delay_drop.dbg = dbg; +return 0 ; out_debugfs:
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 17/22 IB/mlx4: Fix RSS QP type in creation verb
In reply to a message not in the archiveFrom: Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>
The mlx4 was designed to support QP type of MLX4_IB_QPT_RAW_PACKET.
--- drivers/infiniband/hw/mlx4/qp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/infiniband/hw/mlx4/qp.c +1 -1
@@ -749,7 +749,7 @@ static int create_qp_rss(struct mlx4_ib_dev *dev, struct ib_pd *ibpd,INIT_LIST_HEAD (&qp->gid_list);INIT_LIST_HEAD (&qp->steering_rules); - qp->mlx4_ib_qp_type =MLX4_IB_QPT_RAW_ETHERTYPE ; + qp->mlx4_ib_qp_type =MLX4_IB_QPT_RAW_PACKET ; qp->state =IB_QPS_RESET ;/* Set dummy send resources to be compatible with HV and PRM */
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 18/22 IB/mlx4: Fix struct mlx4_ib_create_wq alignment
In reply to a message not in the archiveFrom: Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>
The mlx4 ABI defines to have structures with alignment of 64B.
--- drivers/infiniband/hw/mlx4/qp.c | 9 ++++----- include/uapi/rdma/mlx4-abi.h | 1 - 2 files changed, 4 insertions(+), 6 deletions(-)
drivers/infiniband/hw/mlx4/qp.c +4 -5
@@ -1047,9 +1047,8 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd, }if (src ==MLX4_IB_RWQ_SRC ) { -if (ucmd.wq.comp_mask || ucmd.wq.reserved1 || - ucmd.wq.reserved[0 ] || ucmd.wq.reserved[1 ] || - ucmd.wq.reserved[2 ]) { +if (ucmd.wq.comp_mask || ucmd.wq.reserved[0 ] || + ucmd.wq.reserved[1 ] || ucmd.wq.reserved[2 ]) {pr_debug ("user command isn't supported\n" ); err = -EOPNOTSUPP ; goto err;
@@ -4153,8 +4152,8 @@ struct ib_wq *mlx4_ib_create_wq(struct ib_pd *pd,if (!(udata && pd->uobject))return ERR_PTR (-EINVAL ); - required_cmd_sz = offsetof(typeof (ucmd ), reserved) + -sizeof (ucmd.reserved); + required_cmd_sz = offsetof(typeof (ucmd ), comp_mask) + +sizeof (ucmd.comp_mask);if (udata->inlen < required_cmd_sz) {pr_debug ("invalid inlen\n" );return ERR_PTR (-EINVAL );
include/uapi/rdma/mlx4-abi.h +0 -1
@@ -121,7 +121,6 @@ struct mlx4_ib_create_wq {__u8 log_range_size;__u8 reserved[3 ];__u32 comp_mask; -__u32 reserved1; };struct mlx4_ib_modify_wq {
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 19/22 IB/mlx4: Remove redundant attribute in mlx4_ib_create_qp_rss struct
In reply to a message not in the archiveFrom: Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>
rss_key_len is not in use and need to be removed.
--- include/uapi/rdma/mlx4-abi.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
include/uapi/rdma/mlx4-abi.h +1 -2
@@ -98,8 +98,7 @@ struct mlx4_ib_create_srq_resp {struct mlx4_ib_create_qp_rss {__u64 rx_hash_fields_mask;__u8 rx_hash_function; -__u8 rx_key_len; -__u8 reserved[6 ]; +__u8 reserved[7 ];__u8 rx_hash_key[40 ];__u32 comp_mask;__u32 reserved1;
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20170811105003.7661-20-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Re: [rdma-next 19/22] IB/mlx4: Remove redundant attribute in mlx4_ib_create_qp_rss struct
Quoted 16 lines · Leon Romanovsky
From: Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>
rss_key_lenis not in use and need to be removed.Fixes 3078f5f1bd8b ("IB/mlx4: Add support for RSS QP")Signed-off-by Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>Signed-off-by Leon Romanovsky <[email protected]>--- include/uapi/rdma/mlx4-abi.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)include/uapi/rdma/mlx4-abi.h +0
-0
include/uapi/rdma/mlx4-abi.h struct mlx4_ib_create_srq_resp { · line 101
Quoted 6 lines
include/uapi/rdma/mlx4-abi.h +1
-2@@ -98,8 +98,7 @@ struct mlx4_ib_create_srq_resp {struct mlx4_ib_create_qp_rss {__u64 rx_hash_fields_mask;__u8 rx_hash_function; -__u8 rx_key_len; -__u8 reserved[6 ]; +__u8 reserved[7 ];
Looks like this change is not explained in commit message.
Quoted 10 lines
include/uapi/rdma/mlx4-abi.h +0
-0__u8 rx_hash_key[40 ];__u32 comp_mask;__u32 reserved1;Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [rdma-next 19/22] IB/mlx4: Remove redundant attribute in mlx4_ib_create_qp_rss struct
Quoted 12 lines · Yuval Shaia
Quoted 11 lines · Leon Romanovsky
From: Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>
rss_key_lenis not in use and need to be removed.Fixes 3078f5f1bd8b ("IB/mlx4: Add support for RSS QP")Signed-off-by Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>Signed-off-by Leon Romanovsky <[email protected]>--- include/uapi/rdma/mlx4-abi.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
Quoted 13 lines
include/uapi/rdma/mlx4-abi.h struct mlx4_ib_create_srq_resp { · line 101
Quoted 11 lines
include/uapi/rdma/mlx4-abi.h +1
-2@@ -98,8 +98,7 @@ struct mlx4_ib_create_srq_resp {struct mlx4_ib_create_qp_rss {__u64 rx_hash_fields_mask;__u8 rx_hash_function; -__u8 rx_key_len; -__u8 reserved[6 ]; +__u8 reserved[7 ];Looks like this change is not explained in commit message.
It is exactly the change from commit message, we can't simply remove fields from this structure because it should be properly aligned.
Thanks
Quoted 11 lines
Quoted 11 lines
include/uapi/rdma/mlx4-abi.h +0
-1__u8 rx_hash_key[40 ];__u32 comp_mask;__u32 reserved1; --2.14.0
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 20/22 IB/mlx4: Check that reserved fields in mlx4_ib_create_qp_rss are zero
In reply to a message not in the archiveFrom: Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>
According to mlx4 convention, need to fail the command due to a non-zero value in the user data which is expected to be zero.
--- drivers/infiniband/hw/mlx4/qp.c | 5 +++++ 1 file changed, 5 insertions(+)
drivers/infiniband/hw/mlx4/qp.c +5 -0
@@ -792,6 +792,7 @@ static struct ib_qp *_mlx4_ib_create_qp_rss(struct ib_pd *pd,struct mlx4_ib_create_qp_rss ucmd = {};size_t required_cmd_sz;int err; +int i;if (!udata) {pr_debug ("RSS QP with NULL udata\n" );
@@ -813,6 +814,10 @@ static struct ib_qp *_mlx4_ib_create_qp_rss(struct ib_pd *pd,return ERR_PTR (-EFAULT ); } +for (i =0 ; i <sizeof (ucmd.reserved); i++) +if (ucmd.reserved[i]) +return ERR_PTR (-EOPNOTSUPP ); +if (ucmd.comp_mask || ucmd.reserved1)return ERR_PTR (-EOPNOTSUPP );
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20170811105003.7661-21-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Re: [rdma-next 20/22] IB/mlx4: Check that reserved fields in mlx4_ib_create_qp_rss are zero
Quoted 25 lines · Leon Romanovsky
From: Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>
According to mlx4 convention, need to fail the command due to a non-zero value in the user data which is expected to be zero.
Fixes 3078f5f1bd8b ("IB/mlx4: Add support for RSS QP")Signed-off-by Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>Signed-off-by Leon Romanovsky <[email protected]>--- drivers/infiniband/hw/mlx4/qp.c | 5 +++++ 1 file changed, 5 insertions(+)drivers/infiniband/hw/mlx4/qp.c +1
-0@@ -792,6 +792,7 @@ static struct ib_qp *_mlx4_ib_create_qp_rss(struct ib_pd *pd,struct mlx4_ib_create_qp_rss ucmd = {};size_t required_cmd_sz;int err; +int i;if (!udata) {pr_debug ("RSS QP with NULL udata\n" );
drivers/infiniband/hw/mlx4/qp.c static struct ib_qp *_mlx4_ib_create_qp_rss(struct ib_pd *pd, · line 820
Quoted 7 lines
drivers/infiniband/hw/mlx4/qp.c +4
-0@@ -813,6 +814,10 @@ static struct ib_qp *_mlx4_ib_create_qp_rss(struct ib_pd *pd,return ERR_PTR (-EFAULT ); } +for (i =0 ; i <sizeof (ucmd.reserved); i++) +if (ucmd.reserved[i]) +return ERR_PTR (-EOPNOTSUPP ); +
Found this interesting function you might want to consider using:
/**
* memchr_inv - Find an unmatching character in an area of memory.
* @start: The memory area
* @c: Find a character other than c
* @bytes: The size of the area.
*
* returns the address of the first character other than @c, or %NULL
* if the whole buffer contains just @c.
*/
void *memchr_inv(const void *start, int c, size_t bytes)
Quoted 10 lines
drivers/infiniband/hw/mlx4/qp.c +0
-0if (ucmd.comp_mask || ucmd.reserved1)return ERR_PTR (-EOPNOTSUPP );Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [rdma-next 20/22] IB/mlx4: Check that reserved fields in mlx4_ib_create_qp_rss are zero
Quoted 29 lines · Yuval Shaia
Quoted 28 lines · Leon Romanovsky
From: Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>
According to mlx4 convention, need to fail the command due to a non-zero value in the user data which is expected to be zero.
Fixes 3078f5f1bd8b ("IB/mlx4: Add support for RSS QP")Signed-off-by Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/[email protected]>Signed-off-by Leon Romanovsky <[email protected]>--- drivers/infiniband/hw/mlx4/qp.c | 5 +++++ 1 file changed, 5 insertions(+)drivers/infiniband/hw/mlx4/qp.c +1
-0@@ -792,6 +792,7 @@ static struct ib_qp *_mlx4_ib_create_qp_rss(struct ib_pd *pd,struct mlx4_ib_create_qp_rss ucmd = {};size_t required_cmd_sz;int err; +int i;if (!udata) {pr_debug ("RSS QP with NULL udata\n" );@@ -813,6 +814,10 @@ static struct ib_qp *_mlx4_ib_create_qp_rss(struct ib_pd *pd,return ERR_PTR (-EFAULT ); }
Quoted 17 lines
drivers/infiniband/hw/mlx4/qp.c static struct ib_qp *_mlx4_ib_create_qp_rss(struct ib_pd *pd, · line 820
Quoted 4 lines
drivers/infiniband/hw/mlx4/qp.c +4
-0+for (i =0 ; i <sizeof (ucmd.reserved); i++) +if (ucmd.reserved[i]) +return ERR_PTR (-EOPNOTSUPP ); +Found this interesting function you might want to consider using:
/**
*memchr_inv- Find an unmatching character in an area of memory.
* @start: The memory area
* @c: Find a character other than c
* @bytes: The size of the area.
*
* returns the address of the first character other than @c, or %NULL
* if the whole buffer contains just @c.
*/
void *memchr_inv(const void *start, int c,size_tbytes)
Thanks, I reuse this function and will submit new version.
PATCH 21/22 IB/ipoib: Sync between remove_one to sysfs calls that use rtnl_lock
In reply to a message not in the archiveFrom: Erez Shitrit <erezsh-VPRAkNaXOzVWk0Htik3J/[email protected]>
In order to avoid deadlock between sysfs functions (like create/delete child) and remove_one (both of them are using the sysfs lock and rtnl_lock) the driver will use a state mutex for sync.
That will fix traces as the following:
schedule+0x3e/0x90 kernfs_drain+0x75/0xf0 ? wait_woken+0x90/0x90 __kernfs_remove+0x12e/0x1c0 kernfs_remove+0x25/0x40 sysfs_remove_dir+0x57/0x90 kobject_del+0x22/0x60 device_del+0x195/0x230 pm_runtime_set_memalloc_noio+0xac/0xf0 netdev_unregister_kobject+0x71/0x80 rollback_registered_many+0x205/0x2f0 rollback_registered+0x31/0x40 unregister_netdevice_queue+0x58/0xb0 unregister_netdev+0x20/0x30 ipoib_remove_one+0xb7/0x240 [ib_ipoib] ib_unregister_device+0xbc/0x1b0 [ib_core] ib_unregister_mad_agent+0x29/0x30 [ib_core] mlx4_ib_remove+0x67/0x280 [mlx4_ib] INFO: task echo:24082 blocked for more than 120 seconds. Tainted: G OE 4.1.12-37.5.1.el6uek.x86_64 #2 "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Call Trace: schedule+0x3e/0x90 schedule_preempt_disabled+0xe/0x10 __mutex_lock_slowpath+0x95/0x110 ? _rcu_barrier+0x177/0x220 mutex_lock+0x23/0x40 rtnl_lock+0x15/0x20 netdev_run_todo+0x81/0x1f0 rtnl_unlock+0xe/0x10 ipoib_vlan_delete+0x12f/0x1c0 [ib_ipoib] delete_child+0x69/0x80 [ib_ipoib] dev_attr_store+0x20/0x30 sysfs_kf_write+0x41/0x50
--- drivers/infiniband/ulp/ipoib/ipoib.h | 1 + drivers/infiniband/ulp/ipoib/ipoib_cm.c | 8 +++++++- drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 +++++ drivers/infiniband/ulp/ipoib/ipoib_vlan.c | 22 ++++++++++++++++++---- 4 files changed, 31 insertions(+), 5 deletions(-)
drivers/infiniband/ulp/ipoib/ipoib.h +1 -0
@@ -336,6 +336,7 @@ struct ipoib_dev_priv {unsigned long flags;struct rw_semaphore vlan_rwsem; +struct mutex sysfs_lock;/* Protect sysfs running*/ struct rb_root path_tree;struct list_head path_list;
drivers/infiniband/ulp/ipoib/ipoib_cm.c +7 -1
@@ -1507,9 +1507,14 @@ static ssize_t set_mode(struct device *d, struct device_attribute *attr,if (test_bit (IPOIB_FLAG_GOING_DOWN , &priv->flags))return -EPERM ; -if (!rtnl_trylock ()) +if (!mutex_trylock (&priv->sysfs_lock))return restart_syscall (); +if (!rtnl_trylock ()) { +mutex_unlock (&priv->sysfs_lock); +return restart_syscall (); + } + ret =ipoib_set_mode (dev, buf);/* The assumption is that the function ipoib_set_mode returned
@@ -1518,6 +1523,7 @@ static ssize_t set_mode(struct device *d, struct device_attribute *attr,*/ if (ret != -EBUSY )rtnl_unlock (); +mutex_unlock (&priv->sysfs_lock);return (!ret || ret == -EBUSY ) ? count : ret; }
drivers/infiniband/ulp/ipoib/ipoib_main.c +5 -0
@@ -1876,6 +1876,7 @@ static void ipoib_build_priv(struct net_device *dev) priv->dev = dev;spin_lock_init (&priv->lock);init_rwsem (&priv->vlan_rwsem); +mutex_init (&priv->sysfs_lock);INIT_LIST_HEAD (&priv->path_list);INIT_LIST_HEAD (&priv->child_intfs);
@@ -2325,7 +2326,11 @@ static void ipoib_remove_one(struct ib_device *device, void *client_data)cancel_delayed_work (&priv->neigh_reap_task);flush_workqueue (priv->wq); +/* Wrap rtnl_lock/unlock with mutex to protect sysfs calls */ +mutex_lock (&priv->sysfs_lock);unregister_netdev (priv->dev); +mutex_unlock (&priv->sysfs_lock); + rn->free_rdma_netdev (priv->dev);list_for_each_entry_safe (cpriv, tcpriv, &priv->child_intfs, list)
drivers/infiniband/ulp/ipoib/ipoib_vlan.c +18 -4
@@ -133,12 +133,20 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)snprintf (intf_name,sizeof intf_name,"%s.%04x" , ppriv->dev->name, pkey); -if (!rtnl_trylock ()) +if (!mutex_trylock (&ppriv->sysfs_lock))return restart_syscall (); +if (!rtnl_trylock ()) { +mutex_unlock (&ppriv->sysfs_lock); +return restart_syscall (); + } + priv =ipoib_intf_alloc (ppriv->ca, ppriv->port, intf_name); -if (!priv) +if (!priv) { +rtnl_unlock (); +mutex_unlock (&ppriv->sysfs_lock);return -ENOMEM ; + }down_write (&ppriv->vlan_rwsem);
@@ -164,8 +172,8 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey) out:up_write (&ppriv->vlan_rwsem); -rtnl_unlock (); +mutex_unlock (&ppriv->sysfs_lock);if (result) {free_netdev (priv->dev);
@@ -188,8 +196,13 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)if (test_bit (IPOIB_FLAG_GOING_DOWN , &ppriv->flags))return -EPERM ; -if (!rtnl_trylock ()) +if (!mutex_trylock (&ppriv->sysfs_lock)) +return restart_syscall (); + +if (!rtnl_trylock ()) { +mutex_unlock (&ppriv->sysfs_lock);return restart_syscall (); + }down_write (&ppriv->vlan_rwsem);list_for_each_entry_safe (priv, tpriv, &ppriv->child_intfs, list) {
@@ -208,6 +221,7 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey) }rtnl_unlock (); +mutex_unlock (&ppriv->sysfs_lock);if (dev) {free_netdev (dev);
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 22/22 IB/ipoib: Add get statistics support to SRIOV VF
In reply to a message not in the archiveFrom: Feras Daoud <ferasda-VPRAkNaXOzVWk0Htik3J/[email protected]>
Add SRIOV VF support to get traffic statistics.
--- drivers/infiniband/ulp/ipoib/ipoib_main.c | 1 + 1 file changed, 1 insertion(+)
drivers/infiniband/ulp/ipoib/ipoib_main.c +1 -0
@@ -1846,6 +1846,7 @@ static const struct net_device_ops ipoib_netdev_ops_vf = { .ndo_tx_timeout = ipoib_timeout, .ndo_set_rx_mode = ipoib_set_mcast_list, .ndo_get_iflink = ipoib_get_iflink, + .ndo_get_stats64 = ipoib_get_stats, };void ipoib_setup_common (struct net_device *dev)
Signature · 6 lines
2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html