patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Rasesh Mody <rmody@marvell.com>
To: Ferruh Yigit <ferruh.yigit@intel.com>,
	"dev@dpdk.org" <dev@dpdk.org>,
	Jerin Jacob Kollanukkaran <jerinj@marvell.com>
Cc: GR-Everest-DPDK-Dev <GR-Everest-DPDK-Dev@marvell.com>,
	"stable@dpdk.org" <stable@dpdk.org>,
	Igor Russkikh <irusskikh@marvell.com>
Subject: Re: [dpdk-stable] [EXT] Re: [PATCH 1/2] net/qede: fix assignment of Rx/Tx handlers
Date: Wed, 6 May 2020 02:34:58 +0000
Message-ID: <BYAPR18MB28388BD3BF675E063EF9009FB5A40@BYAPR18MB2838.namprd18.prod.outlook.com> (raw)
In-Reply-To: <f45a43b0-0bac-6fd3-9750-d4468e160e2d@intel.com>

Hi Ferruh,

>From: Ferruh Yigit <ferruh.yigit@intel.com>
>Sent: Tuesday, May 05, 2020 2:01 AM
>
>On 5/5/2020 4:09 AM, Rasesh Mody wrote:
>> Fix to assign dummy Rx/Tx handlers in dev_stop.
>> For MTU set, assignment of the appropriate Rx/Tx handlers will be
>> handled by dev_start/dev_stop.
>>
>> Fixes: 81f8804992c9 ("net/qede: enhance Rx CPU utilization")
>> Fixes: 8de0c4201926 ("net/qede: fix odd number of queues usage in 100G
>> mode")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Rasesh Mody <rmody@marvell.com>
>> Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
>> ---
>>  drivers/net/qede/qede_ethdev.c | 33 ++++++++++++++++-----------------
>>  1 file changed, 16 insertions(+), 17 deletions(-)
>>
>> diff --git a/drivers/net/qede/qede_ethdev.c
>> b/drivers/net/qede/qede_ethdev.c index e71fa1e6a..726daa3e3 100644
>> --- a/drivers/net/qede/qede_ethdev.c
>> +++ b/drivers/net/qede/qede_ethdev.c
>> @@ -320,13 +320,19 @@ qede_interrupt_handler(void *param)  }
>>
>>  static void
>> -qede_assign_rxtx_handlers(struct rte_eth_dev *dev)
>> +qede_assign_rxtx_handlers(struct rte_eth_dev *dev, bool is_dummy)
>>  {
>>  	uint64_t tx_offloads = dev->data->dev_conf.txmode.offloads;
>>  	struct qede_dev *qdev = dev->data->dev_private;
>>  	struct ecore_dev *edev = &qdev->edev;
>>  	bool use_tx_offload = false;
>>
>> +	if (is_dummy) {
>> +		dev->rx_pkt_burst = qede_rxtx_pkts_dummy;
>> +		dev->tx_pkt_burst = qede_rxtx_pkts_dummy;
>> +		return;
>> +	}
>> +
>>  	if (ECORE_IS_CMT(edev)) {
>>  		dev->rx_pkt_burst = qede_recv_pkts_cmt;
>>  		dev->tx_pkt_burst = qede_xmit_pkts_cmt; @@ -1150,7
>+1156,9 @@
>> static int qede_dev_start(struct rte_eth_dev *eth_dev)
>>  	/* Start/resume traffic */
>>  	qede_fastpath_start(edev);
>>
>> -	qede_assign_rxtx_handlers(eth_dev);
>> +	/* Assign I/O handlers */
>> +	qede_assign_rxtx_handlers(eth_dev, false);
>> +
>>  	DP_INFO(edev, "Device started\n");
>>
>>  	return 0;
>> @@ -1166,6 +1174,11 @@ static void qede_dev_stop(struct rte_eth_dev
>> *eth_dev)
>>
>>  	PMD_INIT_FUNC_TRACE(edev);
>>
>> +	/* Replace I/O functions with dummy ones. It cannot
>> +	 * be set to NULL because rte_eth_rx_burst() doesn't check for NULL.
>> +	 */
>> +	qede_assign_rxtx_handlers(eth_dev, true);
>> +
>
>Why need to assign dummy handlers on stop(), what happens if you keep
>them as they are as many PMD does?

It helps in preventing crash when queues are still in use.

Thanks!
-Rasesh

>
>>  	/* Disable vport */
>>  	if (qede_activate_vport(eth_dev, false))
>>  		return;
>> @@ -2316,11 +2329,6 @@ static int qede_set_mtu(struct rte_eth_dev
>*dev, uint16_t mtu)
>>  			dev->data->min_rx_buf_size);
>>  		return -EINVAL;
>>  	}
>> -	/* Temporarily replace I/O functions with dummy ones. It cannot
>> -	 * be set to NULL because rte_eth_rx_burst() doesn't check for NULL.
>> -	 */
>> -	dev->rx_pkt_burst = qede_rxtx_pkts_dummy;
>> -	dev->tx_pkt_burst = qede_rxtx_pkts_dummy;
>>  	if (dev->data->dev_started) {
>>  		dev->data->dev_started = 0;
>>  		qede_dev_stop(dev);
>> @@ -2359,15 +2367,6 @@ static int qede_set_mtu(struct rte_eth_dev
>*dev, uint16_t mtu)
>>  	/* update max frame size */
>>  	dev->data->dev_conf.rxmode.max_rx_pkt_len = max_rx_pkt_len;
>>
>> -	/* Reassign back */
>> -	qede_assign_rxtx_handlers(dev);
>> -	if (ECORE_IS_CMT(edev)) {
>> -		dev->rx_pkt_burst = qede_recv_pkts_cmt;
>> -		dev->tx_pkt_burst = qede_xmit_pkts_cmt;
>> -	} else {
>> -		dev->rx_pkt_burst = qede_recv_pkts;
>> -		dev->tx_pkt_burst = qede_xmit_pkts;
>> -	}
>>  	return 0;
>>  }
>>
>> @@ -2570,7 +2569,7 @@ static int qede_common_dev_init(struct
>rte_eth_dev *eth_dev, bool is_vf)
>>  	strncpy((char *)params.name, QEDE_PMD_VER_PREFIX,
>>  		QEDE_PMD_DRV_VER_STR_SIZE);
>>
>> -	qede_assign_rxtx_handlers(eth_dev);
>> +	qede_assign_rxtx_handlers(eth_dev, true);
>>  	eth_dev->tx_pkt_prepare = qede_xmit_prep_pkts;
>>
>>  	/* For CMT mode device do periodic polling for slowpath events.
>>



  reply	other threads:[~2020-05-06  2:35 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-05  3:09 [dpdk-stable] " Rasesh Mody
2020-05-05  9:01 ` Ferruh Yigit
2020-05-06  2:34   ` Rasesh Mody [this message]
2020-05-14  4:09 ` [dpdk-stable] [PATCH v2 " Rasesh Mody
2020-05-14  4:09 ` [dpdk-stable] [PATCH v2 2/2] examples/kni: fix MTU change to setup Tx queue Rasesh Mody
2020-05-14 15:33   ` Ferruh Yigit
2020-05-15 11:29   ` Ferruh Yigit
2020-05-19 16:31     ` [dpdk-stable] [dpdk-dev] " Thomas Monjalon
2020-05-15  6:34 ` [dpdk-stable] [PATCH v3 1/2] net/qede: fix assignment of Rx/Tx handlers Rasesh Mody
2020-05-15 12:26   ` [dpdk-stable] [dpdk-dev] " Jerin Jacob
2020-05-15  6:34 ` [dpdk-stable] [PATCH v3 2/2] net/qede: fix port reconfiguration Rasesh Mody

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BYAPR18MB28388BD3BF675E063EF9009FB5A40@BYAPR18MB2838.namprd18.prod.outlook.com \
    --to=rmody@marvell.com \
    --cc=GR-Everest-DPDK-Dev@marvell.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=irusskikh@marvell.com \
    --cc=jerinj@marvell.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

patches for DPDK stable branches

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ https://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git