opnsense-src/sys/dev/ena
Dawid Gorecki 2bbef9d95d ena: properly handle IPv6 L4 checksum offload
ena_tx_csum function did not check if IPv6 checksum offload was
requested it only checked checksum offloading flags for IPv4 packets.
Because of that, when encountering CSUM_IP6_* flags, the function simply
returned without actually setting checksum offloading in ena_ctx.
Check CUSM_IP6_* flags to enable IPv6 checksum offload.

Additionally, only IPv4 header was being parsed regardless of EtherType
field, because of that, value of L4 protocol read when actually trying
to send IPv6 packets was wrong. Use ip6_lasthdr function to get length
of all IPv6 headers and payload protocol.

Set the DF flag to 1 in order to allow the device to offload the IPv6
checksum calculation and achieve optimal performance.

Add CSUM6_OFFLOAD and CSUM_OFFLOAD definitions into ena_datapath.h.

Submitted by: Dawid Gorecki <dgr@semihalf.com>
Obtained from: Semihalf
MFC after: 2 weeks
Sponsored by: Amazon, Inc.
2022-01-23 20:38:01 +01:00
..
ena.c ena: merge ena-com v2.5.0 upgrade 2022-01-23 20:27:13 +01:00
ena.h ena: merge ena-com v2.5.0 upgrade 2022-01-23 20:27:13 +01:00
ena_datapath.c ena: properly handle IPv6 L4 checksum offload 2022-01-23 20:38:01 +01:00
ena_datapath.h ena: properly handle IPv6 L4 checksum offload 2022-01-23 20:38:01 +01:00
ena_netmap.c ena: Share ena_global_lock between driver instances 2021-09-02 01:06:37 +02:00
ena_netmap.h Add SPDX license tag to the ENA driver files 2020-11-18 15:07:34 +00:00
ena_rss.c ena: Implement full RSS reconfiguration 2021-09-02 01:06:53 +02:00
ena_rss.h ena: Implement full RSS reconfiguration 2021-09-02 01:06:53 +02:00
ena_sysctl.c ena: merge ena-com v2.5.0 upgrade 2022-01-23 20:27:13 +01:00
ena_sysctl.h ena: hide sysctl nodes for unused ENA queues 2021-06-24 16:02:39 +02:00