From: Greg Kroah-Hartman <gre...@linuxfoundation.org>

From: Christian Eggers <cegg...@arri.de>

[ Upstream commit ef3f72fee286bd270453ce2344feb7295a798508 ]

The caller (dsa_slave_xmit) guarantees that the frame length is at least
ETH_ZLEN and that enough memory for tail tagging is available.

Signed-off-by: Christian Eggers <cegg...@arri.de>
Signed-off-by: Vladimir Oltean <vladimir.olt...@nxp.com>
Reviewed-by: Florian Fainelli <f.faine...@gmail.com>
Signed-off-by: Jakub Kicinski <k...@kernel.org>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 net/dsa/tag_trailer.c | 31 ++-----------------------------
 1 file changed, 2 insertions(+), 29 deletions(-)

diff --git a/net/dsa/tag_trailer.c b/net/dsa/tag_trailer.c
index 3a1cc24a4f0a..5b97ede56a0f 100644
--- a/net/dsa/tag_trailer.c
+++ b/net/dsa/tag_trailer.c
@@ -13,42 +13,15 @@
 static struct sk_buff *trailer_xmit(struct sk_buff *skb, struct net_device 
*dev)
 {
        struct dsa_port *dp = dsa_slave_to_port(dev);
-       struct sk_buff *nskb;
-       int padlen;
        u8 *trailer;
 
-       /*
-        * We have to make sure that the trailer ends up as the very
-        * last 4 bytes of the packet.  This means that we have to pad
-        * the packet to the minimum ethernet frame size, if necessary,
-        * before adding the trailer.
-        */
-       padlen = 0;
-       if (skb->len < 60)
-               padlen = 60 - skb->len;
-
-       nskb = alloc_skb(NET_IP_ALIGN + skb->len + padlen + 4, GFP_ATOMIC);
-       if (!nskb)
-               return NULL;
-       skb_reserve(nskb, NET_IP_ALIGN);
-
-       skb_reset_mac_header(nskb);
-       skb_set_network_header(nskb, skb_network_header(skb) - skb->head);
-       skb_set_transport_header(nskb, skb_transport_header(skb) - skb->head);
-       skb_copy_and_csum_dev(skb, skb_put(nskb, skb->len));
-       consume_skb(skb);
-
-       if (padlen) {
-               skb_put_zero(nskb, padlen);
-       }
-
-       trailer = skb_put(nskb, 4);
+       trailer = skb_put(skb, 4);
        trailer[0] = 0x80;
        trailer[1] = 1 << dp->index;
        trailer[2] = 0x10;
        trailer[3] = 0x00;
 
-       return nskb;
+       return skb;
 }
 
 static struct sk_buff *trailer_rcv(struct sk_buff *skb, struct net_device *dev,
-- 
2.30.1



Reply via email to