95 mfilt[0] = mfilt[1] = ~0;
111 DBG2(
"ath9k: cachelsz %d rxbufsize %d\n",
120 "failed to allocate rx descriptors: %d\n",
183#define RX_FILTER_PRESERVE (ATH9K_RX_FILTER_PHYERR | ATH9K_RX_FILTER_PHYRADAR)
193#undef RX_FILTER_PRESERVE
227 int stopped, reset = 0;
238 "Could not stop RX, we could be "
239 "confusing the DMA engine when we start RX up\n");
241 return stopped && !reset;
284 memset(&trs, 0,
sizeof(trs));
321 u8 rx_status_len =
ah->caps.rx_status_len;
356 if (
ah->is_monitoring) {
398 "unsupported hw bitrate detected 0x%02x using 1 Mbit\n",
445 int decrypt_error = 0;
454 memset(&rs, 0,
sizeof(rs));
469 goto requeue_drop_frag;
472 &rix, &decrypt_error);
474 goto requeue_drop_frag;
486 goto requeue_drop_frag;
489 if (
ah->caps.rx_status_len)
507 DBGIO(
"ath9k: rx %d bytes, signal %d, bitrate %d, hw_value %d\n", rs.
rs_datalen,
#define NULL
NULL pointer (VOID *)
struct arbelprm_completion_with_error error
void ath_descdma_cleanup(struct ath_softc *sc, struct ath_descdma *dd, struct list_head *head)
#define IEEE80211_MAX_MPDU_LEN
int ath_descdma_setup(struct ath_softc *sc, struct ath_descdma *dd, struct list_head *head, const char *name, int nbuf, int ndesc, int is_tx)
#define ATH_RXBUF_RESET(_bf)
void ath9k_hw_setuprxdesc(struct ath_hw *ah, struct ath_desc *ds, u32 size, u32 flags)
void ath9k_hw_setopmode(struct ath_hw *ah)
void ath9k_hw_setmcastfilter(struct ath_hw *ah, u32 filter0, u32 filter1)
void ath9k_hw_setantenna(struct ath_hw *ah, u32 antenna)
void ath9k_hw_setrxfilter(struct ath_hw *ah, u32 bits)
u32 ath9k_hw_getrxfilter(struct ath_hw *ah)
void ath9k_hw_putrxbuf(struct ath_hw *ah, u32 rxdp)
void ath9k_hw_abortpcurecv(struct ath_hw *ah)
int ath9k_hw_stopdmarecv(struct ath_hw *ah, int *reset)
int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds, struct ath_rx_status *rs, u64 tsf __unused)
void ath9k_hw_startpcureceive(struct ath_hw *ah, int is_scanning)
#define RX_FILTER_PRESERVE
u32 ath_calcrxfilter(struct ath_softc *sc)
static int ath9k_process_rate(struct ath_common *common __unused, struct net80211_device *dev, struct ath_rx_status *rx_stats, int *rix)
static void ath_rx_buf_link(struct ath_softc *sc, struct ath_buf *bf)
int ath_rx_tasklet(struct ath_softc *sc, int flush, int hp __unused)
int ath_stoprecv(struct ath_softc *sc)
static void ath_opmode_init(struct ath_softc *sc)
int ath_rx_init(struct ath_softc *sc, int nbufs)
static void ath_setdefantenna(struct ath_softc *sc, u32 antenna)
static struct ath_buf * ath_get_next_rx_buf(struct ath_softc *sc, struct ath_rx_status *rs)
static int ath9k_rx_iob_preprocess(struct ath_common *common, struct net80211_device *dev, struct ath_rx_status *rx_stats, int *rix, int *decrypt_error)
static int ath9k_rx_accept(struct ath_common *common, struct ath_rx_status *rx_stats, int *decrypt_error)
void ath_rx_cleanup(struct ath_softc *sc)
void ath_flushrecv(struct ath_softc *sc)
int ath_startrecv(struct ath_softc *sc)
void ath_hw_setbssidmask(struct ath_common *common)
ath_hw_set_bssid_mask - filter out bssids we listen
#define __unused
Declare a variable or data structure as unused.
#define DBG(...)
Print a debugging message.
void net80211_rx(struct net80211_device *dev, struct io_buffer *iob, int signal, u16 rate)
Handle receipt of 802.11 frame.
#define EINVAL
Invalid argument.
#define ENOMEM
Not enough space.
#define EINPROGRESS
Operation in progress.
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
static void ath9k_hw_rxena(struct ath_hw *ah)
static struct ath_common * ath9k_hw_common(struct ath_hw *ah)
struct ib_cm_common common
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
void * memset(void *dest, int character, size_t len) __nonnull
void free_iob(struct io_buffer *iobuf)
Free I/O buffer.
struct io_buffer * alloc_iob_raw(size_t len, size_t align, size_t offset)
Allocate I/O buffer with specified alignment and offset.
#define iob_put(iobuf, len)
#define iob_pull(iobuf, len)
#define list_first_entry(list, type, member)
Get the container of the first entry in a list.
#define list_entry(list, type, member)
Get the container of a list entry.
#define list_for_each_entry_safe(pos, tmp, head, member)
Iterate over entries in a list, safe against deletion of the current entry.
#define list_add_tail(new, head)
Add a new entry to the tail of a list.
#define list_for_each_entry(pos, head, member)
Iterate over entries in a list.
#define list_del(list)
Delete an entry from a list.
#define list_empty(list)
Test whether a list is empty.
#define ATH9K_RXERR_DECRYPT
struct io_buffer * bf_mpdu
struct ath9k_hw_capabilities caps
struct net80211_device * dev
struct net80211_device * dev
struct net80211_hw_info * hwinfo
struct ath9k_legacy_rate rates[NET80211_MAX_RATES]
void * data
Start of data.
struct list_head * next
Next list entry.
Structure encapsulating the complete state of an 802.11 device.
struct net80211_channel channels[NET80211_MAX_CHANNELS]
A list of all possible channels we might use.
void * priv
Driver private data.
u8 channel
The channel currently in use, as an index into the channels array.
int nr_rates[NET80211_NR_BANDS]
Number of supported rates, indexed by band.