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, \
--
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
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
>
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
>
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
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
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