git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/af_xdp: support power monitoring
[dpdk.git]
/
drivers
/
net
/
mlx4
/
mlx4_rxq.c
diff --git
a/drivers/net/mlx4/mlx4_rxq.c
b/drivers/net/mlx4/mlx4_rxq.c
index
50f33eb
..
978cbb8
100644
(file)
--- a/
drivers/net/mlx4/mlx4_rxq.c
+++ b/
drivers/net/mlx4/mlx4_rxq.c
@@
-8,7
+8,6
@@
* Rx queues configuration for mlx4 driver.
*/
* Rx queues configuration for mlx4 driver.
*/
-#include <assert.h>
#include <errno.h>
#include <stddef.h>
#include <stdint.h>
#include <errno.h>
#include <stddef.h>
#include <stdint.h>
@@
-27,7
+26,7
@@
#include <rte_byteorder.h>
#include <rte_common.h>
#include <rte_errno.h>
#include <rte_byteorder.h>
#include <rte_common.h>
#include <rte_errno.h>
-#include <
rte_
ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_flow.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_flow.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
@@
-140,12
+139,12
@@
error:
void
mlx4_rss_put(struct mlx4_rss *rss)
{
void
mlx4_rss_put(struct mlx4_rss *rss)
{
-
assert
(rss->refcnt);
+
MLX4_ASSERT
(rss->refcnt);
if (--rss->refcnt)
return;
if (--rss->refcnt)
return;
-
assert
(!rss->usecnt);
-
assert
(!rss->qp);
-
assert
(!rss->ind);
+
MLX4_ASSERT
(!rss->usecnt);
+
MLX4_ASSERT
(!rss->qp);
+
MLX4_ASSERT
(!rss->ind);
LIST_REMOVE(rss, next);
rte_free(rss);
}
LIST_REMOVE(rss, next);
rte_free(rss);
}
@@
-167,10
+166,10
@@
mlx4_rss_put(struct mlx4_rss *rss)
int
mlx4_rss_attach(struct mlx4_rss *rss)
{
int
mlx4_rss_attach(struct mlx4_rss *rss)
{
-
assert
(rss->refcnt);
+
MLX4_ASSERT
(rss->refcnt);
if (rss->usecnt++) {
if (rss->usecnt++) {
-
assert
(rss->qp);
-
assert
(rss->ind);
+
MLX4_ASSERT
(rss->qp);
+
MLX4_ASSERT
(rss->ind);
return 0;
}
return 0;
}
@@
-295,9
+294,9
@@
mlx4_rss_detach(struct mlx4_rss *rss)
struct rte_eth_dev *dev = ETH_DEV(priv);
unsigned int i;
struct rte_eth_dev *dev = ETH_DEV(priv);
unsigned int i;
-
assert
(rss->refcnt);
-
assert
(rss->qp);
-
assert
(rss->ind);
+
MLX4_ASSERT
(rss->refcnt);
+
MLX4_ASSERT
(rss->qp);
+
MLX4_ASSERT
(rss->ind);
if (--rss->usecnt)
return;
claim_zero(mlx4_glue->destroy_qp(rss->qp));
if (--rss->usecnt)
return;
claim_zero(mlx4_glue->destroy_qp(rss->qp));
@@
-366,7
+365,7
@@
mlx4_rss_init(struct mlx4_priv *priv)
/* Attach the configured Rx queues. */
if (rxq) {
/* Attach the configured Rx queues. */
if (rxq) {
-
assert
(!rxq->usecnt);
+
MLX4_ASSERT
(!rxq->usecnt);
ret = mlx4_rxq_attach(rxq);
if (!ret) {
wq_num = rxq->wq->wq_num;
ret = mlx4_rxq_attach(rxq);
if (!ret) {
wq_num = rxq->wq->wq_num;
@@
-463,7
+462,7
@@
mlx4_rss_deinit(struct mlx4_priv *priv)
struct rxq *rxq = ETH_DEV(priv)->data->rx_queues[i];
if (rxq) {
struct rxq *rxq = ETH_DEV(priv)->data->rx_queues[i];
if (rxq) {
-
assert
(rxq->usecnt == 1);
+
MLX4_ASSERT
(rxq->usecnt == 1);
mlx4_rxq_detach(rxq);
}
}
mlx4_rxq_detach(rxq);
}
}
@@
-488,10
+487,10
@@
int
mlx4_rxq_attach(struct rxq *rxq)
{
if (rxq->usecnt++) {
mlx4_rxq_attach(struct rxq *rxq)
{
if (rxq->usecnt++) {
-
assert
(rxq->cq);
-
assert
(rxq->wq);
-
assert
(rxq->wqes);
-
assert
(rxq->rq_db);
+
MLX4_ASSERT
(rxq->cq);
+
MLX4_ASSERT
(rxq->wq);
+
MLX4_ASSERT
(rxq->wqes);
+
MLX4_ASSERT
(rxq->rq_db);
return 0;
}
return 0;
}
@@
-512,7
+511,9
@@
mlx4_rxq_attach(struct rxq *rxq)
unsigned int i;
int ret;
unsigned int i;
int ret;
- assert(rte_is_power_of_2(elts_n));
+ MLX4_ASSERT(rte_is_power_of_2(elts_n));
+ priv->verbs_alloc_ctx.type = MLX4_VERBS_ALLOC_TYPE_RX_QUEUE;
+ priv->verbs_alloc_ctx.obj = rxq;
cq = mlx4_glue->create_cq(priv->ctx, elts_n / sges_n, NULL,
rxq->channel, 0);
if (!cq) {
cq = mlx4_glue->create_cq(priv->ctx, elts_n / sges_n, NULL,
rxq->channel, 0);
if (!cq) {
@@
-582,10
+583,10
@@
mlx4_rxq_attach(struct rxq *rxq)
goto error;
}
/* Headroom is reserved by rte_pktmbuf_alloc(). */
goto error;
}
/* Headroom is reserved by rte_pktmbuf_alloc(). */
-
assert
(buf->data_off == RTE_PKTMBUF_HEADROOM);
+
MLX4_ASSERT
(buf->data_off == RTE_PKTMBUF_HEADROOM);
/* Buffer is supposed to be empty. */
/* Buffer is supposed to be empty. */
-
assert
(rte_pktmbuf_data_len(buf) == 0);
-
assert
(rte_pktmbuf_pkt_len(buf) == 0);
+
MLX4_ASSERT
(rte_pktmbuf_data_len(buf) == 0);
+
MLX4_ASSERT
(rte_pktmbuf_pkt_len(buf) == 0);
/* Only the first segment keeps headroom. */
if (i % sges_n)
buf->data_off = 0;
/* Only the first segment keeps headroom. */
if (i % sges_n)
buf->data_off = 0;
@@
-620,6
+621,7
@@
mlx4_rxq_attach(struct rxq *rxq)
rxq->rq_ci = elts_n / sges_n;
rte_wmb();
*rxq->rq_db = rte_cpu_to_be_32(rxq->rq_ci);
rxq->rq_ci = elts_n / sges_n;
rte_wmb();
*rxq->rq_db = rte_cpu_to_be_32(rxq->rq_ci);
+ priv->verbs_alloc_ctx.type = MLX4_VERBS_ALLOC_TYPE_NONE;
return 0;
error:
if (wq)
return 0;
error:
if (wq)
@@
-630,6
+632,7
@@
error:
rte_errno = ret;
ERROR("error while attaching Rx queue %p: %s: %s",
(void *)rxq, msg, strerror(ret));
rte_errno = ret;
ERROR("error while attaching Rx queue %p: %s: %s",
(void *)rxq, msg, strerror(ret));
+ priv->verbs_alloc_ctx.type = MLX4_VERBS_ALLOC_TYPE_NONE;
return -ret;
}
return -ret;
}
@@
-681,7
+684,8
@@
mlx4_get_rx_queue_offloads(struct mlx4_priv *priv)
{
uint64_t offloads = DEV_RX_OFFLOAD_SCATTER |
DEV_RX_OFFLOAD_KEEP_CRC |
{
uint64_t offloads = DEV_RX_OFFLOAD_SCATTER |
DEV_RX_OFFLOAD_KEEP_CRC |
- DEV_RX_OFFLOAD_JUMBO_FRAME;
+ DEV_RX_OFFLOAD_JUMBO_FRAME |
+ DEV_RX_OFFLOAD_RSS_HASH;
if (priv->hw_csum)
offloads |= DEV_RX_OFFLOAD_CHECKSUM;
if (priv->hw_csum)
offloads |= DEV_RX_OFFLOAD_CHECKSUM;
@@
-823,7
+827,7
@@
mlx4_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
.socket = socket,
};
/* Enable scattered packets support for this queue if necessary. */
.socket = socket,
};
/* Enable scattered packets support for this queue if necessary. */
-
assert
(mb_len >= RTE_PKTMBUF_HEADROOM);
+
MLX4_ASSERT
(mb_len >= RTE_PKTMBUF_HEADROOM);
if (dev->data->dev_conf.rxmode.max_rx_pkt_len <=
(mb_len - RTE_PKTMBUF_HEADROOM)) {
;
if (dev->data->dev_conf.rxmode.max_rx_pkt_len <=
(mb_len - RTE_PKTMBUF_HEADROOM)) {
;
@@
-899,7
+903,7
@@
error:
ret = rte_errno;
mlx4_rx_queue_release(rxq);
rte_errno = ret;
ret = rte_errno;
mlx4_rx_queue_release(rxq);
rte_errno = ret;
-
assert
(rte_errno > 0);
+
MLX4_ASSERT
(rte_errno > 0);
return -rte_errno;
}
return -rte_errno;
}
@@
-926,10
+930,10
@@
mlx4_rx_queue_release(void *dpdk_rxq)
ETH_DEV(priv)->data->rx_queues[i] = NULL;
break;
}
ETH_DEV(priv)->data->rx_queues[i] = NULL;
break;
}
-
assert
(!rxq->cq);
-
assert
(!rxq->wq);
-
assert
(!rxq->wqes);
-
assert
(!rxq->rq_db);
+
MLX4_ASSERT
(!rxq->cq);
+
MLX4_ASSERT
(!rxq->wq);
+
MLX4_ASSERT
(!rxq->wqes);
+
MLX4_ASSERT
(!rxq->rq_db);
if (rxq->channel)
claim_zero(mlx4_glue->destroy_comp_channel(rxq->channel));
mlx4_mr_btree_free(&rxq->mr_ctrl.cache_bh);
if (rxq->channel)
claim_zero(mlx4_glue->destroy_comp_channel(rxq->channel));
mlx4_mr_btree_free(&rxq->mr_ctrl.cache_bh);