diff options
author | Konstantin Ananyev <konstantin.ananyev@intel.com> | 2018-02-09 10:33:29 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@fd.io> | 2018-02-09 10:33:29 +0000 |
commit | 9c72413c6cca6525089c12a39d21d6c34d6bee62 (patch) | |
tree | 913ceb40f9e76a73842d5507206e29598478aabd | |
parent | 946322cf51d4d8c979fc1d9c8fa1fe82c405917e (diff) | |
parent | 5b873e3b8c8cbb175fa014b0c28944892ce6c3b3 (diff) |
Merge "at DPDK queue setup take into account device descriptor limits."
-rw-r--r-- | app/nginx/src/tldk/be.c | 12 | ||||
-rw-r--r-- | examples/l4fwd/port.h | 10 |
2 files changed, 15 insertions, 7 deletions
diff --git a/app/nginx/src/tldk/be.c b/app/nginx/src/tldk/be.c index 4cb1b1c..3d17b60 100644 --- a/app/nginx/src/tldk/be.c +++ b/app/nginx/src/tldk/be.c @@ -293,7 +293,7 @@ be_queue_init(struct tldk_ctx *tcx, const tldk_conf_t *cf) { int32_t socket, rc; uint16_t queue_id; - uint32_t port_id, i; + uint32_t port_id, i, nb_rxd, nb_txd; struct rte_eth_dev_info dev_info; const struct tldk_ctx_conf *ctx; const struct tldk_port_conf *pcf; @@ -305,8 +305,12 @@ be_queue_init(struct tldk_ctx *tcx, const tldk_conf_t *cf) pcf = &cf->port[port_id]; rte_eth_dev_info_get(port_id, &dev_info); + dev_info.default_rxconf.rx_drop_en = 1; - dev_info.default_txconf.tx_free_thresh = TX_RING_SIZE / 2; + + nb_rxd = RTE_MIN(RX_RING_SIZE, dev_info.rx_desc_lim.nb_max); + nb_txd = RTE_MIN(TX_RING_SIZE, dev_info.tx_desc_lim.nb_max); + dev_info.default_txconf.tx_free_thresh = nb_txd / 2; if (pcf->tx_offload != 0) { RTE_LOG(ERR, USER1, @@ -317,7 +321,7 @@ be_queue_init(struct tldk_ctx *tcx, const tldk_conf_t *cf) socket = rte_eth_dev_socket_id(port_id); - rc = rte_eth_rx_queue_setup(port_id, queue_id, RX_RING_SIZE, + rc = rte_eth_rx_queue_setup(port_id, queue_id, nb_rxd, socket, &dev_info.default_rxconf, tcx->mpool); if (rc < 0) { RTE_LOG(ERR, USER1, @@ -326,7 +330,7 @@ be_queue_init(struct tldk_ctx *tcx, const tldk_conf_t *cf) return rc; } - rc = rte_eth_tx_queue_setup(port_id, queue_id, TX_RING_SIZE, + rc = rte_eth_tx_queue_setup(port_id, queue_id, nb_txd, socket, &dev_info.default_txconf); if (rc < 0) { RTE_LOG(ERR, USER1, diff --git a/examples/l4fwd/port.h b/examples/l4fwd/port.h index a451f7b..b727b1b 100644 --- a/examples/l4fwd/port.h +++ b/examples/l4fwd/port.h @@ -207,6 +207,7 @@ queue_init(struct netbe_port *uprt, struct rte_mempool *mp) { int32_t socket, rc; uint16_t q; + uint32_t nb_rxd, nb_txd; struct rte_eth_dev_info dev_info; rte_eth_dev_info_get(uprt->id, &dev_info); @@ -215,7 +216,10 @@ queue_init(struct netbe_port *uprt, struct rte_mempool *mp) dev_info.default_rxconf.rx_drop_en = 1; - dev_info.default_txconf.tx_free_thresh = TX_RING_SIZE / 2; + nb_rxd = RTE_MIN(RX_RING_SIZE, dev_info.rx_desc_lim.nb_max); + nb_txd = RTE_MIN(TX_RING_SIZE, dev_info.tx_desc_lim.nb_max); + + dev_info.default_txconf.tx_free_thresh = nb_txd / 2; if (uprt->tx_offload != 0) { RTE_LOG(ERR, USER1, "%s(%u): enabling full featured TX;\n", __func__, uprt->id); @@ -223,7 +227,7 @@ queue_init(struct netbe_port *uprt, struct rte_mempool *mp) } for (q = 0; q < uprt->nb_lcore; q++) { - rc = rte_eth_rx_queue_setup(uprt->id, q, RX_RING_SIZE, + rc = rte_eth_rx_queue_setup(uprt->id, q, nb_rxd, socket, &dev_info.default_rxconf, mp); if (rc < 0) { RTE_LOG(ERR, USER1, @@ -234,7 +238,7 @@ queue_init(struct netbe_port *uprt, struct rte_mempool *mp) } for (q = 0; q < uprt->nb_lcore; q++) { - rc = rte_eth_tx_queue_setup(uprt->id, q, TX_RING_SIZE, + rc = rte_eth_tx_queue_setup(uprt->id, q, nb_txd, socket, &dev_info.default_txconf); if (rc < 0) { RTE_LOG(ERR, USER1, |