diff options
author | xiaofeis <xiaofeis@codeaurora.org> | 2019-03-26 23:59:06 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-03-28 19:57:19 -0400 |
commit | 6e57d72a84db9f2e565992f76b6a6bc907f13b77 (patch) | |
tree | 3d016e8c26749a3ce199b5642dd930075efd4e32 /net/dsa | |
parent | 5ac4b47d1a887ef978967b381e9b403084f0b6d3 (diff) |
net: dsa: Implement flow_dissect callback for tag_qca
Add flow_dissect for qca tagged packet to get the right hash.
Signed-off-by: Xiaofei Shen <xiaofeis@codeaurora.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dsa')
-rw-r--r-- | net/dsa/tag_qca.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/net/dsa/tag_qca.c b/net/dsa/tag_qca.c index ed4f6dc26365..85c22ada4744 100644 --- a/net/dsa/tag_qca.c +++ b/net/dsa/tag_qca.c | |||
@@ -98,8 +98,18 @@ static struct sk_buff *qca_tag_rcv(struct sk_buff *skb, struct net_device *dev, | |||
98 | return skb; | 98 | return skb; |
99 | } | 99 | } |
100 | 100 | ||
101 | static int qca_tag_flow_dissect(const struct sk_buff *skb, __be16 *proto, | ||
102 | int *offset) | ||
103 | { | ||
104 | *offset = QCA_HDR_LEN; | ||
105 | *proto = ((__be16 *)skb->data)[0]; | ||
106 | |||
107 | return 0; | ||
108 | } | ||
109 | |||
101 | const struct dsa_device_ops qca_netdev_ops = { | 110 | const struct dsa_device_ops qca_netdev_ops = { |
102 | .xmit = qca_tag_xmit, | 111 | .xmit = qca_tag_xmit, |
103 | .rcv = qca_tag_rcv, | 112 | .rcv = qca_tag_rcv, |
113 | .flow_dissect = qca_tag_flow_dissect, | ||
104 | .overhead = QCA_HDR_LEN, | 114 | .overhead = QCA_HDR_LEN, |
105 | }; | 115 | }; |