Skip to content

Commit

Permalink
net/iavf: fix segmentation offload buffer size
Browse files Browse the repository at this point in the history
This fix commit ff8b8bc, which resulted in incorrect buffer size
being computed for non IPses TSO packets.

Fixes: ff8b8bc ("net/iavf: fix segmentation offload condition")
Cc: stable@dpdk.org

Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
  • Loading branch information
rnicolau authored and qzhan16 committed Feb 20, 2022
1 parent ea9fac9 commit 6a28563
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions drivers/net/iavf/iavf_rxtx.c
Original file line number Diff line number Diff line change
Expand Up @@ -2463,16 +2463,25 @@ iavf_fill_data_desc(volatile struct iavf_tx_desc *desc,
desc->buffer_addr = rte_mbuf_data_iova(m);

/* calculate data buffer size less set header lengths */
if (m->ol_flags & (RTE_MBUF_F_TX_TCP_SEG | RTE_MBUF_F_TX_UDP_SEG)) {
if (m->ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK)
hdrlen += m->outer_l3_len;
if ((m->ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) &&
(m->ol_flags & (RTE_MBUF_F_TX_TCP_SEG |
RTE_MBUF_F_TX_UDP_SEG))) {
hdrlen += m->outer_l3_len;
if (m->ol_flags & RTE_MBUF_F_TX_L4_MASK)
hdrlen += m->l3_len + m->l4_len;
else
hdrlen += m->l3_len;
if (m->ol_flags & RTE_MBUF_F_TX_SEC_OFFLOAD)
hdrlen += ipseclen;
bufsz = hdrlen + tlen;
} else if ((m->ol_flags & RTE_MBUF_F_TX_SEC_OFFLOAD) &&
(m->ol_flags & (RTE_MBUF_F_TX_TCP_SEG |
RTE_MBUF_F_TX_UDP_SEG))) {
hdrlen += m->outer_l3_len + m->l3_len + ipseclen;
if (m->ol_flags & RTE_MBUF_F_TX_L4_MASK)
hdrlen += m->l4_len;
bufsz = hdrlen + tlen;

} else {
bufsz = m->data_len;
}
Expand Down

0 comments on commit 6a28563

Please sign in to comment.