#include <linux/jiffies.h>
#include <net/mac80211.h>
#include "fw/notif-wait.h"
#include "iwl-trans.h"
#include "fw-api.h"
#include "time-event.h"
#include "mvm.h"
#include "iwl-io.h"
#include "iwl-prph.h"
#define IWL_MVM_ROC_TE_TYPE_NORMAL …
#define IWL_MVM_ROC_TE_TYPE_MGMT_TX …
void iwl_mvm_te_clear_data(struct iwl_mvm *mvm,
struct iwl_mvm_time_event_data *te_data)
{ … }
static void iwl_mvm_cleanup_roc(struct iwl_mvm *mvm)
{ … }
void iwl_mvm_roc_done_wk(struct work_struct *wk)
{ … }
static void iwl_mvm_roc_finished(struct iwl_mvm *mvm)
{ … }
static void iwl_mvm_csa_noa_start(struct iwl_mvm *mvm)
{ … }
static bool iwl_mvm_te_check_disconnect(struct iwl_mvm *mvm,
struct ieee80211_vif *vif,
const char *errmsg)
{ … }
static void
iwl_mvm_te_handle_notify_csa(struct iwl_mvm *mvm,
struct iwl_mvm_time_event_data *te_data,
struct iwl_time_event_notif *notif)
{ … }
static void iwl_mvm_te_check_trigger(struct iwl_mvm *mvm,
struct iwl_time_event_notif *notif,
struct iwl_mvm_time_event_data *te_data)
{ … }
static void iwl_mvm_te_handle_notif(struct iwl_mvm *mvm,
struct iwl_mvm_time_event_data *te_data,
struct iwl_time_event_notif *notif)
{ … }
struct iwl_mvm_rx_roc_iterator_data { … };
static void iwl_mvm_rx_roc_iterator(void *_data, u8 *mac,
struct ieee80211_vif *vif)
{ … }
void iwl_mvm_rx_roc_notif(struct iwl_mvm *mvm,
struct iwl_rx_cmd_buffer *rxb)
{ … }
static int iwl_mvm_aux_roc_te_handle_notif(struct iwl_mvm *mvm,
struct iwl_time_event_notif *notif)
{ … }
void iwl_mvm_rx_time_event_notif(struct iwl_mvm *mvm,
struct iwl_rx_cmd_buffer *rxb)
{ … }
static bool iwl_mvm_te_notif(struct iwl_notif_wait_data *notif_wait,
struct iwl_rx_packet *pkt, void *data)
{ … }
static bool iwl_mvm_time_event_response(struct iwl_notif_wait_data *notif_wait,
struct iwl_rx_packet *pkt, void *data)
{ … }
static int iwl_mvm_time_event_send_add(struct iwl_mvm *mvm,
struct ieee80211_vif *vif,
struct iwl_mvm_time_event_data *te_data,
struct iwl_time_event_cmd *te_cmd)
{ … }
void iwl_mvm_protect_session(struct iwl_mvm *mvm,
struct ieee80211_vif *vif,
u32 duration, u32 min_duration,
u32 max_delay, bool wait_for_notif)
{ … }
static int iwl_mvm_get_session_prot_id(struct iwl_mvm *mvm,
struct ieee80211_vif *vif,
s8 link_id)
{ … }
static void iwl_mvm_cancel_session_protection(struct iwl_mvm *mvm,
struct ieee80211_vif *vif,
u32 id, s8 link_id)
{ … }
static void iwl_mvm_roc_rm_cmd(struct iwl_mvm *mvm, u32 activity)
{ … }
static bool __iwl_mvm_remove_time_event(struct iwl_mvm *mvm,
struct iwl_mvm_time_event_data *te_data,
u32 *uid)
{ … }
static void iwl_mvm_remove_aux_roc_te(struct iwl_mvm *mvm,
struct iwl_mvm_vif *mvmvif,
struct iwl_mvm_time_event_data *te_data)
{ … }
void iwl_mvm_remove_time_event(struct iwl_mvm *mvm,
struct iwl_mvm_vif *mvmvif,
struct iwl_mvm_time_event_data *te_data)
{ … }
void iwl_mvm_stop_session_protection(struct iwl_mvm *mvm,
struct ieee80211_vif *vif)
{ … }
void iwl_mvm_rx_session_protect_notif(struct iwl_mvm *mvm,
struct iwl_rx_cmd_buffer *rxb)
{ … }
#define AUX_ROC_MIN_DURATION …
#define AUX_ROC_MIN_DELAY …
#define AUX_ROC_MAX_DELAY …
#define AUX_ROC_SAFETY_BUFFER …
#define AUX_ROC_MIN_SAFETY_BUFFER …
void iwl_mvm_roc_duration_and_delay(struct ieee80211_vif *vif,
u32 duration_ms,
u32 *duration_tu,
u32 *delay)
{ … }
int iwl_mvm_roc_add_cmd(struct iwl_mvm *mvm,
struct ieee80211_channel *channel,
struct ieee80211_vif *vif,
int duration, enum iwl_roc_activity activity)
{ … }
static int
iwl_mvm_start_p2p_roc_session_protection(struct iwl_mvm *mvm,
struct ieee80211_vif *vif,
int duration,
enum ieee80211_roc_type type)
{ … }
int iwl_mvm_start_p2p_roc(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
int duration, enum ieee80211_roc_type type)
{ … }
static struct iwl_mvm_time_event_data *iwl_mvm_get_roc_te(struct iwl_mvm *mvm)
{ … }
void iwl_mvm_cleanup_roc_te(struct iwl_mvm *mvm)
{ … }
void iwl_mvm_stop_roc(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
{ … }
void iwl_mvm_remove_csa_period(struct iwl_mvm *mvm,
struct ieee80211_vif *vif)
{ … }
int iwl_mvm_schedule_csa_period(struct iwl_mvm *mvm,
struct ieee80211_vif *vif,
u32 duration, u32 apply_time)
{ … }
static bool iwl_mvm_session_prot_notif(struct iwl_notif_wait_data *notif_wait,
struct iwl_rx_packet *pkt, void *data)
{ … }
void iwl_mvm_schedule_session_protection(struct iwl_mvm *mvm,
struct ieee80211_vif *vif,
u32 duration, u32 min_duration,
bool wait_for_notif,
unsigned int link_id)
{ … }