Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Fields
whc_qset Struct Reference

#include <whci-hc.h>

Data Fields

struct whc_qhead qh
 
union {
   struct whc_qtd   qtd [WHCI_QSET_TD_MAX]
 
   struct whc_itd   itd [WHCI_QSET_TD_MAX]
 
}; 
 
dma_addr_t qset_dma
 
struct whcwhc
 
struct usb_host_endpoint * ep
 
struct list_head stds
 
int ntds
 
int td_start
 
int td_end
 
struct list_head list_node
 
unsigned in_sw_list:1
 
unsigned in_hw_list:1
 
unsigned remove:1
 
unsigned reset:1
 
struct urbpause_after_urb
 
struct completion remove_complete
 
uint16_t max_packet
 
uint8_t max_burst
 
uint8_t max_seq
 

Detailed Description

struct whc_qset - WUSB data transfers to a specific endpoint : the QHead of this qset : up to 8 qTDs (for qsets for control, bulk and interrupt transfers) : up to 8 iTDs (for qsets for isochronous transfers) : DMA address for this qset : WHCI HC this qset is for : endpoint : list of sTDs queued to this qset : number of qTDs queued (not necessarily the same as nTDs field in the QH) : index of the first qTD in the list : index of next free qTD in the list (provided ntds < WHCI_QSET_TD_MAX)

Queue Sets (qsets) are added to the asynchronous schedule list (ASL) or the periodic zone list (PZL).

qsets may contain up to 8 TDs (either qTDs or iTDs as appropriate). Each TD may refer to at most 1 MiB of data. If a single transfer has > 8MiB of data, TDs can be reused as they are completed since the TD list is used as a circular buffer. Similarly, several (smaller) transfers may be queued in a qset.

WHCI controllers may cache portions of the qsets in the ASL and PZL, requiring the WHCD to inform the WHC that the lists have been updated (fields changed or qsets inserted or removed). For safe insertion and removal of qsets from the lists the schedule must be stopped to avoid races in updating the QH link pointers.

Since the HC is free to execute qsets in any order, all transfers to an endpoint should use the same qset to ensure transfers are executed in the order they're submitted.

[WHCI] section 3.2.3

Definition at line 241 of file whci-hc.h.

Field Documentation

union { ... }
struct usb_host_endpoint* ep

Definition at line 251 of file whci-hc.h.

unsigned in_hw_list

Definition at line 258 of file whci-hc.h.

unsigned in_sw_list

Definition at line 257 of file whci-hc.h.

Definition at line 245 of file whci-hc.h.

struct list_head list_node

Definition at line 256 of file whci-hc.h.

uint8_t max_burst

Definition at line 264 of file whci-hc.h.

uint16_t max_packet

Definition at line 263 of file whci-hc.h.

uint8_t max_seq

Definition at line 265 of file whci-hc.h.

int ntds

Definition at line 253 of file whci-hc.h.

struct urb* pause_after_urb

Definition at line 261 of file whci-hc.h.

Definition at line 242 of file whci-hc.h.

dma_addr_t qset_dma

Definition at line 249 of file whci-hc.h.

Definition at line 244 of file whci-hc.h.

unsigned remove

Definition at line 259 of file whci-hc.h.

struct completion remove_complete

Definition at line 262 of file whci-hc.h.

unsigned reset

Definition at line 260 of file whci-hc.h.

Definition at line 252 of file whci-hc.h.

int td_end

Definition at line 255 of file whci-hc.h.

int td_start

Definition at line 254 of file whci-hc.h.

Definition at line 250 of file whci-hc.h.


The documentation for this struct was generated from the following file: