linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kalle Valo <kvalo@qca.qualcomm.com>
To: Raja Mani <rmani@qca.qualcomm.com>
Cc: <linux-wireless@vger.kernel.org>
Subject: Re: [PATCH 2/7] ath6kl: Add wmi functions to configure wow mode and host sleep mode
Date: Mon, 31 Oct 2011 15:10:08 +0200	[thread overview]
Message-ID: <4EAE9E30.1080403@qca.qualcomm.com> (raw)
In-Reply-To: <4EAE6FFD.6090403@qca.qualcomm.com>

On 10/31/2011 11:53 AM, Raja Mani wrote:
>>> +static void ath6kl_wmi_relinquish_implicit_pstream_credits(struct wmi *wmi)
>>> >> +{
>>> >> +	u16 active_tsids;
>>> >> +	u8 stream_exist;
>>> >> +	int i;
>>> >> +
>>> >> +	/*
>>> >> +	 * Relinquish credits from all implicitly created pstreams
>>> >> +	 * since when we go to sleep. If user created explicit
>>> >> +	 * thinstreams exists with in a fatpipe leave them intact
>>> >> +	 * for the user to delete.
>>> >> +	 */
>>> >> +	spin_lock_bh(&wmi->lock);
>>> >> +	stream_exist = wmi->fat_pipe_exist;
>>> >> +	spin_unlock_bh(&wmi->lock);
>>> >> +
>>> >> +	for (i = 0; i<  WMM_NUM_AC; i++) {
>>> >> +		if (stream_exist&  (1<<  i)) {
>>> >> +
>>> >> +			spin_lock_bh(&wmi->lock);
>>> >> +			active_tsids = wmi->stream_exist_for_ac[i];
>>> >> +			spin_unlock_bh(&wmi->lock);
>>> >> +
>>> >> +			/*
>>> >> +			 * If there are no user created thin streams
>>> >> +			 * delete the fatpipe
>>> >> +			 */
>>> >> +			if (!active_tsids) {
>>> >> +				stream_exist&= ~(1<<  i);
>>> >> +				/*
>>> >> +				 * Indicate inactivity to driver layer for
>>> >> +				 * this fatpipe (pstream)
>>> >> +				 */
>>> >> +				ath6kl_indicate_tx_activity(wmi->parent_dev,
>>> >> +							    i, false);
>>> >> +			}
>>> >> +		}
>>> >> +	}
>>> >> +
>>> >> +	spin_lock_bh(&wmi->lock);
>>> >> +	wmi->fat_pipe_exist = stream_exist;
>>> >> +	spin_unlock_bh(&wmi->lock);
>> >
>> > The locking here doesn't really make sense. For example, any changes to
>> > wmi->fat_pipe_exist during the for loop will be overwritten. Also lock
>> > handling with wmi->stream_exist_for_ac[i] looks fishy.
>
> Is it fine just removal of both locking (For "active_tsids = 
> wmi->stream_exist_for_ac[i]" and "wmi->fat_pipe_exist = stream_exist") ?
> 
> I am sure about the impact..Could you please give some point how above 
> locking can be improved ?

I haven't reviewed the locking in detail so it's difficult to say. For
example, you could hold the lock the entire duration of for loop. But
that might create deadlocks. Another option is take it into account the
changes happening to fat_pipe_exist while lock is not held.

Kalle

  reply	other threads:[~2011-10-31 13:11 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-25 10:37 [PATCH 0/7] ath6kl: Add WOW support rmani
2011-10-25 10:37 ` [PATCH 1/7] ath6kl: Add wmi functions to add/delete wow patterns rmani
2011-10-28 12:11   ` Kalle Valo
2011-10-31  9:52     ` Raja Mani
2011-10-25 10:37 ` [PATCH 2/7] ath6kl: Add wmi functions to configure wow mode and host sleep mode rmani
2011-10-28 12:19   ` Kalle Valo
2011-10-31  9:53     ` Raja Mani
2011-10-31 13:10       ` Kalle Valo [this message]
2011-10-25 10:37 ` [PATCH 3/7] ath6kl: Introduce new variable to track wow state machine rmani
2011-10-25 10:37 ` [PATCH 4/7] ath6kl: Add new functions to handle wow suspend/resume operations rmani
2011-10-28 12:31   ` Kalle Valo
2011-10-31  9:53     ` Raja Mani
2011-10-25 10:37 ` [PATCH 5/7] ath6kl: Invoke wow suspend/resume calls during PM operations rmani
2011-10-28 13:15   ` Kalle Valo
2011-10-31  9:54     ` Raja Mani
2011-10-31 13:16       ` Kalle Valo
2011-10-28 13:21   ` Kalle Valo
2011-10-31  9:54     ` Raja Mani
2011-10-31 13:29       ` Kalle Valo
2011-10-25 10:37 ` [PATCH 6/7] ath6kl: Perform WOW resume in RX path in case of SDIO IRQ wakeup rmani
2011-10-28 13:18   ` Kalle Valo
2011-10-31  9:55     ` Raja Mani
2011-10-31 13:03       ` Kalle Valo
2011-10-25 10:37 ` [PATCH 7/7] ath6kl: Expose ath6kl wow capabilities to cfg layer rmani
2011-10-28 11:58 ` [PATCH 0/7] ath6kl: Add WOW support Kalle Valo
2011-10-31  9:55   ` Raja Mani

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=4EAE9E30.1080403@qca.qualcomm.com \
    --to=kvalo@qca.qualcomm.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=rmani@qca.qualcomm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).