diff mbox

[3.9] rt2x00: error in configurations with mesh support disabled

Message ID 1361891395-59990-1-git-send-email-nbd@openwrt.org (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Felix Fietkau Feb. 26, 2013, 3:09 p.m. UTC
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: stable@vger.kernel.org
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
---
 drivers/net/wireless/rt2x00/rt2x00dev.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Gertjan van Wingerde Feb. 27, 2013, 12:37 p.m. UTC | #1
Hi Felix,

On Tue, Feb 26, 2013 at 4:09 PM, Felix Fietkau <nbd@openwrt.org> 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: stable@vger.kernel.org
> Signed-off-by: Felix Fietkau <nbd@openwrt.org>
> ---
>  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 majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Johannes Berg Feb. 27, 2013, 12:39 p.m. UTC | #2
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 <nbd@openwrt.org> 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

--
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
Gertjan van Wingerde Feb. 27, 2013, 3:06 p.m. UTC | #3
On Wed, Feb 27, 2013 at 1:39 PM, Johannes Berg
<johannes@sipsolutions.net> 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 <nbd@openwrt.org> 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 van Wingerde Feb. 27, 2013, 3:08 p.m. UTC | #4
On Tue, Feb 26, 2013 at 4:09 PM, Felix Fietkau <nbd@openwrt.org> 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: stable@vger.kernel.org
> Signed-off-by: Felix Fietkau <nbd@openwrt.org>

Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>

> ---
>  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 majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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;