Changes between Version 7 and Version 8 of 802.11/MAC/Upper/MACHighFramework/TX_queue


Ignore:
Timestamp:
Apr 8, 2014, 10:53:54 AM (10 years ago)
Author:
chunter
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 802.11/MAC/Upper/MACHighFramework/TX_queue

    v7 v8  
    1111The packet queues use the DDR3 SO-DIMM on WARP v3 for storage. If the SO-DIMM is not installed a much smaller queue will be implemented using on-chip BRAM.
    1212
    13 The queueing system is implemented in the MAC High Framework. At boot the framework creates a fixed number of free queue elements. When new packets requiring wireless transmission are received or generated a free queue element is checked out from the framework, populated with the new packet, then added to the tail of the queue associated with the node to which the packet is addressed. Broadcast packets are added to a dedicated queue.
     13The queueing system is implemented in the MAC High Framework. At boot the framework creates a fixed number of free queue elements. When new packets requiring wireless transmission are received or generated a free queue element is checked out from the framework, populated with the new packet, then added to the tail of the queue associated with the node to which the packet is addressed. Multicast and management packets are added to their own dedicated queues.
    1414
    1515When the low-level MAC is ready for a new packet the high-level queue framework removes the head element from the next queue and passes it to the low-level MAC for transmission. By default the next queue is selected via round robin. More sophisticated queue management schemes (i.e. to support QoS) can be implemented in place of round robin.
     
    1818
    1919== Queue API ==
    20 '''COMING SOON'''
     20
     21User code interacts with the transmit queue via the following functions:
     22
     23 * {{{void queue_checkout(dl_list* new_list, u16 num_packet_bd)}}} - attempts to check out an arbitrary number of packet descriptors from the free pool and delivers them to the calling function by tying those packet descriptors together in a doubly-linked list
     24  * {{{new_list}}}: a pointer to a doubly-linked list that will be populated by the queue framework.
     25  * {{{num_packet_bd}}}: number of packet buffer descriptors that should be checked out. The {{{new_list}}} pointed to by the first argument will be populated with {{{num_packet_bd}}} list entries
     26 * {{{void queue_checkin(dl_list* list)}}} - checks a doubly-linked list of packet descriptors back in to the free pool
     27  * {{{list}}}: the doubly-linked list of packet buffer descriptors that will be returned to the free pool
     28 * {{{wlan_mac_queue_poll(u16 queue_sel)}}} - checks a queue identified by the argument and sends a packet from it if one is there
     29  * {{{queue_sel}}}: identification of queue that should be polled
     30 * {{{void enqueue_after_end(u16 queue_sel, dl_list* list)}}} - appends the provided doubly-linked list of packet buffer descriptors to the end of the queue identified by the provided argument
     31  * {{{queue_sel}}}: identification of queue that should be appended to
     32  * {{{list}}}: doubly-linked list of packet descriptors that should be appended
     33 * {{{void purge_queue(u16 queue_sel)}}} - remove all packet buffer descriptors from the identified queue and return them to the free pool
     34  * {{{queue_sel}}}: identification of queue that should be purged
    2135
    2236== Implementation ==