> On Jan 9, 2018, at 6:11 AM, Xueming Li <xuemi...@mellanox.com> wrote: > > This patch introduce new DEV_TX_OFFLOAD_GENERIC_TNL_CKSUM_TSO flag for > devices that support tunnel agnostic TX checksum and tso offloading. > > Checksum offset and TSO header length are calculated based on mbuf > inner length l*_len, outer_l*_len and tx offload flags PKT_TX_*, tunnel > header length is part of inner l2_len, so device HW do cheksum and TSO > calculation w/o knowledge of perticular tunnel type. > > When set application must guarantee that correct header types and > lengths for each inner and outer headers in mbuf header, no need to > specify tunnel type. > > Signed-off-by: Xueming Li <xuemi...@mellanox.com> > --- > lib/librte_ether/rte_ethdev.h | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h > index 57b61ed41..8457d01be 100644 > --- a/lib/librte_ether/rte_ethdev.h > +++ b/lib/librte_ether/rte_ethdev.h > @@ -1003,6 +1003,15 @@ struct rte_eth_conf { > * the same mempool and has refcnt = 1. > */ > #define DEV_TX_OFFLOAD_SECURITY 0x00020000 > +/**< Device supports arbitrary tunnel chksum and tso offloading w/o knowing > + * tunnel detail. Checksum and TSO are calculated based on mbuf fields: > + * l*_len, outer_l*_len > + * PKT_TX_OUTER_IPV6, PKT_TX_IPV6 > + * PKT_TX_IP_CKSUM, PKT_TX_TCP_CKSUM, PKT_TX_UDP_CKSUM > + * When set application must guarantee correct header fields, no need to > + * specify tunnel type PKT_TX_TUNNEL_* for HW. > + */ > +#define DEV_TX_OFFLOAD_GENERIC_TNL_CKSUM_TSO 0x00040000 > > struct rte_pci_device;
I'm wondering why generic tunnel offload has to support checksum and TSO together. Those two are orthogonal, aren't they? App can request HW checksum offload even for non-TSO packets. Does DEV_TX_OFFLOAD_GENERIC_TNL_CKSUM_TSO mean HW can support checksum and TSO for generic tunnel? Then shouldn't it be two flags instead? E.g. DEV_TX_OFFLOAD_GENERIC_TNL_TSO DEV_TX_OFFLOAD_GENERIC_TNL_CKSUM Thanks Yongseok