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

On Tue, Apr 21, 2020 at 10:31 PM Bin Meng <bmeng...@gmail.com> 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