mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 18:43:33 +02:00
ice: move ice_vsi_update_l2tsel to ice_lib.c
A future change is going to need to call ice_vsi_update_l2tsel from a new context outside of ice_virtchnl.c Since this function deals with a generic VSI, move it into ice_lib.c to enable calling it from other places in the ice driver. Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Reviewed-by: Madhu Chittim <madhu.chittim@intel.com> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
5ff8d95623
commit
4f98ac2d8e
|
|
@ -4020,3 +4020,38 @@ ice_vsi_update_local_lb(struct ice_vsi *vsi, bool set)
|
|||
vsi->info = ctx.info;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_vsi_update_l2tsel - update l2tsel field for all Rx rings on this VSI
|
||||
* @vsi: VSI used to update l2tsel on
|
||||
* @l2tsel: l2tsel setting requested
|
||||
*
|
||||
* Use the l2tsel setting to update all of the Rx queue context bits for l2tsel.
|
||||
* This will modify which descriptor field the first offloaded VLAN will be
|
||||
* stripped into.
|
||||
*/
|
||||
void ice_vsi_update_l2tsel(struct ice_vsi *vsi, enum ice_l2tsel l2tsel)
|
||||
{
|
||||
struct ice_hw *hw = &vsi->back->hw;
|
||||
u32 l2tsel_bit;
|
||||
int i;
|
||||
|
||||
if (l2tsel == ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND)
|
||||
l2tsel_bit = 0;
|
||||
else
|
||||
l2tsel_bit = BIT(ICE_L2TSEL_BIT_OFFSET);
|
||||
|
||||
for (i = 0; i < vsi->alloc_rxq; i++) {
|
||||
u16 pfq = vsi->rxq_map[i];
|
||||
u32 qrx_context_offset;
|
||||
u32 regval;
|
||||
|
||||
qrx_context_offset =
|
||||
QRX_CONTEXT(ICE_L2TSEL_QRX_CONTEXT_REG_IDX, pfq);
|
||||
|
||||
regval = rd32(hw, qrx_context_offset);
|
||||
regval &= ~BIT(ICE_L2TSEL_BIT_OFFSET);
|
||||
regval |= l2tsel_bit;
|
||||
wr32(hw, qrx_context_offset, regval);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,13 @@
|
|||
#define ICE_VSI_FLAG_INIT BIT(0)
|
||||
#define ICE_VSI_FLAG_NO_INIT 0
|
||||
|
||||
#define ICE_L2TSEL_QRX_CONTEXT_REG_IDX 3
|
||||
#define ICE_L2TSEL_BIT_OFFSET 23
|
||||
enum ice_l2tsel {
|
||||
ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND,
|
||||
ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG1,
|
||||
};
|
||||
|
||||
const char *ice_vsi_type_str(enum ice_vsi_type vsi_type);
|
||||
|
||||
bool ice_pf_state_is_nominal(struct ice_pf *pf);
|
||||
|
|
@ -116,4 +123,5 @@ void ice_set_feature_support(struct ice_pf *pf, enum ice_feature f);
|
|||
void ice_clear_feature_support(struct ice_pf *pf, enum ice_feature f);
|
||||
void ice_init_feature_support(struct ice_pf *pf);
|
||||
bool ice_vsi_is_rx_queue_active(struct ice_vsi *vsi);
|
||||
void ice_vsi_update_l2tsel(struct ice_vsi *vsi, enum ice_l2tsel l2tsel);
|
||||
#endif /* !_ICE_LIB_H_ */
|
||||
|
|
|
|||
|
|
@ -3860,48 +3860,6 @@ ice_vc_ena_vlan_offload(struct ice_vsi *vsi,
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define ICE_L2TSEL_QRX_CONTEXT_REG_IDX 3
|
||||
#define ICE_L2TSEL_BIT_OFFSET 23
|
||||
enum ice_l2tsel {
|
||||
ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND,
|
||||
ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG1,
|
||||
};
|
||||
|
||||
/**
|
||||
* ice_vsi_update_l2tsel - update l2tsel field for all Rx rings on this VSI
|
||||
* @vsi: VSI used to update l2tsel on
|
||||
* @l2tsel: l2tsel setting requested
|
||||
*
|
||||
* Use the l2tsel setting to update all of the Rx queue context bits for l2tsel.
|
||||
* This will modify which descriptor field the first offloaded VLAN will be
|
||||
* stripped into.
|
||||
*/
|
||||
static void ice_vsi_update_l2tsel(struct ice_vsi *vsi, enum ice_l2tsel l2tsel)
|
||||
{
|
||||
struct ice_hw *hw = &vsi->back->hw;
|
||||
u32 l2tsel_bit;
|
||||
int i;
|
||||
|
||||
if (l2tsel == ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND)
|
||||
l2tsel_bit = 0;
|
||||
else
|
||||
l2tsel_bit = BIT(ICE_L2TSEL_BIT_OFFSET);
|
||||
|
||||
for (i = 0; i < vsi->alloc_rxq; i++) {
|
||||
u16 pfq = vsi->rxq_map[i];
|
||||
u32 qrx_context_offset;
|
||||
u32 regval;
|
||||
|
||||
qrx_context_offset =
|
||||
QRX_CONTEXT(ICE_L2TSEL_QRX_CONTEXT_REG_IDX, pfq);
|
||||
|
||||
regval = rd32(hw, qrx_context_offset);
|
||||
regval &= ~BIT(ICE_L2TSEL_BIT_OFFSET);
|
||||
regval |= l2tsel_bit;
|
||||
wr32(hw, qrx_context_offset, regval);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_vc_ena_vlan_stripping_v2_msg
|
||||
* @vf: VF the message was received from
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user