ethdev: add Tx offload outer UDP checksum definition
Introduced DEV_TX_OFFLOAD_OUTER_UDP_CKSUM offload flags and PKT_TX_OUTER_UDP_CKSUM mbuf ol_flags to enable Tx outer UDP checksum offload. To use hardware Tx outer UDP checksum offload, the user needs to, - enable following in mbuf: a) fill outer_l2_len and outer_l3_len in mbuf b) set the PKT_TX_OUTER_UDP_CKSUM flag c) set the flag PKT_TX_OUTER_IPV4 or PKT_TX_OUTER_IPV6 - configure DEV_TX_OFFLOAD_OUTER_UDP_CKSUM offload flags in slow path Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
This commit is contained in:
parent
ec7f71577f
commit
df694a05bf
@ -773,6 +773,16 @@ port_offload_cap_display(portid_t port_id)
|
||||
else
|
||||
printf("off\n");
|
||||
}
|
||||
|
||||
if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_OUTER_UDP_CKSUM) {
|
||||
printf("TX Outer UDP checksum: ");
|
||||
if (ports[port_id].dev_conf.txmode.offloads &
|
||||
DEV_TX_OFFLOAD_OUTER_UDP_CKSUM)
|
||||
printf("on\n");
|
||||
else
|
||||
printf("off\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -645,7 +645,12 @@ Supports inner packet L4 checksum.
|
||||
* **[uses] rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_OUTER_UDP_CKSUM``.
|
||||
* **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_OUTER_L4_CKSUM_UNKNOWN`` |
|
||||
``PKT_RX_OUTER_L4_CKSUM_BAD`` | ``PKT_RX_OUTER_L4_CKSUM_GOOD`` | ``PKT_RX_OUTER_L4_CKSUM_INVALID``.
|
||||
* **[uses] rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_OUTER_UDP_CKSUM``.
|
||||
* **[uses] mbuf**: ``mbuf.ol_flags:PKT_TX_OUTER_IPV4`` | ``PKT_TX_OUTER_IPV6``.
|
||||
``mbuf.ol_flags:PKT_TX_OUTER_UDP_CKSUM``.
|
||||
* **[uses] mbuf**: ``mbuf.outer_l2_len``, ``mbuf.outer_l3_len``.
|
||||
* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_OUTER_UDP_CKSUM``,
|
||||
``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_OUTER_UDP_CKSUM``.
|
||||
|
||||
|
||||
.. _nic_features_packet_type_parsing:
|
||||
|
@ -159,6 +159,7 @@ static const struct {
|
||||
RTE_TX_OFFLOAD_BIT2STR(SECURITY),
|
||||
RTE_TX_OFFLOAD_BIT2STR(UDP_TNL_TSO),
|
||||
RTE_TX_OFFLOAD_BIT2STR(IP_TNL_TSO),
|
||||
RTE_TX_OFFLOAD_BIT2STR(OUTER_UDP_CKSUM),
|
||||
};
|
||||
|
||||
#undef RTE_TX_OFFLOAD_BIT2STR
|
||||
|
@ -944,6 +944,8 @@ struct rte_eth_conf {
|
||||
* for tunnel TSO.
|
||||
*/
|
||||
#define DEV_TX_OFFLOAD_IP_TNL_TSO 0x00080000
|
||||
/** Device supports outer UDP checksum */
|
||||
#define DEV_TX_OFFLOAD_OUTER_UDP_CKSUM 0x00100000
|
||||
|
||||
#define RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP 0x00000001
|
||||
/**< Device supports Rx queue setup after device started*/
|
||||
|
@ -448,6 +448,7 @@ rte_get_tx_ol_flag_list(uint64_t mask, char *buf, size_t buflen)
|
||||
"PKT_TX_TUNNEL_NONE" },
|
||||
{ PKT_TX_MACSEC, PKT_TX_MACSEC, NULL },
|
||||
{ PKT_TX_SEC_OFFLOAD, PKT_TX_SEC_OFFLOAD, NULL },
|
||||
{ PKT_TX_OUTER_UDP_CKSUM, PKT_TX_OUTER_UDP_CKSUM, NULL },
|
||||
};
|
||||
const char *name;
|
||||
unsigned int i;
|
||||
|
@ -201,6 +201,17 @@ extern "C" {
|
||||
|
||||
/* add new TX flags here */
|
||||
|
||||
/**
|
||||
* Outer UDP checksum offload flag. This flag is used for enabling
|
||||
* outer UDP checksum in PMD. To use outer UDP checksum, the user needs to
|
||||
* 1) Enable the following in mbuff,
|
||||
* a) Fill outer_l2_len and outer_l3_len in mbuf.
|
||||
* b) Set the PKT_TX_OUTER_UDP_CKSUM flag.
|
||||
* c) Set the PKT_TX_OUTER_IPV4 or PKT_TX_OUTER_IPV6 flag.
|
||||
* 2) Configure DEV_TX_OFFLOAD_OUTER_UDP_CKSUM offload flag.
|
||||
*/
|
||||
#define PKT_TX_OUTER_UDP_CKSUM (1ULL << 41)
|
||||
|
||||
/**
|
||||
* UDP Fragmentation Offload flag. This flag is used for enabling UDP
|
||||
* fragmentation in SW or in HW. When use UFO, mbuf->tso_segsz is used
|
||||
@ -368,7 +379,8 @@ extern "C" {
|
||||
PKT_TX_TUNNEL_MASK | \
|
||||
PKT_TX_MACSEC | \
|
||||
PKT_TX_SEC_OFFLOAD | \
|
||||
PKT_TX_UDP_SEG)
|
||||
PKT_TX_UDP_SEG | \
|
||||
PKT_TX_OUTER_UDP_CKSUM)
|
||||
|
||||
/**
|
||||
* Mbuf having an external buffer attached. shinfo in mbuf must be filled.
|
||||
|
Loading…
Reference in New Issue
Block a user