ethtool: allow flow-type ether without IP protocol field
authorVishal Kulkarni <vishal@chelsio.com>
Tue, 18 Aug 2020 18:55:03 +0000 (00:25 +0530)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Aug 2020 23:26:03 +0000 (16:26 -0700)
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 <vishal@chelsio.com>
Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ethtool/ioctl.c

index 441794e..e6f5cf5 100644 (file)
@@ -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] =