2013-02-26 15:10:11

by Felix Fietkau

[permalink] [raw]
Subject: [PATCH 3.9] rt2x00: error in configurations with mesh support disabled

If CONFIG_MAC80211_MESH is not set, cfg80211 will now allow advertising
interface combinations with NL80211_IFTYPE_MESH_POINT present.
Add appropriate ifdefs to avoid running into errors.

Cc: [email protected]
Signed-off-by: Felix Fietkau <[email protected]>
---
drivers/net/wireless/rt2x00/rt2x00dev.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 1031db6..189744d 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -1236,8 +1236,10 @@ static inline void rt2x00lib_set_if_combinations(struct rt2x00_dev *rt2x00dev)
*/
if_limit = &rt2x00dev->if_limits_ap;
if_limit->max = rt2x00dev->ops->max_ap_intf;
- if_limit->types = BIT(NL80211_IFTYPE_AP) |
- BIT(NL80211_IFTYPE_MESH_POINT);
+ if_limit->types = BIT(NL80211_IFTYPE_AP);
+#ifdef CONFIG_MAC80211_MESH
+ if_limit->types |= BIT(NL80211_IFTYPE_MESH_POINT);
+#endif

/*
* Build up AP interface combinations structure.
@@ -1309,7 +1311,9 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
rt2x00dev->hw->wiphy->interface_modes |=
BIT(NL80211_IFTYPE_ADHOC) |
BIT(NL80211_IFTYPE_AP) |
+#ifdef CONFIG_MAC80211_MESH
BIT(NL80211_IFTYPE_MESH_POINT) |
+#endif
BIT(NL80211_IFTYPE_WDS);

rt2x00dev->hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
--
1.8.0.2



2013-02-27 15:08:37

by Gertjan van Wingerde

[permalink] [raw]
Subject: Re: [PATCH 3.9] rt2x00: error in configurations with mesh support disabled

On Tue, Feb 26, 2013 at 4:09 PM, Felix Fietkau <[email protected]> wrote:
> If CONFIG_MAC80211_MESH is not set, cfg80211 will now allow advertising
> interface combinations with NL80211_IFTYPE_MESH_POINT present.
> Add appropriate ifdefs to avoid running into errors.
>
> Cc: [email protected]
> Signed-off-by: Felix Fietkau <[email protected]>

Acked-by: Gertjan van Wingerde <[email protected]>

> ---
> drivers/net/wireless/rt2x00/rt2x00dev.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
> index 1031db6..189744d 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00dev.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
> @@ -1236,8 +1236,10 @@ static inline void rt2x00lib_set_if_combinations(struct rt2x00_dev *rt2x00dev)
> */
> if_limit = &rt2x00dev->if_limits_ap;
> if_limit->max = rt2x00dev->ops->max_ap_intf;
> - if_limit->types = BIT(NL80211_IFTYPE_AP) |
> - BIT(NL80211_IFTYPE_MESH_POINT);
> + if_limit->types = BIT(NL80211_IFTYPE_AP);
> +#ifdef CONFIG_MAC80211_MESH
> + if_limit->types |= BIT(NL80211_IFTYPE_MESH_POINT);
> +#endif
>
> /*
> * Build up AP interface combinations structure.
> @@ -1309,7 +1311,9 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
> rt2x00dev->hw->wiphy->interface_modes |=
> BIT(NL80211_IFTYPE_ADHOC) |
> BIT(NL80211_IFTYPE_AP) |
> +#ifdef CONFIG_MAC80211_MESH
> BIT(NL80211_IFTYPE_MESH_POINT) |
> +#endif
> BIT(NL80211_IFTYPE_WDS);
>
> rt2x00dev->hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
> --
> 1.8.0.2
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html



--
---
Gertjan

2013-02-27 15:06:59

by Gertjan van Wingerde

[permalink] [raw]
Subject: Re: [PATCH 3.9] rt2x00: error in configurations with mesh support disabled

On Wed, Feb 27, 2013 at 1:39 PM, Johannes Berg
<[email protected]> wrote:
> On Wed, 2013-02-27 at 13:37 +0100, Gertjan van Wingerde wrote:
>> Hi Felix,
>>
>> On Tue, Feb 26, 2013 at 4:09 PM, Felix Fietkau <[email protected]> wrote:
>> > If CONFIG_MAC80211_MESH is not set, cfg80211 will now allow advertising
>
> typo: "will not allow"
>
>> > interface combinations with NL80211_IFTYPE_MESH_POINT present.
>> > Add appropriate ifdefs to avoid running into errors.
>>
>> I'm not sure if rt2x00 is the proper place to fix this. To me it
>> doesn't look good to have to sprinkle these kind of ifdefs throughout
>> the drivers to check if mac80211 has mesh enabled.
>> I would prefer a solution where drivers are still able to indicate
>> that they support mesh interfaces, but where mac80211/cfg80211 prevent
>> these kind of interfaces from being created.
>>
>> @Johannes: What is your view on this?
>
> It would be nicer, but the data is const so mac80211 can't modify it,
> and I don't see that we should add a lot of code/handshaking to
> mac80211/cfg80211 just to avoid one ifdef here.
>

OK. No worries. Was just looking if there was an alternative.

I'll ack Felix' patch then

--
---
Gertjan

2013-02-27 12:39:29

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 3.9] rt2x00: error in configurations with mesh support disabled

On Wed, 2013-02-27 at 13:37 +0100, Gertjan van Wingerde wrote:
> Hi Felix,
>
> On Tue, Feb 26, 2013 at 4:09 PM, Felix Fietkau <[email protected]> wrote:
> > If CONFIG_MAC80211_MESH is not set, cfg80211 will now allow advertising

typo: "will not allow"

> > interface combinations with NL80211_IFTYPE_MESH_POINT present.
> > Add appropriate ifdefs to avoid running into errors.
>
> I'm not sure if rt2x00 is the proper place to fix this. To me it
> doesn't look good to have to sprinkle these kind of ifdefs throughout
> the drivers to check if mac80211 has mesh enabled.
> I would prefer a solution where drivers are still able to indicate
> that they support mesh interfaces, but where mac80211/cfg80211 prevent
> these kind of interfaces from being created.
>
> @Johannes: What is your view on this?

It would be nicer, but the data is const so mac80211 can't modify it,
and I don't see that we should add a lot of code/handshaking to
mac80211/cfg80211 just to avoid one ifdef here.

johannes


2013-02-27 12:37:21

by Gertjan van Wingerde

[permalink] [raw]
Subject: Re: [PATCH 3.9] rt2x00: error in configurations with mesh support disabled

Hi Felix,

On Tue, Feb 26, 2013 at 4:09 PM, Felix Fietkau <[email protected]> wrote:
> If CONFIG_MAC80211_MESH is not set, cfg80211 will now allow advertising
> interface combinations with NL80211_IFTYPE_MESH_POINT present.
> Add appropriate ifdefs to avoid running into errors.

I'm not sure if rt2x00 is the proper place to fix this. To me it
doesn't look good to have to sprinkle these kind of ifdefs throughout
the drivers to check if mac80211 has mesh enabled.
I would prefer a solution where drivers are still able to indicate
that they support mesh interfaces, but where mac80211/cfg80211 prevent
these kind of interfaces from being created.

@Johannes: What is your view on this?

>
> Cc: [email protected]
> Signed-off-by: Felix Fietkau <[email protected]>
> ---
> drivers/net/wireless/rt2x00/rt2x00dev.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
> index 1031db6..189744d 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00dev.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
> @@ -1236,8 +1236,10 @@ static inline void rt2x00lib_set_if_combinations(struct rt2x00_dev *rt2x00dev)
> */
> if_limit = &rt2x00dev->if_limits_ap;
> if_limit->max = rt2x00dev->ops->max_ap_intf;
> - if_limit->types = BIT(NL80211_IFTYPE_AP) |
> - BIT(NL80211_IFTYPE_MESH_POINT);
> + if_limit->types = BIT(NL80211_IFTYPE_AP);
> +#ifdef CONFIG_MAC80211_MESH
> + if_limit->types |= BIT(NL80211_IFTYPE_MESH_POINT);
> +#endif
>
> /*
> * Build up AP interface combinations structure.
> @@ -1309,7 +1311,9 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
> rt2x00dev->hw->wiphy->interface_modes |=
> BIT(NL80211_IFTYPE_ADHOC) |
> BIT(NL80211_IFTYPE_AP) |
> +#ifdef CONFIG_MAC80211_MESH
> BIT(NL80211_IFTYPE_MESH_POINT) |
> +#endif
> BIT(NL80211_IFTYPE_WDS);
>
> rt2x00dev->hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
> --
> 1.8.0.2
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html



--
---
Gertjan