Message ID | 20190215082253.2682-1-rdong.ge@gmail.com |
---|---|
State | Superseded |
Delegated to: | David Miller |
Headers | show |
Series | net: dsa: Implement flow_dissect callback for tag_dsa. | expand |
On Fri, Feb 15, 2019 at 08:22:53AM +0000, Rundong Ge wrote: > RPS not work for DSA devices since the 'skb_get_hash' > will always get the invalid hash for dsa tagged packets. > > "[PATCH] tag_mtk: add flow_dissect callback to the ops struct" > introduced the flow_dissect callback to get the right hash for > MTK tagged packet. And tag_dsa also needs to implement > the callback. Hi Rundong This looks good. Do you have any sort of numbers to show the performance improvements? Could you make a similar change to tag_edsa.c? It uses an 8 byte header. Thanks Andrew
diff --git a/net/dsa/tag_dsa.c b/net/dsa/tag_dsa.c index 8b2f92e..67ff3fa 100644 --- a/net/dsa/tag_dsa.c +++ b/net/dsa/tag_dsa.c @@ -146,8 +146,17 @@ static struct sk_buff *dsa_rcv(struct sk_buff *skb, struct net_device *dev, return skb; } +static int dsa_tag_flow_dissect(const struct sk_buff *skb, __be16 *proto, + int *offset) +{ + *offset = 4; + *proto = ((__be16 *)skb->data)[1]; + return 0; +} + const struct dsa_device_ops dsa_netdev_ops = { .xmit = dsa_xmit, .rcv = dsa_rcv, + .flow_dissect = dsa_tag_flow_dissect, .overhead = DSA_HLEN, };
RPS not work for DSA devices since the 'skb_get_hash' will always get the invalid hash for dsa tagged packets. "[PATCH] tag_mtk: add flow_dissect callback to the ops struct" introduced the flow_dissect callback to get the right hash for MTK tagged packet. And tag_dsa also needs to implement the callback. Signed-off-by: Rundong Ge <rdong.ge@gmail.com> --- net/dsa/tag_dsa.c | 9 +++++++++ 1 file changed, 9 insertions(+)