Thread (16 messages) 16 messages, 5 authors, 2015-07-17

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

flat view

From: Scott Feldman <hidden>
Date: 2015-07-17 19:59:31

On Fri, Jul 17, 2015 at 7:37 AM, Nicolas Dichtel
[off-list ref] wrote:
Le 16/07/2015 10:04, sfeldma@gmail.com a écrit :
quoted
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->offload_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    |   11 ++++++++++-
  net/core/dev.c            |   10 ++++++++++
  3 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 45cfd79..8364f29 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1456,6 +1456,8 @@ enum netdev_priv_flags {
   *
   *    @xps_maps:      XXX: need comments on this one
   *
+ *     @offload_fwd_mark:      Offload device fwding mark
+ *
   *    @trans_start:           Time (in jiffies) of last Tx
   *    @watchdog_timeo:        Represents the timeout that is used by
   *                            the watchdog ( see dev_watchdog() )
@@ -1697,6 +1699,10 @@ struct net_device {
        struct xps_dev_maps __rcu *xps_maps;
  #endif

+#ifdef CONFIG_NET_SWITCHDEV
+       u32                     offload_fwd_mark;
+#endif
+
        /* These may be needed for future network-power-down code. */

        /*
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index d6cdd6e..2edcf50 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -506,6 +506,7 @@ static inline u32 skb_mstamp_us_delta(const struct
skb_mstamp *t1,
   *    @no_fcs:  Request NIC to treat last 4 bytes as Ethernet FCS
    *   @napi_id: id of the NAPI struct this skb came from
   *    @secmark: security marking
+ *     @offload_fwd_mark: fwding offload mark
   *    @mark: Generic packet mark
   *    @vlan_proto: vlan encapsulation protocol
   *    @vlan_tci: vlan tag control information
@@ -650,9 +651,17 @@ struct sk_buff {
                unsigned int    sender_cpu;
        };
  #endif
+       union {
  #ifdef CONFIG_NETWORK_SECMARK
-       __u32                   secmark;
+               __u32           secmark;
+#endif
+#ifdef CONFIG_NET_SWITCHDEV
+               __u32           offload_fwd_mark;
  #endif
+       };
+
+       union {};
+
Everybody seems to ack. For my knowledge, why did you put this empty union?
My bad...sending v3...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help