Commit d21553f8 authored by Igal Chernobelsky's avatar Igal Chernobelsky Committed by Luciano Coelho

wlcore: set max num of Rx BA sessions per chip

Maximum number of supported RX BA sessions depends on chip type.
wl18xx supports 5 RX BA sessions while wl12xx supports 3.
Signed-off-by: default avatarIgal Chernobelsky <igalc@ti.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent 0c7cc7f2
...@@ -723,6 +723,7 @@ static int wl12xx_identify_chip(struct wl1271 *wl) ...@@ -723,6 +723,7 @@ static int wl12xx_identify_chip(struct wl1271 *wl)
wl->sched_scan_templ_id_2_4 = CMD_TEMPL_CFG_PROBE_REQ_2_4; wl->sched_scan_templ_id_2_4 = CMD_TEMPL_CFG_PROBE_REQ_2_4;
wl->sched_scan_templ_id_5 = CMD_TEMPL_CFG_PROBE_REQ_5; wl->sched_scan_templ_id_5 = CMD_TEMPL_CFG_PROBE_REQ_5;
wl->max_channels_5 = WL12XX_MAX_CHANNELS_5GHZ; wl->max_channels_5 = WL12XX_MAX_CHANNELS_5GHZ;
wl->ba_rx_session_count_max = WL12XX_RX_BA_MAX_SESSIONS;
out: out:
return ret; return ret;
} }
......
...@@ -63,6 +63,8 @@ ...@@ -63,6 +63,8 @@
#define WL12XX_NUM_MAC_ADDRESSES 2 #define WL12XX_NUM_MAC_ADDRESSES 2
#define WL12XX_RX_BA_MAX_SESSIONS 3
struct wl127x_rx_mem_pool_addr { struct wl127x_rx_mem_pool_addr {
u32 addr; u32 addr;
u32 addr_extra; u32 addr_extra;
......
...@@ -678,6 +678,7 @@ static int wl18xx_identify_chip(struct wl1271 *wl) ...@@ -678,6 +678,7 @@ static int wl18xx_identify_chip(struct wl1271 *wl)
wl->sched_scan_templ_id_2_4 = CMD_TEMPL_PROBE_REQ_2_4_PERIODIC; wl->sched_scan_templ_id_2_4 = CMD_TEMPL_PROBE_REQ_2_4_PERIODIC;
wl->sched_scan_templ_id_5 = CMD_TEMPL_PROBE_REQ_5_PERIODIC; wl->sched_scan_templ_id_5 = CMD_TEMPL_PROBE_REQ_5_PERIODIC;
wl->max_channels_5 = WL18XX_MAX_CHANNELS_5GHZ; wl->max_channels_5 = WL18XX_MAX_CHANNELS_5GHZ;
wl->ba_rx_session_count_max = WL18XX_RX_BA_MAX_SESSIONS;
out: out:
return ret; return ret;
} }
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#define WL18XX_IFTYPE_VER 5 #define WL18XX_IFTYPE_VER 5
#define WL18XX_MAJOR_VER WLCORE_FW_VER_IGNORE #define WL18XX_MAJOR_VER WLCORE_FW_VER_IGNORE
#define WL18XX_SUBTYPE_VER WLCORE_FW_VER_IGNORE #define WL18XX_SUBTYPE_VER WLCORE_FW_VER_IGNORE
#define WL18XX_MINOR_VER 28 #define WL18XX_MINOR_VER 39
#define WL18XX_CMD_MAX_SIZE 740 #define WL18XX_CMD_MAX_SIZE 740
...@@ -40,6 +40,8 @@ ...@@ -40,6 +40,8 @@
#define WL18XX_NUM_MAC_ADDRESSES 3 #define WL18XX_NUM_MAC_ADDRESSES 3
#define WL18XX_RX_BA_MAX_SESSIONS 5
struct wl18xx_priv { struct wl18xx_priv {
/* buffer for sending commands to FW */ /* buffer for sending commands to FW */
u8 cmd_buf[WL18XX_CMD_MAX_SIZE]; u8 cmd_buf[WL18XX_CMD_MAX_SIZE];
......
...@@ -728,8 +728,6 @@ struct wl1271_acx_ht_information { ...@@ -728,8 +728,6 @@ struct wl1271_acx_ht_information {
u8 padding[2]; u8 padding[2];
} __packed; } __packed;
#define RX_BA_MAX_SESSIONS 3
struct wl1271_acx_ba_initiator_policy { struct wl1271_acx_ba_initiator_policy {
struct acx_header header; struct acx_header header;
......
...@@ -4784,7 +4784,7 @@ static int wl1271_op_ampdu_action(struct ieee80211_hw *hw, ...@@ -4784,7 +4784,7 @@ static int wl1271_op_ampdu_action(struct ieee80211_hw *hw,
break; break;
} }
if (wl->ba_rx_session_count >= RX_BA_MAX_SESSIONS) { if (wl->ba_rx_session_count >= wl->ba_rx_session_count_max) {
ret = -EBUSY; ret = -EBUSY;
wl1271_error("exceeded max RX BA sessions"); wl1271_error("exceeded max RX BA sessions");
break; break;
......
...@@ -390,6 +390,9 @@ struct wl1271 { ...@@ -390,6 +390,9 @@ struct wl1271 {
/* number of currently active RX BA sessions */ /* number of currently active RX BA sessions */
int ba_rx_session_count; int ba_rx_session_count;
/* Maximum number of supported RX BA sessions */
int ba_rx_session_count_max;
/* AP-mode - number of currently connected stations */ /* AP-mode - number of currently connected stations */
int active_sta_count; int active_sta_count;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment