Merge tag 'wireless-drivers-next-for-davem-2016-11-25' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
Kalle Valo says: ==================== wireless-drivers-next patches for 4.10 Major changes: iwlwifi * finalize and enable dynamic queue allocation * use dev_coredumpmsg() to prevent locking the driver * small fix to pass the AID to the FW * use FW PS decisions with multi-queue ath9k * add device tree bindings * switch to use mac80211 intermediate software queues to reduce latency and fix bufferbloat wl18xx * allow scanning in AP mode ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -218,5 +218,33 @@ int wl18xx_process_mailbox_events(struct wl1271 *wl)
|
||||
if (vector & FW_LOGGER_INDICATION)
|
||||
wlcore_event_fw_logger(wl);
|
||||
|
||||
if (vector & RX_BA_WIN_SIZE_CHANGE_EVENT_ID) {
|
||||
struct wl12xx_vif *wlvif;
|
||||
struct ieee80211_vif *vif;
|
||||
struct ieee80211_sta *sta;
|
||||
u8 link_id = mbox->rx_ba_link_id;
|
||||
u8 win_size = mbox->rx_ba_win_size;
|
||||
const u8 *addr;
|
||||
|
||||
wlvif = wl->links[link_id].wlvif;
|
||||
vif = wl12xx_wlvif_to_vif(wlvif);
|
||||
|
||||
/* Update RX aggregation window size and call
|
||||
* MAC routine to stop active RX aggregations for this link
|
||||
*/
|
||||
if (wlvif->bss_type != BSS_TYPE_AP_BSS)
|
||||
addr = vif->bss_conf.bssid;
|
||||
else
|
||||
addr = wl->links[link_id].addr;
|
||||
|
||||
sta = ieee80211_find_sta(vif, addr);
|
||||
if (sta) {
|
||||
sta->max_rx_aggregation_subframes = win_size;
|
||||
ieee80211_stop_rx_ba_session(vif,
|
||||
wl->links[link_id].ba_bitmap,
|
||||
addr);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ enum {
|
||||
REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID = BIT(18),
|
||||
DFS_CHANNELS_CONFIG_COMPLETE_EVENT = BIT(19),
|
||||
PERIODIC_SCAN_REPORT_EVENT_ID = BIT(20),
|
||||
RX_BA_WIN_SIZE_CHANGE_EVENT_ID = BIT(21),
|
||||
SMART_CONFIG_SYNC_EVENT_ID = BIT(22),
|
||||
SMART_CONFIG_DECODE_EVENT_ID = BIT(23),
|
||||
TIME_SYNC_EVENT_ID = BIT(24),
|
||||
|
||||
@@ -1041,7 +1041,8 @@ static int wl18xx_boot(struct wl1271 *wl)
|
||||
SMART_CONFIG_SYNC_EVENT_ID |
|
||||
SMART_CONFIG_DECODE_EVENT_ID |
|
||||
TIME_SYNC_EVENT_ID |
|
||||
FW_LOGGER_INDICATION;
|
||||
FW_LOGGER_INDICATION |
|
||||
RX_BA_WIN_SIZE_CHANGE_EVENT_ID;
|
||||
|
||||
wl->ap_event_mask = MAX_TX_FAILURE_EVENT_ID;
|
||||
|
||||
|
||||
@@ -1419,7 +1419,8 @@ out:
|
||||
|
||||
/* setup BA session receiver setting in the FW. */
|
||||
int wl12xx_acx_set_ba_receiver_session(struct wl1271 *wl, u8 tid_index,
|
||||
u16 ssn, bool enable, u8 peer_hlid)
|
||||
u16 ssn, bool enable, u8 peer_hlid,
|
||||
u8 win_size)
|
||||
{
|
||||
struct wl1271_acx_ba_receiver_setup *acx;
|
||||
int ret;
|
||||
@@ -1435,7 +1436,7 @@ int wl12xx_acx_set_ba_receiver_session(struct wl1271 *wl, u8 tid_index,
|
||||
acx->hlid = peer_hlid;
|
||||
acx->tid = tid_index;
|
||||
acx->enable = enable;
|
||||
acx->win_size = wl->conf.ht.rx_ba_win_size;
|
||||
acx->win_size = win_size;
|
||||
acx->ssn = ssn;
|
||||
|
||||
ret = wlcore_cmd_configure_failsafe(wl, ACX_BA_SESSION_RX_SETUP, acx,
|
||||
|
||||
@@ -1113,7 +1113,8 @@ int wl1271_acx_set_ht_information(struct wl1271 *wl,
|
||||
int wl12xx_acx_set_ba_initiator_policy(struct wl1271 *wl,
|
||||
struct wl12xx_vif *wlvif);
|
||||
int wl12xx_acx_set_ba_receiver_session(struct wl1271 *wl, u8 tid_index,
|
||||
u16 ssn, bool enable, u8 peer_hlid);
|
||||
u16 ssn, bool enable, u8 peer_hlid,
|
||||
u8 win_size);
|
||||
int wl12xx_acx_tsf_info(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
||||
u64 *mactime);
|
||||
int wl1271_acx_ps_rx_streaming(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
||||
|
||||
@@ -5285,7 +5285,9 @@ static int wl1271_op_ampdu_action(struct ieee80211_hw *hw,
|
||||
}
|
||||
|
||||
ret = wl12xx_acx_set_ba_receiver_session(wl, tid, *ssn, true,
|
||||
hlid);
|
||||
hlid,
|
||||
params->buf_size);
|
||||
|
||||
if (!ret) {
|
||||
*ba_bitmap |= BIT(tid);
|
||||
wl->ba_rx_session_count++;
|
||||
@@ -5306,7 +5308,7 @@ static int wl1271_op_ampdu_action(struct ieee80211_hw *hw,
|
||||
}
|
||||
|
||||
ret = wl12xx_acx_set_ba_receiver_session(wl, tid, 0, false,
|
||||
hlid);
|
||||
hlid, 0);
|
||||
if (!ret) {
|
||||
*ba_bitmap &= ~BIT(tid);
|
||||
wl->ba_rx_session_count--;
|
||||
@@ -6121,6 +6123,8 @@ static int wl1271_init_ieee80211(struct wl1271 *wl)
|
||||
WIPHY_FLAG_SUPPORTS_SCHED_SCAN |
|
||||
WIPHY_FLAG_HAS_CHANNEL_SWITCH;
|
||||
|
||||
wl->hw->wiphy->features |= NL80211_FEATURE_AP_SCAN;
|
||||
|
||||
/* make sure all our channels fit in the scanned_ch bitmask */
|
||||
BUILD_BUG_ON(ARRAY_SIZE(wl1271_channels) +
|
||||
ARRAY_SIZE(wl1271_channels_5ghz) >
|
||||
|
||||
Reference in New Issue
Block a user