Patent ID: 7533154

Claim:
A system for transferring data between a host and a network using a shared memory, the system comprising: a plurality of data transfer queues in a shared memory, the individual data transfer queues comprising one or more descriptors indicating a memory buffer location storing the data to be transferred between the host and the network, and one or more entries, and the individual entries being associated with data, located in a memory buffer, to be transferred between the host and the network; and a network interface system coupled with the shared memory, the host, and the network, the network interface system comprising a descriptor management system storing a plurality of priority levels individually associated with one of the data transfer queues, wherein a first data transfer queue has a higher priority level than a second data transfer queue, and wherein the network interface system transfers data between the host and the network by transferring data associated with entries of the first data transfer queue before transferring data associated with entries of the second data transfer queue based on the priority levels of the first and second data queues; wherein the plurality of data transfer queues comprises a plurality of transmit descriptor rings in the shared memory, the individual transmit descriptor rings comprising a unique transmit priority level and one or more transmit descriptors, the transmit descriptors being associated with one or more data frames received from the host that are to be transferred to the network; wherein the descriptor management system comprises a plurality of counters individually corresponding to all but a highest priority transmit descriptor ring; wherein the network interface system transfers data associated with transmit descriptors of a particular transmit descriptor ring from the shared memory to the network if all data associated with transmit descriptors of higher priority transmit descriptor rings has been transferred or if a value of a counter corresponding to the particular transmit descriptor ring is greater than or equal to a threshold value associated with the particular transmit descriptor ring; wherein the descriptor management system clears the counter for the particular transmit descriptor ring when data associated with a transmit descriptor of the particular transmit descriptor ring is transferred from the shared memory to the network; and wherein the descriptor management system increments the counter for the particular transmit descriptor ring when a data frame associated with a transmit descriptor of a higher priority transmit descriptor ring is transferred from the shared memory to the network.