[dpdk-dev,7/7] net/qede: restrict maximum queues for PF/VF

Message ID 1480733039-13046-7-git-send-email-harish.patil@qlogic.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
checkpatch/checkpatch success coding style OK

Commit Message

Harish Patil Dec. 3, 2016, 2:43 a.m. UTC
  Fix to adverstise max_rx_queues by taking into account the number
of PF connections instead of returning max_queues supported by the
HW.

Fixes: 2ea6f76a ("qede: add core driver")

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
---
 drivers/net/qede/qede_ethdev.c | 13 ++++++++++---
 drivers/net/qede/qede_ethdev.h |  3 +++
 drivers/net/qede/qede_main.c   |  5 -----
 3 files changed, 13 insertions(+), 8 deletions(-)
  

Comments

Ferruh Yigit Dec. 8, 2016, 4:45 p.m. UTC | #1
On 12/3/2016 2:43 AM, Harish Patil wrote:
> Fix to adverstise max_rx_queues by taking into account the number

s/adverstise/advertise

> of PF connections instead of returning max_queues supported by the
> HW.

Can you please describe what is the effect, what happens if this is not
fixed, and driver keeps reporting max_queues supported by the HW?

> 
> Fixes: 2ea6f76a ("qede: add core driver")
> 
> Signed-off-by: Harish Patil <harish.patil@qlogic.com>
> ---
<...>
  
Harish Patil Dec. 12, 2016, 7:29 p.m. UTC | #2
>On 12/3/2016 2:43 AM, Harish Patil wrote:

>> Fix to adverstise max_rx_queues by taking into account the number

>

>s/adverstise/advertise


Will correct that, thanks.

>

>> of PF connections instead of returning max_queues supported by the

>> HW.

>

>Can you please describe what is the effect, what happens if this is not

>fixed, and driver keeps reporting max_queues supported by the HW?


We have tested up to 32 Rx/Tx queues across different qede devices, so I
would like to advertise only those many.
Hope that is okay.

>

>> 

>> Fixes: 2ea6f76a ("qede: add core driver")

>> 

>> Signed-off-by: Harish Patil <harish.patil@qlogic.com>

>> ---

><...>

>
  
Ferruh Yigit Dec. 12, 2016, 8:10 p.m. UTC | #3
On 12/12/2016 7:29 PM, Harish Patil wrote:
> 
>> On 12/3/2016 2:43 AM, Harish Patil wrote:
>>> Fix to adverstise max_rx_queues by taking into account the number
>>
>> s/adverstise/advertise
> 
> Will correct that, thanks.
> 
>>
>>> of PF connections instead of returning max_queues supported by the
>>> HW.
>>
>> Can you please describe what is the effect, what happens if this is not
>> fixed, and driver keeps reporting max_queues supported by the HW?
> 
> We have tested up to 32 Rx/Tx queues across different qede devices, so I
> would like to advertise only those many.
> Hope that is okay.

That is OK, can you please add this information to the commit log,
otherwise it is not possible to know the reasoning of the change just
with code.

Thanks.

> 
>>
>>>
>>> Fixes: 2ea6f76a ("qede: add core driver")
>>>
>>> Signed-off-by: Harish Patil <harish.patil@qlogic.com>
>>> ---
>> <...>
>>
> 
>
  
Harish Patil Dec. 20, 2016, 11:16 p.m. UTC | #4
>


>On 12/12/2016 7:29 PM, Harish Patil wrote:

>> 

>>> On 12/3/2016 2:43 AM, Harish Patil wrote:

>>>> Fix to adverstise max_rx_queues by taking into account the number

>>>

>>> s/adverstise/advertise

>> 

>> Will correct that, thanks.

>> 

>>>

>>>> of PF connections instead of returning max_queues supported by the

>>>> HW.

>>>

>>> Can you please describe what is the effect, what happens if this is not

