2009-02-25 21:56:35

by Alina Friedrichsen

[permalink] [raw]
Subject: [PATCH] mac80211: Implement commit in wireless extensions

This implements commit in wireless extensions for completeness and mayb=
e it could be useful for debugging to initiate a new rejoining process =
without changing the config.

I not so familiar with nl80211 at the moment, so I want add it to nl802=
11 in a second patch.

Signed-off-by: Alina Friedrichsen <[email protected]>
---
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index ecbc8e0..7f00c70 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -920,6 +920,7 @@ static inline int ieee80211_bssid_match(const u8 *r=
addr, const u8 *addr)
=20
int ieee80211_hw_config(struct ieee80211_local *local, u32 changed);
int ieee80211_if_config(struct ieee80211_sub_if_data *sdata, u32 chang=
ed);
+int ieee80211_commit(struct ieee80211_sub_if_data *sdata);
void ieee80211_tx_set_protected(struct ieee80211_tx_data *tx);
void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sd=
ata,
u32 changed);
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index f38db4d..1b2d598 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -294,6 +294,20 @@ int ieee80211_hw_config(struct ieee80211_local *lo=
cal, u32 changed)
return ret;
}
=20
+void ieee80211_commit(struct ieee80211_sub_if_data *sdata)
+{
+ switch (sdata->vif.type) {
+ case NL80211_IFTYPE_ADHOC:
+ ieee80211_ibss_commit(sdata);
+ break;
+ case NL80211_IFTYPE_STATION:
+ ieee80211_sta_commit(sdata);
+ break;
+ default:
+ break;
+ }
+}
+
void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sd=
ata,
u32 changed)
{
diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c
index f6924fc..1ac0516 100644
--- a/net/mac80211/wext.c
+++ b/net/mac80211/wext.c
@@ -121,6 +121,15 @@ static int ieee80211_set_encryption(struct ieee802=
11_sub_if_data *sdata, u8 *sta
return err;
}
=20
+static int ieee80211_ioctl_commit(struct net_device *dev,
+ struct iw_request_info *info,
+ struct iw_point *data, char *extra)
+{
+ struct ieee80211_sub_if_data *sdata =3D IEEE80211_DEV_TO_SUB_IF(dev);
+ ieee80211_commit(sdata);
+ return 0;
+}
+
static int ieee80211_ioctl_siwgenie(struct net_device *dev,
struct iw_request_info *info,
struct iw_point *data, char *extra)
@@ -1035,7 +1044,7 @@ static int ieee80211_ioctl_siwencodeext(struct ne=
t_device *dev,
=20
static const iw_handler ieee80211_handler[] =3D
{
- (iw_handler) NULL, /* SIOCSIWCOMMIT */
+ (iw_handler) ieee80211_ioctl_commit, /* SIOCSIWCOMMIT */
(iw_handler) cfg80211_wext_giwname, /* SIOCGIWNAME */
(iw_handler) NULL, /* SIOCSIWNWID */
(iw_handler) NULL, /* SIOCGIWNWID */

--=20
Psssst! Schon vom neuen GMX MultiMessenger geh=F6rt? Der kann`s mit all=
en: http://www.gmx.net/de/go/multimessenger01


2009-02-25 22:44:31

by Alina Friedrichsen

[permalink] [raw]
Subject: Re: [PATCH] mac80211: Implement commit in wireless extensions

Hello Johannes!

> I don't think that we should do this -- "completeness" for wext is a =
bad
> argument and for debugging you can also do the other things.
>=20
> > I not so familiar with nl80211 at the moment, so I want add it to
> nl80211
> > in a second patch.
>=20
> No, you won't. nl80211 shall not require such hacks.

I personally think something like a "reload button" could be useful for=
a wireless interface.

The wext code can removed when the other wext code is removed and it is=
not much code.

Regards
Alina

--=20
Computer Bild Tarifsieger! GMX FreeDSL - Telefonanschluss + DSL
f=FCr nur 17,95 =BF/mtl.!* http://dsl.gmx.de/?ac=3DOM.AD.PD003K11308T45=
69a

2009-02-25 22:59:42

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: Implement commit in wireless extensions


On Wed, 25 Feb 2009 23:44:28 +0100, "Alina Friedrichsen" <[email protected]>
wrote:

>> No, you won't. nl80211 shall not require such hacks.
>
> I personally think something like a "reload button" could be useful for a
> wireless interface.

For nl80211 you'll just have to disassoc and assoc again or so. For wext
you can, currently, always set the bssid to the current one, I think, or
quickly to any and then the same, or so...

Besides, commit shouldn't be doing anything unless you have outstanding
changes, which we never do, so your patch isn't even correct afaict.

> The wext code can removed when the other wext code is removed and it is
not
> much code.

I don't see a good reason to add code just to kill it again. Please just
leave wext alone.

johannes

2009-02-25 22:27:06

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: Implement commit in wireless extensions


On Wed, 25 Feb 2009 22:56:31 +0100, "Alina Friedrichsen" <[email protected]>
wrote:
> This implements commit in wireless extensions for completeness and maybe
it
> could be useful for debugging to initiate a new rejoining process without
> changing the config.

I don't think that we should do this -- "completeness" for wext is a bad
argument and for debugging you can also do the other things.

> I not so familiar with nl80211 at the moment, so I want add it to nl80211
> in a second patch.

No, you won't. nl80211 shall not require such hacks.

johannes

> Signed-off-by: Alina Friedrichsen <[email protected]>
> ---
> diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
> index ecbc8e0..7f00c70 100644
> --- a/net/mac80211/ieee80211_i.h
> +++ b/net/mac80211/ieee80211_i.h
> @@ -920,6 +920,7 @@ static inline int ieee80211_bssid_match(const u8
> *raddr, const u8 *addr)
>
> int ieee80211_hw_config(struct ieee80211_local *local, u32 changed);
> int ieee80211_if_config(struct ieee80211_sub_if_data *sdata, u32
changed);
> +int ieee80211_commit(struct ieee80211_sub_if_data *sdata);
> void ieee80211_tx_set_protected(struct ieee80211_tx_data *tx);
> void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data
*sdata,
> u32 changed);
> diff --git a/net/mac80211/main.c b/net/mac80211/main.c
> index f38db4d..1b2d598 100644
> --- a/net/mac80211/main.c
> +++ b/net/mac80211/main.c
> @@ -294,6 +294,20 @@ int ieee80211_hw_config(struct ieee80211_local
*local,
> u32 changed)
> return ret;
> }
>
> +void ieee80211_commit(struct ieee80211_sub_if_data *sdata)
> +{
> + switch (sdata->vif.type) {
> + case NL80211_IFTYPE_ADHOC:
> + ieee80211_ibss_commit(sdata);
> + break;
> + case NL80211_IFTYPE_STATION:
> + ieee80211_sta_commit(sdata);
> + break;
> + default:
> + break;
> + }
> +}
> +
> void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data
*sdata,
> u32 changed)
> {
> diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c
> index f6924fc..1ac0516 100644
> --- a/net/mac80211/wext.c
> +++ b/net/mac80211/wext.c
> @@ -121,6 +121,15 @@ static int ieee80211_set_encryption(struct
> ieee80211_sub_if_data *sdata, u8 *sta
> return err;
> }
>
> +static int ieee80211_ioctl_commit(struct net_device *dev,
> + struct iw_request_info *info,
> + struct iw_point *data, char *extra)
> +{
> + struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
> + ieee80211_commit(sdata);
> + return 0;
> +}
> +
> static int ieee80211_ioctl_siwgenie(struct net_device *dev,
> struct iw_request_info *info,
> struct iw_point *data, char *extra)
> @@ -1035,7 +1044,7 @@ static int ieee80211_ioctl_siwencodeext(struct
> net_device *dev,
>
> static const iw_handler ieee80211_handler[] =
> {
> - (iw_handler) NULL, /* SIOCSIWCOMMIT */
> + (iw_handler) ieee80211_ioctl_commit, /* SIOCSIWCOMMIT */
> (iw_handler) cfg80211_wext_giwname, /* SIOCGIWNAME */
> (iw_handler) NULL, /* SIOCSIWNWID */
> (iw_handler) NULL, /* SIOCGIWNWID */