diff options
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_tc_lib.c')
| -rw-r--r-- | drivers/net/ethernet/intel/ice/ice_tc_lib.c | 22 | 
1 files changed, 11 insertions, 11 deletions
| diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.c b/drivers/net/ethernet/intel/ice/ice_tc_lib.c index b54052ef6050..4a34ef5f58d3 100644 --- a/drivers/net/ethernet/intel/ice/ice_tc_lib.c +++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.c @@ -750,17 +750,16 @@ exit:  /**   * ice_locate_vsi_using_queue - locate VSI using queue (forward to queue action)   * @vsi: Pointer to VSI - * @tc_fltr: Pointer to tc_flower_filter + * @queue: Queue index   * - * Locate the VSI using specified queue. When ADQ is not enabled, always - * return input VSI, otherwise locate corresponding VSI based on per channel - * offset and qcount + * Locate the VSI using specified "queue". When ADQ is not enabled, + * always return input VSI, otherwise locate corresponding + * VSI based on per channel "offset" and "qcount"   */ -static struct ice_vsi * -ice_locate_vsi_using_queue(struct ice_vsi *vsi, -			   struct ice_tc_flower_fltr *tc_fltr) +struct ice_vsi * +ice_locate_vsi_using_queue(struct ice_vsi *vsi, int queue)  { -	int num_tc, tc, queue; +	int num_tc, tc;  	/* if ADQ is not active, passed VSI is the candidate VSI */  	if (!ice_is_adq_active(vsi->back)) @@ -770,7 +769,6 @@ ice_locate_vsi_using_queue(struct ice_vsi *vsi,  	 * upon queue number)  	 */  	num_tc = vsi->mqprio_qopt.qopt.num_tc; -	queue = tc_fltr->action.fwd.q.queue;  	for (tc = 0; tc < num_tc; tc++) {  		int qcount = vsi->mqprio_qopt.qopt.count[tc]; @@ -812,6 +810,7 @@ ice_tc_forward_action(struct ice_vsi *vsi, struct ice_tc_flower_fltr *tc_fltr)  	struct ice_pf *pf = vsi->back;  	struct device *dev;  	u32 tc_class; +	int q;  	dev = ice_pf_to_dev(pf); @@ -840,7 +839,8 @@ ice_tc_forward_action(struct ice_vsi *vsi, struct ice_tc_flower_fltr *tc_fltr)  		/* Determine destination VSI even though the action is  		 * FWD_TO_QUEUE, because QUEUE is associated with VSI  		 */ -		dest_vsi = tc_fltr->dest_vsi; +		q = tc_fltr->action.fwd.q.queue; +		dest_vsi = ice_locate_vsi_using_queue(vsi, q);  		break;  	default:  		dev_err(dev, @@ -1716,7 +1716,7 @@ ice_tc_forward_to_queue(struct ice_vsi *vsi, struct ice_tc_flower_fltr *fltr,  	/* If ADQ is configured, and the queue belongs to ADQ VSI, then prepare  	 * ADQ switch filter  	 */ -	ch_vsi = ice_locate_vsi_using_queue(vsi, fltr); +	ch_vsi = ice_locate_vsi_using_queue(vsi, fltr->action.fwd.q.queue);  	if (!ch_vsi)  		return -EINVAL;  	fltr->dest_vsi = ch_vsi; |