[dpdk-dev] [PATCH v2 4/6] ixgbe: support VxLAN & NVGRE RX checksum off-load
Lu, Wenzhuo
wenzhuo.lu at intel.com
Mon Feb 15 03:15:38 CET 2016
Hi Konstantin,
> -----Original Message-----
> From: Ananyev, Konstantin
> Sent: Friday, February 5, 2016 4:17 AM
> To: Lu, Wenzhuo; dev at dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v2 4/6] ixgbe: support VxLAN & NVGRE RX
> checksum off-load
>
>
>
> > -----Original Message-----
> > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Wenzhuo Lu
> > Sent: Thursday, January 14, 2016 1:39 AM
> > To: dev at dpdk.org
> > Subject: [dpdk-dev] [PATCH v2 4/6] ixgbe: support VxLAN & NVGRE RX
> > checksum off-load
> >
> > X550 will do VxLAN & NVGRE RX checksum off-load automatically.
> > This patch exposes the result of the checksum off-load.
> >
> > Signed-off-by: Wenzhuo Lu <wenzhuo.lu at intel.com>
> > ---
> > drivers/net/ixgbe/ixgbe_rxtx.c | 11 ++++++++++-
> > lib/librte_mbuf/rte_mbuf.c | 1 +
> > lib/librte_mbuf/rte_mbuf.h | 1 +
> > 3 files changed, 12 insertions(+), 1 deletion(-)
>
>
> Do we need a new DEV_RX_OFFLOAD_ here?
Yes, I will add a new capability. Thanks.
>
> >
> > diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c
> > b/drivers/net/ixgbe/ixgbe_rxtx.c index 52a263c..512ac3a 100644
> > --- a/drivers/net/ixgbe/ixgbe_rxtx.c
> > +++ b/drivers/net/ixgbe/ixgbe_rxtx.c
> > @@ -1003,6 +1003,8 @@ rx_desc_status_to_pkt_flags(uint32_t rx_status)
> > static inline uint64_t rx_desc_error_to_pkt_flags(uint32_t rx_status)
> > {
> > + uint64_t pkt_flags;
> > +
> > /*
> > * Bit 31: IPE, IPv4 checksum error
> > * Bit 30: L4I, L4I integrity error
> > @@ -1011,8 +1013,15 @@ rx_desc_error_to_pkt_flags(uint32_t rx_status)
> > 0, PKT_RX_L4_CKSUM_BAD, PKT_RX_IP_CKSUM_BAD,
> > PKT_RX_IP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD
> > };
> > - return error_to_pkt_flags_map[(rx_status >>
> > + pkt_flags = error_to_pkt_flags_map[(rx_status >>
> > IXGBE_RXDADV_ERR_CKSUM_BIT) &
> IXGBE_RXDADV_ERR_CKSUM_MSK];
> > +
> > + if ((rx_status & IXGBE_RXD_STAT_OUTERIPCS) &&
> > + (rx_status & IXGBE_RXDADV_ERR_OUTERIPER)) {
> > + pkt_flags |= PKT_RX_OUTER_IP_CKSUM_BAD;
> > + }
> > +
> > + return pkt_flags;
> > }
> >
> > /*
> > diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c
> > index c18b438..5d4af39 100644
> > --- a/lib/librte_mbuf/rte_mbuf.c
> > +++ b/lib/librte_mbuf/rte_mbuf.c
> > @@ -260,6 +260,7 @@ const char *rte_get_rx_ol_flag_name(uint64_t mask)
> > /* case PKT_RX_MAC_ERR: return "PKT_RX_MAC_ERR"; */
> > case PKT_RX_IEEE1588_PTP: return "PKT_RX_IEEE1588_PTP";
> > case PKT_RX_IEEE1588_TMST: return "PKT_RX_IEEE1588_TMST";
> > + case PKT_RX_OUTER_IP_CKSUM_BAD: return
> "PKT_RX_OUTER_IP_CKSUM_BAD";
> > default: return NULL;
> > }
> > }
> > diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
> > index f234ac9..5ad5e59 100644
> > --- a/lib/librte_mbuf/rte_mbuf.h
> > +++ b/lib/librte_mbuf/rte_mbuf.h
> > @@ -98,6 +98,7 @@ extern "C" {
> > #define PKT_RX_FDIR_ID (1ULL << 13) /**< FD id reported if FDIR match.
> */
> > #define PKT_RX_FDIR_FLX (1ULL << 14) /**< Flexible bytes reported if FDIR
> match. */
> > #define PKT_RX_QINQ_PKT (1ULL << 15) /**< RX packet with double VLAN
> stripped. */
> > +#define PKT_RX_OUTER_IP_CKSUM_BAD (1ULL << 16) /**< Outer IP cksum
> > +of RX pkt. is not OK. */
>
> There is
> #define PKT_RX_EIP_CKSUM_BAD (0ULL << 0) /**< External IP header
> checksum error. */ Probably need either redefine it, or remove it.
O, agree. I should redefine it. Thanks.
>
> Konstantin
> > /* add new RX flags here */
> >
> > /* add new TX flags here */
> > --
> > 1.9.3
More information about the dev
mailing list