kernel: 5.10: simplify logic in packet mangling patch
authorMathias Kresin <dev@kresin.me>
Sat, 23 Oct 2021 19:14:04 +0000 (21:14 +0200)
committerMathias Kresin <dev@kresin.me>
Tue, 2 Nov 2021 21:36:41 +0000 (22:36 +0100)
I had quite a hard time to understand what the change to net/core/dev.c
is supposed to do.

Simplify the change by returning NETDEV_TX_OK in case a eth_mangle_tx
callback was set but returned NULL instead of setting the return value
in the else branch.

Signed-off-by: Mathias Kresin <dev@kresin.me>
target/linux/generic/hack-5.10/721-net-add-packet-mangeling.patch

index f656472ef97a1aac48977f467b9eb44b9b037087..26ed8293632b6ae5210a7570d05c7c6059820295 100644 (file)
@@ -105,33 +105,18 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        help
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -3638,11 +3638,21 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3638,6 +3638,11 @@ static int xmit_one(struct sk_buff *skb,
        if (dev_nit_active(dev))
                dev_queue_xmit_nit(skb, dev);
  
--      len = skb->len;
--      PRANDOM_ADD_NOISE(skb, dev, txq, len + jiffies);
--      trace_net_dev_start_xmit(skb, dev);
--      rc = netdev_start_xmit(skb, dev, txq, more);
--      trace_net_dev_xmit(skb, rc, dev, len);
 +#ifdef CONFIG_ETHERNET_PACKET_MANGLE
-+      if (!dev->eth_mangle_tx ||
-+          (skb = dev->eth_mangle_tx(dev, skb)) != NULL)
-+#else
-+      if (1)
++      if (dev->eth_mangle_tx && !(skb = dev->eth_mangle_tx(dev, skb)))
++              return NETDEV_TX_OK;
 +#endif
-+      {
-+              len = skb->len;
-+              PRANDOM_ADD_NOISE(skb, dev, txq, len + jiffies);
-+              trace_net_dev_start_xmit(skb, dev);
-+              rc = netdev_start_xmit(skb, dev, txq, more);
-+              trace_net_dev_xmit(skb, rc, dev, len);
-+      } else {
-+              rc = NETDEV_TX_OK;
-+      }
-       return rc;
- }
++
+       len = skb->len;
+       PRANDOM_ADD_NOISE(skb, dev, txq, len + jiffies);
+       trace_net_dev_start_xmit(skb, dev);
 --- a/net/core/skbuff.c
 +++ b/net/core/skbuff.c
 @@ -60,6 +60,7 @@