#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/spi/spi.h>
#include <linux/etherdevice.h>
#include <linux/ieee80211.h>
#include <linux/slab.h>
#include "wlcore.h"
#include "debug.h"
#include "io.h"
#include "acx.h"
#include "wl12xx_80211.h"
#include "cmd.h"
#include "event.h"
#include "tx.h"
#include "hw_ops.h"
#define WL1271_CMD_FAST_POLL_COUNT …
#define WL1271_WAIT_EVENT_FAST_POLL_COUNT …
static int __wlcore_cmd_send(struct wl1271 *wl, u16 id, void *buf,
size_t len, size_t res_len)
{ … }
static int wlcore_cmd_send_failsafe(struct wl1271 *wl, u16 id, void *buf,
size_t len, size_t res_len,
unsigned long valid_rets)
{ … }
int wl1271_cmd_send(struct wl1271 *wl, u16 id, void *buf, size_t len,
size_t res_len)
{ … }
EXPORT_SYMBOL_GPL(…);
int wlcore_cmd_wait_for_event_or_timeout(struct wl1271 *wl,
u32 mask, bool *timeout)
{ … }
EXPORT_SYMBOL_GPL(…);
int wl12xx_cmd_role_enable(struct wl1271 *wl, u8 *addr, u8 role_type,
u8 *role_id)
{ … }
int wl12xx_cmd_role_disable(struct wl1271 *wl, u8 *role_id)
{ … }
static int wlcore_get_new_session_id(struct wl1271 *wl, u8 hlid)
{ … }
int wl12xx_allocate_link(struct wl1271 *wl, struct wl12xx_vif *wlvif, u8 *hlid)
{ … }
void wl12xx_free_link(struct wl1271 *wl, struct wl12xx_vif *wlvif, u8 *hlid)
{ … }
u8 wlcore_get_native_channel_type(u8 nl_channel_type)
{ … }
EXPORT_SYMBOL_GPL(…);
static int wl12xx_cmd_role_start_dev(struct wl1271 *wl,
struct wl12xx_vif *wlvif,
enum nl80211_band band,
int channel)
{ … }
static int wl12xx_cmd_role_stop_dev(struct wl1271 *wl,
struct wl12xx_vif *wlvif)
{ … }
int wl12xx_cmd_role_start_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif)
{ … }
int wl12xx_cmd_role_stop_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif)
{ … }
int wl12xx_cmd_role_start_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif)
{ … }
int wl12xx_cmd_role_stop_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif)
{ … }
int wl12xx_cmd_role_start_ibss(struct wl1271 *wl, struct wl12xx_vif *wlvif)
{ … }
int wl1271_cmd_test(struct wl1271 *wl, void *buf, size_t buf_len, u8 answer)
{ … }
EXPORT_SYMBOL_GPL(…);
int wl1271_cmd_interrogate(struct wl1271 *wl, u16 id, void *buf,
size_t cmd_len, size_t res_len)
{ … }
int wlcore_cmd_configure_failsafe(struct wl1271 *wl, u16 id, void *buf,
size_t len, unsigned long valid_rets)
{ … }
int wl1271_cmd_configure(struct wl1271 *wl, u16 id, void *buf, size_t len)
{ … }
EXPORT_SYMBOL_GPL(…);
int wl1271_cmd_data_path(struct wl1271 *wl, bool enable)
{ … }
EXPORT_SYMBOL_GPL(…);
int wl1271_cmd_ps_mode(struct wl1271 *wl, struct wl12xx_vif *wlvif,
u8 ps_mode, u16 auto_ps_timeout)
{ … }
int wl1271_cmd_template_set(struct wl1271 *wl, u8 role_id,
u16 template_id, void *buf, size_t buf_len,
int index, u32 rates)
{ … }
int wl12xx_cmd_build_null_data(struct wl1271 *wl, struct wl12xx_vif *wlvif)
{ … }
int wl12xx_cmd_build_klv_null_data(struct wl1271 *wl,
struct wl12xx_vif *wlvif)
{ … }
int wl1271_cmd_build_ps_poll(struct wl1271 *wl, struct wl12xx_vif *wlvif,
u16 aid)
{ … }
int wl12xx_cmd_build_probe_req(struct wl1271 *wl, struct wl12xx_vif *wlvif,
u8 role_id, u8 band,
const u8 *ssid, size_t ssid_len,
const u8 *ie0, size_t ie0_len, const u8 *ie1,
size_t ie1_len, bool sched_scan)
{ … }
EXPORT_SYMBOL_GPL(…);
struct sk_buff *wl1271_cmd_build_ap_probe_req(struct wl1271 *wl,
struct wl12xx_vif *wlvif,
struct sk_buff *skb)
{ … }
int wl1271_cmd_build_arp_rsp(struct wl1271 *wl, struct wl12xx_vif *wlvif)
{ … }
int wl1271_build_qos_null_data(struct wl1271 *wl, struct ieee80211_vif *vif)
{ … }
int wl12xx_cmd_set_default_wep_key(struct wl1271 *wl, u8 id, u8 hlid)
{ … }
int wl1271_cmd_set_sta_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
u16 action, u8 id, u8 key_type,
u8 key_size, const u8 *key, const u8 *addr,
u32 tx_seq_32, u16 tx_seq_16)
{ … }
int wl1271_cmd_set_ap_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
u16 action, u8 id, u8 key_type,
u8 key_size, const u8 *key, u8 hlid, u32 tx_seq_32,
u16 tx_seq_16, bool is_pairwise)
{ … }
int wl12xx_cmd_set_peer_state(struct wl1271 *wl, struct wl12xx_vif *wlvif,
u8 hlid)
{ … }
int wl12xx_cmd_add_peer(struct wl1271 *wl, struct wl12xx_vif *wlvif,
struct ieee80211_sta *sta, u8 hlid)
{ … }
int wl12xx_cmd_remove_peer(struct wl1271 *wl, struct wl12xx_vif *wlvif,
u8 hlid)
{ … }
static int wlcore_get_reg_conf_ch_idx(enum nl80211_band band, u16 ch)
{ … }
void wlcore_set_pending_regdomain_ch(struct wl1271 *wl, u16 channel,
enum nl80211_band band)
{ … }
int wlcore_cmd_regdomain_config_locked(struct wl1271 *wl)
{ … }
int wl12xx_cmd_config_fwlog(struct wl1271 *wl)
{ … }
int wl12xx_cmd_start_fwlog(struct wl1271 *wl)
{ … }
int wl12xx_cmd_stop_fwlog(struct wl1271 *wl)
{ … }
static int wl12xx_cmd_roc(struct wl1271 *wl, struct wl12xx_vif *wlvif,
u8 role_id, enum nl80211_band band, u8 channel)
{ … }
static int wl12xx_cmd_croc(struct wl1271 *wl, u8 role_id)
{ … }
int wl12xx_roc(struct wl1271 *wl, struct wl12xx_vif *wlvif, u8 role_id,
enum nl80211_band band, u8 channel)
{ … }
int wl12xx_croc(struct wl1271 *wl, u8 role_id)
{ … }
int wl12xx_cmd_stop_channel_switch(struct wl1271 *wl, struct wl12xx_vif *wlvif)
{ … }
int wl12xx_start_dev(struct wl1271 *wl, struct wl12xx_vif *wlvif,
enum nl80211_band band, int channel)
{ … }
int wl12xx_stop_dev(struct wl1271 *wl, struct wl12xx_vif *wlvif)
{ … }
int wlcore_cmd_generic_cfg(struct wl1271 *wl, struct wl12xx_vif *wlvif,
u8 feature, u8 enable, u8 value)
{ … }
EXPORT_SYMBOL_GPL(…);