[dpdk-dev,3/5] net/mlx5: assert for un-successful memory registration

Message ID e9c8dca3fa367411bbe8aa093163b689a235777f.1516727100.git.shahafs@mellanox.com (mailing list archive)
State Superseded, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

Shahaf Shuler Jan. 23, 2018, 5:08 p.m. UTC
  Memory registration can fail, add the proper assert for such scenario
for it at least to be visible in debug mode.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Signed-off-by: Xueming Li <xuemingl@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxtx.h | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

Nélio Laranjeiro Jan. 24, 2018, 8:15 a.m. UTC | #1
Hi Shahaf,

On Tue, Jan 23, 2018 at 07:08:21PM +0200, Shahaf Shuler wrote:
> Memory registration can fail, add the proper assert for such scenario
> for it at least to be visible in debug mode.
> 
> Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
> Signed-off-by: Xueming Li <xuemingl@mellanox.com>
> ---
>  drivers/net/mlx5/mlx5_rxtx.h | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
> index 79cdfc793..2934f9fb3 100644
> --- a/drivers/net/mlx5/mlx5_rxtx.h
> +++ b/drivers/net/mlx5/mlx5_rxtx.h
> @@ -589,6 +589,10 @@ mlx5_tx_mb2mr(struct mlx5_txq_data *txq, struct rte_mbuf *mb)
>  	if (mr) {
>  		rte_atomic32_inc(&mr->refcnt);
>  		return mr->lkey;
> +	} else {
> +		WARN("Failed to register mempool 0x%p(%s)",
> +		      (void *)mp, mp->name);
> +		assert(mr != NULL);

This assert seems wrong.

Why this assert, you don't trust the CPU to verify the pointer is NULL?

>  	}
>  	return (uint32_t)-1;
>  }
> -- 
> 2.12.0

Regards,
  

Patch

diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
index 79cdfc793..2934f9fb3 100644
--- a/drivers/net/mlx5/mlx5_rxtx.h
+++ b/drivers/net/mlx5/mlx5_rxtx.h
@@ -589,6 +589,10 @@  mlx5_tx_mb2mr(struct mlx5_txq_data *txq, struct rte_mbuf *mb)
 	if (mr) {
 		rte_atomic32_inc(&mr->refcnt);
 		return mr->lkey;
+	} else {
+		WARN("Failed to register mempool 0x%p(%s)",
+		      (void *)mp, mp->name);
+		assert(mr != NULL);
 	}
 	return (uint32_t)-1;
 }