examples/ipsec-secgw: use Tx checksum offload conditionally
Use Tx checksum offload only when all the ports have it enabled as
the qconf for a particular lcore stores ipv4_offloads for all the
Tx ports and each lcore can Tx to any port.
Fixes: 03128be4cd
("examples/ipsec-secgw: allow disabling some Rx/Tx offloads")
Cc: stable@dpdk.org
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
This commit is contained in:
parent
e3b8852693
commit
4edcee19fc
@ -1998,12 +1998,6 @@ port_init(uint16_t portid, uint64_t req_rx_offloads, uint64_t req_tx_offloads)
|
||||
qconf = &lcore_conf[lcore_id];
|
||||
qconf->tx_queue_id[portid] = tx_queueid;
|
||||
|
||||
/* Pre-populate pkt offloads based on capabilities */
|
||||
qconf->outbound.ipv4_offloads = RTE_MBUF_F_TX_IPV4;
|
||||
qconf->outbound.ipv6_offloads = RTE_MBUF_F_TX_IPV6;
|
||||
if (local_port_conf.txmode.offloads & RTE_ETH_TX_OFFLOAD_IPV4_CKSUM)
|
||||
qconf->outbound.ipv4_offloads |= RTE_MBUF_F_TX_IP_CKSUM;
|
||||
|
||||
tx_queueid++;
|
||||
|
||||
/* init RX queues */
|
||||
@ -2925,6 +2919,7 @@ main(int32_t argc, char **argv)
|
||||
uint64_t req_rx_offloads[RTE_MAX_ETHPORTS];
|
||||
uint64_t req_tx_offloads[RTE_MAX_ETHPORTS];
|
||||
struct eh_conf *eh_conf = NULL;
|
||||
uint32_t ipv4_cksum_port_mask = 0;
|
||||
size_t sess_sz;
|
||||
|
||||
nb_bufs_in_pool = 0;
|
||||
@ -3046,6 +3041,20 @@ main(int32_t argc, char **argv)
|
||||
&req_tx_offloads[portid]);
|
||||
port_init(portid, req_rx_offloads[portid],
|
||||
req_tx_offloads[portid]);
|
||||
if ((req_tx_offloads[portid] & RTE_ETH_TX_OFFLOAD_IPV4_CKSUM))
|
||||
ipv4_cksum_port_mask = 1U << portid;
|
||||
}
|
||||
|
||||
for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
|
||||
if (rte_lcore_is_enabled(lcore_id) == 0)
|
||||
continue;
|
||||
|
||||
/* Pre-populate pkt offloads based on capabilities */
|
||||
lcore_conf[lcore_id].outbound.ipv4_offloads = RTE_MBUF_F_TX_IPV4;
|
||||
lcore_conf[lcore_id].outbound.ipv6_offloads = RTE_MBUF_F_TX_IPV6;
|
||||
/* Update per lcore checksum offload support only if all ports support it */
|
||||
if (ipv4_cksum_port_mask == enabled_port_mask)
|
||||
lcore_conf[lcore_id].outbound.ipv4_offloads |= RTE_MBUF_F_TX_IP_CKSUM;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user