From: Yuanhan Liu <yliu@fridaylinux.org>
To: Harish Patil <harish.patil@cavium.com>
Cc: dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/qede: fix tunnel header size in Tx BD configuration' has been queued to LTS release 17.11.1
Date: Thu, 1 Feb 2018 17:47:47 +0800 [thread overview]
Message-ID: <1517478479-12417-33-git-send-email-yliu@fridaylinux.org> (raw)
In-Reply-To: <1517478479-12417-1-git-send-email-yliu@fridaylinux.org>
Hi,
FYI, your patch has been queued to LTS release 17.11.1
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 02/03/18. So please
shout if anyone has objections.
Thanks.
--yliu
---
>From 07f11419fa510f9f8ad276c8a182d967a54b808b Mon Sep 17 00:00:00 2001
From: Harish Patil <harish.patil@cavium.com>
Date: Sat, 27 Jan 2018 13:15:28 -0800
Subject: [PATCH] net/qede: fix tunnel header size in Tx BD configuration
[ upstream commit a5b252a415ce15362980e3257dbdf5f0e6412d35 ]
- Fix incorrect header size. In the tunnel case, the outer L2/L3 lengths
should be included to calculate tunnel header_size.
- In TSO case, skip manipulating TX BD1 and TX BD2 data buffer fields
since those fields are already updated with header and payload lengths
respectively.
- Update TX BD debug data collection.
Fixes: 3d4bb4411683 ("net/qede: add fastpath support for VXLAN tunneling")
Signed-off-by: Harish Patil <harish.patil@cavium.com>
---
drivers/net/qede/qede_rxtx.c | 40 +++++++++++++++++++++++++---------------
1 file changed, 25 insertions(+), 15 deletions(-)
diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index d210b06..a89d6c6 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -1588,7 +1588,8 @@ next_cqe:
/* Populate scatter gather buffer descriptor fields */
static inline uint16_t
qede_encode_sg_bd(struct qede_tx_queue *p_txq, struct rte_mbuf *m_seg,
- struct eth_tx_2nd_bd **bd2, struct eth_tx_3rd_bd **bd3)
+ struct eth_tx_2nd_bd **bd2, struct eth_tx_3rd_bd **bd3,
+ uint16_t start_seg)
{
struct qede_tx_queue *txq = p_txq;
struct eth_tx_bd *tx_bd = NULL;
@@ -1597,7 +1598,7 @@ qede_encode_sg_bd(struct qede_tx_queue *p_txq, struct rte_mbuf *m_seg,
/* Check for scattered buffers */
while (m_seg) {
- if (nb_segs == 0) {
+ if (start_seg == 0) {
if (!*bd2) {
*bd2 = (struct eth_tx_2nd_bd *)
ecore_chain_produce(&txq->tx_pbl);
@@ -1607,7 +1608,7 @@ qede_encode_sg_bd(struct qede_tx_queue *p_txq, struct rte_mbuf *m_seg,
mapping = rte_mbuf_data_iova(m_seg);
QEDE_BD_SET_ADDR_LEN(*bd2, mapping, m_seg->data_len);
PMD_TX_LOG(DEBUG, txq, "BD2 len %04x", m_seg->data_len);
- } else if (nb_segs == 1) {
+ } else if (start_seg == 1) {
if (!*bd3) {
*bd3 = (struct eth_tx_3rd_bd *)
ecore_chain_produce(&txq->tx_pbl);
@@ -1645,20 +1646,24 @@ print_tx_bd_info(struct qede_tx_queue *txq,
if (bd1)
PMD_TX_LOG(INFO, txq,
- "BD1: nbytes=%u nbds=%u bd_flags=%04x bf=%04x",
- rte_cpu_to_le_16(bd1->nbytes), bd1->data.nbds,
- bd1->data.bd_flags.bitfields,
- rte_cpu_to_le_16(bd1->data.bitfields));
+ "BD1: nbytes=0x%04x nbds=0x%04x bd_flags=0x%04x bf=0x%04x",
+ rte_cpu_to_le_16(bd1->nbytes), bd1->data.nbds,
+ bd1->data.bd_flags.bitfields,
+ rte_cpu_to_le_16(bd1->data.bitfields));
if (bd2)
PMD_TX_LOG(INFO, txq,
- "BD2: nbytes=%u bf=%04x\n",
- rte_cpu_to_le_16(bd2->nbytes), bd2->data.bitfields1);
+ "BD2: nbytes=0x%04x bf1=0x%04x bf2=0x%04x tunn_ip=0x%04x\n",
+ rte_cpu_to_le_16(bd2->nbytes), bd2->data.bitfields1,
+ bd2->data.bitfields2, bd2->data.tunn_ip_size);
if (bd3)
PMD_TX_LOG(INFO, txq,
- "BD3: nbytes=%u bf=%04x mss=%u\n",
- rte_cpu_to_le_16(bd3->nbytes),
- rte_cpu_to_le_16(bd3->data.bitfields),
- rte_cpu_to_le_16(bd3->data.lso_mss));
+ "BD3: nbytes=0x%04x bf=0x%04x MSS=0x%04x "
+ "tunn_l4_hdr_start_offset_w=0x%04x tunn_hdr_size=0x%04x\n",
+ rte_cpu_to_le_16(bd3->nbytes),
+ rte_cpu_to_le_16(bd3->data.bitfields),
+ rte_cpu_to_le_16(bd3->data.lso_mss),
+ bd3->data.tunn_l4_hdr_start_offset_w,
+ bd3->data.tunn_hdr_size_w);
rte_get_tx_ol_flag_list(tx_ol_flags, ol_buf, sizeof(ol_buf));
PMD_TX_LOG(INFO, txq, "TX offloads = %s\n", ol_buf);
@@ -1936,6 +1941,10 @@ qede_xmit_pkts(void *p_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
* and BD2 onwards for data.
*/
hdr_size = mbuf->l2_len + mbuf->l3_len + mbuf->l4_len;
+ if (tunn_flg)
+ hdr_size += mbuf->outer_l2_len +
+ mbuf->outer_l3_len;
+
bd1_bd_flags_bf |= 1 << ETH_TX_1ST_BD_FLAGS_LSO_SHIFT;
bd1_bd_flags_bf |=
1 << ETH_TX_1ST_BD_FLAGS_IP_CSUM_SHIFT;
@@ -2052,9 +2061,11 @@ qede_xmit_pkts(void *p_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
/* Handle fragmented MBUF */
m_seg = mbuf->next;
+
/* Encode scatter gather buffer descriptors if required */
- nb_frags = qede_encode_sg_bd(txq, m_seg, &bd2, &bd3);
+ nb_frags = qede_encode_sg_bd(txq, m_seg, &bd2, &bd3, nbds - 1);
bd1->data.nbds = nbds + nb_frags;
+
txq->nb_tx_avail -= bd1->data.nbds;
txq->sw_tx_prod++;
rte_prefetch0(txq->sw_tx_ring[TX_PROD(txq)].mbuf);
@@ -2062,7 +2073,6 @@ qede_xmit_pkts(void *p_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
rte_cpu_to_le_16(ecore_chain_get_prod_idx(&txq->tx_pbl));
#ifdef RTE_LIBRTE_QEDE_DEBUG_TX
print_tx_bd_info(txq, bd1, bd2, bd3, tx_ol_flags);
- PMD_TX_LOG(INFO, txq, "lso=%d tunn=%d", lso_flg, tunn_flg);
#endif
nb_pkt_sent++;
txq->xmit_pkts++;
--
2.7.4
next prev parent reply other threads:[~2018-02-01 9:49 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-01 9:47 [dpdk-stable] patch 'event/sw: fix debug logging config option' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'service: fix possible mem leak on initialize' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'cmdline: fix dynamic tokens parsing' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'cmdline: avoid garbage in unused fields of parsed result' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'keepalive: fix state alignment' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'log: fix memory leak in regexp level set' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'eal/arm64: remove the braces in memory barrier macros' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'mbuf: fix NULL freeing when debug enabled' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'crypto/qat: fix out-of-bounds access' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'crypto/qat: fix parameter type' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'cryptodev: fix session pointer cast' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'crypto/qat: fix null auth algo overwrite' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/mlx5: fix return value of start operation' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/enic: fix crash due to static max number of queues' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/e1000: fix null pointer check' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/i40e: fix memory leak' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/mlx5: fix missing RSS capability' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/mlx5: fix flow item validation' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/mlx5: fix memory region cache lookup' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/mlx5: fix memory region cache last index' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/mlx5: fix memory region boundary checks' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/ena: do not set Tx L4 offloads in Rx path' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/virtio-user: fix crash as features change' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/virtio: fix Rx and Tx handler selection for ARM32' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/virtio: fix queue flushing with vector Rx enabled' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/virtio: fix memory leak when reinitializing device' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/i40e: fix VF Rx interrupt enabling' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/ixgbe: " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/e1000: " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/bnxt: fix size of Tx ring in HW' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/bnxt: fix number of pools for RSS' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/qede: check tunnel L3 header' " Yuanhan Liu
2018-02-01 9:47 ` Yuanhan Liu [this message]
2018-02-01 9:47 ` [dpdk-stable] patch 'net/qede: fix MTU set and max Rx length' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'eal/ppc: remove the braces in memory barrier macros' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'crypto/dpaa2_sec: fix enum conversion for GCM' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'mk: support renamed Makefile in external project' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'crypto/scheduler: fix strncpy' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'ethdev: fix port data reset timing' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'ethdev: fix port id allocation' " Yuanhan Liu
2018-02-11 2:46 ` Yuanhan Liu
2018-02-11 6:40 ` Matan Azrad
2018-02-11 6:54 ` Yuanhan Liu
2018-02-11 7:15 ` Matan Azrad
2018-02-01 9:47 ` [dpdk-stable] patch 'app/testpmd: fix port validation' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'net/ixgbe: fix reset error handling' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'examples/bond: fix vdev name' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'crypto/qat: fix allocation check and leak' " Yuanhan Liu
2018-02-01 9:47 ` [dpdk-stable] patch 'examples/bond: check mbuf allocation' " Yuanhan Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1517478479-12417-33-git-send-email-yliu@fridaylinux.org \
--to=yliu@fridaylinux.org \
--cc=harish.patil@cavium.com \
--cc=stable@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).