diff options
Diffstat (limited to 'drivers/infiniband/hw/irdma/ctrl.c')
| -rw-r--r-- | drivers/infiniband/hw/irdma/ctrl.c | 33 | 
1 files changed, 21 insertions, 12 deletions
diff --git a/drivers/infiniband/hw/irdma/ctrl.c b/drivers/infiniband/hw/irdma/ctrl.c index 3141a9c85de5..ef1d6ad0f1fe 100644 --- a/drivers/infiniband/hw/irdma/ctrl.c +++ b/drivers/infiniband/hw/irdma/ctrl.c @@ -70,6 +70,25 @@ void irdma_sc_suspend_resume_qps(struct irdma_sc_vsi *vsi, u8 op)  	}  } +static void irdma_set_qos_info(struct irdma_sc_vsi  *vsi, +			       struct irdma_l2params *l2p) +{ +	u8 i; + +	vsi->qos_rel_bw = l2p->vsi_rel_bw; +	vsi->qos_prio_type = l2p->vsi_prio_type; +	for (i = 0; i < IRDMA_MAX_USER_PRIORITY; i++) { +		if (vsi->dev->hw_attrs.uk_attrs.hw_rev == IRDMA_GEN_1) +			vsi->qos[i].qs_handle = l2p->qs_handle_list[i]; +		vsi->qos[i].traffic_class = l2p->up2tc[i]; +		vsi->qos[i].rel_bw = +			l2p->tc_info[vsi->qos[i].traffic_class].rel_bw; +		vsi->qos[i].prio_type = +			l2p->tc_info[vsi->qos[i].traffic_class].prio_type; +		vsi->qos[i].valid = false; +	} +} +  /**   * irdma_change_l2params - given the new l2 parameters, change all qp   * @vsi: RDMA VSI pointer @@ -88,6 +107,7 @@ void irdma_change_l2params(struct irdma_sc_vsi *vsi,  		return;  	vsi->tc_change_pending = false; +	irdma_set_qos_info(vsi, l2params);  	irdma_sc_suspend_resume_qps(vsi, IRDMA_OP_RESUME);  } @@ -1845,7 +1865,6 @@ static void irdma_null_ws_reset(struct irdma_sc_vsi *vsi)  void irdma_sc_vsi_init(struct irdma_sc_vsi  *vsi,  		       struct irdma_vsi_init_info *info)  { -	struct irdma_l2params *l2p;  	int i;  	vsi->dev = info->dev; @@ -1858,18 +1877,8 @@ void irdma_sc_vsi_init(struct irdma_sc_vsi  *vsi,  	if (vsi->dev->hw_attrs.uk_attrs.hw_rev == IRDMA_GEN_1)  		vsi->fcn_id = info->dev->hmc_fn_id; -	l2p = info->params; -	vsi->qos_rel_bw = l2p->vsi_rel_bw; -	vsi->qos_prio_type = l2p->vsi_prio_type; +	irdma_set_qos_info(vsi, info->params);  	for (i = 0; i < IRDMA_MAX_USER_PRIORITY; i++) { -		if (vsi->dev->hw_attrs.uk_attrs.hw_rev == IRDMA_GEN_1) -			vsi->qos[i].qs_handle = l2p->qs_handle_list[i]; -		vsi->qos[i].traffic_class = info->params->up2tc[i]; -		vsi->qos[i].rel_bw = -			l2p->tc_info[vsi->qos[i].traffic_class].rel_bw; -		vsi->qos[i].prio_type = -			l2p->tc_info[vsi->qos[i].traffic_class].prio_type; -		vsi->qos[i].valid = false;  		mutex_init(&vsi->qos[i].qos_mutex);  		INIT_LIST_HEAD(&vsi->qos[i].qplist);  	}  | 
