mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	qed: Inform qedi the number of possible CQs
Now that management firmware is capable of telling us the number of CQs available for a given PF, qed needs to communicate the number to qedi so it would know have many to use. Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									3ddc48dc19
								
							
						
					
					
						commit
						08737a3fa3
					
				
					 4 changed files with 21 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -225,8 +225,9 @@ enum QED_FEATURE {
 | 
			
		|||
	QED_PF_L2_QUE,
 | 
			
		||||
	QED_VF,
 | 
			
		||||
	QED_RDMA_CNQ,
 | 
			
		||||
	QED_VF_L2_QUE,
 | 
			
		||||
	QED_ISCSI_CQ,
 | 
			
		||||
	QED_FCOE_CQ,
 | 
			
		||||
	QED_VF_L2_QUE,
 | 
			
		||||
	QED_MAX_FEATURES,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2045,12 +2045,17 @@ static void qed_hw_set_feat(struct qed_hwfn *p_hwfn)
 | 
			
		|||
							 QED_VF_L2_QUE));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (p_hwfn->hw_info.personality == QED_PCI_ISCSI)
 | 
			
		||||
		feat_num[QED_ISCSI_CQ] = min_t(u32, RESC_NUM(p_hwfn, QED_SB),
 | 
			
		||||
					       RESC_NUM(p_hwfn,
 | 
			
		||||
							QED_CMDQS_CQS));
 | 
			
		||||
	DP_VERBOSE(p_hwfn,
 | 
			
		||||
		   NETIF_MSG_PROBE,
 | 
			
		||||
		   "#PF_L2_QUEUES=%d VF_L2_QUEUES=%d #ROCE_CNQ=%d #SBS=%d\n",
 | 
			
		||||
		   "#PF_L2_QUEUES=%d VF_L2_QUEUES=%d #ROCE_CNQ=%d ISCSI_CQ=%d #SBS=%d\n",
 | 
			
		||||
		   (int)FEAT_NUM(p_hwfn, QED_PF_L2_QUE),
 | 
			
		||||
		   (int)FEAT_NUM(p_hwfn, QED_VF_L2_QUE),
 | 
			
		||||
		   (int)FEAT_NUM(p_hwfn, QED_RDMA_CNQ),
 | 
			
		||||
		   (int)FEAT_NUM(p_hwfn, QED_ISCSI_CQ),
 | 
			
		||||
		   RESC_NUM(p_hwfn, QED_SB));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -181,6 +181,15 @@ qed_sp_iscsi_func_start(struct qed_hwfn *p_hwfn,
 | 
			
		|||
	p_params = &p_hwfn->pf_params.iscsi_pf_params;
 | 
			
		||||
	p_queue = &p_init->q_params;
 | 
			
		||||
 | 
			
		||||
	/* Sanity */
 | 
			
		||||
	if (p_params->num_queues > p_hwfn->hw_info.feat_num[QED_ISCSI_CQ]) {
 | 
			
		||||
		DP_ERR(p_hwfn,
 | 
			
		||||
		       "Cannot satisfy CQ amount. Queues requested %d, CQs available %d. Aborting function start\n",
 | 
			
		||||
		       p_params->num_queues,
 | 
			
		||||
		       p_hwfn->hw_info.resc_num[QED_ISCSI_CQ]);
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	SET_FIELD(p_init->hdr.flags,
 | 
			
		||||
		  ISCSI_SLOW_PATH_HDR_LAYER_CODE, ISCSI_SLOW_PATH_LAYER_CODE);
 | 
			
		||||
	p_init->hdr.op_code = ISCSI_RAMROD_CMD_ID_INIT_FUNC;
 | 
			
		||||
| 
						 | 
				
			
			@ -1012,6 +1021,8 @@ static int qed_fill_iscsi_dev_info(struct qed_dev *cdev,
 | 
			
		|||
	info->secondary_bdq_rq_addr =
 | 
			
		||||
	    qed_iscsi_get_secondary_bdq_prod(hwfn, BDQ_ID_RQ);
 | 
			
		||||
 | 
			
		||||
	info->num_cqs = FEAT_NUM(hwfn, QED_ISCSI_CQ);
 | 
			
		||||
 | 
			
		||||
	return rc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -67,6 +67,8 @@ struct qed_dev_iscsi_info {
 | 
			
		|||
 | 
			
		||||
	void __iomem *primary_dbq_rq_addr;
 | 
			
		||||
	void __iomem *secondary_bdq_rq_addr;
 | 
			
		||||
 | 
			
		||||
	u8 num_cqs;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct qed_iscsi_id_params {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue