diff mbox series

[API-NEXT,v1,1/1] linux-gen: dpdk: check config bits not capa bits

Message ID 1511355605-11085-2-git-send-email-odpbot@yandex.ru
State New
Headers show
Series [API-NEXT,v1,1/1] linux-gen: dpdk: check config bits not capa bits | expand

Commit Message

Github ODP bot Nov. 22, 2017, 1 p.m. UTC
From: Petri Savolainen <petri.savolainen@linaro.org>


Application is required to set L3 offset only when it requests
checksum offload.

This fixes https://bugs.linaro.org/show_bug.cgi?id=3491

It caused segfault to assume that L3 offset is always when
the interface supports checksumming.

Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org>

---
/** Email created from pull request 306 (psavol:next-tx-checksum-bugfix)
 ** https://github.com/Linaro/odp/pull/306
 ** Patch: https://github.com/Linaro/odp/pull/306.patch
 ** Base sha: b95e7d08043ba45d12635c5afaa3fbf3a07ecc90
 ** Merge commit sha: 3e5688323be04d904c74ba0da23e8a83673b73f4
 **/
 platform/linux-generic/pktio/dpdk.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c
index 5032b8dfb..0281aace2 100644
--- a/platform/linux-generic/pktio/dpdk.c
+++ b/platform/linux-generic/pktio/dpdk.c
@@ -607,8 +607,6 @@  static inline int pkt_to_mbuf(pktio_entry_t *pktio_entry,
 	char *data;
 	uint16_t pkt_len;
 	odp_pktout_config_opt_t *pktout_cfg = &pktio_entry->s.config.pktout;
-	odp_pktout_config_opt_t *pktout_capa =
-		&pktio_entry->s.capa.config.pktout;
 
 	if (odp_unlikely((rte_pktmbuf_alloc_bulk(pkt_dpdk->pkt_pool,
 						 mbuf_table, num)))) {
@@ -629,10 +627,14 @@  static inline int pkt_to_mbuf(pktio_entry_t *pktio_entry,
 
 		odp_packet_copy_to_mem(pkt_table[i], 0, pkt_len, data);
 
-		if (pktout_capa->all_bits)
+		if (pktout_cfg->all_bits) {
+			odp_pktout_config_opt_t *pktout_capa =
+			&pktio_entry->s.capa.config.pktout;
+
 			pkt_set_ol_tx(pktout_cfg, pktout_capa,
 				      odp_packet_hdr(pkt_table[i]),
 				      mbuf_table[i], data);
+		}
 	}
 	return i;
 
@@ -741,7 +743,7 @@  static inline int pkt_to_mbuf_zero(pktio_entry_t *pktio_entry,
 			       pkt_hdr->extra_type == PKT_EXTRA_TYPE_DPDK)) {
 			mbuf_update(mbuf, pkt_hdr, pkt_len);
 
-			if (pktout_capa->all_bits)
+			if (pktout_cfg->all_bits)
 				pkt_set_ol_tx(pktout_cfg, pktout_capa, pkt_hdr,
 					      mbuf, odp_packet_data(pkt));
 		} else {
@@ -764,7 +766,7 @@  static inline int pkt_to_mbuf_zero(pktio_entry_t *pktio_entry,
 				mbuf_init((struct rte_mempool *)
 					  pool_entry->ext_desc, mbuf, pkt_hdr);
 				mbuf_update(mbuf, pkt_hdr, pkt_len);
-				if (pktout_capa->all_bits)
+				if (pktout_cfg->all_bits)
 					pkt_set_ol_tx(pktout_cfg, pktout_capa,
 						      pkt_hdr,
 						      mbuf,