From: Anton Ivanov <anton.ivanov@cambridgegreys.com>
To: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Cc: Network Development <netdev@vger.kernel.org>,
David Miller <davem@davemloft.net>
Subject: Re: BUG:af_packet fails to TX TSO frames
Date: Thu, 12 Oct 2017 18:58:02 +0100 [thread overview]
Message-ID: <beef71a3-2cfc-95d7-f334-04685d31b640@cambridgegreys.com> (raw)
In-Reply-To: <CAF=yD-KiMWMwvD-s=z4brqUrNbRe4-fRZAKupEc2FvVn0MQxuQ@mail.gmail.com>
On 10/12/17 18:25, Willem de Bruijn wrote:
> On Thu, Oct 12, 2017 at 12:30 PM, Willem de Bruijn
> <willemdebruijn.kernel@gmail.com> wrote:
>> On Thu, Oct 12, 2017 at 11:44 AM, Anton Ivanov
>> <anton.ivanov@cambridgegreys.com> wrote:
>>> Found it.
>>>
>>> Two bugs canceling each other.
>>> The bind sequence in: psock_txring_vnet.c is wrong.
>>>
>>> It does the following addr.sll_protocol = htons(ETH_P_IP);
>>> before calling bind.
>>>
>>> If you set addr.sll_protocol to ETH_P_ALL where it should have been in the
>>> first place the test program blows up with -ENOBUFS
>> There is no such requirement that the socket should bind to ETH_P_ALL.
There is no requirement to bind to ETH_P_IP either and most code
examples going back more than 10 years to the days of TCP Illustrated
use ALL.
I just did the v6 test - if you bind with ETH_P_IP GSO on TCPv6 is
broken and returns NOBUF and vice versa.
>>
>>> I think what is happening is that this value is taken into account when
>>> looking at "what should I use to segment it with" in skb_mac_gso_segment
>>> which is invoked at the end of the verification chain which starts in
>>> packet_direct_xmit in af_packet.c
>> packet_snd sets skb->protocol based on the protocol that the packet
>> socket is bound to. Binding to ETH_P_IP is the right choice here.
> To avoid having to open multiple sockets for different protocols,
> sockaddr_ll can also be passed in the msg_name argument on
> each call.
Does not work for vnet headers - it honors what you bound with. I tried
to bind with ETH_ALL and pass ETH_P_IP as an arg and it ENOBUF-ed
>
--
Anton R. Ivanov
Cambridge Greys Limited, England and Wales company No 10273661
http://www.cambridgegreys.com/
next prev parent reply other threads:[~2017-10-12 17:58 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-11 8:39 BUG:af_packet fails to TX TSO frames Anton Ivanov
2017-10-11 13:39 ` Willem de Bruijn
2017-10-11 13:50 ` Anton Ivanov
2017-10-11 15:54 ` Anton Ivanov
2017-10-11 16:26 ` Willem de Bruijn
2017-10-11 16:32 ` Anton Ivanov
2017-10-11 18:39 ` Anton Ivanov
2017-10-11 18:57 ` Willem de Bruijn
2017-10-11 19:39 ` Anton Ivanov
2017-10-11 21:02 ` [uml-devel] Fwd: " Anton Ivanov
2017-10-11 21:05 ` Willem de Bruijn
2017-10-11 21:55 ` Anton Ivanov
2017-10-11 22:01 ` Anton Ivanov
2017-10-12 0:19 ` Willem de Bruijn
2017-10-12 6:11 ` Anton Ivanov
2017-10-12 8:46 ` Anton Ivanov
2017-10-12 13:39 ` Willem de Bruijn
2017-10-12 14:12 ` Anton Ivanov
2017-10-12 15:44 ` Anton Ivanov
2017-10-12 15:57 ` Anton Ivanov
2017-10-12 15:57 ` [uml-devel] " Anton Ivanov
2017-10-12 16:30 ` Willem de Bruijn
2017-10-12 17:25 ` Willem de Bruijn
2017-10-12 17:58 ` Anton Ivanov [this message]
2017-10-12 18:41 ` Willem de Bruijn
2017-10-12 19:55 ` Anton Ivanov
2017-10-13 7:25 ` Not BUG, feature :) af_packet " Anton Ivanov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=beef71a3-2cfc-95d7-f334-04685d31b640@cambridgegreys.com \
--to=anton.ivanov@cambridgegreys.com \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
--cc=willemdebruijn.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.