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

Reply via email to