#include <linux/etherdevice.h>
#include <linux/skbuff.h>
#include "iwl-trans.h"
#include "mvm.h"
#include "fw-api.h"
#include "time-sync.h"
static inline int iwl_mvm_check_pn(struct iwl_mvm *mvm, struct sk_buff *skb,
int queue, struct ieee80211_sta *sta)
{ … }
static int iwl_mvm_create_skb(struct iwl_mvm *mvm, struct sk_buff *skb,
struct ieee80211_hdr *hdr, u16 len, u8 crypt_len,
struct iwl_rx_cmd_buffer *rxb)
{ … }
static void *
iwl_mvm_radiotap_put_tlv(struct sk_buff *skb, u16 type, u16 len)
{ … }
static void iwl_mvm_add_rtap_sniffer_config(struct iwl_mvm *mvm,
struct sk_buff *skb)
{ … }
static void iwl_mvm_pass_packet_to_mac80211(struct iwl_mvm *mvm,
struct napi_struct *napi,
struct sk_buff *skb, int queue,
struct ieee80211_sta *sta)
{ … }
static void iwl_mvm_get_signal_strength(struct iwl_mvm *mvm,
struct ieee80211_rx_status *rx_status,
u32 rate_n_flags, int energy_a,
int energy_b)
{ … }
static int iwl_mvm_rx_mgmt_prot(struct ieee80211_sta *sta,
struct ieee80211_hdr *hdr,
struct iwl_rx_mpdu_desc *desc,
u32 status,
struct ieee80211_rx_status *stats)
{ … }
static int iwl_mvm_rx_crypto(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
struct ieee80211_hdr *hdr,
struct ieee80211_rx_status *stats, u16 phy_info,
struct iwl_rx_mpdu_desc *desc,
u32 pkt_flags, int queue, u8 *crypt_len)
{ … }
static void iwl_mvm_rx_csum(struct iwl_mvm *mvm,
struct ieee80211_sta *sta,
struct sk_buff *skb,
struct iwl_rx_packet *pkt)
{ … }
static bool iwl_mvm_is_dup(struct ieee80211_sta *sta, int queue,
struct ieee80211_rx_status *rx_status,
struct ieee80211_hdr *hdr,
struct iwl_rx_mpdu_desc *desc)
{ … }
static void iwl_mvm_release_frames(struct iwl_mvm *mvm,
struct ieee80211_sta *sta,
struct napi_struct *napi,
struct iwl_mvm_baid_data *baid_data,
struct iwl_mvm_reorder_buffer *reorder_buf,
u16 nssn)
{ … }
static void iwl_mvm_del_ba(struct iwl_mvm *mvm, int queue,
struct iwl_mvm_delba_data *data)
{ … }
static void iwl_mvm_release_frames_from_notif(struct iwl_mvm *mvm,
struct napi_struct *napi,
u8 baid, u16 nssn, int queue)
{ … }
void iwl_mvm_rx_queue_notif(struct iwl_mvm *mvm, struct napi_struct *napi,
struct iwl_rx_cmd_buffer *rxb, int queue)
{ … }
static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
struct napi_struct *napi,
int queue,
struct ieee80211_sta *sta,
struct sk_buff *skb,
struct iwl_rx_mpdu_desc *desc)
{ … }
static void iwl_mvm_agg_rx_received(struct iwl_mvm *mvm,
u32 reorder_data, u8 baid)
{ … }
static void iwl_mvm_flip_address(u8 *addr)
{ … }
struct iwl_mvm_rx_phy_data { … };
static void iwl_mvm_decode_he_mu_ext(struct iwl_mvm *mvm,
struct iwl_mvm_rx_phy_data *phy_data,
struct ieee80211_radiotap_he_mu *he_mu)
{ … }
static void
iwl_mvm_decode_he_phy_ru_alloc(struct iwl_mvm_rx_phy_data *phy_data,
struct ieee80211_radiotap_he *he,
struct ieee80211_radiotap_he_mu *he_mu,
struct ieee80211_rx_status *rx_status)
{ … }
static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm,
struct iwl_mvm_rx_phy_data *phy_data,
struct ieee80211_radiotap_he *he,
struct ieee80211_radiotap_he_mu *he_mu,
struct ieee80211_rx_status *rx_status,
int queue)
{ … }
#define LE32_DEC_ENC(value, dec_bits, enc_bits) …
#define IWL_MVM_ENC_USIG_VALUE_MASK(usig, in_value, dec_bits, enc_bits) …
#define __IWL_MVM_ENC_EHT_RU(rt_data, rt_ru, fw_data, fw_ru) …
#define _IWL_MVM_ENC_EHT_RU(rt_data, rt_ru, fw_data, fw_ru) …
#define IEEE80211_RADIOTAP_RU_DATA_1_1_1 …
#define IEEE80211_RADIOTAP_RU_DATA_2_1_1 …
#define IEEE80211_RADIOTAP_RU_DATA_1_1_2 …
#define IEEE80211_RADIOTAP_RU_DATA_2_1_2 …
#define IEEE80211_RADIOTAP_RU_DATA_1_2_1 …
#define IEEE80211_RADIOTAP_RU_DATA_2_2_1 …
#define IEEE80211_RADIOTAP_RU_DATA_1_2_2 …
#define IEEE80211_RADIOTAP_RU_DATA_2_2_2 …
#define IWL_RX_RU_DATA_A1 …
#define IWL_RX_RU_DATA_A2 …
#define IWL_RX_RU_DATA_B1 …
#define IWL_RX_RU_DATA_B2 …
#define IWL_RX_RU_DATA_C1 …
#define IWL_RX_RU_DATA_C2 …
#define IWL_RX_RU_DATA_D1 …
#define IWL_RX_RU_DATA_D2 …
#define IWL_MVM_ENC_EHT_RU(rt_ru, fw_ru) …
static void iwl_mvm_decode_eht_ext_mu(struct iwl_mvm *mvm,
struct iwl_mvm_rx_phy_data *phy_data,
struct ieee80211_rx_status *rx_status,
struct ieee80211_radiotap_eht *eht,
struct ieee80211_radiotap_eht_usig *usig)
{ … }
static void iwl_mvm_decode_eht_ext_tb(struct iwl_mvm *mvm,
struct iwl_mvm_rx_phy_data *phy_data,
struct ieee80211_rx_status *rx_status,
struct ieee80211_radiotap_eht *eht,
struct ieee80211_radiotap_eht_usig *usig)
{ … }
static void iwl_mvm_decode_eht_ru(struct iwl_mvm *mvm,
struct ieee80211_rx_status *rx_status,
struct ieee80211_radiotap_eht *eht)
{ … }
static void iwl_mvm_decode_eht_phy_data(struct iwl_mvm *mvm,
struct iwl_mvm_rx_phy_data *phy_data,
struct ieee80211_rx_status *rx_status,
struct ieee80211_radiotap_eht *eht,
struct ieee80211_radiotap_eht_usig *usig)
{ … }
static void iwl_mvm_rx_eht(struct iwl_mvm *mvm, struct sk_buff *skb,
struct iwl_mvm_rx_phy_data *phy_data,
int queue)
{ … }
static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb,
struct iwl_mvm_rx_phy_data *phy_data,
int queue)
{ … }
static void iwl_mvm_decode_lsig(struct sk_buff *skb,
struct iwl_mvm_rx_phy_data *phy_data)
{ … }
struct iwl_rx_sta_csa { … };
static void iwl_mvm_rx_get_sta_block_tx(void *data, struct ieee80211_sta *sta)
{ … }
static void iwl_mvm_rx_fill_status(struct iwl_mvm *mvm,
struct sk_buff *skb,
struct iwl_mvm_rx_phy_data *phy_data,
int queue)
{ … }
void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
struct iwl_rx_cmd_buffer *rxb, int queue)
{ … }
void iwl_mvm_rx_monitor_no_data(struct iwl_mvm *mvm, struct napi_struct *napi,
struct iwl_rx_cmd_buffer *rxb, int queue)
{ … }
void iwl_mvm_rx_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi,
struct iwl_rx_cmd_buffer *rxb, int queue)
{ … }
void iwl_mvm_rx_bar_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi,
struct iwl_rx_cmd_buffer *rxb, int queue)
{ … }