Linux Kernel
3.7.1
|
#include <iwl-fh.h>
Data Fields | |
u8 | __reserved1 [3] |
u8 | num_tbs |
struct iwl_tfd_tb | tbs [IWL_NUM_OF_TBS] |
__le32 | __pad |
struct iwl_tfd
Transmit Frame Descriptor (TFD)
@ __reserved1[3] reserved @ num_tbs 0-4 number of active tbs 5 reserved 6-7 padding (not used) @ tbs[20] transmit frame buffer descriptors @ __pad padding
Each Tx queue uses a circular buffer of 256 TFDs stored in host DRAM. Both driver and device share these circular buffers, each of which must be contiguous 256 TFDs x 128 bytes-per-TFD = 32 KBytes
Driver must indicate the physical address of the base of each circular buffer via the FH_MEM_CBBC_QUEUE registers.
Each TFD contains pointer/size information for up to 20 data buffers in host DRAM. These buffers collectively contain the (one) frame described by the TFD. Each buffer must be a single contiguous block of memory within itself, but buffers may be scattered in host DRAM. Each buffer has max size of (4K - 4). The concatenates all of a TFD's buffers into a single Tx frame, up to 8 KBytes in size.
A maximum of 255 (not 256!) TFDs may be on a queue waiting for Tx.