Search Linux Wireless

Re: Aggregation problem with rt2800 AP and Intel 5100 STA

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2011-03-25 at 12:08 +0100, Helmut Schaa wrote:

> mac80211 isn't sending a BAR in the case above because of this code
> in ieee80211_tx_status (status.c):
> 
> 218                 acked = !!(info->flags & IEEE80211_TX_STAT_ACK);
> 219                 if (!acked && test_sta_flags(sta, WLAN_STA_PS_STA)) {
> 220                         /*
> 221                          * The STA is in power save mode, so assume
> 222                          * that this TX packet failed because of that.
> 223                          */
> 224                         ieee80211_handle_filtered_frame(local, sta, skb);
> 225                         rcu_read_unlock();
> 226                         return;
> 227                 }
> ...
> 233                 if ((info->flags & IEEE80211_TX_STAT_AMPDU_NO_BACK) &&
> 234                     (ieee80211_is_data_qos(fc))) {
> 235                         u16 tid, ssn;
> 236                         u8 *qc;
> 237 
> 238                         qc = ieee80211_get_qos_ctl(hdr);
> 239                         tid = qc[0] & 0xf;
> 240                         ssn = ((le16_to_cpu(hdr->seq_ctrl) + 0x10)
> 241                                                 & IEEE80211_SCTL_SEQ);
> 242                         ieee80211_send_bar(sta->sdata, hdr->addr1,
> 243                                            tid, ssn);
> 244                 }
> 
> So, if a frame failed because the STA entered PS state it will be added
> to the filtered frames queue and no BAR will get generated.

Right. Of course, if the device could help and the driver would set
IEEE80211_TX_STAT_TX_FILTERED this would be better since then the frames
wouldn't even be on the air...

FWIW, since Intel hw uses special queues for aggregation the ucode just
stops those queues when the station goes to sleep. Caused me some grey
hair in fact since I had naively expected it to reject those frames too.

> However, if this was the case mac80211 should send out all filtered frames
> after the STA wakes up again, which does not happen in the situation
> above (3106 and 3107 got lost) :(

Yeah, that's in fact strange. Unless they timed out?

> Generating the BAR also for filtered frames might improve the situation but
> looks more like a workaround to me.

Agree.

> Still debugging the rt2800 tx status reporting.

Maybe it's not reporting the right status for all frames?

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux