From 9f34772a476cba359681f9d3327db6636d5624c5 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 6 Apr 2014 10:41:23 +0000 Subject: mac80211: update to wireless-testing 2014-03-31 Signed-off-by: Felix Fietkau git-svn-id: svn://svn.openwrt.org/openwrt/trunk@40393 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- ...-wl12xx-wl18xx-configure-num_links-per-hw.patch | 345 --------------------- 1 file changed, 345 deletions(-) delete mode 100644 package/kernel/mac80211/patches/906-wlcore-wl12xx-wl18xx-configure-num_links-per-hw.patch (limited to 'package/kernel/mac80211/patches/906-wlcore-wl12xx-wl18xx-configure-num_links-per-hw.patch') diff --git a/package/kernel/mac80211/patches/906-wlcore-wl12xx-wl18xx-configure-num_links-per-hw.patch b/package/kernel/mac80211/patches/906-wlcore-wl12xx-wl18xx-configure-num_links-per-hw.patch deleted file mode 100644 index 5c342f5e1d..0000000000 --- a/package/kernel/mac80211/patches/906-wlcore-wl12xx-wl18xx-configure-num_links-per-hw.patch +++ /dev/null @@ -1,345 +0,0 @@ -Upcoming fw versions will have different max links support -(according to the hw). Get ready for it by configuring -wl->num_links per-hw, instead of using the const WL12XX_MAX_LINKS. - -However, continue using WLCORE_MAX_LINKS in order to simplify -structs declarations (we use it in multiple bitmaps, and converting -them to dynamic arrays is just cumbersome). - -Signed-off-by: Eliad Peller - ---- -drivers/net/wireless/ti/wl12xx/main.c | 3 +++ - drivers/net/wireless/ti/wl12xx/wl12xx.h | 2 ++ - drivers/net/wireless/ti/wl18xx/main.c | 3 +++ - drivers/net/wireless/ti/wl18xx/wl18xx.h | 4 +++- - drivers/net/wireless/ti/wlcore/cmd.c | 4 ++-- - drivers/net/wireless/ti/wlcore/event.c | 4 ++-- - drivers/net/wireless/ti/wlcore/main.c | 12 ++++++++---- - drivers/net/wireless/ti/wlcore/rx.c | 8 ++++---- - drivers/net/wireless/ti/wlcore/tx.c | 20 ++++++++++---------- - drivers/net/wireless/ti/wlcore/wlcore.h | 8 +++++--- - drivers/net/wireless/ti/wlcore/wlcore_i.h | 13 +++++++++---- - 11 files changed, 51 insertions(+), 30 deletions(-) - ---- a/drivers/net/wireless/ti/wl12xx/main.c -+++ b/drivers/net/wireless/ti/wl12xx/main.c -@@ -1749,9 +1749,12 @@ static int wl12xx_setup(struct wl1271 *w - struct wlcore_platdev_data *pdev_data = dev_get_platdata(&wl->pdev->dev); - struct wl12xx_platform_data *pdata = pdev_data->pdata; - -+ BUILD_BUG_ON(WL12XX_MAX_LINKS > WLCORE_MAX_LINKS); -+ - wl->rtable = wl12xx_rtable; - wl->num_tx_desc = WL12XX_NUM_TX_DESCRIPTORS; - wl->num_rx_desc = WL12XX_NUM_RX_DESCRIPTORS; -+ wl->num_links = WL12XX_MAX_LINKS; - wl->num_channels = 1; - wl->num_mac_addr = WL12XX_NUM_MAC_ADDRESSES; - wl->band_rate_to_idx = wl12xx_band_rate_to_idx; ---- a/drivers/net/wireless/ti/wl12xx/wl12xx.h -+++ b/drivers/net/wireless/ti/wl12xx/wl12xx.h -@@ -65,6 +65,8 @@ - - #define WL12XX_RX_BA_MAX_SESSIONS 3 - -+#define WL12XX_MAX_LINKS 12 -+ - struct wl127x_rx_mem_pool_addr { - u32 addr; - u32 addr_extra; ---- a/drivers/net/wireless/ti/wl18xx/main.c -+++ b/drivers/net/wireless/ti/wl18xx/main.c -@@ -1752,9 +1752,12 @@ static int wl18xx_setup(struct wl1271 *w - struct wl18xx_priv *priv = wl->priv; - int ret; - -+ BUILD_BUG_ON(WL18XX_MAX_LINKS > WLCORE_MAX_LINKS); -+ - wl->rtable = wl18xx_rtable; - wl->num_tx_desc = WL18XX_NUM_TX_DESCRIPTORS; - wl->num_rx_desc = WL18XX_NUM_RX_DESCRIPTORS; -+ wl->num_links = WL18XX_MAX_LINKS; - wl->num_channels = 2; - wl->num_mac_addr = WL18XX_NUM_MAC_ADDRESSES; - wl->band_rate_to_idx = wl18xx_band_rate_to_idx; ---- a/drivers/net/wireless/ti/wl18xx/wl18xx.h -+++ b/drivers/net/wireless/ti/wl18xx/wl18xx.h -@@ -42,6 +42,8 @@ - - #define WL18XX_RX_BA_MAX_SESSIONS 5 - -+#define WL18XX_MAX_LINKS 12 -+ - struct wl18xx_priv { - /* buffer for sending commands to FW */ - u8 cmd_buf[WL18XX_CMD_MAX_SIZE]; -@@ -114,7 +116,7 @@ struct wl18xx_fw_packet_counters { - u8 tx_released_pkts[NUM_TX_QUEUES]; - - /* Cumulative counter of freed packets per HLID */ -- u8 tx_lnk_free_pkts[WL12XX_MAX_LINKS]; -+ u8 tx_lnk_free_pkts[WL18XX_MAX_LINKS]; - - /* Cumulative counter of released Voice memory blocks */ - u8 tx_voice_released_blks; ---- a/drivers/net/wireless/ti/wlcore/cmd.c -+++ b/drivers/net/wireless/ti/wlcore/cmd.c -@@ -312,8 +312,8 @@ static int wlcore_get_new_session_id(str - int wl12xx_allocate_link(struct wl1271 *wl, struct wl12xx_vif *wlvif, u8 *hlid) - { - unsigned long flags; -- u8 link = find_first_zero_bit(wl->links_map, WL12XX_MAX_LINKS); -- if (link >= WL12XX_MAX_LINKS) -+ u8 link = find_first_zero_bit(wl->links_map, wl->num_links); -+ if (link >= wl->num_links) - return -EBUSY; - - wl->session_ids[link] = wlcore_get_new_session_id(wl, link); ---- a/drivers/net/wireless/ti/wlcore/event.c -+++ b/drivers/net/wireless/ti/wlcore/event.c -@@ -68,7 +68,7 @@ static void wl1271_stop_ba_event(struct - u8 hlid; - struct wl1271_link *lnk; - for_each_set_bit(hlid, wlvif->ap.sta_hlid_map, -- WL12XX_MAX_LINKS) { -+ wl->num_links) { - lnk = &wl->links[hlid]; - if (!lnk->ba_bitmap) - continue; -@@ -173,7 +173,7 @@ static void wlcore_disconnect_sta(struct - const u8 *addr; - int h; - -- for_each_set_bit(h, &sta_bitmap, WL12XX_MAX_LINKS) { -+ for_each_set_bit(h, &sta_bitmap, wl->num_links) { - bool found = false; - /* find the ap vif connected to this sta */ - wl12xx_for_each_wlvif_ap(wl, wlvif) { ---- a/drivers/net/wireless/ti/wlcore/main.c -+++ b/drivers/net/wireless/ti/wlcore/main.c -@@ -372,7 +372,7 @@ static void wl12xx_irq_update_links_stat - wl->ap_fw_ps_map = cur_fw_ps_map; - } - -- for_each_set_bit(hlid, wlvif->ap.sta_hlid_map, WL12XX_MAX_LINKS) -+ for_each_set_bit(hlid, wlvif->ap.sta_hlid_map, wl->num_links) - wl12xx_irq_ps_regulate_link(wl, wlvif, hlid, - wl->links[hlid].allocated_pkts); - } -@@ -412,7 +412,7 @@ static int wlcore_fw_status(struct wl127 - } - - -- for_each_set_bit(i, wl->links_map, WL12XX_MAX_LINKS) { -+ for_each_set_bit(i, wl->links_map, wl->num_links) { - u8 diff; - lnk = &wl->links[i]; - -@@ -5888,7 +5888,7 @@ struct ieee80211_hw *wlcore_alloc_hw(siz - int i, j, ret; - unsigned int order; - -- BUILD_BUG_ON(AP_MAX_STATIONS > WL12XX_MAX_LINKS); -+ BUILD_BUG_ON(AP_MAX_STATIONS > WLCORE_MAX_LINKS); - - hw = ieee80211_alloc_hw(sizeof(*wl), &wl1271_ops); - if (!hw) { -@@ -5911,8 +5911,12 @@ struct ieee80211_hw *wlcore_alloc_hw(siz - - wl->hw = hw; - -+ /* -+ * wl->num_links is not configured yet, so just use WLCORE_MAX_LINKS. -+ * we don't allocate any additional resource here, so that's fine. -+ */ - for (i = 0; i < NUM_TX_QUEUES; i++) -- for (j = 0; j < WL12XX_MAX_LINKS; j++) -+ for (j = 0; j < WLCORE_MAX_LINKS; j++) - skb_queue_head_init(&wl->links[j].tx_queue[i]); - - skb_queue_head_init(&wl->deferred_rx_queue); ---- a/drivers/net/wireless/ti/wlcore/rx.c -+++ b/drivers/net/wireless/ti/wlcore/rx.c -@@ -205,7 +205,7 @@ static int wl1271_rx_handle_data(struct - - int wlcore_rx(struct wl1271 *wl, struct wl_fw_status *status) - { -- unsigned long active_hlids[BITS_TO_LONGS(WL12XX_MAX_LINKS)] = {0}; -+ unsigned long active_hlids[BITS_TO_LONGS(WLCORE_MAX_LINKS)] = {0}; - u32 buf_size; - u32 fw_rx_counter = status->fw_rx_counter % wl->num_rx_desc; - u32 drv_rx_counter = wl->rx_counter % wl->num_rx_desc; -@@ -263,12 +263,12 @@ int wlcore_rx(struct wl1271 *wl, struct - wl->aggr_buf + pkt_offset, - pkt_len, rx_align, - &hlid) == 1) { -- if (hlid < WL12XX_MAX_LINKS) -+ if (hlid < wl->num_links) - __set_bit(hlid, active_hlids); - else - WARN(1, -- "hlid exceeded WL12XX_MAX_LINKS " -- "(%d)\n", hlid); -+ "hlid (%d) exceeded MAX_LINKS\n", -+ hlid); - } - - wl->rx_counter++; ---- a/drivers/net/wireless/ti/wlcore/tx.c -+++ b/drivers/net/wireless/ti/wlcore/tx.c -@@ -565,11 +565,11 @@ static struct sk_buff *wlcore_vif_dequeu - int i, h, start_hlid; - - /* start from the link after the last one */ -- start_hlid = (wlvif->last_tx_hlid + 1) % WL12XX_MAX_LINKS; -+ start_hlid = (wlvif->last_tx_hlid + 1) % wl->num_links; - - /* dequeue according to AC, round robin on each link */ -- for (i = 0; i < WL12XX_MAX_LINKS; i++) { -- h = (start_hlid + i) % WL12XX_MAX_LINKS; -+ for (i = 0; i < wl->num_links; i++) { -+ h = (start_hlid + i) % wl->num_links; - - /* only consider connected stations */ - if (!test_bit(h, wlvif->links_map)) -@@ -693,8 +693,8 @@ static void wl1271_skb_queue_head(struct - skb_queue_head(&wl->links[hlid].tx_queue[q], skb); - - /* make sure we dequeue the same packet next time */ -- wlvif->last_tx_hlid = (hlid + WL12XX_MAX_LINKS - 1) % -- WL12XX_MAX_LINKS; -+ wlvif->last_tx_hlid = (hlid + wl->num_links - 1) % -+ wl->num_links; - } - - spin_lock_irqsave(&wl->wl_lock, flags); -@@ -727,7 +727,7 @@ void wl12xx_rearm_rx_streaming(struct wl - timeout = wl->conf.rx_streaming.duration; - wl12xx_for_each_wlvif_sta(wl, wlvif) { - bool found = false; -- for_each_set_bit(hlid, active_hlids, WL12XX_MAX_LINKS) { -+ for_each_set_bit(hlid, active_hlids, wl->num_links) { - if (test_bit(hlid, wlvif->links_map)) { - found = true; - break; -@@ -764,7 +764,7 @@ int wlcore_tx_work_locked(struct wl1271 - struct wl1271_tx_hw_descr *desc; - u32 buf_offset = 0, last_len = 0; - bool sent_packets = false; -- unsigned long active_hlids[BITS_TO_LONGS(WL12XX_MAX_LINKS)] = {0}; -+ unsigned long active_hlids[BITS_TO_LONGS(WLCORE_MAX_LINKS)] = {0}; - int ret = 0; - int bus_ret = 0; - u8 hlid; -@@ -1066,7 +1066,7 @@ void wl12xx_tx_reset_wlvif(struct wl1271 - int i; - - /* TX failure */ -- for_each_set_bit(i, wlvif->links_map, WL12XX_MAX_LINKS) { -+ for_each_set_bit(i, wlvif->links_map, wl->num_links) { - if (wlvif->bss_type == BSS_TYPE_AP_BSS && - i != wlvif->ap.bcast_hlid && i != wlvif->ap.global_hlid) { - /* this calls wl12xx_free_link */ -@@ -1090,7 +1090,7 @@ void wl12xx_tx_reset(struct wl1271 *wl) - - /* only reset the queues if something bad happened */ - if (wl1271_tx_total_queue_count(wl) != 0) { -- for (i = 0; i < WL12XX_MAX_LINKS; i++) -+ for (i = 0; i < wl->num_links; i++) - wl1271_tx_reset_link_queues(wl, i); - - for (i = 0; i < NUM_TX_QUEUES; i++) -@@ -1183,7 +1183,7 @@ void wl1271_tx_flush(struct wl1271 *wl) - WL1271_TX_FLUSH_TIMEOUT / 1000); - - /* forcibly flush all Tx buffers on our queues */ -- for (i = 0; i < WL12XX_MAX_LINKS; i++) -+ for (i = 0; i < wl->num_links; i++) - wl1271_tx_reset_link_queues(wl, i); - - out_wake: ---- a/drivers/net/wireless/ti/wlcore/wlcore.h -+++ b/drivers/net/wireless/ti/wlcore/wlcore.h -@@ -224,7 +224,7 @@ struct wl1271 { - int channel; - u8 system_hlid; - -- unsigned long links_map[BITS_TO_LONGS(WL12XX_MAX_LINKS)]; -+ unsigned long links_map[BITS_TO_LONGS(WLCORE_MAX_LINKS)]; - unsigned long roles_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)]; - unsigned long roc_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)]; - unsigned long rate_policies_map[ -@@ -232,7 +232,7 @@ struct wl1271 { - unsigned long klv_templates_map[ - BITS_TO_LONGS(WLCORE_MAX_KLV_TEMPLATES)]; - -- u8 session_ids[WL12XX_MAX_LINKS]; -+ u8 session_ids[WLCORE_MAX_LINKS]; - - struct list_head wlvif_list; - -@@ -380,7 +380,7 @@ struct wl1271 { - * AP-mode - links indexed by HLID. The global and broadcast links - * are always active. - */ -- struct wl1271_link links[WL12XX_MAX_LINKS]; -+ struct wl1271_link links[WLCORE_MAX_LINKS]; - - /* number of currently active links */ - int active_link_count; -@@ -438,6 +438,8 @@ struct wl1271 { - u32 num_tx_desc; - /* number of RX descriptors the HW supports. */ - u32 num_rx_desc; -+ /* number of links the HW supports */ -+ u8 num_links; - - /* translate HW Tx rates to standard rate-indices */ - const u8 **band_rate_to_idx; ---- a/drivers/net/wireless/ti/wlcore/wlcore_i.h -+++ b/drivers/net/wireless/ti/wlcore/wlcore_i.h -@@ -58,10 +58,15 @@ - #define WL1271_DEFAULT_DTIM_PERIOD 1 - - #define WL12XX_MAX_ROLES 4 --#define WL12XX_MAX_LINKS 12 - #define WL12XX_INVALID_ROLE_ID 0xff - #define WL12XX_INVALID_LINK_ID 0xff - -+/* -+ * max number of links allowed by all HWs. -+ * this is NOT the actual max links supported by the current hw. -+ */ -+#define WLCORE_MAX_LINKS 12 -+ - /* the driver supports the 2.4Ghz and 5Ghz bands */ - #define WLCORE_NUM_BANDS 2 - -@@ -156,7 +161,7 @@ struct wl_fw_status { - - /* - * Cumulative counter of freed packets per HLID -- * (length of the array is WL12XX_MAX_LINKS) -+ * (length of the array is wl->num_links) - */ - u8 *tx_lnk_free_pkts; - -@@ -357,7 +362,7 @@ struct wl12xx_vif { - - /* HLIDs bitmap of associated stations */ - unsigned long sta_hlid_map[BITS_TO_LONGS( -- WL12XX_MAX_LINKS)]; -+ WLCORE_MAX_LINKS)]; - - /* recoreded keys - set here before AP startup */ - struct wl1271_ap_key *recorded_keys[MAX_NUM_KEYS]; -@@ -374,7 +379,7 @@ struct wl12xx_vif { - /* counters of packets per AC, across all links in the vif */ - int tx_queue_count[NUM_TX_QUEUES]; - -- unsigned long links_map[BITS_TO_LONGS(WL12XX_MAX_LINKS)]; -+ unsigned long links_map[BITS_TO_LONGS(WLCORE_MAX_LINKS)]; - - u8 ssid[IEEE80211_MAX_SSID_LEN + 1]; - u8 ssid_len; -- cgit v1.2.3