Message ID | 20191230143028.27313-4-alobakin@dlink.ru |
---|---|
State | RFC |
Delegated to: | David Miller |
Headers | show |
Series | net: dsa: add GRO support | expand |
On 12/30/19 6:30 AM, Alexander Lobakin wrote: > ...to make RPS work correctly if user would like to configure it. > Misc: fix identation of ar9331_netdev_ops structure. > > Signed-off-by: Alexander Lobakin <alobakin@dlink.ru> > --- > net/dsa/tag_ar9331.c | 18 +++++++++++++----- > 1 file changed, 13 insertions(+), 5 deletions(-) > > diff --git a/net/dsa/tag_ar9331.c b/net/dsa/tag_ar9331.c > index 466ffa92a474..399ca21ec03b 100644 > --- a/net/dsa/tag_ar9331.c > +++ b/net/dsa/tag_ar9331.c > @@ -83,12 +83,20 @@ static struct sk_buff *ar9331_tag_rcv(struct sk_buff *skb, > return skb; > } > > +static void ar9331_tag_flow_dissect(const struct sk_buff *skb, __be16 *proto, > + int *offset) > +{ > + *offset = AR9331_HDR_LEN; > + *proto = *(__be16 *)skb->data; If we provided an offset from the beginning of the frame, then there is no need to call .flow_dissect() at all and we can just return the dsa_device_ops::overhead and offset_start (whatever is the name we pick) and avoid a function call. > +} > + > static const struct dsa_device_ops ar9331_netdev_ops = { > - .name = "ar9331", > - .proto = DSA_TAG_PROTO_AR9331, > - .xmit = ar9331_tag_xmit, > - .rcv = ar9331_tag_rcv, > - .overhead = AR9331_HDR_LEN, > + .name = "ar9331", > + .proto = DSA_TAG_PROTO_AR9331, > + .xmit = ar9331_tag_xmit, > + .rcv = ar9331_tag_rcv, > + .flow_dissect = ar9331_tag_flow_dissect, > + .overhead = AR9331_HDR_LEN, > }; > > MODULE_LICENSE("GPL v2"); >
diff --git a/net/dsa/tag_ar9331.c b/net/dsa/tag_ar9331.c index 466ffa92a474..399ca21ec03b 100644 --- a/net/dsa/tag_ar9331.c +++ b/net/dsa/tag_ar9331.c @@ -83,12 +83,20 @@ static struct sk_buff *ar9331_tag_rcv(struct sk_buff *skb, return skb; } +static void ar9331_tag_flow_dissect(const struct sk_buff *skb, __be16 *proto, + int *offset) +{ + *offset = AR9331_HDR_LEN; + *proto = *(__be16 *)skb->data; +} + static const struct dsa_device_ops ar9331_netdev_ops = { - .name = "ar9331", - .proto = DSA_TAG_PROTO_AR9331, - .xmit = ar9331_tag_xmit, - .rcv = ar9331_tag_rcv, - .overhead = AR9331_HDR_LEN, + .name = "ar9331", + .proto = DSA_TAG_PROTO_AR9331, + .xmit = ar9331_tag_xmit, + .rcv = ar9331_tag_rcv, + .flow_dissect = ar9331_tag_flow_dissect, + .overhead = AR9331_HDR_LEN, }; MODULE_LICENSE("GPL v2");
...to make RPS work correctly if user would like to configure it. Misc: fix identation of ar9331_netdev_ops structure. Signed-off-by: Alexander Lobakin <alobakin@dlink.ru> --- net/dsa/tag_ar9331.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-)