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/