Patch "ice: change q_index variable type to s16 to store -1 value" has been added to the 6.11-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ice: change q_index variable type to s16 to store -1 value

to the 6.11-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ice-change-q_index-variable-type-to-s16-to-store-1-v.patch
and it can be found in the queue-6.11 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 1f97b9878162de2aa4ebe6e75106cdcff7d8a0b1
Author: Mateusz Polchlopek <mateusz.polchlopek@xxxxxxxxx>
Date:   Mon Oct 28 12:59:22 2024 -0400

    ice: change q_index variable type to s16 to store -1 value
    
    [ Upstream commit 64502dac974a5d9951d16015fa2e16a14e5f2bb2 ]
    
    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 <przemyslaw.kitszel@xxxxxxxxx>
    Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@xxxxxxxxx>
    Reviewed-by: Simon Horman <horms@xxxxxxxxxx>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@xxxxxxxxx> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c b/drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
index 5412eff8ef233..ee9862ddfe15e 100644
--- a/drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
+++ b/drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
@@ -1830,11 +1830,12 @@ static int
 ice_set_fdir_input_set(struct ice_vsi *vsi, struct ethtool_rx_flow_spec *fsp,
 		       struct ice_fdir_fltr *input)
 {
-	u16 dest_vsi, q_index = 0;
+	s16 q_index = ICE_FDIR_NO_QUEUE_IDX;
 	u16 orig_q_index = 0;
 	struct ice_pf *pf;
 	struct ice_hw *hw;
 	int flow_type;
+	u16 dest_vsi;
 	u8 dest_ctl;
 
 	if (!vsi || !fsp || !input)
diff --git a/drivers/net/ethernet/intel/ice/ice_fdir.h b/drivers/net/ethernet/intel/ice/ice_fdir.h
index ab5b118daa2da..820023c0271fd 100644
--- a/drivers/net/ethernet/intel/ice/ice_fdir.h
+++ b/drivers/net/ethernet/intel/ice/ice_fdir.h
@@ -53,6 +53,8 @@
  */
 #define ICE_FDIR_IPV4_PKT_FLAG_MF		0x20
 
+#define ICE_FDIR_NO_QUEUE_IDX			-1
+
 enum ice_fltr_prgm_desc_dest {
 	ICE_FLTR_PRGM_DESC_DEST_DROP_PKT,
 	ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_QINDEX,
@@ -186,7 +188,7 @@ struct ice_fdir_fltr {
 	u16 flex_fltr;
 
 	/* filter control */
-	u16 q_index;
+	s16 q_index;
 	u16 orig_q_index;
 	u16 dest_vsi;
 	u8 dest_ctl;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux