diff options
author | Guy Eilam <guy@wizery.com> | 2011-08-16 12:49:12 -0400 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2011-08-25 03:10:41 -0400 |
commit | e9eb8cbe77139470651c858b8b7a3d20d332cf47 (patch) | |
tree | 28b83a2cf3365db633608c3baf32c9a7741a862a /drivers/net/wireless/wl12xx/main.c | |
parent | 04b4d69c89593d907d81a4aa33e4e42a632fe436 (diff) |
wl12xx: use 2 spare TX blocks for GEM cipher
Add tx_spare_blocks member to the wl1271 struct
for more generic configuration of the amount
of spare TX blocks that should be used.
The default value is 1.
In case GEM cipher is used by the STA, we need
2 spare TX blocks instead of just 1.
Signed-off-by: Guy Eilam <guy@wizery.com>
Acked-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers/net/wireless/wl12xx/main.c')
-rw-r--r-- | drivers/net/wireless/wl12xx/main.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c index 82f4408e89ad..20e7bc78a7fe 100644 --- a/drivers/net/wireless/wl12xx/main.c +++ b/drivers/net/wireless/wl12xx/main.c | |||
@@ -2064,6 +2064,7 @@ deinit: | |||
2064 | wl->session_counter = 0; | 2064 | wl->session_counter = 0; |
2065 | wl->rate_set = CONF_TX_RATE_MASK_BASIC; | 2065 | wl->rate_set = CONF_TX_RATE_MASK_BASIC; |
2066 | wl->vif = NULL; | 2066 | wl->vif = NULL; |
2067 | wl->tx_spare_blocks = TX_HW_BLOCK_SPARE_DEFAULT; | ||
2067 | wl1271_free_ap_keys(wl); | 2068 | wl1271_free_ap_keys(wl); |
2068 | memset(wl->ap_hlid_map, 0, sizeof(wl->ap_hlid_map)); | 2069 | memset(wl->ap_hlid_map, 0, sizeof(wl->ap_hlid_map)); |
2069 | wl->ap_fw_ps_map = 0; | 2070 | wl->ap_fw_ps_map = 0; |
@@ -2653,6 +2654,17 @@ static int wl1271_set_key(struct wl1271 *wl, u16 action, u8 id, u8 key_type, | |||
2653 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff | 2654 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff |
2654 | }; | 2655 | }; |
2655 | 2656 | ||
2657 | /* | ||
2658 | * A STA set to GEM cipher requires 2 tx spare blocks. | ||
2659 | * Return to default value when GEM cipher key is removed | ||
2660 | */ | ||
2661 | if (key_type == KEY_GEM) { | ||
2662 | if (action == KEY_ADD_OR_REPLACE) | ||
2663 | wl->tx_spare_blocks = 2; | ||
2664 | else if (action == KEY_REMOVE) | ||
2665 | wl->tx_spare_blocks = TX_HW_BLOCK_SPARE_DEFAULT; | ||
2666 | } | ||
2667 | |||
2656 | addr = sta ? sta->addr : bcast_addr; | 2668 | addr = sta ? sta->addr : bcast_addr; |
2657 | 2669 | ||
2658 | if (is_zero_ether_addr(addr)) { | 2670 | if (is_zero_ether_addr(addr)) { |
@@ -4599,6 +4611,7 @@ struct ieee80211_hw *wl1271_alloc_hw(void) | |||
4599 | wl->sched_scanning = false; | 4611 | wl->sched_scanning = false; |
4600 | wl->tx_security_seq = 0; | 4612 | wl->tx_security_seq = 0; |
4601 | wl->tx_security_last_seq_lsb = 0; | 4613 | wl->tx_security_last_seq_lsb = 0; |
4614 | wl->tx_spare_blocks = TX_HW_BLOCK_SPARE_DEFAULT; | ||
4602 | wl->role_id = WL12XX_INVALID_ROLE_ID; | 4615 | wl->role_id = WL12XX_INVALID_ROLE_ID; |
4603 | wl->system_hlid = WL12XX_SYSTEM_HLID; | 4616 | wl->system_hlid = WL12XX_SYSTEM_HLID; |
4604 | wl->sta_hlid = WL12XX_INVALID_LINK_ID; | 4617 | wl->sta_hlid = WL12XX_INVALID_LINK_ID; |