Thread (26 messages) 26 messages, 6 authors, 2015-06-17

Re: [RFC PATCH net-next 1/4] net: don't reforward packets already forwarded by offload device

flat view

From: Jiri Pirko <jiri@resnulli.us>
Date: 2015-06-14 06:51:56

Sat, Jun 13, 2015 at 08:04:27PM CEST, sfeldma@gmail.com wrote:
quoted hunk ↗ jump to hunk
From: Scott Feldman <redacted>

Just before queuing skb for xmit on port, check if skb has been marked by
switchdev port driver as already fordwarded by device.  If so, drop skb.  A
non-zero skb->fwd_mark field is set by the switchdev port driver/device on
ingress to indicate the skb has already been forwarded by the device to
egress ports with matching dev->skb_mark.  The switchdev port driver would
assign a non-zero dev->skb_mark for each device port netdev during
registration, for example.

Signed-off-by: Scott Feldman <redacted>
---
include/linux/netdevice.h |    6 ++++++
include/linux/skbuff.h    |    4 ++++
net/core/dev.c            |    9 +++++++++
3 files changed, 19 insertions(+)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 6f5f71f..181b08f 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1444,6 +1444,8 @@ enum netdev_priv_flags {
 *
 *	@xps_maps:	XXX: need comments on this one
 *
+ *	@fwd_mark:		Offload device fwding mark
+ *
How about to say this is an offloading/switchdev stuff?
"offload_fwd_mark" ?


<snip>
quoted hunk ↗ jump to hunk
diff --git a/net/core/dev.c b/net/core/dev.c
index 6778a99..558bf33 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3065,6 +3065,15 @@ static int __dev_queue_xmit(struct sk_buff *skb, void *accel_priv)
	else
		skb_dst_force(skb);

+#ifdef CONFIG_NET_SWITCHDEV
+	/* Don't forward if offload device already forwarded */
+	if (skb->fwd_mark && skb->fwd_mark == dev->fwd_mark) {
+		kfree_skb(skb);
You should use consume_skb here to do not indicate skb was dropped after
failure.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help