#include <net/mac80211.h>
#include "iwl-debug.h"
#include "iwl-io.h"
#include "iwl-prph.h"
#include "iwl-csr.h"
#include "mvm.h"
#include "fw/api/rs.h"
#include "fw/img.h"
int iwl_mvm_send_cmd(struct iwl_mvm *mvm, struct iwl_host_cmd *cmd)
{ … }
int iwl_mvm_send_cmd_pdu(struct iwl_mvm *mvm, u32 id,
u32 flags, u16 len, const void *data)
{ … }
int iwl_mvm_send_cmd_status(struct iwl_mvm *mvm, struct iwl_host_cmd *cmd,
u32 *status)
{ … }
int iwl_mvm_send_cmd_pdu_status(struct iwl_mvm *mvm, u32 id, u16 len,
const void *data, u32 *status)
{ … }
int iwl_mvm_legacy_hw_idx_to_mac80211_idx(u32 rate_n_flags,
enum nl80211_band band)
{ … }
int iwl_mvm_legacy_rate_to_mac80211_idx(u32 rate_n_flags,
enum nl80211_band band)
{ … }
u8 iwl_mvm_mac80211_idx_to_hwrate(const struct iwl_fw *fw, int rate_idx)
{ … }
u8 iwl_mvm_mac80211_ac_to_ucode_ac(enum ieee80211_ac_numbers ac)
{ … }
void iwl_mvm_rx_fw_error(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb)
{ … }
u8 first_antenna(u8 mask)
{ … }
#define MAX_ANT_NUM …
u8 iwl_mvm_next_antenna(struct iwl_mvm *mvm, u8 valid, u8 last_idx)
{ … }
int iwl_mvm_send_lq_cmd(struct iwl_mvm *mvm, struct iwl_lq_cmd *lq)
{ … }
void iwl_mvm_update_smps(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
enum iwl_mvm_smps_type_request req_type,
enum ieee80211_smps_mode smps_request,
unsigned int link_id)
{ … }
void iwl_mvm_update_smps_on_active_links(struct iwl_mvm *mvm,
struct ieee80211_vif *vif,
enum iwl_mvm_smps_type_request req_type,
enum ieee80211_smps_mode smps_request)
{ … }
static bool iwl_wait_stats_complete(struct iwl_notif_wait_data *notif_wait,
struct iwl_rx_packet *pkt, void *data)
{ … }
#define PERIODIC_STAT_RATE …
int iwl_mvm_request_periodic_system_statistics(struct iwl_mvm *mvm, bool enable)
{ … }
static int iwl_mvm_request_system_statistics(struct iwl_mvm *mvm, bool clear,
u8 cmd_ver)
{ … }
int iwl_mvm_request_statistics(struct iwl_mvm *mvm, bool clear)
{ … }
void iwl_mvm_accu_radio_stats(struct iwl_mvm *mvm)
{ … }
struct iwl_mvm_diversity_iter_data { … };
static void iwl_mvm_diversity_iter(void *_data, u8 *mac,
struct ieee80211_vif *vif)
{ … }
bool iwl_mvm_rx_diversity_allowed(struct iwl_mvm *mvm,
struct iwl_mvm_phy_ctxt *ctxt)
{ … }
void iwl_mvm_send_low_latency_cmd(struct iwl_mvm *mvm,
bool low_latency, u16 mac_id)
{ … }
int iwl_mvm_update_low_latency(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
bool low_latency,
enum iwl_mvm_low_latency_cause cause)
{ … }
struct iwl_mvm_low_latency_iter { … };
static void iwl_mvm_ll_iter(void *_data, u8 *mac, struct ieee80211_vif *vif)
{ … }
bool iwl_mvm_low_latency(struct iwl_mvm *mvm)
{ … }
bool iwl_mvm_low_latency_band(struct iwl_mvm *mvm, enum nl80211_band band)
{ … }
struct iwl_bss_iter_data { … };
static void iwl_mvm_bss_iface_iterator(void *_data, u8 *mac,
struct ieee80211_vif *vif)
{ … }
struct ieee80211_vif *iwl_mvm_get_bss_vif(struct iwl_mvm *mvm)
{ … }
struct iwl_bss_find_iter_data { … };
static void iwl_mvm_bss_find_iface_iterator(void *_data, u8 *mac,
struct ieee80211_vif *vif)
{ … }
struct ieee80211_vif *iwl_mvm_get_vif_by_macid(struct iwl_mvm *mvm, u32 macid)
{ … }
struct iwl_sta_iter_data { … };
static void iwl_mvm_sta_iface_iterator(void *_data, u8 *mac,
struct ieee80211_vif *vif)
{ … }
bool iwl_mvm_is_vif_assoc(struct iwl_mvm *mvm)
{ … }
unsigned int iwl_mvm_get_wd_timeout(struct iwl_mvm *mvm,
struct ieee80211_vif *vif,
bool tdls, bool cmd_q)
{ … }
void iwl_mvm_connection_loss(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
const char *errmsg)
{ … }
void iwl_mvm_event_frame_timeout_callback(struct iwl_mvm *mvm,
struct ieee80211_vif *vif,
const struct ieee80211_sta *sta,
u16 tid)
{ … }
u8 iwl_mvm_tcm_load_percentage(u32 airtime, u32 elapsed)
{ … }
static enum iwl_mvm_traffic_load
iwl_mvm_tcm_load(struct iwl_mvm *mvm, u32 airtime, unsigned long elapsed)
{ … }
static void iwl_mvm_tcm_iter(void *_data, u8 *mac, struct ieee80211_vif *vif)
{ … }
static void iwl_mvm_tcm_results(struct iwl_mvm *mvm)
{ … }
static void iwl_mvm_tcm_uapsd_nonagg_detected_wk(struct work_struct *wk)
{ … }
static void iwl_mvm_uapsd_agg_disconnect(struct iwl_mvm *mvm,
struct ieee80211_vif *vif)
{ … }
static void iwl_mvm_check_uapsd_agg_expected_tpt(struct iwl_mvm *mvm,
unsigned int elapsed,
int mac)
{ … }
static void iwl_mvm_tcm_iterator(void *_data, u8 *mac,
struct ieee80211_vif *vif)
{ … }
static unsigned long iwl_mvm_calc_tcm_stats(struct iwl_mvm *mvm,
unsigned long ts,
bool handle_uapsd)
{ … }
void iwl_mvm_recalc_tcm(struct iwl_mvm *mvm)
{ … }
void iwl_mvm_tcm_work(struct work_struct *work)
{ … }
void iwl_mvm_pause_tcm(struct iwl_mvm *mvm, bool with_cancel)
{ … }
void iwl_mvm_resume_tcm(struct iwl_mvm *mvm)
{ … }
void iwl_mvm_tcm_add_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
{ … }
void iwl_mvm_tcm_rm_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
{ … }
u32 iwl_mvm_get_systime(struct iwl_mvm *mvm)
{ … }
void iwl_mvm_get_sync_time(struct iwl_mvm *mvm, int clock_type,
u32 *gp2, u64 *boottime, ktime_t *realtime)
{ … }
bool iwl_mvm_have_links_same_channel(struct iwl_mvm_vif *vif1,
struct iwl_mvm_vif *vif2)
{ … }
bool iwl_mvm_vif_is_active(struct iwl_mvm_vif *mvmvif)
{ … }