This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "".
The branch, master has been updated via 7e9004e87bab2eacd82d449286a84ae7a8cb75ab (commit) via d593398b2d55faf1e07f124a4c807c006eb856ea (commit) via 4af5396e77ff170c80ec3720028493ed2c9f4826 (commit) from fc020907bee7ec2ba976bc02399f6fd47f110d65 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 7e9004e87bab2eacd82d449286a84ae7a8cb75ab Author: Matias Elo matias.elo@nokia.com Date: Wed Nov 8 14:40:46 2017 +0200
linux-gen: dpdk: call packet parse function only when necessary
Not calling packet_parse_layer() when packet input parsing is disabled removes two unnecessary function calls from fast path.
Signed-off-by: Matias Elo matias.elo@nokia.com Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c index d7e9fcd4..b5a87b82 100644 --- a/platform/linux-generic/pktio/dpdk.c +++ b/platform/linux-generic/pktio/dpdk.c @@ -439,7 +439,7 @@ static inline int mbuf_to_pkt(pktio_entry_t *pktio_entry,
if (pktio_cls_enabled(pktio_entry)) copy_packet_cls_metadata(&parsed_hdr, pkt_hdr); - else + else if (pktio_entry->s.config.parser.layer) packet_parse_layer(pkt_hdr, pktio_entry->s.config.parser.layer);
@@ -654,7 +654,7 @@ static inline int mbuf_to_pkt_zero(pktio_entry_t *pktio_entry,
if (pktio_cls_enabled(pktio_entry)) copy_packet_cls_metadata(&parsed_hdr, pkt_hdr); - else + else if (pktio_entry->s.config.parser.layer) packet_parse_layer(pkt_hdr, pktio_entry->s.config.parser.layer);
commit d593398b2d55faf1e07f124a4c807c006eb856ea Author: Matias Elo matias.elo@nokia.com Date: Fri May 19 16:01:17 2017 +0300
linux-gen: dpdk: fix max_input_queues value for ixgbe devices
The RSS functionality is limited to max 16 queues on devices using ixgbe driver even though dpdk rte_eth_dev_info may return a larger value.
Signed-off-by: Matias Elo matias.elo@nokia.com Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c index 3684ca5c..d7e9fcd4 100644 --- a/platform/linux-generic/pktio/dpdk.c +++ b/platform/linux-generic/pktio/dpdk.c @@ -1135,6 +1135,13 @@ static void dpdk_init_capability(pktio_entry_t *pktio_entry, rte_eth_dev_info_get(pkt_dpdk->port_id, dev_info); capa->max_input_queues = RTE_MIN(dev_info->max_rx_queues, PKTIO_MAX_QUEUES); + + /* ixgbe devices support only 16 rx queues in RSS mode */ + if (!strncmp(dev_info->driver_name, IXGBE_DRV_NAME, + strlen(IXGBE_DRV_NAME))) + capa->max_input_queues = RTE_MIN((unsigned)16, + capa->max_input_queues); + capa->max_output_queues = RTE_MIN(dev_info->max_tx_queues, PKTIO_MAX_QUEUES); capa->set_op.op.promisc_mode = 1;
commit 4af5396e77ff170c80ec3720028493ed2c9f4826 Author: Matias Elo matias.elo@nokia.com Date: Thu May 11 15:13:25 2017 +0300
linux-gen: dpdk: handle minimum rx burst size
Both ixgbe and i40e dpdk drivers have a minimum supported rx burst size of four. Additionally, update driver names to match dpdk v17.08.
Signed-off-by: Matias Elo matias.elo@nokia.com Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/platform/linux-generic/include/odp_packet_dpdk.h b/platform/linux-generic/include/odp_packet_dpdk.h index 5d80d84a..d4c4f02c 100644 --- a/platform/linux-generic/include/odp_packet_dpdk.h +++ b/platform/linux-generic/include/odp_packet_dpdk.h @@ -30,12 +30,13 @@ ODP_STATIC_ASSERT((DPDK_NB_MBUF % DPDK_MEMPOOL_CACHE_SIZE == 0) && , "DPDK mempool cache size failure"); #endif
-#define DPDK_IXGBE_MIN_RX_BURST 4 +/* Minimum RX burst size */ +#define DPDK_MIN_RX_BURST 4
/** Cache for storing packets */ struct pkt_cache_t { /** array for storing extra RX packets */ - struct rte_mbuf *pkt[DPDK_IXGBE_MIN_RX_BURST]; + struct rte_mbuf *pkt[DPDK_MIN_RX_BURST]; unsigned idx; /**< head of cache */ unsigned count; /**< packets in cache */ }; diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c index de9295c4..3684ca5c 100644 --- a/platform/linux-generic/pktio/dpdk.c +++ b/platform/linux-generic/pktio/dpdk.c @@ -45,6 +45,10 @@ ODP_STATIC_ASSERT(PKT_EXTRA_LEN >= sizeof(struct rte_mbuf), "DPDK rte_mbuf won't fit in odp_packet_hdr_t.extra!"); #endif
+/* DPDK poll mode drivers requiring minimum RX burst size DPDK_MIN_RX_BURST */ +#define IXGBE_DRV_NAME "net_ixgbe" +#define I40E_DRV_NAME "net_i40e" + static int disable_pktio; /** !0 this pktio disabled, 0 enabled */
/* Has dpdk_pktio_init() been called */ @@ -1249,10 +1253,16 @@ static int dpdk_open(odp_pktio_t id ODP_UNUSED, pkt_dpdk->vdev_sysc_promisc = 1; rte_eth_promiscuous_disable(pkt_dpdk->port_id);
- if (!strcmp(dev_info.driver_name, "rte_ixgbe_pmd")) - pkt_dpdk->min_rx_burst = DPDK_IXGBE_MIN_RX_BURST; + /* Drivers requiring minimum burst size. Supports also *_vf versions + * of the drivers. */ + if (!strncmp(dev_info.driver_name, IXGBE_DRV_NAME, + strlen(IXGBE_DRV_NAME)) || + !strncmp(dev_info.driver_name, I40E_DRV_NAME, + strlen(I40E_DRV_NAME))) + pkt_dpdk->min_rx_burst = DPDK_MIN_RX_BURST; else pkt_dpdk->min_rx_burst = 0; + if (ODP_DPDK_ZERO_COPY) { if (pool_entry->ext_desc != NULL) pkt_pool = (struct rte_mempool *)pool_entry->ext_desc; @@ -1372,10 +1382,10 @@ static int dpdk_recv(pktio_entry_t *pktio_entry, int index, if (!pkt_dpdk->lockless_rx) odp_ticketlock_lock(&pkt_dpdk->rx_lock[index]); /** - * ixgbe_pmd has a minimum supported RX burst size ('min_rx_burst'). If - * 'num' < 'min_rx_burst', 'min_rx_burst' is used as rte_eth_rx_burst() - * argument and the possibly received extra packets are cached for the - * next dpdk_recv_queue() call to use. + * ixgbe and i40e drivers have a minimum supported RX burst size + * ('min_rx_burst'). If 'num' < 'min_rx_burst', 'min_rx_burst' is used + * as rte_eth_rx_burst() argument and the possibly received extra + * packets are cached for the next dpdk_recv_queue() call to use. * * Either use cached packets or receive new ones. Not both during the * same call. */
-----------------------------------------------------------------------
Summary of changes: platform/linux-generic/include/odp_packet_dpdk.h | 5 ++-- platform/linux-generic/pktio/dpdk.c | 33 ++++++++++++++++++------ 2 files changed, 28 insertions(+), 10 deletions(-)
hooks/post-receive