Hi all,

I am having an issue with af_packet.c

It fails to transmit any TSO frame submitted via raw socket + vnet headers. An identical frame is considered valid for tap.

The frames are generated out of legit linux skbufs (in UML) and vnet headers work for checksumming on raw, so I should have the raw initialization right.

The header is supposedly parsed correctly and the newly formed skbuf is sent to the device transmit routine (or enqueued) . I have debugged it as far as it reaching the following line in packet_snd() (line 2592 in 4.13):

err = po->xmit(skb);

This returns NET_XMIT_DROP for any TSO capable device I tested. They dislike the frame. Same frame is accepted by tap. I have went through the header parsing and skb allocation code in both af_packet and tap several times and I do not see any material difference (except the new zerocopy stuff). So, frankly, I am stuck.

Can someone help me to debug this. I do not see an easy way to debug it, but this is not a part of the kernel I am familiar with. Is there a suitable helper function to try to segment the frame and see exactly what is wrong with it?

Cc-ing DaveM as this has no specific maintainer so it falls under his umbrella remit.

--
Anton R. Ivanov

Cambridge Greys Limited, England and Wales company No 10273661
http://www.cambridgegreys.com/  

Reply via email to