qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: hw/net/cadence_gem: TX checksum offload does not work for fragmented


From: Jason Wang
Subject: Re: hw/net/cadence_gem: TX checksum offload does not work for fragmented packets
Date: Sun, 26 Apr 2020 15:02:04 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0


On 2020/4/26 下午2:57, Bin Meng wrote:
Hi Jason,

On Tue, Apr 21, 2020 at 10:31 PM Bin Meng <address@hidden> wrote:
Hi,

The cadence_gem does the TX checksum offload by:

                 /* Is checksum offload enabled? */
                 if (s->regs[GEM_DMACFG] & GEM_DMACFG_TXCSUM_OFFL) {
                     net_checksum_calculate(tx_packet, total_bytes);
                 }

However this will only work for non-fragmented packets. For fragmented
packets, it just corrupts the packets by inserting wrong checksum to
the fist fragment, or corrupts the data to be sent in other fragments
than the first one.

Any idea of how to solve this cleanly?
I suspect this is a common issue for all NIC models in QEMU. Could you
please comment?

Regards,
Bin


I think maybe you can have a look at how it was done by e1000e which uses NetTxPkt structure. (E.g net_tx_pkt_update_ip_checksum()).

In the future, we may consider to convert the metadata that just uses NetTxPkt structure, but it's a non-trivial changes.

Thanks




reply via email to

[Prev in Thread] Current Thread [Next in Thread]