#include "cfg80211.h"
#include "main.h"
#include "11n.h"
#include "wmm.h"
static char *reg_alpha2;
module_param(reg_alpha2, charp, 0);
static const struct ieee80211_iface_limit mwifiex_ap_sta_limits[] = …;
static const struct ieee80211_iface_combination
mwifiex_iface_comb_ap_sta = …;
static const struct ieee80211_iface_combination
mwifiex_iface_comb_ap_sta_vht = …;
static const struct
ieee80211_iface_combination mwifiex_iface_comb_ap_sta_drcs = …;
u8 mwifiex_chan_type_to_sec_chan_offset(enum nl80211_channel_type chan_type)
{ … }
u8 mwifiex_get_chan_type(struct mwifiex_private *priv)
{ … }
static int
mwifiex_is_alg_wep(u32 cipher)
{ … }
static void *mwifiex_cfg80211_get_adapter(struct wiphy *wiphy)
{ … }
static int
mwifiex_cfg80211_del_key(struct wiphy *wiphy, struct net_device *netdev,
int link_id, u8 key_index, bool pairwise,
const u8 *mac_addr)
{ … }
static int
mwifiex_form_mgmt_frame(struct sk_buff *skb, const u8 *buf, size_t len)
{ … }
static int
mwifiex_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
struct cfg80211_mgmt_tx_params *params, u64 *cookie)
{ … }
static void
mwifiex_cfg80211_update_mgmt_frame_registrations(struct wiphy *wiphy,
struct wireless_dev *wdev,
struct mgmt_frame_regs *upd)
{ … }
static int
mwifiex_cfg80211_remain_on_channel(struct wiphy *wiphy,
struct wireless_dev *wdev,
struct ieee80211_channel *chan,
unsigned int duration, u64 *cookie)
{ … }
static int
mwifiex_cfg80211_cancel_remain_on_channel(struct wiphy *wiphy,
struct wireless_dev *wdev, u64 cookie)
{ … }
static int
mwifiex_cfg80211_set_tx_power(struct wiphy *wiphy,
struct wireless_dev *wdev,
enum nl80211_tx_power_setting type,
int mbm)
{ … }
static int
mwifiex_cfg80211_get_tx_power(struct wiphy *wiphy,
struct wireless_dev *wdev,
int *dbm)
{ … }
static int
mwifiex_cfg80211_set_power_mgmt(struct wiphy *wiphy,
struct net_device *dev,
bool enabled, int timeout)
{ … }
static int
mwifiex_cfg80211_set_default_key(struct wiphy *wiphy, struct net_device *netdev,
int link_id, u8 key_index, bool unicast,
bool multicast)
{ … }
static int
mwifiex_cfg80211_add_key(struct wiphy *wiphy, struct net_device *netdev,
int link_id, u8 key_index, bool pairwise,
const u8 *mac_addr, struct key_params *params)
{ … }
static int
mwifiex_cfg80211_set_default_mgmt_key(struct wiphy *wiphy,
struct net_device *netdev,
int link_id,
u8 key_index)
{ … }
int mwifiex_send_domain_info_cmd_fw(struct wiphy *wiphy)
{ … }
static void mwifiex_reg_apply_radar_flags(struct wiphy *wiphy)
{ … }
static void mwifiex_reg_notifier(struct wiphy *wiphy,
struct regulatory_request *request)
{ … }
static int
mwifiex_set_frag(struct mwifiex_private *priv, u32 frag_thr)
{ … }
static int
mwifiex_set_rts(struct mwifiex_private *priv, u32 rts_thr)
{ … }
static int
mwifiex_cfg80211_set_wiphy_params(struct wiphy *wiphy, u32 changed)
{ … }
static int
mwifiex_cfg80211_deinit_p2p(struct mwifiex_private *priv)
{ … }
static int
mwifiex_cfg80211_init_p2p_client(struct mwifiex_private *priv)
{ … }
static int
mwifiex_cfg80211_init_p2p_go(struct mwifiex_private *priv)
{ … }
static int mwifiex_deinit_priv_params(struct mwifiex_private *priv)
{ … }
static int
mwifiex_init_new_priv_params(struct mwifiex_private *priv,
struct net_device *dev,
enum nl80211_iftype type)
{ … }
static bool
is_vif_type_change_allowed(struct mwifiex_adapter *adapter,
enum nl80211_iftype old_iftype,
enum nl80211_iftype new_iftype)
{ … }
static void
update_vif_type_counter(struct mwifiex_adapter *adapter,
enum nl80211_iftype iftype,
int change)
{ … }
static int
mwifiex_change_vif_to_p2p(struct net_device *dev,
enum nl80211_iftype curr_iftype,
enum nl80211_iftype type,
struct vif_params *params)
{ … }
static int
mwifiex_change_vif_to_sta_adhoc(struct net_device *dev,
enum nl80211_iftype curr_iftype,
enum nl80211_iftype type,
struct vif_params *params)
{ … }
static int
mwifiex_change_vif_to_ap(struct net_device *dev,
enum nl80211_iftype curr_iftype,
enum nl80211_iftype type,
struct vif_params *params)
{ … }
static int
mwifiex_cfg80211_change_virtual_intf(struct wiphy *wiphy,
struct net_device *dev,
enum nl80211_iftype type,
struct vif_params *params)
{ … }
static void
mwifiex_parse_htinfo(struct mwifiex_private *priv, u8 rateinfo, u8 htinfo,
struct rate_info *rate)
{ … }
static int
mwifiex_dump_station_info(struct mwifiex_private *priv,
struct mwifiex_sta_node *node,
struct station_info *sinfo)
{ … }
static int
mwifiex_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev,
const u8 *mac, struct station_info *sinfo)
{ … }
static int
mwifiex_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *dev,
int idx, u8 *mac, struct station_info *sinfo)
{ … }
static int
mwifiex_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *dev,
int idx, struct survey_info *survey)
{ … }
static struct ieee80211_rate mwifiex_rates[] = …;
static struct ieee80211_channel mwifiex_channels_2ghz[] = …;
static struct ieee80211_supported_band mwifiex_band_2ghz = …;
static struct ieee80211_channel mwifiex_channels_5ghz[] = …;
static struct ieee80211_supported_band mwifiex_band_5ghz = …;
static const u32 mwifiex_cipher_suites[] = …;
static const struct ieee80211_txrx_stypes
mwifiex_mgmt_stypes[NUM_NL80211_IFTYPES] = …;
static int
mwifiex_cfg80211_set_bitrate_mask(struct wiphy *wiphy,
struct net_device *dev,
unsigned int link_id,
const u8 *peer,
const struct cfg80211_bitrate_mask *mask)
{ … }
static int mwifiex_cfg80211_set_cqm_rssi_config(struct wiphy *wiphy,
struct net_device *dev,
s32 rssi_thold, u32 rssi_hyst)
{ … }
static int mwifiex_cfg80211_change_beacon(struct wiphy *wiphy,
struct net_device *dev,
struct cfg80211_ap_update *params)
{ … }
static int
mwifiex_cfg80211_del_station(struct wiphy *wiphy, struct net_device *dev,
struct station_del_parameters *params)
{ … }
static int
mwifiex_cfg80211_set_antenna(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant)
{ … }
static int
mwifiex_cfg80211_get_antenna(struct wiphy *wiphy, u32 *tx_ant, u32 *rx_ant)
{ … }
static int mwifiex_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *dev,
unsigned int link_id)
{ … }
static int mwifiex_cfg80211_start_ap(struct wiphy *wiphy,
struct net_device *dev,
struct cfg80211_ap_settings *params)
{ … }
static int
mwifiex_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev,
u16 reason_code)
{ … }
static int mwifiex_cfg80211_inform_ibss_bss(struct mwifiex_private *priv)
{ … }
static int
mwifiex_cfg80211_assoc(struct mwifiex_private *priv, size_t ssid_len,
const u8 *ssid, const u8 *bssid, int mode,
struct ieee80211_channel *channel,
struct cfg80211_connect_params *sme, bool privacy,
struct cfg80211_bss **sel_bss)
{ … }
static int
mwifiex_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
struct cfg80211_connect_params *sme)
{ … }
static int mwifiex_set_ibss_params(struct mwifiex_private *priv,
struct cfg80211_ibss_params *params)
{ … }
static int
mwifiex_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *dev,
struct cfg80211_ibss_params *params)
{ … }
static int
mwifiex_cfg80211_leave_ibss(struct wiphy *wiphy, struct net_device *dev)
{ … }
static int
mwifiex_cfg80211_scan(struct wiphy *wiphy,
struct cfg80211_scan_request *request)
{ … }
static int
mwifiex_cfg80211_sched_scan_start(struct wiphy *wiphy,
struct net_device *dev,
struct cfg80211_sched_scan_request *request)
{ … }
static int mwifiex_cfg80211_sched_scan_stop(struct wiphy *wiphy,
struct net_device *dev, u64 reqid)
{ … }
static void mwifiex_setup_vht_caps(struct ieee80211_sta_vht_cap *vht_info,
struct mwifiex_private *priv)
{ … }
static void
mwifiex_setup_ht_caps(struct ieee80211_sta_ht_cap *ht_info,
struct mwifiex_private *priv)
{ … }
struct wireless_dev *mwifiex_add_virtual_intf(struct wiphy *wiphy,
const char *name,
unsigned char name_assign_type,
enum nl80211_iftype type,
struct vif_params *params)
{ … }
EXPORT_SYMBOL_GPL(…);
int mwifiex_del_virtual_intf(struct wiphy *wiphy, struct wireless_dev *wdev)
{ … }
EXPORT_SYMBOL_GPL(…);
static bool
mwifiex_is_pattern_supported(struct cfg80211_pkt_pattern *pat, s8 *byte_seq,
u8 max_byte_seq)
{ … }
#ifdef CONFIG_PM
static void mwifiex_set_auto_arp_mef_entry(struct mwifiex_private *priv,
struct mwifiex_mef_entry *mef_entry)
{ … }
static int mwifiex_set_wowlan_mef_entry(struct mwifiex_private *priv,
struct mwifiex_ds_mef_cfg *mef_cfg,
struct mwifiex_mef_entry *mef_entry,
struct cfg80211_wowlan *wowlan)
{ … }
static int mwifiex_set_mef_filter(struct mwifiex_private *priv,
struct cfg80211_wowlan *wowlan)
{ … }
static int mwifiex_cfg80211_suspend(struct wiphy *wiphy,
struct cfg80211_wowlan *wowlan)
{ … }
static int mwifiex_cfg80211_resume(struct wiphy *wiphy)
{ … }
static void mwifiex_cfg80211_set_wakeup(struct wiphy *wiphy,
bool enabled)
{ … }
static int mwifiex_set_rekey_data(struct wiphy *wiphy, struct net_device *dev,
struct cfg80211_gtk_rekey_data *data)
{ … }
#endif
static int mwifiex_get_coalesce_pkt_type(u8 *byte_seq)
{ … }
static int
mwifiex_fill_coalesce_rule_info(struct mwifiex_private *priv,
struct cfg80211_coalesce_rules *crule,
struct mwifiex_coalesce_rule *mrule)
{ … }
static int mwifiex_cfg80211_set_coalesce(struct wiphy *wiphy,
struct cfg80211_coalesce *coalesce)
{ … }
static int
mwifiex_cfg80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev,
const u8 *peer, int link_id, u8 action_code,
u8 dialog_token, u16 status_code,
u32 peer_capability, bool initiator,
const u8 *extra_ies, size_t extra_ies_len)
{ … }
static int
mwifiex_cfg80211_tdls_oper(struct wiphy *wiphy, struct net_device *dev,
const u8 *peer, enum nl80211_tdls_operation action)
{ … }
static int
mwifiex_cfg80211_tdls_chan_switch(struct wiphy *wiphy, struct net_device *dev,
const u8 *addr, u8 oper_class,
struct cfg80211_chan_def *chandef)
{ … }
static void
mwifiex_cfg80211_tdls_cancel_chan_switch(struct wiphy *wiphy,
struct net_device *dev,
const u8 *addr)
{ … }
static int
mwifiex_cfg80211_add_station(struct wiphy *wiphy, struct net_device *dev,
const u8 *mac, struct station_parameters *params)
{ … }
static int
mwifiex_cfg80211_channel_switch(struct wiphy *wiphy, struct net_device *dev,
struct cfg80211_csa_settings *params)
{ … }
static int mwifiex_cfg80211_get_channel(struct wiphy *wiphy,
struct wireless_dev *wdev,
unsigned int link_id,
struct cfg80211_chan_def *chandef)
{ … }
#ifdef CONFIG_NL80211_TESTMODE
enum mwifiex_tm_attr { … };
static const struct nla_policy mwifiex_tm_policy[MWIFIEX_TM_ATTR_MAX + 1] = …;
enum mwifiex_tm_command { … };
static int mwifiex_tm_cmd(struct wiphy *wiphy, struct wireless_dev *wdev,
void *data, int len)
{ … }
#endif
static int
mwifiex_cfg80211_start_radar_detection(struct wiphy *wiphy,
struct net_device *dev,
struct cfg80211_chan_def *chandef,
u32 cac_time_ms)
{ … }
static int
mwifiex_cfg80211_change_station(struct wiphy *wiphy, struct net_device *dev,
const u8 *mac,
struct station_parameters *params)
{ … }
static struct cfg80211_ops mwifiex_cfg80211_ops = …;
#ifdef CONFIG_PM
static const struct wiphy_wowlan_support mwifiex_wowlan_support = …;
static const struct wiphy_wowlan_support mwifiex_wowlan_support_no_gtk = …;
#endif
static bool mwifiex_is_valid_alpha2(const char *alpha2)
{ … }
static const struct wiphy_coalesce_support mwifiex_coalesce_support = …;
int mwifiex_init_channel_scan_gap(struct mwifiex_adapter *adapter)
{ … }
int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)
{ … }