diff mbox

cfg80211: Introduce critical protocol indication for p2p connection.

Message ID 1383230452-12608-1-git-send-email-usdutt@qti.qualcomm.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Sunil Dutt Undekari Oct. 31, 2013, 2:40 p.m. UTC
A reliable P2P connection needs to avoid any offload off channel
operations triggered by the host driver.Thus, indicate such
attempts to the host driver by including a new protocol id,
signifying the p2p connection.

Signed-off-by: Sunil Dutt <usdutt@qti.qualcomm.com>
---
 include/uapi/linux/nl80211.h | 2 ++
 1 file changed, 2 insertions(+)

Comments

Johannes Berg Oct. 31, 2013, 2:43 p.m. UTC | #1
On Thu, 2013-10-31 at 20:10 +0530, Sunil Dutt Undekari wrote:
> A reliable P2P connection needs to avoid any offload off channel
> operations triggered by the host driver.

That's not what the critical protocol stuff was designed for, so no.

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sunil Dutt Undekari Oct. 31, 2013, 3:22 p.m. UTC | #2
PiBUaGF0J3Mgbm90IHdoYXQgdGhlIGNyaXRpY2FsIHByb3RvY29sIHN0dWZmIHdhcyBkZXNpZ25l
ZCBmb3IsIHNvIG5vLg0KSSB3b3VsZCBjb25zaWRlciB0aGUgUDJQIGNvbm5lY3Rpb24gcGhhc2Ug
KFAyUCtXUFMrV1BBKSB0byBiZSBjcml0aWNhbCANCmFuZCBhbnkgb2ZmIGNoYW5uZWwgb3BlcmF0
aW9ucyAoc2NhbikgdHJpZ2dlcmVkIGJ5IHRoZSBob3N0IGRyaXZlciB3b3VsZCByZXN1bHQgaW4g
DQp0aGUgZGVsYXllZCAvIGZhaWxlZCBQMlAgY29ubmVjdGlvbiBhdHRlbXB0Lg0KSSBzdXBwb3Nl
IHRoZXJlIHNob3VsZCBiZSBhbiBpbmRpY2F0aW9uIHRvIHRoZSBob3N0IGRyaXZlciB3LnIudCBw
MnAgY29ubmVjdGlvbiANCmF0dGVtcHQgc28gdGhhdCBhbnkgb2ZmIGxvYWQgb3BlcmF0aW9ucyBv
biBhbnkgb3RoZXIgaW50ZXJmYWNlIHNoYXJpbmcgdGhlIHNhbWUgcmFkaW8gDQp3b3VsZCBiZSBh
dm9pZGVkIGJ5IHRoZSBkcml2ZXIuDQpTaW5jZSB0aGVyZSBpcyBhbHJlYWR5IGFuIGV4aXN0aW5n
IGludGVyZmFjZSB0aHJvdWdoIHRoZSBjcml0aWNhbCBwcm90b2NvbCBpbmRpY2F0aW9uLCBJIA0K
dGhvdWdodCBvZiBleHRlbmRpbmcgaXQgdG8gYWxzbyBpbmNsdWRlIGEgUDJQIHByb3RvY29sL2Nv
bm5lY3Rpb24uIFRoaXMgbmV3IHByb3RvIGlkIA0Kd291bGQgYmUgYW4gaW5kaWNhdGlvbiB0byB0
aGUgZHJpdmVycyB0byBhbGxvdyB0aGUgc2NhbiBvbiB0aGUgY3VycmVudCBpbnRlcmZhY2UgDQph
bmQgYXZvaWQgYW55IHNjYW5zIG9uIGFub3RoZXIgY29uc2lkZXJpbmcgdGhlIGZhY3QgdGhhdCBh
IHAycCBjb25uZWN0aW9uIHJlcXVpcmVzIGEgIA0Kc2Nhbi4NCkRvIHlvdSBwcm9wb3NlIGFuIGFs
dGVybmF0aXZlIChhIG5ldyBpbnRlcmZhY2U/KSB0byBhY2hpZXZlIHRoZSBzYW1lPw0KDQpSZWdh
cmRzLA0KU3VuaWwNCg0KDQoNCg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTog
Sm9oYW5uZXMgQmVyZyBbbWFpbHRvOmpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXRdIA0KU2VudDog
VGh1cnNkYXksIE9jdG9iZXIgMzEsIDIwMTMgODoxMyBQTQ0KVG86IFVuZGVrYXJpLCBTdW5pbCBE
dXR0DQpDYzogbGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwub3JnOyBqQHcxLmZpDQpTdWJqZWN0
OiBSZTogW1BBVENIXSBjZmc4MDIxMTogSW50cm9kdWNlIGNyaXRpY2FsIHByb3RvY29sIGluZGlj
YXRpb24gZm9yIHAycCBjb25uZWN0aW9uLg0KDQpPbiBUaHUsIDIwMTMtMTAtMzEgYXQgMjA6MTAg
KzA1MzAsIFN1bmlsIER1dHQgVW5kZWthcmkgd3JvdGU6DQo+IEEgcmVsaWFibGUgUDJQIGNvbm5l
Y3Rpb24gbmVlZHMgdG8gYXZvaWQgYW55IG9mZmxvYWQgb2ZmIGNoYW5uZWwgDQo+IG9wZXJhdGlv
bnMgdHJpZ2dlcmVkIGJ5IHRoZSBob3N0IGRyaXZlci4NCg0KVGhhdCdzIG5vdCB3aGF0IHRoZSBj
cml0aWNhbCBwcm90b2NvbCBzdHVmZiB3YXMgZGVzaWduZWQgZm9yLCBzbyBuby4NCg0Kam9oYW5u
ZXMNCg0K
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Johannes Berg Oct. 31, 2013, 3:25 p.m. UTC | #3
On Thu, 2013-10-31 at 15:22 +0000, Undekari, Sunil Dutt wrote:
> > That's not what the critical protocol stuff was designed for, so no.
> I would consider the P2P connection phase (P2P+WPS+WPA) to be critical 
> and any off channel operations (scan) triggered by the host driver would result in 
> the delayed / failed P2P connection attempt.
> I suppose there should be an indication to the host driver w.r.t p2p connection 
> attempt so that any off load operations on any other interface sharing the same radio 
> would be avoided by the driver.
> Since there is already an existing interface through the critical protocol indication, I 
> thought of extending it to also include a P2P protocol/connection. This new proto id 
> would be an indication to the drivers to allow the scan on the current interface 
> and avoid any scans on another considering the fact that a p2p connection requires a  
> scan.
> Do you propose an alternative (a new interface?) to achieve the same?

