ca7036b4af
The vhost library currently configures Tx offloading (PKT_TX_*) on any
packet received from a guest virtio device which asks for some offloading.
This is problematic, as Tx offloading is something that the application
must ask for: the application needs to configure devices
to support every used offloads (ip, tcp checksumming, tso..), and the
various l2/l3/l4 lengths must be set following any processing that
happened in the application itself.
On the other hand, the received packets are not marked wrt current
packet l3/l4 checksumming info.
Copy virtio rx processing to fix those offload flags with some
differences:
- accept VIRTIO_NET_HDR_GSO_ECN and VIRTIO_NET_HDR_GSO_UDP,
- ignore anything but the VIRTIO_NET_HDR_F_NEEDS_CSUM flag (to comply with
the virtio spec),
Some applications might rely on the current behavior, so it is left
untouched by default.
A new RTE_VHOST_USER_NET_COMPLIANT_OL_FLAGS flag is added to enable the
new behavior.
The vhost example has been updated for the new behavior: TSO is applied to
any packet marked LRO.
Fixes:
|
||
---|---|---|
.. | ||
img | ||
bbdev.rst | ||
bpf_lib.rst | ||
build_app.rst | ||
build-sdk-meson.rst | ||
compressdev.rst | ||
cryptodev_lib.rst | ||
efd_lib.rst | ||
env_abstraction_layer.rst | ||
event_crypto_adapter.rst | ||
event_ethernet_rx_adapter.rst | ||
event_ethernet_tx_adapter.rst | ||
event_timer_adapter.rst | ||
eventdev.rst | ||
flow_classify_lib.rst | ||
generic_receive_offload_lib.rst | ||
generic_segmentation_offload_lib.rst | ||
glossary.rst | ||
graph_lib.rst | ||
hash_lib.rst | ||
index.rst | ||
intro.rst | ||
ip_fragment_reassembly_lib.rst | ||
ipsec_lib.rst | ||
kernel_nic_interface.rst | ||
link_bonding_poll_mode_drv_lib.rst | ||
lpm6_lib.rst | ||
lpm_lib.rst | ||
lto.rst | ||
mbuf_lib.rst | ||
member_lib.rst | ||
mempool_lib.rst | ||
meson_ut.rst | ||
metrics_lib.rst | ||
multi_proc_support.rst | ||
overview.rst | ||
packet_classif_access_ctrl.rst | ||
packet_distrib_lib.rst | ||
packet_framework.rst | ||
pdump_lib.rst | ||
perf_opt_guidelines.rst | ||
poll_mode_drv.rst | ||
power_man.rst | ||
profile_app.rst | ||
qos_framework.rst | ||
rawdev.rst | ||
rcu_lib.rst | ||
regexdev.rst | ||
reorder_lib.rst | ||
ring_lib.rst | ||
rte_flow.rst | ||
rte_security.rst | ||
service_cores.rst | ||
source_org.rst | ||
stack_lib.rst | ||
switch_representation.rst | ||
telemetry_lib.rst | ||
thread_safety_dpdk_functions.rst | ||
timer_lib.rst | ||
toeplitz_hash_lib.rst | ||
trace_lib.rst | ||
traffic_management.rst | ||
traffic_metering_and_policing.rst | ||
vhost_lib.rst | ||
writing_efficient_code.rst |