| From 7b5641a39a9f5808f0cc2ae9a5e7defbd1788596 Mon Sep 17 00:00:00 2001 |
| From: Eugenia Emantayev <eugenia@mellanox.com> |
| Date: Thu, 29 Dec 2016 18:37:10 +0200 |
| Subject: [PATCH] net/mlx4_en: Fix bad WQE issue |
| |
| commit 6496bbf0ec481966ef9ffe5b6660d8d1b55c60cc upstream. |
| |
| Single send WQE in RX buffer should be stamped with software |
| ownership in order to prevent the flow of QP in error in FW |
| once UPDATE_QP is called. |
| |
| Fixes: 9f519f68cfff ('mlx4_en: Not using Shared Receive Queues') |
| Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com> |
| Signed-off-by: Tariq Toukan <tariqt@mellanox.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c |
| index 134370869cef..f24c195ea8d8 100644 |
| --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c |
| +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c |
| @@ -443,8 +443,14 @@ int mlx4_en_activate_rx_rings(struct mlx4_en_priv *priv) |
| ring->cqn = priv->rx_cq[ring_ind]->mcq.cqn; |
| |
| ring->stride = stride; |
| - if (ring->stride <= TXBB_SIZE) |
| + if (ring->stride <= TXBB_SIZE) { |
| + /* Stamp first unused send wqe */ |
| + __be32 *ptr = (__be32 *)ring->buf; |
| + __be32 stamp = cpu_to_be32(1 << STAMP_SHIFT); |
| + *ptr = stamp; |
| + /* Move pointer to start of rx section */ |
| ring->buf += TXBB_SIZE; |
| + } |
| |
| ring->log_stride = ffs(ring->stride) - 1; |
| ring->buf_size = ring->size * ring->stride; |
| -- |
| 2.12.0 |
| |