
Some fields are missing from the event mailbox
struct definitions, which cause issues when
trying to handle some events.
Add the missing fields in order to align the
struct size (without adding actual support
for the new fields).
Reported-and-tested-by: Imre Kaloz <kaloz@openwrt.org>
Cc: stable@vger.kernel.org # 3.14+
Fixes: 028e724
("wl18xx: move to new firmware (wl18xx-fw-3.bin)")
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
98 lines
2.7 KiB
C
98 lines
2.7 KiB
C
/*
|
|
* This file is part of wl18xx
|
|
*
|
|
* Copyright (C) 2012 Texas Instruments. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
* 02110-1301 USA
|
|
*
|
|
*/
|
|
|
|
#ifndef __WL18XX_EVENT_H__
|
|
#define __WL18XX_EVENT_H__
|
|
|
|
#include "../wlcore/wlcore.h"
|
|
|
|
enum {
|
|
SCAN_COMPLETE_EVENT_ID = BIT(8),
|
|
RADAR_DETECTED_EVENT_ID = BIT(9),
|
|
CHANNEL_SWITCH_COMPLETE_EVENT_ID = BIT(10),
|
|
BSS_LOSS_EVENT_ID = BIT(11),
|
|
MAX_TX_FAILURE_EVENT_ID = BIT(12),
|
|
DUMMY_PACKET_EVENT_ID = BIT(13),
|
|
INACTIVE_STA_EVENT_ID = BIT(14),
|
|
PEER_REMOVE_COMPLETE_EVENT_ID = BIT(15),
|
|
PERIODIC_SCAN_COMPLETE_EVENT_ID = BIT(16),
|
|
BA_SESSION_RX_CONSTRAINT_EVENT_ID = BIT(17),
|
|
REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID = BIT(18),
|
|
DFS_CHANNELS_CONFIG_COMPLETE_EVENT = BIT(19),
|
|
PERIODIC_SCAN_REPORT_EVENT_ID = BIT(20),
|
|
};
|
|
|
|
struct wl18xx_event_mailbox {
|
|
__le32 events_vector;
|
|
|
|
u8 number_of_scan_results;
|
|
u8 number_of_sched_scan_results;
|
|
|
|
__le16 channel_switch_role_id_bitmap;
|
|
|
|
s8 rssi_snr_trigger_metric[NUM_OF_RSSI_SNR_TRIGGERS];
|
|
|
|
/* bitmap of removed links */
|
|
__le32 hlid_removed_bitmap;
|
|
|
|
/* rx ba constraint */
|
|
__le16 rx_ba_role_id_bitmap; /* 0xfff means any role. */
|
|
__le16 rx_ba_allowed_bitmap;
|
|
|
|
/* bitmap of roc completed (by role id) */
|
|
__le16 roc_completed_bitmap;
|
|
|
|
/* bitmap of stations (by role id) with bss loss */
|
|
__le16 bss_loss_bitmap;
|
|
|
|
/* bitmap of stations (by HLID) which exceeded max tx retries */
|
|
__le32 tx_retry_exceeded_bitmap;
|
|
|
|
/* bitmap of inactive stations (by HLID) */
|
|
__le32 inactive_sta_bitmap;
|
|
|
|
/* rx BA win size indicated by RX_BA_WIN_SIZE_CHANGE_EVENT_ID */
|
|
u8 rx_ba_role_id;
|
|
u8 rx_ba_link_id;
|
|
u8 rx_ba_win_size;
|
|
u8 padding;
|
|
|
|
/* smart config */
|
|
u8 sc_ssid_len;
|
|
u8 sc_pwd_len;
|
|
u8 sc_token_len;
|
|
u8 padding1;
|
|
u8 sc_ssid[32];
|
|
u8 sc_pwd[32];
|
|
u8 sc_token[32];
|
|
|
|
/* smart config sync channel */
|
|
u8 sc_sync_channel;
|
|
u8 sc_sync_band;
|
|
u8 padding2[2];
|
|
} __packed;
|
|
|
|
int wl18xx_wait_for_event(struct wl1271 *wl, enum wlcore_wait_event event,
|
|
bool *timeout);
|
|
int wl18xx_process_mailbox_events(struct wl1271 *wl);
|
|
|
|
#endif
|