2008-10-07 16:58:05

by Johannes Berg

[permalink] [raw]
Subject: [PATCH 2/8] mac80211: remove aggregation status write support from debugfs

This code uses static variables and thus cannot be kept.

Signed-off-by: Johannes Berg <[email protected]>
---
net/mac80211/debugfs_sta.c | 73 ---------------------------------------------
1 file changed, 1 insertion(+), 72 deletions(-)

--- everything.orig/net/mac80211/debugfs_sta.c 2008-10-07 11:26:58.000000000 +0200
+++ everything/net/mac80211/debugfs_sta.c 2008-10-07 11:26:59.000000000 +0200
@@ -39,13 +39,6 @@ static const struct file_operations sta_
.open = mac80211_open_file_generic, \
}

-#define STA_OPS_WR(name) \
-static const struct file_operations sta_ ##name## _ops = { \
- .read = sta_##name##_read, \
- .write = sta_##name##_write, \
- .open = mac80211_open_file_generic, \
-}
-
#define STA_FILE(name, field, format) \
STA_READ_##format(name, field) \
STA_OPS(name)
@@ -168,71 +161,7 @@ static ssize_t sta_agg_status_read(struc

return simple_read_from_buffer(userbuf, count, ppos, buf, p - buf);
}
-
-static ssize_t sta_agg_status_write(struct file *file,
- const char __user *user_buf, size_t count, loff_t *ppos)
-{
- struct sta_info *sta = file->private_data;
- struct ieee80211_local *local = sta->sdata->local;
- struct ieee80211_hw *hw = &local->hw;
- u8 *da = sta->sta.addr;
- static int tid_static_tx[16] = {0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0};
- static int tid_static_rx[16] = {1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1};
- char *endp;
- char buf[32];
- int buf_size, rs;
- unsigned int tid_num;
- char state[4];
-
- memset(buf, 0x00, sizeof(buf));
- buf_size = min(count, (sizeof(buf)-1));
- if (copy_from_user(buf, user_buf, buf_size))
- return -EFAULT;
-
- tid_num = simple_strtoul(buf, &endp, 0);
- if (endp == buf)
- return -EINVAL;
-
- if ((tid_num >= 100) && (tid_num <= 115)) {
- /* toggle Rx aggregation command */
- tid_num = tid_num - 100;
- if (tid_static_rx[tid_num] == 1) {
- strcpy(state, "off ");
- ieee80211_sta_stop_rx_ba_session(sta->sdata, da, tid_num, 0,
- WLAN_REASON_QSTA_REQUIRE_SETUP);
- sta->ampdu_mlme.tid_state_rx[tid_num] |=
- HT_AGG_STATE_DEBUGFS_CTL;
- tid_static_rx[tid_num] = 0;
- } else {
- strcpy(state, "on ");
- sta->ampdu_mlme.tid_state_rx[tid_num] &=
- ~HT_AGG_STATE_DEBUGFS_CTL;
- tid_static_rx[tid_num] = 1;
- }
- printk(KERN_DEBUG "debugfs - try switching tid %u %s\n",
- tid_num, state);
- } else if ((tid_num >= 0) && (tid_num <= 15)) {
- /* toggle Tx aggregation command */
- if (tid_static_tx[tid_num] == 0) {
- strcpy(state, "on ");
- rs = ieee80211_start_tx_ba_session(hw, da, tid_num);
- if (rs == 0)
- tid_static_tx[tid_num] = 1;
- } else {
- strcpy(state, "off");
- rs = ieee80211_stop_tx_ba_session(hw, da, tid_num, 1);
- if (rs == 0)
- tid_static_tx[tid_num] = 0;
- }
- printk(KERN_DEBUG "debugfs - switching tid %u %s, return=%d\n",
- tid_num, state, rs);
- }
-
- return count;
-}
-STA_OPS_WR(agg_status);
+STA_OPS(agg_status);

#define DEBUGFS_ADD(name) \
sta->debugfs.name = debugfs_create_file(#name, 0400, \

--



2008-10-10 18:37:56

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 2/8] mac80211: remove aggregation status write support from debugfs

