Claims Analysis
Total Claims: 21
Claim 1
Independent Claim
246 words
A method of managing a multi-channel multi-channel direct memory access (DMA) operation, comprising: providing each of a plurality of data buffers with a different index uniquely identifying the data buffer; storing descriptors of the data buffers and the indexes of the data buffers in locations of a circular descriptor queue; indicating to a network controller the number of descriptors in the descriptor queue, corresponding to the data buffers, that are available for use in a DMA transfer; the network controller obtaining a set of available descriptors from the descriptor queue that is stored in a block of locations that are contiguous to one another in the descriptor queue, the set of descriptors being unavailable in the descriptor queue after being obtained by the network controller; performing a DMA transfer with a host system via the network controller using at least some of the available data buffers whose descriptors were obtained; tracking a status entry for each data buffer used in a DMA transfer through a receive status queue; and refilling the descriptor queue with the descriptors and indices of the data buffers used in the DMA transfer, the descriptors being refilled in the locations in the descriptor queue that immediately follow the location of a last one of the available descriptors in the descriptor queue, the refilled descriptors constituting newly available descriptors in the descriptor queue, such that all of the available descriptors in the descriptor queue are always in contiguous locations in the descriptor queue.
Claim 2
Independent Claim
246 words
A method of managing a multi-channel multi-channel direct memory access (DMA) operation, comprising: providing each of a plurality of data buffers with a different index uniquely identifying the data buffer; storing descriptors of the data buffers and the indexes of the data buffers in locations of a circular descriptor queue; indicating to a network controller the number of descriptors in the descriptor queue, corresponding to the data buffers, that are available for use in a DMA transfer; the network controller obtaining a set of available descriptors from the descriptor queue that is stored in a block of locations that are contiguous to one another in the descriptor queue, the set of descriptors being unavailable in the descriptor queue after being obtained by the network controller; performing a DMA transfer with a host system via the network controller using at least some of the available data buffers whose descriptors were obtained; tracking a status entry for each data buffer used in a DMA transfer through a receive status queue; and refilling the descriptor queue with the descriptors and indices of the data buffers used in the DMA transfer, the descriptors being refilled in the locations in the descriptor queue that immediately follow the location of a last one of the available descriptors in the descriptor queue, the refilled descriptors constituting newly available descriptors in the descriptor queue, such that all of the available descriptors in the descriptor queue are always in contiguous locations in the descriptor queue.
Claim 3
Dependent Claim
58 words
The method of claim 1, wherein the step of indicating to the network controller the number of descriptors in the descriptor queue that are available for use in a DMA transfer includes decrementing the number when the network controller obtains the set of descriptors, by an amount equal to the number of descriptors in the set of descriptors.
Claim 4
Dependent Claim
55 words
The method of claim 2, wherein the step of indicating to the network controller the number of descriptors in the descriptor queue that are available for use in a DMA transfer includes incrementing the number when the descriptor queue is refilled, by an amount equal to the number of descriptors refilled in the descriptor queue.
Claim 5
Dependent Claim
19 words
The method of claim 3, wherein the incrementing and decrementing is performed on a number stored in a register.
Claim 6
Dependent Claim
32 words
The method of claim 1, wherein the step of writing in a status queue includes writing in the receive status queue the index for each data buffer used in a DMA transfer.
Claim 7
Dependent Claim
28 words
The method of claim 5, further comprising the host system reading the indices in the receive status queue to determine the data buffers used in the DMA transfer.
Claim 8
Dependent Claim
30 words
The method of claim 6, further comprising the host system using the indices in the receive status queue to index a reference table having specific entries for each data buffer.
Claim 9
Dependent Claim
207 words
An arrangement for managing multi-channel direct memory access (DMA) transfers of data, comprising: a bus; a host system having a central processing unit (CPU) and a memory coupled to the bus, the memory having a plurality of data buffers; a multi-channel network controller coupled to the bus, the network controller transferring data received at the network controller to the host system via data buffers that are available for use; wherein the memory includes a circular descriptor queue having a plurality of locations for storing descriptors of the data buffers, the descriptors of data buffers that are currently available for use in a DMA transfer being stored in locations contiguous to one another in the descriptor queue, wherein the memory further includes a receive status queue to which a status entry is written after each data buffer is used in a DMA transfer, the CPU refilling the descriptor queue with descriptors of the data buffers for which status entries were written in the receive status queue; a first register that maintains the number of descriptors that are currently available in the descriptor queue; and a second register that maintains the address of the location of the first descriptor of the contiguous currently available descriptors in the descriptors queue.
Claim 10
Dependent Claim
207 words
An arrangement for managing multi-channel direct memory access (DMA) transfers of data, comprising: a bus; a host system having a central processing unit (CPU) and a memory coupled to the bus, the memory having a plurality of data buffers; a multi-channel network controller coupled to the bus, the network controller transferring data received at the network controller to the host system via data buffers that are available for use; wherein the memory includes a circular descriptor queue having a plurality of locations for storing descriptors of the data buffers, the descriptors of data buffers that are currently available for use in a DMA transfer being stored in locations contiguous to one another in the descriptor queue, wherein the memory further includes a receive status queue to which a status entry is written after each data buffer is used in a DMA transfer, the CPU refilling the descriptor queue with descriptors of the data buffers for which status entries were written in the receive status queue; a first register that maintains the number of descriptors that are currently available in the descriptor queue; and a second register that maintains the address of the location of the first descriptor of the contiguous currently available descriptors in the descriptors queue.
Claim 11
Dependent Claim
45 words
The arrangement of claim 8, wherein the CPU includes means for incrementing the first register storing the number of descriptors that are currently available in the descriptor queue when the CPU refills the descriptor queue, by an amount equal to the number of descriptors refilled.
Claim 12
Dependent Claim
42 words
The arrangement of claim 9, wherein the network controller includes means for decrementing the first register storing the number of descriptors that are currently available in the descriptor queue when the network controller obtains the currently available descriptors from the descriptor queue.
Claim 13
Dependent Claim
48 words
The arrangement of claim 10, wherein the network controller includes a descriptor FIFO that is maintained in a filled condition by the network controller with currently available descriptors from the descriptor queue as determined by the numbers in the first register and the address in the second register.
Claim 14
Dependent Claim
41 words
The arrangement of claim 11, wherein the memory further includes a reference table containing separate entries for storing information regarding each of the specific data buffers, the entries being accessed by the CPU through a different index for each data buffer.
Claim 15
Dependent Claim
28 words
The arrangement of claim 12, wherein the locations in the descriptor queue include storage for the indices of the data buffers with the descriptors of the data buffers.
Claim 16
Dependent Claim
28 words
The arrangement of claim 13, wherein the status entries in the receive status descriptor queue include storage for the indices of the data buffers with the status entries.
Claim 17
Dependent Claim
162 words
A multi-channel network controller for transferring data between a host system and external devices that are connected to the network controller by multiple channels, the host system having memory with data buffers, a descriptor queue and a receive status queue, the network controller comprising: a first register that maintains a number of descriptors that are currently available in the descriptor queue for use in a direct memory access (DMA) transfer; a second register that maintains an address of the location of the first descriptor of the currently available descriptors in the descriptor queue; a descriptor FIFO for temporarily storing currently available descriptors that are obtained from the descriptor queue; and a descriptor processor that controls obtaining the currently available descriptors from the descriptor queue for temporary storage in the descriptor FIFO, the descriptor processor retrieving as many currently available descriptors as possible to fill the descriptor FIFO, based on the number in the first register and the address in the second register.
Claim 18
Dependent Claim
162 words
A multi-channel network controller for transferring data between a host system and external devices that are connected to the network controller by multiple channels, the host system having memory with data buffers, a descriptor queue and a receive status queue, the network controller comprising: a first register that maintains a number of descriptors that are currently available in the descriptor queue for use in a direct memory access (DMA) transfer; a second register that maintains an address of the location of the first descriptor of the currently available descriptors in the descriptor queue; a descriptor FIFO for temporarily storing currently available descriptors that are obtained from the descriptor queue; and a descriptor processor that controls obtaining the currently available descriptors from the descriptor queue for temporary storage in the descriptor FIFO, the descriptor processor retrieving as many currently available descriptors as possible to fill the descriptor FIFO, based on the number in the first register and the address in the second register.
Claim 19
Dependent Claim
39 words
The device of claim 15, further comprising means for decrementing the first register storing the number of descriptors that are currently available in the descriptor queue when the network controller obtains the currently available descriptors from the descriptor queue.
Claim 20
Dependent Claim
30 words
The device of claim 16, further comprising a data FIFO that temporarily stores data received on the multiple channels until the data is stored in one of the data buffers.
Claim 21
Dependent Claim
32 words
The device of claim 17, further comprising a receive status FIFO that temporarily stores status entries to be written to the receive status queue after the data buffers are filled with data.