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