On Fri, 2008-10-10 at 11:22 -0700, Luis R. Rodriguez wrote:
> On Wed, Oct 8, 2008 at 12:59 AM, Johannes Berg
> <[email protected]> wrote:
> > On Tue, 2008-10-07 at 23:24 +0200, Tomas Winkler wrote:
> >> On Tue, Oct 7, 2008 at 12:04 PM, Johannes Berg
> >> <[email protected]> wrote:
> >> > This code uses static variables and thus cannot be kept.
> >> NACK
> >> Need something to debug this stuff
> >
> > Tough luck. Go write proper support in nl80211 then.
>
> Someone has some patch to use nl80211 for this BTW. *cough*

Who what where? Andrey said he was going to work on it?

johannes


Attachments:
signature.asc (836.00 B)
This is a digitally signed message part

2008-10-10 18:39:34

by Andrey Yurovsky

[permalink] [raw]
Subject: Re: [PATCH 2/8] mac80211: remove aggregation status write support from debugfs

Yes, this adds two nl80211 commands (NEW_BA and DEL_BA)
https://cozybit1.dnsalias.org/~andrey/patches/001-add-ba-session-command-nl80211.patch
and this adds corresponding "station addba" and "station delba"
options for them to iw:
https://cozybit1.dnsalias.org/~andrey/patches/002-iw-add-nl80211-ba-commands.patch

With the current code, I am not sure if it's ever intended that user
space has the ability to initiate and tear down BA sessions, so this
may or may not be useful to others. Right now I am using them to test
BA initiation and teardown and I suspect that they may be useful to,
for example, hostapd in the future.

Please let me know what you think. Thanks,

-Andrey

On Fri, Oct 10, 2008 at 11:22 AM, Luis R. Rodriguez <[email protected]> wrote:
> On Wed, Oct 8, 2008 at 12:59 AM, Johannes Berg
> <[email protected]> wrote:
>> On Tue, 2008-10-07 at 23:24 +0200, Tomas Winkler wrote:
>>> On Tue, Oct 7, 2008 at 12:04 PM, Johannes Berg
>>> <[email protected]> wrote:
>>> > This code uses static variables and thus cannot be kept.
>>> NACK
>>> Need something to debug this stuff
>>
>> Tough luck. Go write proper support in nl80211 then.
>
> Someone has some patch to use nl80211 for this BTW. *cough*
>
> Luis
>

2008-10-07 21:24:44

by Tomas Winkler

[permalink] [raw]
Subject: Re: [PATCH 2/8] mac80211: remove aggregation status write support from debugfs

On Tue, Oct 7, 2008 at 12:04 PM, Johannes Berg
<[email protected]> wrote:
> This code uses static variables and thus cannot be kept.
NACK
Need something to debug this stuff
Tomas

> Signed-off-by: Johannes Berg <[email protected]>
> ---
> net/mac80211/debugfs_sta.c | 73 ---------------------------------------------
> 1 file changed, 1 insertion(+), 72 deletions(-)
>
> --- everything.orig/net/mac80211/debugfs_sta.c 2008-10-07 11:26:58.000000000 +0200
> +++ everything/net/mac80211/debugfs_sta.c 2008-10-07 11:26:59.000000000 +0200
> @@ -39,13 +39,6 @@ static const struct file_operations sta_
> .open = mac80211_open_file_generic, \
> }
>
> -#define STA_OPS_WR(name) \
> -static const struct file_operations sta_ ##name## _ops = { \
> - .read = sta_##name##_read, \
> - .write = sta_##name##_write, \
> - .open = mac80211_open_file_generic, \
> -}
> -
> #define STA_FILE(name, field, format) \
> STA_READ_##format(name, field) \
> STA_OPS(name)
> @@ -168,71 +161,7 @@ static ssize_t sta_agg_status_read(struc
>
> return simple_read_from_buffer(userbuf, count, ppos, buf, p - buf);
> }
> -
> -static ssize_t sta_agg_status_write(struct file *file,
> - const char __user *user_buf, size_t count, loff_t *ppos)
> -{
> - struct sta_info *sta = file->private_data;
> - struct ieee80211_local *local = sta->sdata->local;
> - struct ieee80211_hw *hw = &local->hw;
> - u8 *da = sta->sta.addr;
> - static int tid_static_tx[16] = {0, 0, 0, 0, 0, 0, 0, 0,
> - 0, 0, 0, 0, 0, 0, 0, 0};
> - static int tid_static_rx[16] = {1, 1, 1, 1, 1, 1, 1, 1,
> - 1, 1, 1, 1, 1, 1, 1, 1};
> - char *endp;
> - char buf[32];
> - int buf_size, rs;
> - unsigned int tid_num;
> - char state[4];
> -
> - memset(buf, 0x00, sizeof(buf));
> - buf_size = min(count, (sizeof(buf)-1));
> - if (copy_from_user(buf, user_buf, buf_size))
> - return -EFAULT;
> -
> - tid_num = simple_strtoul(buf, &endp, 0);
> - if (endp == buf)
> - return -EINVAL;
> -
> - if ((tid_num >= 100) && (tid_num <= 115)) {
> - /* toggle Rx aggregation command */
> - tid_num = tid_num - 100;
> - if (tid_static_rx[tid_num] == 1) {
> - strcpy(state, "off ");
> - ieee80211_sta_stop_rx_ba_session(sta->sdata, da, tid_num, 0,
> - WLAN_REASON_QSTA_REQUIRE_SETUP);
> - sta->ampdu_mlme.tid_state_rx[tid_num] |=
> - HT_AGG_STATE_DEBUGFS_CTL;
> - tid_static_rx[tid_num] = 0;
> - } else {
> - strcpy(state, "on ");
> - sta->ampdu_mlme.tid_state_rx[tid_num] &=
> - ~HT_AGG_STATE_DEBUGFS_CTL;
> - tid_static_rx[tid_num] = 1;
> - }
> - printk(KERN_DEBUG "debugfs - try switching tid %u %s\n",
> - tid_num, state);
> - } else if ((tid_num >= 0) && (tid_num <= 15)) {
> - /* toggle Tx aggregation command */
> - if (tid_static_tx[tid_num] == 0) {
> - strcpy(state, "on ");
> - rs = ieee80211_start_tx_ba_session(hw, da, tid_num);
> - if (rs == 0)
> - tid_static_tx[tid_num] = 1;
> - } else {
> - strcpy(state, "off");
> - rs = ieee80211_stop_tx_ba_session(hw, da, tid_num, 1);
> - if (rs == 0)
> - tid_static_tx[tid_num] = 0;
> - }
> - printk(KERN_DEBUG "debugfs - switching tid %u %s, return=%d\n",
> - tid_num, state, rs);
> - }
> -
> - return count;
> -}
> -STA_OPS_WR(agg_status);
> +STA_OPS(agg_status);
>
> #define DEBUGFS_ADD(name) \
> sta->debugfs.name = debugfs_create_file(#name, 0400, \
>
> --
>
> --
> 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
>

2008-10-10 18:22:14

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH 2/8] mac80211: remove aggregation status write support from debugfs

On Wed, Oct 8, 2008 at 12:59 AM, Johannes Berg
<[email protected]> wrote:
> On Tue, 2008-10-07 at 23:24 +0200, Tomas Winkler wrote:
>> On Tue, Oct 7, 2008 at 12:04 PM, Johannes Berg
>> <[email protected]> wrote:
>> > This code uses static variables and thus cannot be kept.
>> NACK
>> Need something to debug this stuff
>
> Tough luck. Go write proper support in nl80211 then.

Someone has some patch to use nl80211 for this BTW. *cough*

Luis

2008-10-10 18:42:47

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 2/8] mac80211: remove aggregation status write support from debugfs

On Fri, 2008-10-10 at 11:39 -0700, Andrey Yurovsky wrote:

> With the current code, I am not sure if it's ever intended that user
> space has the ability to initiate and tear down BA sessions, so this
> may or may not be useful to others. Right now I am using them to test
> BA initiation and teardown and I suspect that they may be useful to,
> for example, hostapd in the future.
>
> Please let me know what you think. Thanks,

Without looking at the code, is this really useful for much except
debugging? Shouldn't the rate control algorithm be in a much better
position to make that decision?

johannes


Attachments:
signature.asc (836.00 B)
This is a digitally signed message part

2008-10-08 07:59:32

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 2/8] mac80211: remove aggregation status write support from debugfs

On Tue, 2008-10-07 at 23:24 +0200, Tomas Winkler wrote:
> On Tue, Oct 7, 2008 at 12:04 PM, Johannes Berg
> <[email protected]> wrote:
> > This code uses static variables and thus cannot be kept.
> NACK
> Need something to debug this stuff

Tough luck. Go write proper support in nl80211 then.

johannes


Attachments:
signature.asc (836.00 B)
This is a digitally signed message part