On 12/12/2023 11:29 AM, Simon Horman wrote:
On Thu, Dec 07, 2023 at 01:48:40PM +0100, Lukasz Plachno wrote:
From: Jakub Buchocki <[email protected]>

Add support for 'flow-type ether' Flow Director rules via ethtool.

Rules not containing masks are processed by the Flow Director,
and support the following set of input parameters in all combinations:
src, dst, proto, vlan-etype, vlan, action.

It is possible to specify address mask in ethtool parameters but only
00:00:00:00:00 and FF:FF:FF:FF:FF are valid.
The same applies to proto, vlan-etype and vlan masks:
only 0x0000 and 0xffff masks are valid.

Signed-off-by: Jakub Buchocki <[email protected]>
Co-developed-by: Mateusz Pacuszka <[email protected]>
Signed-off-by: Mateusz Pacuszka <[email protected]>
Reviewed-by: Przemek Kitszel <[email protected]>
Signed-off-by: Lukasz Plachno <[email protected]>

...

@@ -1268,6 +1374,16 @@ ice_cfg_fdir_xtrct_seq(struct ice_pf *pf, struct 
ethtool_rx_flow_spec *fsp,
                ret = ice_set_fdir_ip6_usr_seg(seg, &fsp->m_u.usr_ip6_spec,
                                               &perfect_filter);
                break;
+       case ETHER_FLOW:
+               ret = ice_set_ether_flow_seg(seg, &fsp->m_u.ether_spec);
+               if (!ret && (fsp->m_ext.vlan_etype || fsp->m_ext.vlan_tci)) {
+                       if (!ice_fdir_vlan_valid(fsp)) {
+                               ret = -EINVAL;
+                               break;
+                       }
+                       ret = ice_set_fdir_vlan_seg(seg, &fsp->m_ext);
+               }
+               break;
        default:
                ret = -EINVAL;
        }

Hi Jakub,

A bit further down this function, perfect_filter is used as follows.

        ...

        if (user && user->flex_fltr) {
                perfect_filter = false;
                ...
        }

        ...

        assign_bit(fltr_idx, hw->fdir_perfect_fltr, perfect_filter);

And unlike other non-error cases handled in the switch statement,
the new ETHER_FLOW case does not set perfect_filter.

It's unclear to me if this is actually the case or not,
but Smatch flags that perfect_filter may now be used uninitialised
in the assign_bit() call above.

...

Hi Simon,

Thank you for pointing that out, perfect_filter should be initialized to false, I will fix that in V3.

Thanks,
Ɓukasz
_______________________________________________
Intel-wired-lan mailing list
[email protected]
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

Reply via email to