Just do it in the supplicant - that has full control over what's going
on with a given device.

Trying to have the kernel manage multiple things that may or may not be
exclusive and are all done in userspace is going to be a futile
exercise.

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sunil Dutt Undekari Oct. 31, 2013, 3:54 p.m. UTC | #4
Pkp1c3QgZG8gaXQgaW4gdGhlIHN1cHBsaWNhbnQgLSB0aGF0IGhhcyBmdWxsIGNvbnRyb2wgb3Zl
ciB3aGF0J3MgZ29pbmcgb24gd2l0aCBhIGdpdmVuIGRldmljZS4NCj5UcnlpbmcgdG8gaGF2ZSB0
aGUga2VybmVsIG1hbmFnZSBtdWx0aXBsZSB0aGluZ3MgdGhhdCBtYXkgb3IgbWF5IG5vdCBiZSBl
eGNsdXNpdmUgYW5kIGFyZSBhbGwgZG9uZSBpbiB1c2Vyc3BhY2UgaXMgZ29pbmcgdG8gYmUgYSBm
dXRpbGUgZXhlcmNpc2UuDQpQbGVhc2Ugbm90ZSB0aGF0IHRoZSBzY2FucyB0aGF0IGFyZSBtZW50
aW9uZWQgYnkgbWUgaW4gdGhpcyBjb250ZXh0IGFyZSBub3QgdHJpZ2dlcmVkIGJ5IHRoZSBzdXBw
bGljYW50LCByYXRoZXIgdGhlIGhvc3QgZHJpdmVyIHdvdWxkIGluaXRpYXRlIHRoZW0uDQpUaGUg
ZHJpdmVyIC8gZmlybXdhcmUgd291bGQgZG8gc3VjaCBzY2FucyBmb3IgYSBiZXR0ZXIgcm9hbSBw
ZXJmb3JtYW5jZS4NCkkgd291bGQgc2F5LCBzb21lIGhhbmRzaGFrZSBiZXR3ZWVuIHRoZSBzdXBw
bGljYW50IGFuZCB0aGUgZHJpdmVyIHdvdWxkIGJlIG5lZWRlZCBmb3IgYSBiZXR0ZXIgdW5kZXJz
dGFuZGluZyBvbiB0aGUgb3BlcmF0aW9ucy4NClBsZWFzZSBoYXZlIHlvdXIgc2F5Lg0KUmVnYXJk
cywNClN1bmlsDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBKb2hhbm5lcyBC
ZXJnIFttYWlsdG86am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldF0gDQpTZW50OiBUaHVyc2RheSwg
T2N0b2JlciAzMSwgMjAxMyA4OjU1IFBNDQpUbzogVW5kZWthcmksIFN1bmlsIER1dHQNCkNjOiBs
aW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmc7IGpAdzEuZmkNClN1YmplY3Q6IFJlOiBbUEFU
Q0hdIGNmZzgwMjExOiBJbnRyb2R1Y2UgY3JpdGljYWwgcHJvdG9jb2wgaW5kaWNhdGlvbiBmb3Ig
cDJwIGNvbm5lY3Rpb24uDQoNCk9uIFRodSwgMjAxMy0xMC0zMSBhdCAxNToyMiArMDAwMCwgVW5k
ZWthcmksIFN1bmlsIER1dHQgd3JvdGU6DQo+ID4gVGhhdCdzIG5vdCB3aGF0IHRoZSBjcml0aWNh
bCBwcm90b2NvbCBzdHVmZiB3YXMgZGVzaWduZWQgZm9yLCBzbyBuby4NCj4gSSB3b3VsZCBjb25z
aWRlciB0aGUgUDJQIGNvbm5lY3Rpb24gcGhhc2UgKFAyUCtXUFMrV1BBKSB0byBiZSBjcml0aWNh
bCANCj4gYW5kIGFueSBvZmYgY2hhbm5lbCBvcGVyYXRpb25zIChzY2FuKSB0cmlnZ2VyZWQgYnkg
dGhlIGhvc3QgZHJpdmVyIA0KPiB3b3VsZCByZXN1bHQgaW4gdGhlIGRlbGF5ZWQgLyBmYWlsZWQg
UDJQIGNvbm5lY3Rpb24gYXR0ZW1wdC4NCj4gSSBzdXBwb3NlIHRoZXJlIHNob3VsZCBiZSBhbiBp
bmRpY2F0aW9uIHRvIHRoZSBob3N0IGRyaXZlciB3LnIudCBwMnAgDQo+IGNvbm5lY3Rpb24gYXR0
ZW1wdCBzbyB0aGF0IGFueSBvZmYgbG9hZCBvcGVyYXRpb25zIG9uIGFueSBvdGhlciANCj4gaW50
ZXJmYWNlIHNoYXJpbmcgdGhlIHNhbWUgcmFkaW8gd291bGQgYmUgYXZvaWRlZCBieSB0aGUgZHJp
dmVyLg0KPiBTaW5jZSB0aGVyZSBpcyBhbHJlYWR5IGFuIGV4aXN0aW5nIGludGVyZmFjZSB0aHJv
dWdoIHRoZSBjcml0aWNhbCANCj4gcHJvdG9jb2wgaW5kaWNhdGlvbiwgSSB0aG91Z2h0IG9mIGV4
dGVuZGluZyBpdCB0byBhbHNvIGluY2x1ZGUgYSBQMlAgDQo+IHByb3RvY29sL2Nvbm5lY3Rpb24u
IFRoaXMgbmV3IHByb3RvIGlkIHdvdWxkIGJlIGFuIGluZGljYXRpb24gdG8gdGhlIA0KPiBkcml2
ZXJzIHRvIGFsbG93IHRoZSBzY2FuIG9uIHRoZSBjdXJyZW50IGludGVyZmFjZSBhbmQgYXZvaWQg
YW55IHNjYW5zIA0KPiBvbiBhbm90aGVyIGNvbnNpZGVyaW5nIHRoZSBmYWN0IHRoYXQgYSBwMnAg
Y29ubmVjdGlvbiByZXF1aXJlcyBhIHNjYW4uDQo+IERvIHlvdSBwcm9wb3NlIGFuIGFsdGVybmF0
aXZlIChhIG5ldyBpbnRlcmZhY2U/KSB0byBhY2hpZXZlIHRoZSBzYW1lPw0KDQpKdXN0IGRvIGl0
IGluIHRoZSBzdXBwbGljYW50IC0gdGhhdCBoYXMgZnVsbCBjb250cm9sIG92ZXIgd2hhdCdzIGdv
aW5nIG9uIHdpdGggYSBnaXZlbiBkZXZpY2UuDQoNClRyeWluZyB0byBoYXZlIHRoZSBrZXJuZWwg
bWFuYWdlIG11bHRpcGxlIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90IGJlIGV4Y2x1c2l2ZSBh
bmQgYXJlIGFsbCBkb25lIGluIHVzZXJzcGFjZSBpcyBnb2luZyB0byBiZSBhIGZ1dGlsZSBleGVy
Y2lzZS4NCg0Kam9oYW5uZXMNCg0K
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arend van Spriel Oct. 31, 2013, 5:42 p.m. UTC | #5
On 10/31/13 16:54, Undekari, Sunil Dutt wrote:
>> Just do it in the supplicant - that has full control over what's going on with a given device.
>> Trying to have the kernel manage multiple things that may or may not be exclusive and are all done in userspace is going to be a futile exercise.
> Please note that the scans that are mentioned by me in this context are not triggered by the supplicant, rather the host driver would initiate them.