>>> fixed, and driver keeps reporting max_queues supported by the HW?

>> 

>> We have tested up to 32 Rx/Tx queues across different qede devices, so I

>> would like to advertise only those many.

>> Hope that is okay.

>

>That is OK, can you please add this information to the commit log,

>otherwise it is not possible to know the reasoning of the change just

>with code.

>

>Thanks.


Okay will do.

>

>> 

>>>

>>>>

>>>> Fixes: 2ea6f76a ("qede: add core driver")

>>>>

>>>> Signed-off-by: Harish Patil <harish.patil@qlogic.com>

>>>> ---

>>> <...>

>>>

>> 

>> 

>

>
  

Patch

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 10abb8b..9c2a5ea 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -973,8 +973,15 @@  static int qede_dev_configure(struct rte_eth_dev *eth_dev)
 	dev_info->max_rx_pktlen = (uint32_t)ETH_TX_MAX_NON_LSO_PKT_LEN;
 	dev_info->rx_desc_lim = qede_rx_desc_lim;
 	dev_info->tx_desc_lim = qede_tx_desc_lim;
-	dev_info->max_rx_queues = (uint16_t)QEDE_MAX_RSS_CNT(qdev);
+
+	if (IS_PF(edev))
+		dev_info->max_rx_queues = (uint16_t)RTE_MIN(
+			QEDE_MAX_RSS_CNT(qdev), QEDE_PF_NUM_CONNS / 2);
+	else
+		dev_info->max_rx_queues = (uint16_t)RTE_MIN(
+			QEDE_MAX_RSS_CNT(qdev), ECORE_MAX_VF_CHAINS_PER_PF);
 	dev_info->max_tx_queues = dev_info->max_rx_queues;
+
 	dev_info->max_mac_addrs = qdev->dev_info.num_mac_addrs;
 	dev_info->max_vfs = 0;
 	dev_info->reta_size = ECORE_RSS_IND_TABLE_SIZE;
@@ -2015,9 +2022,9 @@  int qede_dev_filter_ctrl(struct rte_eth_dev *eth_dev,
 static void qede_update_pf_params(struct ecore_dev *edev)
 {
 	struct ecore_pf_params pf_params;
-	/* 32 rx + 32 tx */
+
 	memset(&pf_params, 0, sizeof(struct ecore_pf_params));
-	pf_params.eth_pf_params.num_cons = 64;
+	pf_params.eth_pf_params.num_cons = QEDE_PF_NUM_CONNS;
 	qed_ops->common->update_pf_params(edev, &pf_params);
 }
 
diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h
index bd85ba3..95e06ef 100644
--- a/drivers/net/qede/qede_ethdev.h
+++ b/drivers/net/qede/qede_ethdev.h
@@ -115,6 +115,9 @@ 
 
 extern char fw_file[];
 
+/* Number of PF connections - 32 RX + 32 TX */
+#define QEDE_PF_NUM_CONNS		(64)
+
 /* Port/function states */
 enum qede_dev_state {
 	QEDE_DEV_INIT, /* Init the chip and Slowpath */
diff --git a/drivers/net/qede/qede_main.c b/drivers/net/qede/qede_main.c
index b7202c8..2c88329 100644
--- a/drivers/net/qede/qede_main.c
+++ b/drivers/net/qede/qede_main.c
@@ -399,11 +399,6 @@  static int qed_slowpath_start(struct ecore_dev *edev,
 		if (edev->num_hwfns > 1) {
 			ecore_vf_get_num_rxqs(&edev->hwfns[1], &queues);
 			info->num_queues += queues;
-			/* Restrict 100G VF to advertise 16 queues till the
-			 * required support is available to go beyond 16.
-			 */
-			info->num_queues = RTE_MIN(info->num_queues,
-						   ECORE_MAX_VF_CHAINS_PER_PF);
 		}
 
 		ecore_vf_get_num_vlan_filters(&edev->hwfns[0],