Receive Buffer List

Receive data is written to areas of data (i.e., buffers) in system memory. These buffers are listed in another data structure that also resides in main memory. This data structure (receive buffer queue) is a sequence of descriptor entries as defined in the table Receive Buffer Descriptor Entry.

The Receive Buffer Queue Pointer register points to this data structure.

Figure 1. Receive Buffer List

To create the list of buffers:

  1. 1.Allocate a number (N) of buffers of X bytes in system memory, where X is the DMA buffer length programmed in the DMA Configuration register.
  2. 2.Allocate an area 8N bytes for the receive buffer descriptor list in system memory and create N entries in this list. Mark all entries in this list as owned by GMAC, i.e., bit 0 of word 0 set to 0.
  3. 3.Mark the last descriptor in the queue with the wrap bit (bit 1 in word 0 set to 1).
  4. 4.Write address of receive buffer descriptor list and control information to GMAC register receive buffer queue pointer
  5. 5.The receive circuits can then be enabled by writing to the address recognition registers and the Network Control register.
Note: The queue pointers must be initialized and point to USED descriptors for all queues including those not intended for use.