All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kalle Valo <kvalo@qca.qualcomm.com>
To: Michal Kazior <michal.kazior@tieto.com>
Cc: Ben Greear <greearb@candelatech.com>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	"ath10k@lists.infradead.org" <ath10k@lists.infradead.org>
Subject: Re: [RFTv2 3/5] ath10k: rework peer accounting
Date: Thu, 10 Apr 2014 10:18:40 +0300	[thread overview]
Message-ID: <87fvllhctr.fsf@kamboji.qca.qualcomm.com> (raw)
In-Reply-To: <CA+BoTQ=c+dTcK_diBKi6VJVgUkyBv21bDkRf+9GvGyhhqqMuNQ@mail.gmail.com> (Michal Kazior's message of "Thu, 10 Apr 2014 09:11:13 +0200")

Michal Kazior <michal.kazior@tieto.com> writes:

>>> +/* hold conf_mutex for simple iteration, or conf_mutex+data_lock for
>>> + * modifications */
>>>  struct ath10k_peer *ath10k_peer_find(struct ath10k *ar, int vdev_id,
>>>                                    const u8 *addr)
>>>  {
>>>       struct ath10k_peer *peer;
>>>
>>> -     lockdep_assert_held(&ar->data_lock);
>>> -
>>>       list_for_each_entry(peer, &ar->peers, list) {
>>>               if (peer->vdev_id != vdev_id)
>>>                       continue;
>>
>> The comment here makes me suspicious. How can we safely iterate the list
>> if we don't take data_lock? Doesn't it mean that the list can change
>> while we have conf_mutex?
>
> The idea is you need BOTH locks to modify the list structure, but you
> need only one of them to iterate over the list safely and
> consistently. This means writer will not alter the list structure
> until there are no readers.

Still not understanding this. Why not then use conf_mutex always, why do
we need data_lock at all?

Or are you saying that one can iterate the list by either taking
conf_mutex or by taking data_lock, depending on context?

-- 
Kalle Valo

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

WARNING: multiple messages have this Message-ID (diff)
From: Kalle Valo <kvalo@qca.qualcomm.com>
To: Michal Kazior <michal.kazior@tieto.com>
Cc: "ath10k@lists.infradead.org" <ath10k@lists.infradead.org>,
	Ben Greear <greearb@candelatech.com>,
	linux-wireless <linux-wireless@vger.kernel.org>
Subject: Re: [RFTv2 3/5] ath10k: rework peer accounting
Date: Thu, 10 Apr 2014 10:18:40 +0300	[thread overview]
Message-ID: <87fvllhctr.fsf@kamboji.qca.qualcomm.com> (raw)
In-Reply-To: <CA+BoTQ=c+dTcK_diBKi6VJVgUkyBv21bDkRf+9GvGyhhqqMuNQ@mail.gmail.com> (Michal Kazior's message of "Thu, 10 Apr 2014 09:11:13 +0200")

Michal Kazior <michal.kazior@tieto.com> writes:

>>> +/* hold conf_mutex for simple iteration, or conf_mutex+data_lock for
>>> + * modifications */
>>>  struct ath10k_peer *ath10k_peer_find(struct ath10k *ar, int vdev_id,
>>>                                    const u8 *addr)
>>>  {
>>>       struct ath10k_peer *peer;
>>>
>>> -     lockdep_assert_held(&ar->data_lock);
>>> -
>>>       list_for_each_entry(peer, &ar->peers, list) {
>>>               if (peer->vdev_id != vdev_id)
>>>                       continue;
>>
>> The comment here makes me suspicious. How can we safely iterate the list
>> if we don't take data_lock? Doesn't it mean that the list can change
>> while we have conf_mutex?
>
> The idea is you need BOTH locks to modify the list structure, but you
> need only one of them to iterate over the list safely and
> consistently. This means writer will not alter the list structure
> until there are no readers.

Still not understanding this. Why not then use conf_mutex always, why do
we need data_lock at all?

Or are you saying that one can iterate the list by either taking
conf_mutex or by taking data_lock, depending on context?

-- 
Kalle Valo

  reply	other threads:[~2014-04-10  7:19 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-04 11:37 [RFT 0/4] ath10k: fix flushing and tx stalls Michal Kazior
2014-04-04 11:37 ` Michal Kazior
2014-04-04 11:37 ` [RFT 1/4] ath10k: fix wmi-htc tx credit starvation Michal Kazior
2014-04-04 11:37   ` Michal Kazior
2014-04-04 11:37 ` [RFT 2/4] ath10k: rework peer accounting Michal Kazior
2014-04-04 11:37   ` Michal Kazior
2014-04-04 11:37 ` [RFT 3/4] ath10k: wait for mgmt tx when flushing too Michal Kazior
2014-04-04 11:37   ` Michal Kazior
2014-04-04 11:37 ` [RFT 4/4] ath10k: improve tx flushing Michal Kazior
2014-04-04 11:37   ` Michal Kazior
2014-04-08  6:58   ` Kalle Valo
2014-04-08  6:58     ` Kalle Valo
2014-04-04 14:49 ` [RFT 0/4] ath10k: fix flushing and tx stalls Ben Greear
2014-04-04 14:49   ` Ben Greear
2014-04-04 18:31   ` Dave Taht
2014-04-04 18:31     ` Dave Taht
2014-04-07  9:06   ` Michal Kazior
2014-04-07  9:06     ` Michal Kazior
2014-04-07  0:30 ` Ben Greear
2014-04-07  0:30   ` Ben Greear
2014-04-07  1:05   ` Ben Greear
2014-04-07  1:05     ` Ben Greear
2014-04-07  9:11   ` Michal Kazior
2014-04-07  9:11     ` Michal Kazior
2014-04-08  2:31     ` Ben Greear
2014-04-08  2:31       ` Ben Greear
2014-04-08  5:51       ` Michal Kazior
2014-04-08  5:51         ` Michal Kazior
2014-04-08 16:02         ` Ben Greear
2014-04-08 16:02           ` Ben Greear
2014-04-09  6:25           ` Michal Kazior
2014-04-09  6:25             ` Michal Kazior
2014-04-09 17:34             ` Ben Greear
2014-04-09 17:34               ` Ben Greear
2014-04-09 19:29               ` Ben Greear
2014-04-09 19:29                 ` Ben Greear
2014-04-10  3:45               ` Kalle Valo
2014-04-10  3:45                 ` Kalle Valo
2014-04-09 10:48 ` [RFTv2 0/5] ath10k: " Michal Kazior
2014-04-09 10:48   ` Michal Kazior
2014-04-09 10:48   ` [RFTv2 1/5] ath10k: always request htc tx replenishment Michal Kazior
2014-04-09 10:48     ` Michal Kazior
2014-04-09 10:48   ` [RFTv2 2/5] ath10k: fix wmi-htc tx credit starvation Michal Kazior
2014-04-09 10:48     ` Michal Kazior
2015-01-29  1:32     ` YanBo
2015-01-29  1:32       ` YanBo
2015-01-29  7:57       ` Michal Kazior
2015-01-29  7:57         ` Michal Kazior
2015-01-29 16:50         ` Ben Greear
2015-01-29 16:50           ` Ben Greear
2015-02-04 10:57         ` Matti Laakso
     [not found]         ` <54D1FA8F.6030804@elisanet.fi>
2015-02-04 11:27           ` Michal Kazior
2014-04-09 10:48   ` [RFTv2 3/5] ath10k: rework peer accounting Michal Kazior
2014-04-09 10:48     ` Michal Kazior
2014-04-10  6:50     ` Kalle Valo
2014-04-10  6:50       ` Kalle Valo
2014-04-10  6:56       ` Michal Kazior
2014-04-10  6:56         ` Michal Kazior
2014-04-10  6:59     ` Kalle Valo
2014-04-10  6:59       ` Kalle Valo
2014-04-10  7:11       ` Michal Kazior
2014-04-10  7:11         ` Michal Kazior
2014-04-10  7:18         ` Kalle Valo [this message]
2014-04-10  7:18           ` Kalle Valo
2014-04-10  7:43           ` Michal Kazior
2014-04-10  7:43             ` Michal Kazior
2014-04-11  6:22             ` Kalle Valo
2014-04-11  6:22               ` Kalle Valo
2014-04-11  6:31         ` Kalle Valo
2014-04-11  6:31           ` Kalle Valo
2014-04-11  4:59     ` Ben Greear
2014-04-11  4:59       ` Ben Greear
2014-04-09 10:48   ` [RFTv2 4/5] ath10k: wait for mgmt tx when flushing too Michal Kazior
2014-04-09 10:48     ` Michal Kazior
2014-05-13 20:09     ` Ben Greear
2014-05-15  7:24       ` Michal Kazior
2014-05-15 10:26         ` Kalle Valo
2014-05-15 13:05         ` Ben Greear
2014-04-09 10:48   ` [RFTv2 5/5] ath10k: improve tx flushing Michal Kazior
2014-04-09 10:48     ` Michal Kazior
2014-04-09 21:46   ` [RFTv2 0/5] ath10k: ath10k: fix flushing and tx stalls Ben Greear
2014-04-09 21:46     ` Ben Greear
2014-04-09 23:58     ` Ben Greear
2014-04-09 23:58       ` Ben Greear
2014-04-10  5:10       ` Michal Kazior
2014-04-10  5:10         ` Michal Kazior
2014-04-10  5:26         ` Ben Greear
2014-04-10  5:26           ` Ben Greear
2014-04-10  8:50           ` Michal Kazior
2014-04-10  8:50             ` Michal Kazior

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=87fvllhctr.fsf@kamboji.qca.qualcomm.com \
    --to=kvalo@qca.qualcomm.com \
    --cc=ath10k@lists.infradead.org \
    --cc=greearb@candelatech.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=michal.kazior@tieto.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.