2012-03-13 15:07:19

by Johannes Berg

[permalink] [raw]
Subject: [PATCH 3.5] cfg80211: enforce lack of interface combinations

From: Johannes Berg <[email protected]>

My grand plan to allow drivers to gradually move over
to advertising virtual interface combinations and only
enforce with drivers that do want it enforced doesn't
seem to be working out, only Christian ever added the
advertising (to carl9170), nobody else did.

Begin enforcing combinations in cfg80211 so that users
can rely on the information reported about a device.

Cc: "Luis R. Rodriguez" <[email protected]>
Cc: Jouni Malinen <[email protected]>
Cc: Vasanthakumar Thiagarajan <[email protected]>
Cc: Senthil Balasubramanian <[email protected]>
Cc: Kalle Valo <[email protected]>
Cc: Jiri Slaby <[email protected]>
Cc: Nick Kossifidis <[email protected]>
Cc: Bob Copeland <[email protected]>
Cc: Bing Zhao <[email protected]>
Cc: Lennert Buytenhek <[email protected]>
Cc: Ivo van Doorn <[email protected]>
Cc: Gertjan van Wingerde <[email protected]>
Cc: Helmut Schaa <[email protected]>
Cc: Luciano Coelho <[email protected]>
Signed-off-by: Johannes Berg <[email protected]>
---
include/net/cfg80211.h | 6 +-----
net/wireless/core.c | 4 ----
net/wireless/util.c | 7 -------
3 files changed, 1 insertion(+), 16 deletions(-)

