aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2800usb.c
diff options
context:
space:
mode:
authorHelmut Schaa <helmut.schaa@googlemail.com>2011-09-08 08:38:01 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-09-14 13:56:56 -0400
commita2b1328a23c57fbb9c51e6660a11049c35d151f9 (patch)
tree65468f09963cdeffe674d6d2e977aeadc3352a5f /drivers/net/wireless/rt2x00/rt2800usb.c
parentead2bb64a38c471ad0a769f61921f330f062dd50 (diff)
rt2x00: Make use of sta_add/remove callbacks in rt2800
This allows us to assign a WCID to each STA even for STAs without crypto key. To achieve this search for an unused WCID in the HW WCID table and assign it to the according STA. When configuring a pairwise key for this STA we don't need to write the MAC address and BSSIDX anymore but just update the crypto related fields in the WCID_ATTR table. This has two advantages: 1) Setting a new key for an already available STA (PTK rekeying) is slightly less expensive and should improve performance in situations where a lot of rekeying happens (e.g. a huge number of stations and/or a small rekeying interval) 2) The TXWI now gets a WCID assigned for unencrypted frames which will be reflected in the corresponding tx status report. This should make tx status reports in unencrypted AP mode more reliable as we can distinguish between multiple key-less STAs. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800usb.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 7917614dbd50..4b907a53f97c 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -750,6 +750,8 @@ static const struct ieee80211_ops rt2800usb_mac80211_ops = {
750 .get_stats = rt2x00mac_get_stats, 750 .get_stats = rt2x00mac_get_stats,
751 .get_tkip_seq = rt2800_get_tkip_seq, 751 .get_tkip_seq = rt2800_get_tkip_seq,
752 .set_rts_threshold = rt2800_set_rts_threshold, 752 .set_rts_threshold = rt2800_set_rts_threshold,
753 .sta_add = rt2x00mac_sta_add,
754 .sta_remove = rt2x00mac_sta_remove,
753 .bss_info_changed = rt2x00mac_bss_info_changed, 755 .bss_info_changed = rt2x00mac_bss_info_changed,
754 .conf_tx = rt2800_conf_tx, 756 .conf_tx = rt2800_conf_tx,
755 .get_tsf = rt2800_get_tsf, 757 .get_tsf = rt2800_get_tsf,
@@ -807,6 +809,8 @@ static const struct rt2x00lib_ops rt2800usb_rt2x00_ops = {
807 .config_erp = rt2800_config_erp, 809 .config_erp = rt2800_config_erp,
808 .config_ant = rt2800_config_ant, 810 .config_ant = rt2800_config_ant,
809 .config = rt2800_config, 811 .config = rt2800_config,
812 .sta_add = rt2800_sta_add,
813 .sta_remove = rt2800_sta_remove,
810}; 814};
811 815
812static const struct data_queue_desc rt2800usb_queue_rx = { 816static const struct data_queue_desc rt2800usb_queue_rx = {