All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ivan Vecera <ivecera@redhat.com>
To: Sathya Perla <Sathya.Perla@Emulex.Com>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	Subramanian Seetharaman <subbu.seetharaman@Emulex.Com>,
	Ajit Khaparde <Ajit.Khaparde@Emulex.Com>
Subject: Re: [PATCH net] be2net: call napi_disable() for all event queues
Date: Wed, 27 Nov 2013 09:00:00 +0100	[thread overview]
Message-ID: <5295A680.7070909@redhat.com> (raw)
In-Reply-To: <f158e8ac-98d2-4be4-b801-20a18912d672@CMEXHTCAS1.ad.emulex.com>

On 11/27/2013 06:28 AM, Sathya Perla wrote:
>> -----Original Message-----
>> From: Ivan Vecera [mailto:ivecera@redhat.com]
>>
>> The recent be2net commit 6384a4d (adds a support for busy polling)
>> introduces a regression that results in kernel crash. It incorrectly
>> modified be_close() so napi_disable() is called only for the first queue.
>> This breaks a correct pairing of napi_enable/_disable for the rest
>> of event queues and causes a crash in subsequent be_open() call.
>>
>> Cc: Sathya Perla <sathya.perla@emulex.com>
>> Cc: Subbu Seetharaman <subbu.seetharaman@emulex.com>
>> Cc: Ajit Khaparde <ajit.khaparde@emulex.com>
>> Signed-off-by: Ivan Vecera <ivecera@redhat.com>
>> ---
>>   drivers/net/ethernet/emulex/benet/be_main.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/ethernet/emulex/benet/be_main.c
>> b/drivers/net/ethernet/emulex/benet/be_main.c
>> index 78a0e85..0aec4d2 100644
>> --- a/drivers/net/ethernet/emulex/benet/be_main.c
>> +++ b/drivers/net/ethernet/emulex/benet/be_main.c
>> @@ -2663,8 +2663,8 @@ static int be_close(struct net_device *netdev)
>>   			napi_disable(&eqo->napi);
>>   			be_disable_busy_poll(eqo);
>>   		}
>> -		adapter->flags &= ~BE_FLAGS_NAPI_ENABLED;
>>   	}
>> +	adapter->flags &= ~BE_FLAGS_NAPI_ENABLED;
>>
>
> Ivan, Thanks for spotting this.
> Your fix is correct but it'll be nice if the for-loop for napi_disable
> is not even entered when FLAGS_NAPI_ENABLED is not set, as in:
>
> diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
> index 603b662..40d2adb 100644
> --- a/drivers/net/ethernet/emulex/benet/be_main.c
> +++ b/drivers/net/ethernet/emulex/benet/be_main.c
> @@ -2658,8 +2658,8 @@ static int be_close(struct net_device *netdev)
>
>   	be_roce_dev_close(adapter);
>
> -	for_all_evt_queues(adapter, eqo, i) {
> -		if (adapter->flags & BE_FLAGS_NAPI_ENABLED) {
> +	if (adapter->flags & BE_FLAGS_NAPI_ENABLED) {
> +		for_all_evt_queues(adapter, eqo, i) {
>   			napi_disable(&eqo->napi);
>   			be_disable_busy_poll(eqo);
>   		}
>
> Could you also add the following line to your patch as it fixes a
> regression caused by an older be2net commit:
> Fixes: 6384a4d0dcf9 ("be2net: add support for ndo_busy_poll")
>
Sure, I'm sending v2.

Ivan

      reply	other threads:[~2013-11-27  8:22 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-26 16:54 [PATCH net] be2net: call napi_disable() for all event queues Ivan Vecera
2013-11-26 21:33 ` Ajit Khaparde
2013-11-27  5:28 ` Sathya Perla
2013-11-27  8:00   ` Ivan Vecera [this message]

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=5295A680.7070909@redhat.com \
    --to=ivecera@redhat.com \
    --cc=Ajit.Khaparde@Emulex.Com \
    --cc=Sathya.Perla@Emulex.Com \
    --cc=netdev@vger.kernel.org \
    --cc=subbu.seetharaman@Emulex.Com \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.