--- a/include/net/cfg80211.h 2012-03-13 13:49:53.000000000 +0100
+++ b/include/net/cfg80211.h 2012-03-13 15:54:10.000000000 +0100
@@ -1729,10 +1729,6 @@ struct cfg80211_ops {
* hints read the documenation for regulatory_hint_found_beacon()
* @WIPHY_FLAG_NETNS_OK: if not set, do not allow changing the netns of this
* wiphy at all
- * @WIPHY_FLAG_ENFORCE_COMBINATIONS: Set this flag to enforce interface
- * combinations for this device. This flag is used for backward
- * compatibility only until all drivers advertise combinations and
- * they will always be enforced.
* @WIPHY_FLAG_PS_ON_BY_DEFAULT: if set to true, powersave will be enabled
* by default -- this flag will be set depending on the kernel's default
* on wiphy_new(), but can be changed by the driver if it has a good
@@ -1777,7 +1773,7 @@ enum wiphy_flags {
WIPHY_FLAG_IBSS_RSN = BIT(8),
WIPHY_FLAG_MESH_AUTH = BIT(10),
WIPHY_FLAG_SUPPORTS_SCHED_SCAN = BIT(11),
- WIPHY_FLAG_ENFORCE_COMBINATIONS = BIT(12),
+ /* use hole at 12 */
WIPHY_FLAG_SUPPORTS_FW_ROAM = BIT(13),
WIPHY_FLAG_AP_UAPSD = BIT(14),
WIPHY_FLAG_SUPPORTS_TDLS = BIT(15),
--- a/net/wireless/core.c 2012-03-10 09:17:06.000000000 +0100
+++ b/net/wireless/core.c 2012-03-13 15:54:21.000000000 +0100
@@ -422,10 +422,6 @@ static int wiphy_verify_combinations(str
const struct ieee80211_iface_combination *c;
int i, j;

- /* If we have combinations enforce them */
- if (wiphy->n_iface_combinations)
- wiphy->flags |= WIPHY_FLAG_ENFORCE_COMBINATIONS;
-
for (i = 0; i < wiphy->n_iface_combinations; i++) {
u32 cnt = 0;
u16 all_iftypes = 0;
--- a/net/wireless/util.c 2012-03-13 14:41:05.000000000 +0100
+++ b/net/wireless/util.c 2012-03-13 15:54:34.000000000 +0100
@@ -946,13 +946,6 @@ int cfg80211_can_change_interface(struct
if (rdev->wiphy.software_iftypes & BIT(iftype))
return 0;

- /*
- * Drivers will gradually all set this flag, until all
- * have it we only enforce for those that set it.
- */
- if (!(rdev->wiphy.flags & WIPHY_FLAG_ENFORCE_COMBINATIONS))
- return 0;
-
memset(num, 0, sizeof(num));

num[iftype] = 1;




2012-03-15 08:58:31

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 3.5] cfg80211: enforce lack of interface combinations

On Thu, 2012-03-15 at 14:27 +0530, Vasanthakumar Thiagarajan wrote:
> On Thu, Mar 15, 2012 at 09:51:28AM +0100, Johannes Berg wrote:
> > On Thu, 2012-03-15 at 14:12 +0530, Vasanthakumar Thiagarajan wrote:
> > > On Tue, Mar 13, 2012 at 04:06:03PM +0100, Johannes Berg wrote:
> > > > From: Johannes Berg <[email protected]>
> > > >
> > > > My grand plan to allow drivers to gradually move over
> > > > to advertising virtual interface combinations and only
> > > > enforce with drivers that do want it enforced doesn't
> > > > seem to be working out, only Christian ever added the
> > > > advertising (to carl9170), nobody else did.
> > > >
> > > > Begin enforcing combinations in cfg80211 so that users
> > > > can rely on the information reported about a device.
> > >
> > > This breaks ath6kl AP mode and P2P, is it expected that the driver
> > > needs to register the combination (?) even it supports a single
> > > interface?
> >
> > Kalle tells me that ath6kl does support multiple virtual interfaces, but
> > if it didn't then it wouldn't have to register combinations.
> >
> > I suspect you're using
> > driver_param=use_p2p_group_interface=1
> > in wpa_supplicant?
>
> Actually, I verified only AP mode, since it affects any sort of change interface,
> I mentioned P2P as well. AP is expected to work without any issue right?.

As long as you don't try to add the AP interface as the second one...

johannes


2012-03-15 09:11:55

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 3.5] cfg80211: enforce lack of interface combinations

On Thu, 2012-03-15 at 14:32 +0530, Vasanthakumar Thiagarajan wrote:
> On Thu, Mar 15, 2012 at 09:58:27AM +0100, Johannes Berg wrote:
> > On Thu, 2012-03-15 at 14:27 +0530, Vasanthakumar Thiagarajan wrote:
> > > On Thu, Mar 15, 2012 at 09:51:28AM +0100, Johannes Berg wrote:
> > > > On Thu, 2012-03-15 at 14:12 +0530, Vasanthakumar Thiagarajan wrote:
> > > > > On Tue, Mar 13, 2012 at 04:06:03PM +0100, Johannes Berg wrote:
> > > > > > From: Johannes Berg <[email protected]>
> > > > > >
> > > > > > My grand plan to allow drivers to gradually move over
> > > > > > to advertising virtual interface combinations and only
> > > > > > enforce with drivers that do want it enforced doesn't
> > > > > > seem to be working out, only Christian ever added the
> > > > > > advertising (to carl9170), nobody else did.
> > > > > >
> > > > > > Begin enforcing combinations in cfg80211 so that users
> > > > > > can rely on the information reported about a device.
> > > > >
> > > > > This breaks ath6kl AP mode and P2P, is it expected that the driver
> > > > > needs to register the combination (?) even it supports a single
> > > > > interface?
> > > >
> > > > Kalle tells me that ath6kl does support multiple virtual interfaces, but
> > > > if it didn't then it wouldn't have to register combinations.
> > > >
> > > > I suspect you're using
> > > > driver_param=use_p2p_group_interface=1
> > > > in wpa_supplicant?
> > >
> > > Actually, I verified only AP mode, since it affects any sort of change interface,
> > > I mentioned P2P as well. AP is expected to work without any issue right?.
> >
> > As long as you don't try to add the AP interface as the second one...
>
> Right, I'm trying on a single interface.

Hmm, ok, looking at the code again it seems there's a bug ... let me try
to fix it.

johannes


2012-03-15 09:16:19

by Johannes Berg

[permalink] [raw]
Subject: [PATCH 3.5 v2] cfg80211: enforce lack of interface combinations

From: Johannes Berg <[email protected]>

My grand plan to allow drivers to gradually move over
to advertising virtual interface combinations and only
enforce with drivers that do want it enforced doesn't
seem to be working out, only Christian ever added the
advertising (to carl9170), nobody else did.

Begin enforcing combinations in cfg80211 so that users
can rely on the information reported about a device.

Cc: "Luis R. Rodriguez" <[email protected]>
Cc: Jouni Malinen <[email protected]>
Cc: Vasanthakumar Thiagarajan <[email protected]>
Cc: Senthil Balasubramanian <[email protected]>
Cc: Kalle Valo <[email protected]>
Cc: Jiri Slaby <[email protected]>
Cc: Nick Kossifidis <[email protected]>
Cc: Bob Copeland <[email protected]>
Cc: Bing Zhao <[email protected]>
Cc: Lennert Buytenhek <[email protected]>
Cc: Ivo van Doorn <[email protected]>
Cc: Gertjan van Wingerde <[email protected]>
Cc: Helmut Schaa <[email protected]>
Cc: Luciano Coelho <[email protected]>
Signed-off-by: Johannes Berg <[email protected]>
---
include/net/cfg80211.h | 6 +-----
net/wireless/core.c | 4 ----
net/wireless/util.c | 10 +++-------
3 files changed, 4 insertions(+), 16 deletions(-)

--- a/include/net/cfg80211.h 2012-03-15 10:15:08.000000000 +0100
+++ b/include/net/cfg80211.h 2012-03-15 10:15:10.000000000 +0100
@@ -1729,10 +1729,6 @@ struct cfg80211_ops {
* hints read the documenation for regulatory_hint_found_beacon()
* @WIPHY_FLAG_NETNS_OK: if not set, do not allow changing the netns of this
* wiphy at all
- * @WIPHY_FLAG_ENFORCE_COMBINATIONS: Set this flag to enforce interface
- * combinations for this device. This flag is used for backward
- * compatibility only until all drivers advertise combinations and
- * they will always be enforced.
* @WIPHY_FLAG_PS_ON_BY_DEFAULT: if set to true, powersave will be enabled
* by default -- this flag will be set depending on the kernel's default
* on wiphy_new(), but can be changed by the driver if it has a good
@@ -1777,7 +1773,7 @@ enum wiphy_flags {
WIPHY_FLAG_IBSS_RSN = BIT(8),
WIPHY_FLAG_MESH_AUTH = BIT(10),
WIPHY_FLAG_SUPPORTS_SCHED_SCAN = BIT(11),
- WIPHY_FLAG_ENFORCE_COMBINATIONS = BIT(12),
+ /* use hole at 12 */
WIPHY_FLAG_SUPPORTS_FW_ROAM = BIT(13),
WIPHY_FLAG_AP_UAPSD = BIT(14),
WIPHY_FLAG_SUPPORTS_TDLS = BIT(15),
--- a/net/wireless/core.c 2012-03-15 10:15:08.000000000 +0100
+++ b/net/wireless/core.c 2012-03-15 10:15:10.000000000 +0100
@@ -422,10 +422,6 @@ static int wiphy_verify_combinations(str
const struct ieee80211_iface_combination *c;
int i, j;

- /* If we have combinations enforce them */
- if (wiphy->n_iface_combinations)
- wiphy->flags |= WIPHY_FLAG_ENFORCE_COMBINATIONS;
-
for (i = 0; i < wiphy->n_iface_combinations; i++) {
u32 cnt = 0;
u16 all_iftypes = 0;
--- a/net/wireless/util.c 2012-03-15 10:15:08.000000000 +0100
+++ b/net/wireless/util.c 2012-03-15 10:15:29.000000000 +0100
@@ -946,13 +946,6 @@ int cfg80211_can_change_interface(struct
if (rdev->wiphy.software_iftypes & BIT(iftype))
return 0;

- /*
- * Drivers will gradually all set this flag, until all
- * have it we only enforce for those that set it.
- */
- if (!(rdev->wiphy.flags & WIPHY_FLAG_ENFORCE_COMBINATIONS))
- return 0;
-
memset(num, 0, sizeof(num));

num[iftype] = 1;
@@ -972,6 +965,9 @@ int cfg80211_can_change_interface(struct
}
mutex_unlock(&rdev->devlist_mtx);

+ if (total == 1)
+ return 0;
+
for (i = 0; i < rdev->wiphy.n_iface_combinations; i++) {
const struct ieee80211_iface_combination *c;
struct ieee80211_iface_limit *limits;



Subject: Re: [PATCH 3.5] cfg80211: enforce lack of interface combinations

On Thu, Mar 15, 2012 at 09:58:27AM +0100, Johannes Berg wrote:
> On Thu, 2012-03-15 at 14:27 +0530, Vasanthakumar Thiagarajan wrote:
> > On Thu, Mar 15, 2012 at 09:51:28AM +0100, Johannes Berg wrote:
> > > On Thu, 2012-03-15 at 14:12 +0530, Vasanthakumar Thiagarajan wrote:
> > > > On Tue, Mar 13, 2012 at 04:06:03PM +0100, Johannes Berg wrote:
> > > > > From: Johannes Berg <[email protected]>
> > > > >
> > > > > My grand plan to allow drivers to gradually move over
> > > > > to advertising virtual interface combinations and only
> > > > > enforce with drivers that do want it enforced doesn't
> > > > > seem to be working out, only Christian ever added the
> > > > > advertising (to carl9170), nobody else did.
> > > > >
> > > > > Begin enforcing combinations in cfg80211 so that users
> > > > > can rely on the information reported about a device.
> > > >
> > > > This breaks ath6kl AP mode and P2P, is it expected that the driver
> > > > needs to register the combination (?) even it supports a single
> > > > interface?
> > >
> > > Kalle tells me that ath6kl does support multiple virtual interfaces, but
> > > if it didn't then it wouldn't have to register combinations.
> > >
> > > I suspect you're using
> > > driver_param=use_p2p_group_interface=1
> > > in wpa_supplicant?
> >
> > Actually, I verified only AP mode, since it affects any sort of change interface,
> > I mentioned P2P as well. AP is expected to work without any issue right?.
>
> As long as you don't try to add the AP interface as the second one...

Right, I'm trying on a single interface.

Vasanth

2012-03-15 08:51:33

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 3.5] cfg80211: enforce lack of interface combinations

On Thu, 2012-03-15 at 14:12 +0530, Vasanthakumar Thiagarajan wrote:
> On Tue, Mar 13, 2012 at 04:06:03PM +0100, Johannes Berg wrote:
> > From: Johannes Berg <[email protected]>
> >
> > My grand plan to allow drivers to gradually move over
> > to advertising virtual interface combinations and only
> > enforce with drivers that do want it enforced doesn't
> > seem to be working out, only Christian ever added the
> > advertising (to carl9170), nobody else did.
> >
> > Begin enforcing combinations in cfg80211 so that users
> > can rely on the information reported about a device.
>
> This breaks ath6kl AP mode and P2P, is it expected that the driver
> needs to register the combination (?) even it supports a single
> interface?

Kalle tells me that ath6kl does support multiple virtual interfaces, but
if it didn't then it wouldn't have to register combinations.

I suspect you're using
driver_param=use_p2p_group_interface=1
in wpa_supplicant?

johannes


Subject: Re: [PATCH 3.5] cfg80211: enforce lack of interface combinations

On Tue, Mar 13, 2012 at 04:06:03PM +0100, Johannes Berg wrote:
> From: Johannes Berg <[email protected]>
>
> My grand plan to allow drivers to gradually move over
> to advertising virtual interface combinations and only
> enforce with drivers that do want it enforced doesn't
> seem to be working out, only Christian ever added the
> advertising (to carl9170), nobody else did.
>
> Begin enforcing combinations in cfg80211 so that users
> can rely on the information reported about a device.

This breaks ath6kl AP mode and P2P, is it expected that the driver
needs to register the combination (?) even it supports a single
interface?

Vasanth

Subject: Re: [PATCH 3.5] cfg80211: enforce lack of interface combinations

On Thu, Mar 15, 2012 at 10:11:49AM +0100, Johannes Berg wrote:
> On Thu, 2012-03-15 at 14:32 +0530, Vasanthakumar Thiagarajan wrote:
> > On Thu, Mar 15, 2012 at 09:58:27AM +0100, Johannes Berg wrote:
> > > On Thu, 2012-03-15 at 14:27 +0530, Vasanthakumar Thiagarajan wrote:
> > > > On Thu, Mar 15, 2012 at 09:51:28AM +0100, Johannes Berg wrote:
> > > > > On Thu, 2012-03-15 at 14:12 +0530, Vasanthakumar Thiagarajan wrote:
> > > > > > On Tue, Mar 13, 2012 at 04:06:03PM +0100, Johannes Berg wrote:
> > > > > > > From: Johannes Berg <[email protected]>
> > > > > > >
> > > > > > > My grand plan to allow drivers to gradually move over
> > > > > > > to advertising virtual interface combinations and only
> > > > > > > enforce with drivers that do want it enforced doesn't
> > > > > > > seem to be working out, only Christian ever added the
> > > > > > > advertising (to carl9170), nobody else did.
> > > > > > >
> > > > > > > Begin enforcing combinations in cfg80211 so that users
> > > > > > > can rely on the information reported about a device.
> > > > > >
> > > > > > This breaks ath6kl AP mode and P2P, is it expected that the driver
> > > > > > needs to register the combination (?) even it supports a single
> > > > > > interface?
> > > > >
> > > > > Kalle tells me that ath6kl does support multiple virtual interfaces, but
> > > > > if it didn't then it wouldn't have to register combinations.
> > > > >
> > > > > I suspect you're using
> > > > > driver_param=use_p2p_group_interface=1
> > > > > in wpa_supplicant?
> > > >
> > > > Actually, I verified only AP mode, since it affects any sort of change interface,
> > > > I mentioned P2P as well. AP is expected to work without any issue right?.
> > >
> > > As long as you don't try to add the AP interface as the second one...
> >
> > Right, I'm trying on a single interface.
>
> Hmm, ok, looking at the code again it seems there's a bug ... let me try
> to fix it.

V2 fixes this, thanks!.

Vasanth

Subject: Re: [PATCH 3.5] cfg80211: enforce lack of interface combinations

On Thu, Mar 15, 2012 at 09:51:28AM +0100, Johannes Berg wrote:
> On Thu, 2012-03-15 at 14:12 +0530, Vasanthakumar Thiagarajan wrote:
> > On Tue, Mar 13, 2012 at 04:06:03PM +0100, Johannes Berg wrote:
> > > From: Johannes Berg <[email protected]>
> > >
> > > My grand plan to allow drivers to gradually move over
> > > to advertising virtual interface combinations and only
> > > enforce with drivers that do want it enforced doesn't
> > > seem to be working out, only Christian ever added the
> > > advertising (to carl9170), nobody else did.
> > >
> > > Begin enforcing combinations in cfg80211 so that users
> > > can rely on the information reported about a device.
> >
> > This breaks ath6kl AP mode and P2P, is it expected that the driver
> > needs to register the combination (?) even it supports a single
> > interface?
>
> Kalle tells me that ath6kl does support multiple virtual interfaces, but
> if it didn't then it wouldn't have to register combinations.
>
> I suspect you're using
> driver_param=use_p2p_group_interface=1
> in wpa_supplicant?

Actually, I verified only AP mode, since it affects any sort of change interface,
I mentioned P2P as well. AP is expected to work without any issue right?.

Vasanth