summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Ananyev <konstantin.ananyev@intel.com>2018-02-09 10:33:29 +0000
committerGerrit Code Review <gerrit@fd.io>2018-02-09 10:33:29 +0000
commit9c72413c6cca6525089c12a39d21d6c34d6bee62 (patch)
tree913ceb40f9e76a73842d5507206e29598478aabd
parent946322cf51d4d8c979fc1d9c8fa1fe82c405917e (diff)
parent5b873e3b8c8cbb175fa014b0c28944892ce6c3b3 (diff)
Merge "at DPDK queue setup take into account device descriptor limits."
-rw-r--r--app/nginx/src/tldk/be.c12
-rw-r--r--examples/l4fwd/port.h10
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,