mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 09:58:01 +00:00
netdev-dpdk: Stop relying on vhost-user Tx flags.
vhost-user legacy behavior has been to mark mbuf with Tx offload flags based on what the virtio-net header contained (but provide no Rx information, like IP checksum or L4 checksum validity). Changing to the non legacy mode means that no code out of OVS should set any RTE_MBUF_F_TX_* flag. Had a check accordingly. Link: https://git.dpdk.org/dpdk/commit/?id=ca7036b4af3a Reported-at: https://issues.redhat.com/browse/FDP-1147 Signed-off-by: David Marchand <david.marchand@redhat.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
This commit is contained in:
parent
b8032fac2c
commit
dd443c1a7a
@ -2651,6 +2651,7 @@ static bool
|
||||
netdev_dpdk_prep_hwol_packet(struct netdev_dpdk *dev, struct rte_mbuf *mbuf)
|
||||
{
|
||||
struct dp_packet *pkt = CONTAINER_OF(mbuf, struct dp_packet, mbuf);
|
||||
uint64_t unexpected = mbuf->ol_flags & RTE_MBUF_F_TX_OFFLOAD_MASK;
|
||||
const struct ip_header *ip;
|
||||
bool is_sctp;
|
||||
bool l3_csum;
|
||||
@ -2661,13 +2662,6 @@ netdev_dpdk_prep_hwol_packet(struct netdev_dpdk *dev, struct rte_mbuf *mbuf)
|
||||
void *l3;
|
||||
void *l4;
|
||||
|
||||
if (!dp_packet_ip_checksum_partial(pkt)
|
||||
&& !dp_packet_inner_ip_checksum_partial(pkt)
|
||||
&& !dp_packet_l4_checksum_partial(pkt)
|
||||
&& !dp_packet_inner_l4_checksum_partial(pkt)
|
||||
&& !mbuf->tso_segsz) {
|
||||
|
||||
uint64_t unexpected = mbuf->ol_flags & RTE_MBUF_F_TX_OFFLOAD_MASK;
|
||||
if (OVS_UNLIKELY(unexpected)) {
|
||||
VLOG_WARN_RL(&rl, "%s: Unexpected Tx offload flags: %#"PRIx64,
|
||||
netdev_get_name(&dev->up), unexpected);
|
||||
@ -2675,6 +2669,13 @@ netdev_dpdk_prep_hwol_packet(struct netdev_dpdk *dev, struct rte_mbuf *mbuf)
|
||||
"Packet with unexpected ol_flags", mbuf);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!dp_packet_ip_checksum_partial(pkt)
|
||||
&& !dp_packet_inner_ip_checksum_partial(pkt)
|
||||
&& !dp_packet_l4_checksum_partial(pkt)
|
||||
&& !dp_packet_inner_l4_checksum_partial(pkt)
|
||||
&& !mbuf->tso_segsz) {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -6431,6 +6432,10 @@ netdev_dpdk_vhost_client_reconfigure(struct netdev *netdev)
|
||||
vhost_flags |= RTE_VHOST_USER_POSTCOPY_SUPPORT;
|
||||
}
|
||||
|
||||
/* Use "compliant" ol_flags API so that the vhost library behaves
|
||||
* like a DPDK ethdev driver. */
|
||||
vhost_flags |= RTE_VHOST_USER_NET_COMPLIANT_OL_FLAGS;
|
||||
|
||||
/* Enable External Buffers if TCP Segmentation Offload is enabled. */
|
||||
if (enable_tso) {
|
||||
vhost_flags |= RTE_VHOST_USER_EXTBUF_SUPPORT;
|
||||
|
Loading…
x
Reference in New Issue
Block a user