net: dsa: Keep private info in the skb->cb
authorVladimir Oltean <olteanv@gmail.com>
Sun, 5 May 2019 10:19:24 +0000 (13:19 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 6 May 2019 04:52:42 +0000 (21:52 -0700)
commitb68b0dd0fb2d91056d5241a19960cf47d4a80f05
treeea9ffc181d7839f75d6b1c403034de7031b3175c
parentcc1939e4b3aaf534fb2f3706820012036825731c
net: dsa: Keep private info in the skb->cb

Map a DSA structure over the 48-byte control block that will hold
skb info on transmit and receive. This is only for use within the DSA
processing layer (e.g. communicating between DSA core and tagger) and
not for passing info around with other layers such as the master net
device.

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@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/dsa.h