The Realtek 4 byte A tag is placed before the EtherType, so refactor the
.flow_dissect procedure to call the common helper created for this
specific case.

Cc: Linus Walleij <linus.wall...@linaro.org>
Cc: DENG Qingfang <dqf...@gmail.com>
Cc: Mauri Sandberg <sandb...@mailfence.com>
Signed-off-by: Vladimir Oltean <vladimir.olt...@nxp.com>
---
 net/dsa/tag_rtl4_a.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/net/dsa/tag_rtl4_a.c b/net/dsa/tag_rtl4_a.c
index 868980ba1fcd..d2237a6a06d6 100644
--- a/net/dsa/tag_rtl4_a.c
+++ b/net/dsa/tag_rtl4_a.c
@@ -106,20 +106,12 @@ static struct sk_buff *rtl4a_tag_rcv(struct sk_buff *skb,
        return skb;
 }
 
-static void rtl4a_tag_flow_dissect(const struct sk_buff *skb, __be16 *proto,
-                                  int *offset)
-{
-       *offset = RTL4_A_HDR_LEN;
-       /* Skip past the tag and fetch the encapsulated Ethertype */
-       *proto = ((__be16 *)skb->data)[1];
-}
-
 static const struct dsa_device_ops rtl4a_netdev_ops = {
        .name   = "rtl4a",
        .proto  = DSA_TAG_PROTO_RTL4_A,
        .xmit   = rtl4a_tag_xmit,
        .rcv    = rtl4a_tag_rcv,
-       .flow_dissect = rtl4a_tag_flow_dissect,
+       .flow_dissect = dsa_tag_generic_flow_dissect,
        .overhead = RTL4_A_HDR_LEN,
 };
 module_dsa_tag_driver(rtl4a_netdev_ops);
-- 
2.25.1

Reply via email to