[dpdk-dev,7/7] net/qede: restrict maximum queues for PF/VF
Checks
Commit Message
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
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>
> ---
<...>
>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>
>> ---
><...>
>
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>
>>> ---
>> <...>
>>
>
>
>
>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>
>>>> ---
>>> <...>
>>>
>>
>>
>
>
@@ -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);
}
@@ -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 */
@@ -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],