Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
rt2x00queue.c File Reference
#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/dma-mapping.h>
#include "rt2x00.h"
#include "rt2x00lib.h"

Go to the source code of this file.

Macros

#define QUEUE_ENTRY_PRIV_OFFSET(__base, __index, __limit, __esize, __psize)
 

Functions

struct sk_buffrt2x00queue_alloc_rxskb (struct queue_entry *entry, gfp_t gfp)
 
void rt2x00queue_map_txskb (struct queue_entry *entry)
 
 EXPORT_SYMBOL_GPL (rt2x00queue_map_txskb)
 
void rt2x00queue_unmap_skb (struct queue_entry *entry)
 
 EXPORT_SYMBOL_GPL (rt2x00queue_unmap_skb)
 
void rt2x00queue_free_skb (struct queue_entry *entry)
 
void rt2x00queue_align_frame (struct sk_buff *skb)
 
void rt2x00queue_insert_l2pad (struct sk_buff *skb, unsigned int header_length)
 
void rt2x00queue_remove_l2pad (struct sk_buff *skb, unsigned int header_length)
 
int rt2x00queue_write_tx_frame (struct data_queue *queue, struct sk_buff *skb, bool local)
 
int rt2x00queue_clear_beacon (struct rt2x00_dev *rt2x00dev, struct ieee80211_vif *vif)
 
int rt2x00queue_update_beacon_locked (struct rt2x00_dev *rt2x00dev, struct ieee80211_vif *vif)
 
int rt2x00queue_update_beacon (struct rt2x00_dev *rt2x00dev, struct ieee80211_vif *vif)
 
bool rt2x00queue_for_each_entry (struct data_queue *queue, enum queue_index start, enum queue_index end, bool(*fn)(struct queue_entry *entry))
 
 EXPORT_SYMBOL_GPL (rt2x00queue_for_each_entry)
 
struct queue_entry * rt2x00queue_get_entry (struct data_queue *queue, enum queue_index index)
 
 EXPORT_SYMBOL_GPL (rt2x00queue_get_entry)
 
void rt2x00queue_index_inc (struct queue_entry *entry, enum queue_index index)
 
void rt2x00queue_pause_queue (struct data_queue *queue)
 
 EXPORT_SYMBOL_GPL (rt2x00queue_pause_queue)
 
void rt2x00queue_unpause_queue (struct data_queue *queue)
 
 EXPORT_SYMBOL_GPL (rt2x00queue_unpause_queue)
 
void rt2x00queue_start_queue (struct data_queue *queue)
 
 EXPORT_SYMBOL_GPL (rt2x00queue_start_queue)
 
void rt2x00queue_stop_queue (struct data_queue *queue)
 
 EXPORT_SYMBOL_GPL (rt2x00queue_stop_queue)
 
void rt2x00queue_flush_queue (struct data_queue *queue, bool drop)
 
 EXPORT_SYMBOL_GPL (rt2x00queue_flush_queue)
 
void rt2x00queue_start_queues (struct rt2x00_dev *rt2x00dev)
 
 EXPORT_SYMBOL_GPL (rt2x00queue_start_queues)
 
void rt2x00queue_stop_queues (struct rt2x00_dev *rt2x00dev)
 
 EXPORT_SYMBOL_GPL (rt2x00queue_stop_queues)
 
void rt2x00queue_flush_queues (struct rt2x00_dev *rt2x00dev, bool drop)
 
 EXPORT_SYMBOL_GPL (rt2x00queue_flush_queues)
 
void rt2x00queue_init_queues (struct rt2x00_dev *rt2x00dev)
 
int rt2x00queue_initialize (struct rt2x00_dev *rt2x00dev)
 
void rt2x00queue_uninitialize (struct rt2x00_dev *rt2x00dev)
 
int rt2x00queue_allocate (struct rt2x00_dev *rt2x00dev)
 
void rt2x00queue_free (struct rt2x00_dev *rt2x00dev)
 

Macro Definition Documentation

#define QUEUE_ENTRY_PRIV_OFFSET (   __base,
  __index,
  __limit,
  __esize,
  __psize 
)
Value:
(((char *)(__base)) + ((__limit) * (__esize)) + \
((__index) * (__psize)))

Function Documentation

