summaryrefslogtreecommitdiff
path: root/package/kernel/mac80211/patches/907-wlcore-wl12xx-wl18xx-configure-max_stations-per-hw.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/907-wlcore-wl12xx-wl18xx-configure-max_stations-per-hw.patch')
-rw-r--r--package/kernel/mac80211/patches/907-wlcore-wl12xx-wl18xx-configure-max_stations-per-hw.patch110
1 files changed, 110 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/907-wlcore-wl12xx-wl18xx-configure-max_stations-per-hw.patch b/package/kernel/mac80211/patches/907-wlcore-wl12xx-wl18xx-configure-max_stations-per-hw.patch
new file mode 100644
index 0000000000..66fd7dde1b
--- /dev/null
+++ b/package/kernel/mac80211/patches/907-wlcore-wl12xx-wl18xx-configure-max_stations-per-hw.patch
@@ -0,0 +1,110 @@
+Each hw supports a different max stations (connected to the
+same ap). add a new wl->max_ap_stations and use it instead
+of the current common AP_MAX_STATIONS.
+
+Signed-off-by: Eliad Peller <eliad@wizery.com>
+
+---
+drivers/net/wireless/ti/wl12xx/main.c | 2 ++
+ drivers/net/wireless/ti/wl12xx/wl12xx.h | 1 +
+ drivers/net/wireless/ti/wl18xx/main.c | 2 ++
+ drivers/net/wireless/ti/wl18xx/wl18xx.h | 1 +
+ drivers/net/wireless/ti/wlcore/main.c | 4 +---
+ drivers/net/wireless/ti/wlcore/wlcore.h | 2 ++
+ drivers/net/wireless/ti/wlcore/wlcore_i.h | 2 --
+ 7 files changed, 9 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/wireless/ti/wl12xx/main.c
++++ b/drivers/net/wireless/ti/wl12xx/main.c
+@@ -1750,11 +1750,13 @@ static int wl12xx_setup(struct wl1271 *w
+ struct wl12xx_platform_data *pdata = pdev_data->pdata;
+
+ BUILD_BUG_ON(WL12XX_MAX_LINKS > WLCORE_MAX_LINKS);
++ BUILD_BUG_ON(WL12XX_MAX_AP_STATIONS > WL12XX_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->max_ap_stations = WL12XX_MAX_AP_STATIONS;
+ 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,7 @@
+
+ #define WL12XX_RX_BA_MAX_SESSIONS 3
+
++#define WL12XX_MAX_AP_STATIONS 8
+ #define WL12XX_MAX_LINKS 12
+
+ struct wl127x_rx_mem_pool_addr {
+--- a/drivers/net/wireless/ti/wl18xx/main.c
++++ b/drivers/net/wireless/ti/wl18xx/main.c
+@@ -1753,11 +1753,13 @@ static int wl18xx_setup(struct wl1271 *w
+ int ret;
+
+ BUILD_BUG_ON(WL18XX_MAX_LINKS > WLCORE_MAX_LINKS);
++ BUILD_BUG_ON(WL18XX_MAX_AP_STATIONS > WL18XX_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->max_ap_stations = WL18XX_MAX_AP_STATIONS;
+ 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,7 @@
+
+ #define WL18XX_RX_BA_MAX_SESSIONS 5
+
++#define WL18XX_MAX_AP_STATIONS 8
+ #define WL18XX_MAX_LINKS 12
+
+ struct wl18xx_priv {
+--- a/drivers/net/wireless/ti/wlcore/main.c
++++ b/drivers/net/wireless/ti/wlcore/main.c
+@@ -4695,7 +4695,7 @@ static int wl1271_allocate_sta(struct wl
+ int ret;
+
+
+- if (wl->active_sta_count >= AP_MAX_STATIONS) {
++ if (wl->active_sta_count >= wl->max_ap_stations) {
+ wl1271_warning("could not allocate HLID - too much stations");
+ return -EBUSY;
+ }
+@@ -5888,8 +5888,6 @@ struct ieee80211_hw *wlcore_alloc_hw(siz
+ int i, j, ret;
+ unsigned int order;
+
+- BUILD_BUG_ON(AP_MAX_STATIONS > WLCORE_MAX_LINKS);
+-
+ hw = ieee80211_alloc_hw(sizeof(*wl), &wl1271_ops);
+ if (!hw) {
+ wl1271_error("could not alloc ieee80211_hw");
+--- a/drivers/net/wireless/ti/wlcore/wlcore.h
++++ b/drivers/net/wireless/ti/wlcore/wlcore.h
+@@ -440,6 +440,8 @@ struct wl1271 {
+ u32 num_rx_desc;
+ /* number of links the HW supports */
+ u8 num_links;
++ /* max stations a single AP can support */
++ u8 max_ap_stations;
+
+ /* 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
+@@ -123,8 +123,6 @@ struct wl1271_chip {
+
+ #define NUM_TX_QUEUES 4
+
+-#define AP_MAX_STATIONS 8
+-
+ struct wl_fw_status {
+ u32 intr;
+ u8 fw_rx_counter;