lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Sat, 4 May 2019 05:23:23 +0300
From:   Vladimir Oltean <olteanv@...il.com>
To:     Florian Fainelli <f.fainelli@...il.com>
Cc:     vivien.didelot@...il.com, Andrew Lunn <andrew@...n.ch>,
        "David S. Miller" <davem@...emloft.net>,
        netdev <netdev@...r.kernel.org>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH net-next 4/9] net: dsa: Keep private info in the skb->cb

On Sat, 4 May 2019 at 05:04, Florian Fainelli <f.fainelli@...il.com> wrote:
>
>
>
> On 5/3/2019 6:18 PM, Vladimir Oltean wrote:
> > Map a DSA structure over the 48-byte control block that will hold
> > persistent skb info on transmit and receive.
> >
>
> On receive you cannot quite do that because you don't know if the DSA
> master network device calls netif_receive_skb() or napi_gro_receive().
> The latter arguably may not be able to aggregate flows at all because it
> does not know how to parse the SKB, but the point remains that skb->cb[]
> on receive may already be used, up to 48 bytes already. I tried to make
> use of it for storing the HW extracted Broadcom tag, but it blew the
> budge on 64-bit hosts:
>
> https://www.spinics.net/lists/netdev/msg337777.html
>
> Not asking you to change anything here, just to be aware of it.
>
> > Also add a DSA_SKB_CB_PRIV() macro which retrieves a pointer to the
> > space up to 48 bytes that the DSA structure does not use. This space can
> > be used for drivers to add their own private info.
> >
> > One use is for the PTP timestamping code path. When cloning a skb,
> > annotate the original with a pointer to the clone, which the driver can
> > then find easily and place the timestamp to. This avoids the need of a
> > separate queue to hold clones and a way to match an original to a cloned
> > skb.
> >
> > Signed-off-by: Vladimir Oltean <olteanv@...il.com>
>
> Reviewed-by: Florian Fainelli <f.fainelli@...il.com>
> --
> Florian

Hi Florian,
This is good to know. So I'm understanding that you tried to pass data
in the skb->cb between the master netdev and DSA, and GRO got
in-between? That's kind of expected in a way. I'm proposing a more
minimalistic use even on receive, which should be ok. If you look at
07/09 you'll see I'm setting the frame type from within the
eth_type_trans callback (technically still not in the DSA packet_type
handler yet, but quite close) and using it in the actual rcv. Then for
timestamping I'm communicating between the rcv function and a
workqueue that I start from .port_rxtstamp.
-Vladimir

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