EXPORT_SYMBOL_GPL ( rt2x00queue_map_txskb  )
EXPORT_SYMBOL_GPL ( rt2x00queue_unmap_skb  )
EXPORT_SYMBOL_GPL ( rt2x00queue_for_each_entry  )
EXPORT_SYMBOL_GPL ( rt2x00queue_get_entry  )
EXPORT_SYMBOL_GPL ( rt2x00queue_pause_queue  )
EXPORT_SYMBOL_GPL ( rt2x00queue_unpause_queue  )
EXPORT_SYMBOL_GPL ( rt2x00queue_start_queue  )
EXPORT_SYMBOL_GPL ( rt2x00queue_stop_queue  )
EXPORT_SYMBOL_GPL ( rt2x00queue_flush_queue  )
EXPORT_SYMBOL_GPL ( rt2x00queue_start_queues  )
EXPORT_SYMBOL_GPL ( rt2x00queue_stop_queues  )
EXPORT_SYMBOL_GPL ( rt2x00queue_flush_queues  )
void rt2x00queue_align_frame ( struct sk_buff skb)

rt2x00queue_align_frame - Align 802.11 frame to 4-byte boundary : The skb to align

Align the start of the 802.11 frame to a 4-byte boundary, this could mean the payload is not aligned properly though.

Definition at line 138 of file rt2x00queue.c.

struct sk_buff* rt2x00queue_alloc_rxskb ( struct queue_entry *  entry,
gfp_t  gfp 
)
read

DOC: Queue handlers rt2x00queue_alloc_rxskb - allocate a skb for RX purposes. : The entry for which the skb will be applicable.

Definition at line 36 of file rt2x00queue.c.

int rt2x00queue_allocate ( struct rt2x00_dev rt2x00dev)

Definition at line 1241 of file rt2x00queue.c.

int rt2x00queue_clear_beacon ( struct rt2x00_dev rt2x00dev,
struct ieee80211_vif vif 
)

rt2x00queue_clear_beacon - Clear beacon in hardware : Pointer to &struct rt2x00_dev. : Interface for which the beacon should be updated.

Definition at line 694 of file rt2x00queue.c.

void rt2x00queue_flush_queue ( struct data_queue queue,
bool  drop 
)

rt2x00queue_flush_queue - Flush a data queue : Pointer to &struct data_queue. : True to drop all pending frames.

This function will flush the queue. After this call the queue is guaranteed to be empty.

Definition at line 971 of file rt2x00queue.c.

void rt2x00queue_flush_queues ( struct rt2x00_dev rt2x00dev,
bool  drop 
)

rt2x00queue_flush_queues - Flush all data queues : Pointer to &struct rt2x00_dev. : True to drop all pending frames.

This function will loop through all available queues to flush any pending frames.

Definition at line 1064 of file rt2x00queue.c.

