linux/drivers/net/wireless/ath/ath9k/channel.c

/*
 * Copyright (c) 2014 Qualcomm Atheros, Inc.
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#include "ath9k.h"

/* Set/change channels.  If the channel is really being changed, it's done
 * by reseting the chip.  To accomplish this we must first cleanup any pending
 * DMA, then restart stuff.
 */
static int ath_set_channel(struct ath_softc *sc)
{}

void ath_chanctx_init(struct ath_softc *sc)
{}

void ath_chanctx_set_channel(struct ath_softc *sc, struct ath_chanctx *ctx,
			     struct cfg80211_chan_def *chandef)
{}

#ifdef CONFIG_ATH9K_CHANNEL_CONTEXT

/*************/
/* Utilities */
/*************/

struct ath_chanctx* ath_is_go_chanctx_present(struct ath_softc *sc)
{}

/**********************************************************/
/* Functions to handle the channel context state machine. */
/**********************************************************/

static const char *offchannel_state_string(enum ath_offchannel_state state)
{}

static const char *chanctx_event_string(enum ath_chanctx_event ev)
{}

static const char *chanctx_state_string(enum ath_chanctx_state state)
{}

static u32 chanctx_event_delta(struct ath_softc *sc)
{}

void ath_chanctx_check_active(struct ath_softc *sc, struct ath_chanctx *ctx)
{}

static struct ath_chanctx *
ath_chanctx_get_next(struct ath_softc *sc, struct ath_chanctx *ctx)
{}

static void ath_chanctx_adjust_tbtt_delta(struct ath_softc *sc)
{}

/* Configure the TSF based hardware timer for a channel switch.
 * Also set up backup software timer, in case the gen timer fails.
 * This could be caused by a hardware reset.
 */
static void ath_chanctx_setup_timer(struct ath_softc *sc, u32 tsf_time)
{}

static void ath_chanctx_handle_bmiss(struct ath_softc *sc,
				     struct ath_chanctx *ctx,
				     struct ath_vif *avp)
{}

static void ath_chanctx_offchannel_noa(struct ath_softc *sc,
				       struct ath_chanctx *ctx,
				       struct ath_vif *avp,
				       u32 tsf_time)
{}

static void ath_chanctx_set_periodic_noa(struct ath_softc *sc,
					 struct ath_vif *avp,
					 struct ath_beacon_config *cur_conf,
					 u32 tsf_time,
					 u32 beacon_int)
{}

static void ath_chanctx_set_oneshot_noa(struct ath_softc *sc,
					struct ath_vif *avp,
					u32 tsf_time,
					u32 duration)
{}

void ath_chanctx_event(struct ath_softc *sc, struct ieee80211_vif *vif,
		       enum ath_chanctx_event ev)
{}

void ath_chanctx_beacon_sent_ev(struct ath_softc *sc,
				enum ath_chanctx_event ev)
{}

void ath_chanctx_beacon_recv_ev(struct ath_softc *sc,
				enum ath_chanctx_event ev)
{}

static int ath_scan_channel_duration(struct ath_softc *sc,
				     struct ieee80211_channel *chan)
{}

static void ath_chanctx_switch(struct ath_softc *sc, struct ath_chanctx *ctx,
			       struct cfg80211_chan_def *chandef)
{}

static void ath_chanctx_offchan_switch(struct ath_softc *sc,
				       struct ieee80211_channel *chan)
{}

static struct ath_chanctx *ath_chanctx_get_oper_chan(struct ath_softc *sc,
						     bool active)
{}

static void
ath_scan_next_channel(struct ath_softc *sc)
{}

void ath_offchannel_next(struct ath_softc *sc)
{}

void ath_roc_complete(struct ath_softc *sc, enum ath_roc_complete_reason reason)
{}

void ath_scan_complete(struct ath_softc *sc, bool abort)
{}

static void ath_scan_send_probe(struct ath_softc *sc,
				struct cfg80211_ssid *ssid)
{}

static void ath_scan_channel_start(struct ath_softc *sc)
{}

static void ath_chanctx_timer(struct timer_list *t)
{}

static void ath_offchannel_timer(struct timer_list *t)
{}

static bool
ath_chanctx_send_vif_ps_frame(struct ath_softc *sc, struct ath_vif *avp,
			      bool powersave)
{}

static bool
ath_chanctx_send_ps_frame(struct ath_softc *sc, bool powersave)
{}

static bool ath_chanctx_defer_switch(struct ath_softc *sc)
{}

static void ath_offchannel_channel_change(struct ath_softc *sc)
{}

void ath_chanctx_set_next(struct ath_softc *sc, bool force)
{}

static void ath_chanctx_work(struct work_struct *work)
{}

void ath9k_offchannel_init(struct ath_softc *sc)
{}

void ath9k_init_channel_context(struct ath_softc *sc)
{}

void ath9k_deinit_channel_context(struct ath_softc *sc)
{}

bool ath9k_is_chanctx_enabled(void)
{}

/********************/
/* Queue management */
/********************/

void ath9k_chanctx_stop_queues(struct ath_softc *sc, struct ath_chanctx *ctx)
{}


void ath9k_chanctx_wake_queues(struct ath_softc *sc, struct ath_chanctx *ctx)
{}

/*****************/
/* P2P Powersave */
/*****************/

static void ath9k_update_p2p_ps_timer(struct ath_softc *sc, struct ath_vif *avp)
{}

static void ath9k_update_p2p_ps(struct ath_softc *sc, struct ieee80211_vif *vif)
{}

static u8 ath9k_get_ctwin(struct ath_softc *sc, struct ath_vif *avp)
{}

void ath9k_beacon_add_noa(struct ath_softc *sc, struct ath_vif *avp,
			  struct sk_buff *skb)
{}

void ath9k_p2p_ps_timer(void *priv)
{}

void ath9k_p2p_bss_info_changed(struct ath_softc *sc,
				struct ieee80211_vif *vif)
{}

void ath9k_p2p_beacon_sync(struct ath_softc *sc)
{}

void ath9k_p2p_remove_vif(struct ath_softc *sc,
			  struct ieee80211_vif *vif)
{}

int ath9k_init_p2p(struct ath_softc *sc)
{}

void ath9k_deinit_p2p(struct ath_softc *sc)
{}

#endif /* CONFIG_ATH9K_CHANNEL_CONTEXT */