linux/drivers/net/wireless/iwlwifi
Daniel Halperin f668da2f15 iwlwifi: fix wrapping when handling aggregated batches
Fairly complex code in iwlagn_tx_status_reply_tx handle the status reports for
aggregated packet batches sent by the NIC. This code aims to handle the case
where the NIC retransmits failed packets from a previous batch; the status
information for these packets can sometimes be inserted in the middle of a
batch and are actually not in order by sequence number! (I verified this can
happen with printk's in the function.)

The code in question adaptively identifies the "first" frame of the batch,
taking into account that it may not be the one corresponding to the first agg
status report, and also handles the case when the set of sent packets wraps the
256-character entry buffer. It generates the agg->bitmap field of sent packets
which is later compared to the BlockAck response from the receiver to see which
frames of those sent in this batch were ACKed. A small logic error (wrapping by
0xff==255 instead of 0x100==256) was causing the agg->bitmap to be set
incorrectly.

Fix this wrapping code, and add extensive comments to clarify what is going on.

Signed-off-by: Daniel Halperin <dhalperi@cs.washington.edu>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
2010-06-05 23:21:26 -07:00
..
Kconfig iwlwifi: split debug and debugfs options 2010-05-13 10:45:12 -07:00
Makefile iwl3945: add ucode statistics 2010-04-30 15:34:31 -07:00
iwl-1000.c iwlwifi: beacon format related helper function 2010-06-05 23:15:49 -07:00
iwl-3945-debugfs.c iwlwifi: separate statistics flag function for agn & 3945 2010-05-13 10:42:55 -07:00
iwl-3945-debugfs.h iwl3945: add ucode statistics 2010-04-30 15:34:31 -07:00
iwl-3945-fh.h iwlwifi: update copyright year to 2010 2010-01-19 16:25:15 -05:00
iwl-3945-hw.h iwlwifi: code cleanup for generic defines 2010-04-02 12:52:17 -07:00
iwl-3945-led.c iwlwifi: update copyright year to 2010 2010-01-19 16:25:15 -05:00
iwl-3945-led.h iwlwifi: update copyright year to 2010 2010-01-19 16:25:15 -05:00
iwl-3945-rs.c drivers/net: Remove unnecessary returns from void function()s 2010-05-14 00:19:28 -07:00
iwl-3945.c iwlwifi: reduce memory allocation 2010-06-05 23:18:33 -07:00
iwl-3945.h iwlwifi: track station IDs 2010-05-10 15:09:04 -07:00
iwl-4965-hw.h iwlwifi: code cleanup for generic defines 2010-04-02 12:52:17 -07:00
iwl-4965.c iwlwifi: generic scan TX antenna forcing 2010-06-05 23:19:44 -07:00
iwl-5000-hw.h iwlwifi: move hw related defines to separate file 2010-03-25 11:18:05 -07:00
iwl-5000.c iwlwifi: do not use huge command buffer for channel switch 2010-06-05 23:18:56 -07:00
iwl-6000-hw.h iwlwifi: update copyright year to 2010 2010-01-19 16:25:15 -05:00
iwl-6000.c iwlwifi: do not use huge command buffer for channel switch 2010-06-05 23:18:56 -07:00
iwl-agn-debugfs.c Revert "iwlwifi: move _agn statistics related structure" 2010-06-03 13:55:37 -04:00
iwl-agn-debugfs.h iwlwifi: add debugfs ops to iwlwifi 2010-04-16 13:51:31 -07:00
iwl-agn-hcmd.c iwlwifi: do not clear data after chain noise calib 2010-06-05 23:15:07 -07:00
iwl-agn-hw.h iwlwifi: code cleanup for generic defines 2010-04-02 12:52:17 -07:00
iwl-agn-ict.c wireless: update gfp/slab.h includes 2010-05-24 14:59:26 -04:00
iwl-agn-led.c iwlwifi: update copyright year to 2010 2010-01-19 16:25:15 -05:00
iwl-agn-led.h iwlwifi: update copyright year to 2010 2010-01-19 16:25:15 -05:00
iwl-agn-lib.c iwlwifi: fix wrapping when handling aggregated batches 2010-06-05 23:21:26 -07:00
iwl-agn-rs.c mac80211: clean up ieee80211_stop_tx_ba_session 2010-06-03 14:10:45 -04:00
iwl-agn-rs.h iwlwifi: implement new mac80211 station add/remove calls 2010-03-19 13:40:58 -07:00
iwl-agn-tx.c iwlwifi: parse block ack responses correctly 2010-06-05 23:21:00 -07:00
iwl-agn-ucode.c iwlwifi: move ucode related function to iwl-agn-ucode.c 2010-05-13 10:45:36 -07:00
iwl-agn.c iwlwifi: generic scan TX antenna forcing 2010-06-05 23:19:44 -07:00
iwl-agn.h iwlwifi: add new PCI IDs for 6000g2 devices 2010-05-13 10:45:48 -07:00
iwl-calib.c drivers/net: Remove unnecessary returns from void function()s 2010-05-14 00:19:28 -07:00
iwl-calib.h iwlwifi: update copyright year to 2010 2010-01-19 16:25:15 -05:00
iwl-commands.h iwlwifi: remove inaccurate comment 2010-06-05 23:17:10 -07:00
iwl-core.c iwlwifi: queue user-initiated scan when doing internal scan 2010-06-05 23:20:08 -07:00
iwl-core.h iwlwifi: generic scan TX antenna forcing 2010-06-05 23:19:44 -07:00
iwl-csr.h iwlwifi: add hw revision for 6000g2 NIC 2010-04-16 13:52:45 -07:00
iwl-debug.h iwlwifi: add debugfs ops to iwlwifi 2010-04-16 13:51:31 -07:00
iwl-debugfs.c Merge branch 'wireless-next-2.6' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6 2010-06-02 15:36:51 -04:00
iwl-dev.h iwlwifi: remove unused parameter 2010-06-05 23:20:36 -07:00
iwl-devtrace.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem 2010-04-15 16:21:34 -04:00
iwl-devtrace.h iwlwifi: don't include iwl-dev.h from iwl-devtrace.h 2010-03-30 22:02:21 +09:00
iwl-eeprom.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem 2010-05-17 13:57:43 -04:00
iwl-eeprom.h Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-04-21 01:14:25 -07:00
iwl-fh.h iwlwifi: update copyright year to 2010 2010-01-19 16:25:15 -05:00
iwl-hcmd.c iwlwifi: remove trailing space in messages 2010-04-02 12:53:54 -07:00
iwl-helpers.h iwlwifi: beacon format related helper function 2010-06-05 23:15:49 -07:00
iwl-io.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem 2010-04-15 16:21:34 -04:00
iwl-led.c iwlwifi: remove "\n" from module parameter description 2010-03-25 11:21:11 -07:00
iwl-led.h iwlwifi: update copyright year to 2010 2010-01-19 16:25:15 -05:00
iwl-power.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem 2010-05-17 13:57:43 -04:00
iwl-power.h iwlwifi: update copyright year to 2010 2010-01-19 16:25:15 -05:00
iwl-prph.h iwlwifi: more code clean up for agn devices 2010-04-16 13:53:20 -07:00
iwl-rx.c Revert "iwlwifi: move _agn statistics related structure" 2010-06-03 13:55:37 -04:00
iwl-scan.c iwlwifi: queue user-initiated scan when doing internal scan 2010-06-05 23:20:08 -07:00
iwl-spectrum.h iwlwifi: update copyright year to 2010 2010-01-19 16:25:15 -05:00
iwl-sta.c Merge branch 'wireless-next-2.6' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6 2010-06-02 15:36:51 -04:00
iwl-sta.h iwlwifi: introduce iwl_sta_id_or_broadcast 2010-05-13 10:42:32 -07:00
iwl-tx.c iwlwifi: kzalloc txb array 2010-06-05 23:18:11 -07:00
iwl3945-base.c iwlwifi: reduce memory allocation 2010-06-05 23:18:33 -07:00