From: Johannes Berg <johannes@sipsolutions.net>
To: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Cc: linux-wireless@vger.kernel.org,
"Luis R . Rodriguez" <rodrigue@qca.qualcomm.com>,
"John W . Linville" <linville@tuxdriver.com>,
Jouni Malinen <jouni@qca.qualcomm.com>
Subject: Re: [PATCH v14 2/2] cfg80211: P2P find phase offload
Date: Fri, 30 Aug 2013 13:36:11 +0200 [thread overview]
Message-ID: <1377862571.16256.11.camel@jlt4.sipsolutions.net> (raw)
In-Reply-To: <5966990.L3xT1qRD5c@lx-vladimir>
On Mon, 2013-08-26 at 16:26 +0300, Vladimir Kondratiev wrote:
> On Friday, August 23, 2013 04:16:49 PM Johannes Berg wrote:
> > Ilan also pointed out to me that it might be necessary to document (and
> > enforce?) that scan/sched_scan can't be executed in parallel? Or can
> > they?
>
> Indeed, one can't simultaneously scan and do p2p_find on the same hardware,
> because of contradictionary requirements. I documented it in start_p2p_find:
> > + * P2P find can't run concurrently with ROC or scan,
> > + * conflict with scan detected by cfg80211 and -EBUSY returned;
> > + * and driver should check for ROC and return -EBUSY to indicate
> > conflict.
>
> Shall I elaborate more, what is appropriate location for this explanation?
Ah, I missed that. I was thinking it should be in nl80211.h so that
users of the API would also be told about it.
In fact, it looks like you have no documentation in nl80211.h for the
new commands at all, you should change that anyway. I'm surprised we
never discussed that before, sorry.
> Regarding locking - I feel I need to do it similar to scan. There, we have
> locked inner function that is invoked from cfg80211_wq.
Yes, we put the 'done' completion on the workqueue. However, we don't
have an explicit stop operation for scan, so things are a bit simpler -
scan is triggered and eventually stops. There's no race.
If you do the same, there's a race:
driver stops by itself
driver calls stop
stop queued to workqueue
userspace calls stop
driver stop invoked
This could lead to confusion I think.
> And, overall - maybe reuse scan pattern in other aspects -
> allocate cfg80211_p2p_find_params like it is done for cfg80211_scan_request
> (and rename struct to cfg80211_p2p_find_request).
> instead of wdev->p2p_find_active, have rdev->p2p_find_req - this will sort
> concurrent p2p_find for sibling wdevs
>
> Also, same pattern will make p2p_find API more intuitive if it follows same
> conventions as scan
I guess you can make that work, just due the race above it's a bit
trickier than scan.
johannes
prev parent reply other threads:[~2013-08-30 11:36 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-15 11:51 [PATCH v14 0/2] P2P find phase offload Vladimir Kondratiev
2013-08-15 11:51 ` [PATCH v14 1/2] cfg80211: add 'flags' to cfg80211_rx_mgmt() Vladimir Kondratiev
2013-08-23 14:07 ` Johannes Berg
2013-08-15 11:51 ` [PATCH v14 2/2] cfg80211: P2P find phase offload Vladimir Kondratiev
2013-08-23 14:16 ` Johannes Berg
2013-08-26 13:26 ` Vladimir Kondratiev
2013-08-30 11:36 ` Johannes Berg [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=1377862571.16256.11.camel@jlt4.sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=jouni@qca.qualcomm.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=qca_vkondrat@qca.qualcomm.com \
--cc=rodrigue@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