Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 89958
b: refs/heads/master
c: 836341a
h: refs/heads/master
v: v3
  • Loading branch information
Johannes Berg authored and John W. Linville committed Feb 29, 2008
1 parent e0f7e3a commit 927ef5a
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 26 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d2259243a19894eee06c16e278adfea81dc42bd9
refs/heads/master: 836341a70471ba77657b0b420dd7eea3c30a038b
3 changes: 1 addition & 2 deletions trunk/net/mac80211/debugfs_sta.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,10 @@ static ssize_t sta_flags_read(struct file *file, char __user *userbuf,
{
char buf[100];
struct sta_info *sta = file->private_data;
int res = scnprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s",
int res = scnprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s",
sta->flags & WLAN_STA_AUTH ? "AUTH\n" : "",
sta->flags & WLAN_STA_ASSOC ? "ASSOC\n" : "",
sta->flags & WLAN_STA_PS ? "PS\n" : "",
sta->flags & WLAN_STA_TIM ? "TIM\n" : "",
sta->flags & WLAN_STA_AUTHORIZED ? "AUTHORIZED\n" : "",
sta->flags & WLAN_STA_SHORT_PREAMBLE ? "SHORT PREAMBLE\n" : "",
sta->flags & WLAN_STA_WME ? "WME\n" : "",
Expand Down
7 changes: 3 additions & 4 deletions trunk/net/mac80211/rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -598,7 +598,7 @@ static int ap_sta_ps_end(struct net_device *dev, struct sta_info *sta)
sdata = IEEE80211_DEV_TO_SUB_IF(sta->dev);
if (sdata->bss)
atomic_dec(&sdata->bss->num_sta_ps);
sta->flags &= ~(WLAN_STA_PS | WLAN_STA_TIM | WLAN_STA_PSPOLL);
sta->flags &= ~(WLAN_STA_PS | WLAN_STA_PSPOLL);
if (!skb_queue_empty(&sta->ps_tx_buf)) {
if (sdata->bss)
bss_tim_clear(local, sdata->bss, sta->aid);
Expand Down Expand Up @@ -938,10 +938,9 @@ ieee80211_rx_h_ps_poll(struct ieee80211_txrx_data *rx)

/* Use MoreData flag to indicate whether there are more
* buffered frames for this STA */
if (no_pending_pkts) {
if (no_pending_pkts)
hdr->frame_control &= cpu_to_le16(~IEEE80211_FCTL_MOREDATA);
rx->sta->flags &= ~WLAN_STA_TIM;
} else
else
hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_MOREDATA);

dev_queue_xmit(skb);
Expand Down
28 changes: 18 additions & 10 deletions trunk/net/mac80211/sta_info.c
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ static void sta_info_cleanup_expire_buffered(struct ieee80211_local *local,
{
unsigned long flags;
struct sk_buff *skb;
struct ieee80211_sub_if_data *sdata;
DECLARE_MAC_BUF(mac);

if (skb_queue_empty(&sta->ps_tx_buf))
Expand All @@ -294,21 +295,28 @@ static void sta_info_cleanup_expire_buffered(struct ieee80211_local *local,
for (;;) {
spin_lock_irqsave(&sta->ps_tx_buf.lock, flags);
skb = skb_peek(&sta->ps_tx_buf);
if (sta_info_buffer_expired(local, sta, skb)) {
if (sta_info_buffer_expired(local, sta, skb))
skb = __skb_dequeue(&sta->ps_tx_buf);
if (skb_queue_empty(&sta->ps_tx_buf))
sta->flags &= ~WLAN_STA_TIM;
} else
else
skb = NULL;
spin_unlock_irqrestore(&sta->ps_tx_buf.lock, flags);

if (skb) {
local->total_ps_buffered--;
printk(KERN_DEBUG "Buffered frame expired (STA "
"%s)\n", print_mac(mac, sta->addr));
dev_kfree_skb(skb);
} else
if (!skb)
break;

sdata = IEEE80211_DEV_TO_SUB_IF(sta->dev);
local->total_ps_buffered--;
printk(KERN_DEBUG "Buffered frame expired (STA "
"%s)\n", print_mac(mac, sta->addr));
dev_kfree_skb(skb);

if (skb_queue_empty(&sta->ps_tx_buf)) {
if (sdata->bss)
bss_tim_set(sta->local, sdata->bss, sta->aid);
if (sta->local->ops->set_tim)
sta->local->ops->set_tim(local_to_hw(sta->local),
sta->aid, 0);
}
}
}

Expand Down
14 changes: 6 additions & 8 deletions trunk/net/mac80211/sta_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
* @WLAN_STA_AUTH: Station is authenticated.
* @WLAN_STA_ASSOC: Station is associated.
* @WLAN_STA_PS: Station is in power-save mode
* @WLAN_STA_TIM: TIM bit is on for this PS station (traffic buffered)
* @WLAN_STA_AUTHORIZED: Station is authorized to send/receive traffic.
* This bit is always checked so needs to be enabled for all stations
* when virtual port control is not in use.
Expand All @@ -38,13 +37,12 @@ enum ieee80211_sta_info_flags {
WLAN_STA_AUTH = 1<<0,
WLAN_STA_ASSOC = 1<<1,
WLAN_STA_PS = 1<<2,
WLAN_STA_TIM = 1<<3,
WLAN_STA_AUTHORIZED = 1<<4,
WLAN_STA_SHORT_PREAMBLE = 1<<5,
WLAN_STA_ASSOC_AP = 1<<6,
WLAN_STA_WME = 1<<7,
WLAN_STA_WDS = 1<<8,
WLAN_STA_PSPOLL = 1<<9,
WLAN_STA_AUTHORIZED = 1<<3,
WLAN_STA_SHORT_PREAMBLE = 1<<4,
WLAN_STA_ASSOC_AP = 1<<5,
WLAN_STA_WME = 1<<6,
WLAN_STA_WDS = 1<<7,
WLAN_STA_PSPOLL = 1<<8,
};

#define STA_TID_NUM 16
Expand Down
1 change: 0 additions & 1 deletion trunk/net/mac80211/tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,6 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_txrx_data *tx)
print_mac(mac, sta->addr), sta->aid,
skb_queue_len(&sta->ps_tx_buf));
#endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
sta->flags |= WLAN_STA_TIM;
if (tx->local->total_ps_buffered >= TOTAL_MAX_TX_BUFFER)
purge_old_ps_buffers(tx->local);
if (skb_queue_len(&sta->ps_tx_buf) >= STA_MAX_TX_BUFFER) {
Expand Down

0 comments on commit 927ef5a

Please sign in to comment.