bool rt2x00queue_for_each_entry ( struct data_queue queue,
enum queue_index  start,
enum queue_index  end,
bool(*)(struct queue_entry *entry fn 
)

Definition at line 776 of file rt2x00queue.c.

void rt2x00queue_free ( struct rt2x00_dev rt2x00dev)

Definition at line 1293 of file rt2x00queue.c.

void rt2x00queue_free_skb ( struct queue_entry *  entry)

rt2x00queue_free_skb - free a skb : The entry for which the skb will be applicable.

Definition at line 128 of file rt2x00queue.c.

struct queue_entry* rt2x00queue_get_entry ( struct data_queue queue,
enum queue_index  index 
)
read

rt2x00queue_get_entry - Get queue entry where the given index points to. : Pointer to &struct data_queue from where we obtain the entry. : Index identifier for obtaining the correct index.

Definition at line 829 of file rt2x00queue.c.

void rt2x00queue_index_inc ( struct queue_entry *  entry,
enum queue_index  index 
)

rt2x00queue_index_inc - Index incrementation function : Queue entry (&struct queue_entry) to perform the action on. : Index type (&enum queue_index) to perform the action on.

This function will increase the requested index on the entry's queue, it will grab the appropriate locks and handle queue overflow events by resetting the index to the start of the queue.

Definition at line 851 of file rt2x00queue.c.

void rt2x00queue_init_queues ( struct rt2x00_dev rt2x00dev)

rt2x00queue_init_queues - Initialize all data queues : Pointer to &struct rt2x00_dev.

This function will loop through all available queues to clear all index numbers and set the queue entry to the correct initialization state.

Definition at line 1091 of file rt2x00queue.c.

int rt2x00queue_initialize ( struct rt2x00_dev rt2x00dev)

Definition at line 1174 of file rt2x00queue.c.

void rt2x00queue_insert_l2pad ( struct sk_buff skb,
unsigned int  header_length 
)

rt2x00queue_insert_l2pad - Align 802.11 header & payload to 4-byte boundary : The skb to align : Length of 802.11 header

Apply L2 padding to align both header and payload to 4-byte boundary

Definition at line 151 of file rt2x00queue.c.

void rt2x00queue_map_txskb ( struct queue_entry *  entry)

rt2x00queue_map_txskb - Map a skb into DMA for TX purposes. : Pointer to &struct queue_entry

Definition at line 100 of file rt2x00queue.c.

void rt2x00queue_pause_queue ( struct data_queue queue)

rt2x00queue_pause_queue - Pause a data queue : Pointer to &struct data_queue.

This function will pause the data queue locally, preventing new frames to be added to the queue (while the hardware is still allowed to run).

Definition at line 880 of file rt2x00queue.c.

void rt2x00queue_remove_l2pad ( struct sk_buff skb,
unsigned int  header_length 
)

rt2x00queue_insert_l2pad - Remove L2 padding from 802.11 frame : The skb to align : Length of 802.11 header

Remove L2 padding used to align both header and payload to 4-byte boundary, by removing the L2 padding the header will no longer be 4-byte aligned.

Definition at line 187 of file rt2x00queue.c.

void rt2x00queue_start_queue ( struct data_queue queue)

rt2x00queue_start_queue - Start a data queue : Pointer to &struct data_queue.

This function will start handling all pending frames in the queue.

Definition at line 934 of file rt2x00queue.c.

void rt2x00queue_start_queues ( struct rt2x00_dev rt2x00dev)

rt2x00queue_start_queues - Start all data queues : Pointer to &struct rt2x00_dev.

This function will loop through all available queues to start them

Definition at line 1030 of file rt2x00queue.c.

void rt2x00queue_stop_queue ( struct data_queue queue)

rt2x00queue_stop_queue - Halt a data queue : Pointer to &struct data_queue.

This function will stop all pending frames in the queue.

Definition at line 954 of file rt2x00queue.c.

void rt2x00queue_stop_queues ( struct rt2x00_dev rt2x00dev)

rt2x00queue_stop_queues - Halt all data queues : Pointer to &struct rt2x00_dev.

This function will loop through all available queues to stop any pending frames.

Definition at line 1045 of file rt2x00queue.c.

void rt2x00queue_uninitialize ( struct rt2x00_dev rt2x00dev)

Definition at line 1214 of file rt2x00queue.c.

void rt2x00queue_unmap_skb ( struct queue_entry *  entry)

rt2x00queue_unmap_skb - Unmap a skb from DMA. : Pointer to &struct queue_entry

Definition at line 111 of file rt2x00queue.c.

void rt2x00queue_unpause_queue ( struct data_queue queue)

rt2x00queue_unpause_queue - unpause a data queue : Pointer to &struct data_queue.

This function will unpause the data queue locally, allowing new frames to be added to the queue again.

Definition at line 904 of file rt2x00queue.c.

int rt2x00queue_update_beacon ( struct rt2x00_dev rt2x00dev,
struct ieee80211_vif vif 
)

rt2x00queue_update_beacon - Send new beacon from mac80211 to hardware. Handles locking by itself (mutex). : Pointer to &struct rt2x00_dev. : Interface for which the beacon should be updated.

Definition at line 763 of file rt2x00queue.c.

int rt2x00queue_update_beacon_locked ( struct rt2x00_dev rt2x00dev,
struct ieee80211_vif vif 
)

rt2x00queue_update_beacon_locked - Send new beacon from mac80211 to hardware. Caller needs to ensure locking. : Pointer to &struct rt2x00_dev. : Interface for which the beacon should be updated.

Definition at line 721 of file rt2x00queue.c.

int rt2x00queue_write_tx_frame ( struct data_queue queue,
struct sk_buff skb,
bool  local 
)

rt2x00queue_write_tx_frame - Write TX frame to hardware : Queue over which the frame should be send : The skb to send : frame is not from mac80211

Definition at line 585 of file rt2x00queue.c.