So how would the scenario look like. The host driver will get involved 
in setting up the P2P connection so that knowledge is already available 
to defer the scans or am I missing something.

Regards,
Arend

> The driver / firmware would do such scans for a better roam performance.
> I would say, some handshake between the supplicant and the driver would be needed for a better understanding on the operations.
> Please have your say.
> Regards,
> Sunil
>
> -----Original Message-----
> From: Johannes Berg [mailto:johannes@sipsolutions.net]
> Sent: Thursday, October 31, 2013 8:55 PM
> To: Undekari, Sunil Dutt
> Cc: linux-wireless@vger.kernel.org; j@w1.fi
> Subject: Re: [PATCH] cfg80211: Introduce critical protocol indication for p2p connection.
>
> On Thu, 2013-10-31 at 15:22 +0000, Undekari, Sunil Dutt wrote:
>>> That's not what the critical protocol stuff was designed for, so no.
>> I would consider the P2P connection phase (P2P+WPS+WPA) to be critical
>> and any off channel operations (scan) triggered by the host driver
>> would result in the delayed / failed P2P connection attempt.
>> I suppose there should be an indication to the host driver w.r.t p2p
>> connection attempt so that any off load operations on any other
>> interface sharing the same radio would be avoided by the driver.
>> Since there is already an existing interface through the critical
>> protocol indication, I thought of extending it to also include a P2P
>> protocol/connection. This new proto id would be an indication to the
>> drivers to allow the scan on the current interface and avoid any scans
>> on another considering the fact that a p2p connection requires a scan.
>> Do you propose an alternative (a new interface?) to achieve the same?
>
> Just do it in the supplicant - that has full control over what's going on with a given device.
>
> Trying to have the kernel manage multiple things that may or may not be exclusive and are all done in userspace is going to be a futile exercise.
>
> johannes
>
> N?????r??y???b?X???v?^?)?{.n?+????{??*??,?{ay????,j??f???h???z??w??????j:+v???w?j?m????????zZ+??????j"??!?i


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sunil Dutt Undekari Nov. 1, 2013, 11:25 a.m. UTC | #6
Hi Arend,

>So how would the scenario look like. The host driver will get involved in setting up the P2P connection so that knowledge is already available to defer the scans or am I missing something.

The host driver shall perform the scan's to find a better BSS in the 
The host driver / firmware performs (initiates) a scan on the STA interface in the process of finding a better BSS to roam. This scan is offloaded to the driver / firmware for a better roam experience.
This scans would definitely affect the p2p connection triggered by the supplicant.
Thus, I was suggesting a way to extend the already existing critical protocol indications to also include p2p protocol/connections, so that drivers can defer the scan's (any off channel operations for that matter) on any other interface during this period.
Regards,
Sunil.
  


-----Original Message-----
From: Arend van Spriel [mailto:arend@broadcom.com] 

Sent: Thursday, October 31, 2013 11:12 PM
To: Undekari, Sunil Dutt
Cc: Johannes Berg; linux-wireless@vger.kernel.org; j@w1.fi
Subject: Re: [PATCH] cfg80211: Introduce critical protocol indication for p2p connection.

On 10/31/13 16:54, Undekari, Sunil Dutt wrote:
>> Just do it in the supplicant - that has full control over what's going on with a given device.

>> Trying to have the kernel manage multiple things that may or may not be exclusive and are all done in userspace is going to be a futile exercise.

> Please note that the scans that are mentioned by me in this context are not triggered by the supplicant, rather the host driver would initiate them.


So how would the scenario look like. The host driver will get involved in setting up the P2P connection so that knowledge is already available to defer the scans or am I missing something.

Regards,
Arend

> The driver / firmware would do such scans for a better roam performance.

> I would say, some handshake between the supplicant and the driver would be needed for a better understanding on the operations.

> Please have your say.

> Regards,

> Sunil

>

> -----Original Message-----

> From: Johannes Berg [mailto:johannes@sipsolutions.net]

> Sent: Thursday, October 31, 2013 8:55 PM

> To: Undekari, Sunil Dutt

> Cc: linux-wireless@vger.kernel.org; j@w1.fi

> Subject: Re: [PATCH] cfg80211: Introduce critical protocol indication for p2p connection.

>

> On Thu, 2013-10-31 at 15:22 +0000, Undekari, Sunil Dutt wrote:

>>> That's not what the critical protocol stuff was designed for, so no.

>> I would consider the P2P connection phase (P2P+WPS+WPA) to be 

>> critical and any off channel operations (scan) triggered by the host 

>> driver would result in the delayed / failed P2P connection attempt.

>> I suppose there should be an indication to the host driver w.r.t p2p 

>> connection attempt so that any off load operations on any other 

>> interface sharing the same radio would be avoided by the driver.

>> Since there is already an existing interface through the critical 

>> protocol indication, I thought of extending it to also include a P2P 

>> protocol/connection. This new proto id would be an indication to the 

>> drivers to allow the scan on the current interface and avoid any 

>> scans on another considering the fact that a p2p connection requires a scan.

>> Do you propose an alternative (a new interface?) to achieve the same?

>

> Just do it in the supplicant - that has full control over what's going on with a given device.

>

> Trying to have the kernel manage multiple things that may or may not be exclusive and are all done in userspace is going to be a futile exercise.

>

> johannes

>

> N     r  y   b X  ?v ^ )?{.n +    {  *? , {ay ?? ,j 

>   f   h   z  w   

   j:+v   w j m         zZ+     ?j"  ! i
Arend van Spriel Nov. 1, 2013, 1:07 p.m. UTC | #7
On 11/01/2013 12:25 PM, Undekari, Sunil Dutt wrote:
> Hi Arend,
>
>> So how would the scenario look like. The host driver will get involved in setting up the P2P connection so that knowledge is already available to defer the scans or am I missing something.
> The host driver shall perform the scan's to find a better BSS in the
> The host driver / firmware performs (initiates) a scan on the STA interface in the process of finding a better BSS to roam. This scan is offloaded to the driver / firmware for a better roam experience.
> This scans would definitely affect the p2p connection triggered by the supplicant.
> Thus, I was suggesting a way to extend the already existing critical protocol indications to also include p2p protocol/connections, so that drivers can defer the scan's (any off channel operations for that matter) on any other interface during this period.

I got that. What I meant to say is that you can defer the roaming 
related scans when cfg80211 does a .add_virtual_intf() call to the 
driver and recommence upon .del_virtual_intf(). I guess this effectively 
disables roaming, right?

Regards,
Arend

> Regards,
> Sunil.
>
>
>
> -----Original Message-----
> From: Arend van Spriel [mailto:arend@broadcom.com]
> Sent: Thursday, October 31, 2013 11:12 PM
> To: Undekari, Sunil Dutt
> Cc: Johannes Berg; linux-wireless@vger.kernel.org; j@w1.fi
> Subject: Re: [PATCH] cfg80211: Introduce critical protocol indication for p2p connection.
>
> On 10/31/13 16:54, Undekari, Sunil Dutt wrote:
>>> Just do it in the supplicant - that has full control over what's going on with a given device.
>>> Trying to have the kernel manage multiple things that may or may not be exclusive and are all done in userspace is going to be a futile exercise.
>> Please note that the scans that are mentioned by me in this context are not triggered by the supplicant, rather the host driver would initiate them.
>
> So how would the scenario look like. The host driver will get involved in setting up the P2P connection so that knowledge is already available to defer the scans or am I missing something.
>
> Regards,
> Arend
>
>> The driver / firmware would do such scans for a better roam performance.
>> I would say, some handshake between the supplicant and the driver would be needed for a better understanding on the operations.
>> Please have your say.
>> Regards,
>> Sunil
>>
>> -----Original Message-----
>> From: Johannes Berg [mailto:johannes@sipsolutions.net]
>> Sent: Thursday, October 31, 2013 8:55 PM
>> To: Undekari, Sunil Dutt
>> Cc: linux-wireless@vger.kernel.org; j@w1.fi
>> Subject: Re: [PATCH] cfg80211: Introduce critical protocol indication for p2p connection.
>>
>> On Thu, 2013-10-31 at 15:22 +0000, Undekari, Sunil Dutt wrote:
>>>> That's not what the critical protocol stuff was designed for, so no.
>>> I would consider the P2P connection phase (P2P+WPS+WPA) to be
>>> critical and any off channel operations (scan) triggered by the host
>>> driver would result in the delayed / failed P2P connection attempt.
>>> I suppose there should be an indication to the host driver w.r.t p2p
>>> connection attempt so that any off load operations on any other
>>> interface sharing the same radio would be avoided by the driver.
>>> Since there is already an existing interface through the critical
>>> protocol indication, I thought of extending it to also include a P2P
>>> protocol/connection. This new proto id would be an indication to the
>>> drivers to allow the scan on the current interface and avoid any
>>> scans on another considering the fact that a p2p connection requires a scan.
>>> Do you propose an alternative (a new interface?) to achieve the same?
>>
>> Just do it in the supplicant - that has full control over what's going on with a given device.
>>
>> Trying to have the kernel manage multiple things that may or may not be exclusive and are all done in userspace is going to be a futile exercise.
>>
>> johannes
>>
>> N     r  y   b X  ?v ^ )?{.n +    {  *? , {ay ?? ,j
>>    f   h   z  w
>     j:+v   w j m         zZ+     ?j"  ! i
>
>


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jouni Malinen Nov. 2, 2013, 7:33 a.m. UTC | #8
On Fri, Nov 01, 2013 at 02:07:16PM +0100, Arend van Spriel wrote:
> On 11/01/2013 12:25 PM, Undekari, Sunil Dutt wrote:
> >The host driver / firmware performs (initiates) a scan on the STA interface in the process of finding a better BSS to roam. This scan is offloaded to the driver / firmware for a better roam experience.
> >This scans would definitely affect the p2p connection triggered by the supplicant.
> >Thus, I was suggesting a way to extend the already existing critical protocol indications to also include p2p protocol/connections, so that drivers can defer the scan's (any off channel operations for that matter) on any other interface during this period.
> 
> I got that. What I meant to say is that you can defer the roaming
> related scans when cfg80211 does a .add_virtual_intf() call to the
> driver and recommence upon .del_virtual_intf(). I guess this
> effectively disables roaming, right?

That sounds quite excessive. The case here is a multi-channel
concurrency capable device which has a station connection and
wpa_supplicant is about to go through P2P group formation. I see no
reason to disable roaming, but it would sound useful to avoid doing the
background scans for that at the exact time of the group formation
(couple of seconds in most cases).

Currently, there is no way for wpa_supplicant to clearly indicate to the
driver that it is about to run through number of quick operations
(offchannel Action frame exchange for GO Negotiation, single channel
scan, WPS association + EAPOL exchange, data connection association +
4-way handshake). The driver can guess that this is happening (or could
use really ugly hacks to see what Action frames are exchanged and
determine next likely operation based on that) and as such, would not
know how to configure the firmware to avoid background scans for the
station interface during this full sequence.

While the background scan should in most cases not completely break the
process even with inconvenient timing (or well, hitting one in middle of
the three frame GO Negotiation would have potential to time out that
exchange), it would be nice if this common sequence could be optimized
to avoid extra latencies and to be more robust in general since there is
a 15 second timeout for group formation and quite a bit shorter timeouts
in practice for the individual operations within the sequence.
Arend van Spriel Nov. 2, 2013, 10:37 a.m. UTC | #9
On 11/02/13 08:33, Jouni Malinen wrote:
> On Fri, Nov 01, 2013 at 02:07:16PM +0100, Arend van Spriel wrote:
>> On 11/01/2013 12:25 PM, Undekari, Sunil Dutt wrote:
>>> The host driver / firmware performs (initiates) a scan on the STA interface in the process of finding a better BSS to roam. This scan is offloaded to the driver / firmware for a better roam experience.
>>> This scans would definitely affect the p2p connection triggered by the supplicant.
>>> Thus, I was suggesting a way to extend the already existing critical protocol indications to also include p2p protocol/connections, so that drivers can defer the scan's (any off channel operations for that matter) on any other interface during this period.
>>
>> I got that. What I meant to say is that you can defer the roaming
>> related scans when cfg80211 does a .add_virtual_intf() call to the
>> driver and recommence upon .del_virtual_intf(). I guess this
>> effectively disables roaming, right?
>
> That sounds quite excessive. The case here is a multi-channel
> concurrency capable device which has a station connection and
> wpa_supplicant is about to go through P2P group formation. I see no
> reason to disable roaming, but it would sound useful to avoid doing the
> background scans for that at the exact time of the group formation
> (couple of seconds in most cases).

This is why I was asking for a more detailed usage scenario. Sunil only 
mentioned the term "P2P connection" which seemed to coarse for this API. 
So if we are talking about P2P group formation it makes sense.

> Currently, there is no way for wpa_supplicant to clearly indicate to the
> driver that it is about to run through number of quick operations
> (offchannel Action frame exchange for GO Negotiation, single channel
> scan, WPS association + EAPOL exchange, data connection association +
> 4-way handshake). The driver can guess that this is happening (or could
> use really ugly hacks to see what Action frames are exchanged and
> determine next likely operation based on that) and as such, would not
> know how to configure the firmware to avoid background scans for the
> station interface during this full sequence.

I wanted this API primarily to avoid drivers doing that kind of hacks so 
I agree. It was intended to avoid extra latencies during IP connection 
setup, which is probably happening right after the group formation. So I 
recommend the connection managers to use this API. I think Dan Williams 
did some initial implementation testing in NetworkManager and had some 
concerns. I forgot about them completely so not sure how that ended.

> While the background scan should in most cases not completely break the
> process even with inconvenient timing (or well, hitting one in middle of
> the three frame GO Negotiation would have potential to time out that
> exchange), it would be nice if this common sequence could be optimized
> to avoid extra latencies and to be more robust in general since there is
> a 15 second timeout for group formation and quite a bit shorter timeouts
> in practice for the individual operations within the sequence.

I guess the decision is for Johannes to take, but I see your point.

Regards,
Arend

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sunil Dutt Undekari Nov. 8, 2013, 3:06 p.m. UTC | #10
> I guess the decision is for Johannes to take, but I see your point.
Johannes, please have your say.

Regards,
Sunil

-----Original Message-----
From: Arend van Spriel [mailto:arend@broadcom.com] 
Sent: Saturday, November 02, 2013 4:07 PM
To: Jouni Malinen
Cc: Undekari, Sunil Dutt; Johannes Berg; linux-wireless@vger.kernel.org; Dan Williams
Subject: Re: [PATCH] cfg80211: Introduce critical protocol indication for p2p connection.

On 11/02/13 08:33, Jouni Malinen wrote:
> On Fri, Nov 01, 2013 at 02:07:16PM +0100, Arend van Spriel wrote:
>> On 11/01/2013 12:25 PM, Undekari, Sunil Dutt wrote:
>>> The host driver / firmware performs (initiates) a scan on the STA interface in the process of finding a better BSS to roam. This scan is offloaded to the driver / firmware for a better roam experience.
>>> This scans would definitely affect the p2p connection triggered by the supplicant.
>>> Thus, I was suggesting a way to extend the already existing critical protocol indications to also include p2p protocol/connections, so that drivers can defer the scan's (any off channel operations for that matter) on any other interface during this period.
>>
>> I got that. What I meant to say is that you can defer the roaming 
>> related scans when cfg80211 does a .add_virtual_intf() call to the 
>> driver and recommence upon .del_virtual_intf(). I guess this 
>> effectively disables roaming, right?
>
> That sounds quite excessive. The case here is a multi-channel 
> concurrency capable device which has a station connection and 
> wpa_supplicant is about to go through P2P group formation. I see no 
> reason to disable roaming, but it would sound useful to avoid doing 
> the background scans for that at the exact time of the group formation 
> (couple of seconds in most cases).

This is why I was asking for a more detailed usage scenario. Sunil only mentioned the term "P2P connection" which seemed to coarse for this API. 
So if we are talking about P2P group formation it makes sense.

> Currently, there is no way for wpa_supplicant to clearly indicate to 
> the driver that it is about to run through number of quick operations 
> (offchannel Action frame exchange for GO Negotiation, single channel 
> scan, WPS association + EAPOL exchange, data connection association + 
> 4-way handshake). The driver can guess that this is happening (or 
> could use really ugly hacks to see what Action frames are exchanged 
> and determine next likely operation based on that) and as such, would 
> not know how to configure the firmware to avoid background scans for 
> the station interface during this full sequence.

I wanted this API primarily to avoid drivers doing that kind of hacks so I agree. It was intended to avoid extra latencies during IP connection setup, which is probably happening right after the group formation. So I recommend the connection managers to use this API. I think Dan Williams did some initial implementation testing in NetworkManager and had some concerns. I forgot about them completely so not sure how that ended.

> While the background scan should in most cases not completely break 
> the process even with inconvenient timing (or well, hitting one in 
> middle of the three frame GO Negotiation would have potential to time 
> out that exchange), it would be nice if this common sequence could be 
> optimized to avoid extra latencies and to be more robust in general 
> since there is a 15 second timeout for group formation and quite a bit 
> shorter timeouts in practice for the individual operations within the sequence.

I guess the decision is for Johannes to take, but I see your point.

Regards,
Arend

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Johannes Berg Nov. 11, 2013, 4:26 p.m. UTC | #11
On Sat, 2013-11-02 at 11:37 +0100, Arend van Spriel wrote:

> > Currently, there is no way for wpa_supplicant to clearly indicate to the
> > driver that it is about to run through number of quick operations
> > (offchannel Action frame exchange for GO Negotiation, single channel
> > scan, WPS association + EAPOL exchange, data connection association +
> > 4-way handshake). The driver can guess that this is happening (or could
> > use really ugly hacks to see what Action frames are exchanged and
> > determine next likely operation based on that) and as such, would not
> > know how to configure the firmware to avoid background scans for the
> > station interface during this full sequence.
> 
> I wanted this API primarily to avoid drivers doing that kind of hacks so 
> I agree. It was intended to avoid extra latencies during IP connection 
> setup, which is probably happening right after the group formation. So I 
> recommend the connection managers to use this API. I think Dan Williams 
> did some initial implementation testing in NetworkManager and had some 
> concerns. I forgot about them completely so not sure how that ended.
> 
> > While the background scan should in most cases not completely break the
> > process even with inconvenient timing (or well, hitting one in middle of
> > the three frame GO Negotiation would have potential to time out that
> > exchange), it would be nice if this common sequence could be optimized
> > to avoid extra latencies and to be more robust in general since there is
> > a 15 second timeout for group formation and quite a bit shorter timeouts
> > in practice for the individual operations within the sequence.
> 
> I guess the decision is for Johannes to take, but I see your point.

I think after this long discussion we all finally understand the concern
and use case - that really could have been explained in the patch
message.

Anyhow, I think that the critical protocol API is still a bad fit
because it currently only allows
 (1) a single user of the API at a time, so e.g. connman using it for
DHCP on a
     P2P group interface while wpa_s is using it for GO negotation would
break
 (2) changing that is probably not too difficult technically, but the
question is
     how multiple concurrent protocols should behave and if anything
else has
     really started using this yet
 (3) the existing protocols here are *data/payload* protocols, the new
protocol
     you're adding is more of a *management* protocol

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dan Williams Nov. 11, 2013, 5:20 p.m. UTC | #12
On Mon, 2013-11-11 at 17:26 +0100, Johannes Berg wrote:
> On Sat, 2013-11-02 at 11:37 +0100, Arend van Spriel wrote:
> 
> > > Currently, there is no way for wpa_supplicant to clearly indicate to the
> > > driver that it is about to run through number of quick operations
> > > (offchannel Action frame exchange for GO Negotiation, single channel
> > > scan, WPS association + EAPOL exchange, data connection association +
> > > 4-way handshake). The driver can guess that this is happening (or could
> > > use really ugly hacks to see what Action frames are exchanged and
> > > determine next likely operation based on that) and as such, would not
> > > know how to configure the firmware to avoid background scans for the
> > > station interface during this full sequence.
> > 
> > I wanted this API primarily to avoid drivers doing that kind of hacks so 
> > I agree. It was intended to avoid extra latencies during IP connection 
> > setup, which is probably happening right after the group formation. So I 
> > recommend the connection managers to use this API. I think Dan Williams 
> > did some initial implementation testing in NetworkManager and had some 
> > concerns. I forgot about them completely so not sure how that ended.
> > 
> > > While the background scan should in most cases not completely break the
> > > process even with inconvenient timing (or well, hitting one in middle of
> > > the three frame GO Negotiation would have potential to time out that
> > > exchange), it would be nice if this common sequence could be optimized
> > > to avoid extra latencies and to be more robust in general since there is
> > > a 15 second timeout for group formation and quite a bit shorter timeouts
> > > in practice for the individual operations within the sequence.
> > 
> > I guess the decision is for Johannes to take, but I see your point.
> 
> I think after this long discussion we all finally understand the concern
> and use case - that really could have been explained in the patch
> message.
> 
> Anyhow, I think that the critical protocol API is still a bad fit
> because it currently only allows
>  (1) a single user of the API at a time, so e.g. connman using it for
> DHCP on a
>      P2P group interface while wpa_s is using it for GO negotation would
> break
>  (2) changing that is probably not too difficult technically, but the
> question is
>      how multiple concurrent protocols should behave and if anything
> else has
>      really started using this yet

I've had patches for NetworkManager for a while for this, I had
developed them in May 2013 which then resulted in my replies to
"cfg80211: introduce critical protocol indication from user-space".  I
posted about your problem #1, and Arnd's reply at the time was "I am not
fully convinced there will be a need for multiple protocols."  Perhaps
that need has now become more apparent?

Dan

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dan Williams Nov. 11, 2013, 7:04 p.m. UTC | #13
On Mon, 2013-11-11 at 19:18 +0100, Arend van Spriel wrote:
> On 11/11/2013 06:20 PM, Dan Williams wrote:
> > On Mon, 2013-11-11 at 17:26 +0100, Johannes Berg wrote:
> >> On Sat, 2013-11-02 at 11:37 +0100, Arend van Spriel wrote:
> >>
> >>>> Currently, there is no way for wpa_supplicant to clearly indicate to the
> >>>> driver that it is about to run through number of quick operations
> >>>> (offchannel Action frame exchange for GO Negotiation, single channel
> >>>> scan, WPS association + EAPOL exchange, data connection association +
> >>>> 4-way handshake). The driver can guess that this is happening (or could
> >>>> use really ugly hacks to see what Action frames are exchanged and
> >>>> determine next likely operation based on that) and as such, would not
> >>>> know how to configure the firmware to avoid background scans for the
> >>>> station interface during this full sequence.
> >>>
> >>> I wanted this API primarily to avoid drivers doing that kind of hacks so
> >>> I agree. It was intended to avoid extra latencies during IP connection
> >>> setup, which is probably happening right after the group formation. So I
> >>> recommend the connection managers to use this API. I think Dan Williams
> >>> did some initial implementation testing in NetworkManager and had some
> >>> concerns. I forgot about them completely so not sure how that ended.
> >>>
> >>>> While the background scan should in most cases not completely break the
> >>>> process even with inconvenient timing (or well, hitting one in middle of
> >>>> the three frame GO Negotiation would have potential to time out that
> >>>> exchange), it would be nice if this common sequence could be optimized
> >>>> to avoid extra latencies and to be more robust in general since there is
> >>>> a 15 second timeout for group formation and quite a bit shorter timeouts
> >>>> in practice for the individual operations within the sequence.
> >>>
> >>> I guess the decision is for Johannes to take, but I see your point.
> >>
> >> I think after this long discussion we all finally understand the concern
> >> and use case - that really could have been explained in the patch
> >> message.
> >>
> >> Anyhow, I think that the critical protocol API is still a bad fit
> >> because it currently only allows
> >>   (1) a single user of the API at a time, so e.g. connman using it for
> >> DHCP on a
> >>       P2P group interface while wpa_s is using it for GO negotation would
> >> break
> >>   (2) changing that is probably not too difficult technically, but the
> >> question is
> >>       how multiple concurrent protocols should behave and if anything
> >> else has
> >>       really started using this yet
> >
> > I've had patches for NetworkManager for a while for this, I had
> > developed them in May 2013 which then resulted in my replies to
> > "cfg80211: introduce critical protocol indication from user-space".  I
> > posted about your problem #1, and Arnd's reply at the time was "I am not
> > fully convinced there will be a need for multiple protocols."  Perhaps
> > that need has now become more apparent?
> 
> I don't know what Arnd said, but I went digging in my mailbox and I can 
> not deny saying that :-p To put it into context I attached the message 
> holding that statement. I guess our conversation never converged to a 
> proper follow-up. See if we can do better this time around.

Sorry, I meant you, Arend :)  Lack of convergence was partly my fault, I
had to switch off to other things.  However, I think it's safest, most
technically correct, and best to track each critical protocol
individually and only cease critical protocol behaviors when all
protocols are any of (1) removed via netlink, (2) timed out, or (3)
netlink port has been closed.

Dan

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 8f01961..cae07aa 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -3894,6 +3894,7 @@  enum nl80211_protocol_features {
  * @NL80211_CRIT_PROTO_DHCP: BOOTP or DHCPv6 protocol.
  * @NL80211_CRIT_PROTO_EAPOL: EAPOL protocol.
  * @NL80211_CRIT_PROTO_APIPA: APIPA protocol.
+ * @NL80211_CRIT_PROTO_P2P: P2P protocol.
  * @NUM_NL80211_CRIT_PROTO: must be kept last.
  */
 enum nl80211_crit_proto_id {
@@ -3901,6 +3902,7 @@  enum nl80211_crit_proto_id {
 	NL80211_CRIT_PROTO_DHCP,
 	NL80211_CRIT_PROTO_EAPOL,
 	NL80211_CRIT_PROTO_APIPA,
+	NL80211_CRIT_PROTO_P2P,
 	/* add other protocols before this one */
 	NUM_NL80211_CRIT_PROTO
 };