主权项 |
1. A network switch comprising:
a first port configured to receive a first frame; a memory comprising (i) a plurality of first buffers available to store frames, and (ii) a plurality of second buffers reserved for the first port; a pointer module configured to store a plurality of first pointers for the plurality of first buffers; a reserve module comprising a first counter, wherein the reserve module is configured to (i) request from the pointer module some of the plurality of first pointers for the plurality of first buffers, and (ii) increment the first counter to count a number of pointers reserved for the first port, wherein pointers received from the pointer module by the reserve module are reserved for the first port and as a result the first buffers, pointed to by the pointers received from the pointer module at the reserve module, are no longer available and are included in the plurality of second buffers; an ingress module configured to (i) store the first frame in some of the plurality of second buffers, and (ii) determine a destination channel for the first frame, wherein the first counter is configured to be incremented for each of the plurality of second buffers used to store the first frame; a forwarding module configured to send the pointers for the some of the plurality of second buffers to a first output queue, wherein the output queue is connected to the destination channel; and an egress module configured to, (i) based on the pointers for the some of the plurality of second buffers in the first output queue, access the first frame in the memory, (ii) transmit the first frame on the destination channel, and (iii) release the pointers for the some of the plurality of second buffers to the pointer module, wherein the some of the plurality of second buffers, subsequent to being released, are available to store frames and are included in the plurality of first buffers, wherein the first counter is configured to be decremented for each of the pointers for the some of the plurality of second buffers released to the pointer module. |