> -----Original Message----- > From: Intel-wired-lan <[email protected]> On Behalf Of > Mateusz Polchlopek > Sent: 28 October 2024 22:29 > To: [email protected] > Cc: Ertman, David M <[email protected]>; [email protected]; > Polchlopek, Mateusz <[email protected]>; Kitszel, Przemyslaw > <[email protected]> > Subject: [Intel-wired-lan] [PATCH iwl-net] ice: change q_index variable type > to s16 to store -1 value > > Fix Flow Director not allowing to re-map traffic to 0th queue when action is > configured to drop (and vice versa). > > The current implementation of ethtool callback in the ice driver forbids > change Flow Director action from 0 to -1 and from -1 to 0 with an error, > e.g: > > # ethtool -U eth2 flow-type tcp4 src-ip 1.1.1.1 loc 1 action 0 # ethtool -U > eth2 flow-type tcp4 src-ip 1.1.1.1 loc 1 action -1 > rmgr: Cannot insert RX class rule: Invalid argument > > We set the value of `u16 q_index = 0` at the beginning of the function > ice_set_fdir_input_set(). In case of "drop traffic" action (which is equal to > -1 in ethtool) we store the 0 value. Later, when want to change traffic rule > to redirect to queue with index 0 it returns an error caused by duplicate > found. > > Fix this behaviour by change of the type of field `q_index` from u16 to s16 > in `struct ice_fdir_fltr`. This allows to store -1 in the field in case of > "drop traffic" action. What is more, change the variable type > in the > function ice_set_fdir_input_set() and assign at the beginning the new > `#define ICE_FDIR_NO_QUEUE_IDX` which is -1. Later, if the action is set to > another value (point specific queue index) the variable value is overwritten > in the function. > > Fixes: cac2a27cd9ab ("ice: Support IPv4 Flow Director filters") > Reviewed-by: Przemek Kitszel <[email protected]> > Signed-off-by: Mateusz Polchlopek <[email protected]> > --- > drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c | 3 ++- > drivers/net/ethernet/intel/ice/ice_fdir.h | 4 +++- > 2 files changed, 5 insertions(+), 2 deletions(-) >
Tested-by: Pucha Himasekhar Reddy <[email protected]> (A Contingent worker at Intel)
