On Wed, Aug 19, 2020 at 12:25:03AM +0530, Vishal Kulkarni wrote: > Set IP protocol mask only when IP protocol field is set. > This will allow flow-type ether with vlan rule which don't have > protocol field to apply. > > ethtool -N ens5f4 flow-type ether proto 0x8100 vlan 0x600\ > m 0x1FFF action 3 loc 16 > > Signed-off-by: Vishal Kulkarni <vis...@chelsio.com> > --- > net/ethtool/ioctl.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c > index 441794e0034f..e6f5cf52023c 100644 > --- a/net/ethtool/ioctl.c > +++ b/net/ethtool/ioctl.c > @@ -3025,13 +3025,14 @@ ethtool_rx_flow_rule_create(const struct > ethtool_rx_flow_spec_input *input) > case TCP_V4_FLOW: > case TCP_V6_FLOW: > match->key.basic.ip_proto = IPPROTO_TCP; > + match->mask.basic.ip_proto = 0xff; > break; > case UDP_V4_FLOW: > case UDP_V6_FLOW: > match->key.basic.ip_proto = IPPROTO_UDP; > + match->mask.basic.ip_proto = 0xff; > break; > } > - match->mask.basic.ip_proto = 0xff; > > match->dissector.used_keys |= BIT(FLOW_DISSECTOR_KEY_BASIC); > match->dissector.offset[FLOW_DISSECTOR_KEY_BASIC] = > -- > 2.21.1 >
This is certainly correct. We should also handle SCTP_V4_FLOW and SCTP_V6_FLOW in the same way as {TCP,UDP}_V{4,6}_FLOW but that is an unrelated problem which should be handled separately (and also needs to be addressed in the switch statement above this one). Reviewed-by: Michal Kubecek <mkube...@suse.cz>
signature.asc
Description: PGP signature