Patent ID: 8782307

Claim:
A network switch, comprising: a plurality of ports configured to receive and transmit packets via (i) a storage area network and (ii) a local area network; a memory including (i) a first pool of buffers configured to store packets corresponding to the storage area network and (ii) a second pool of buffers configured to store packets corresponding to the local area network; a queue control module configured to allocate, to each of the plurality of ports, one or more buffers from the first pool of buffers to store packets corresponding to the storage area network, and allocate, to each of the plurality of ports, one or more buffers from the second pool of buffers to store packets corresponding to the local area network; a destination type module configured to determine whether a packet received via a first port of the plurality of ports is destined for (i) the storage area network or (ii) the local area network; a congestion analyzer module configured to determine, in response to the packet received via the first port being destined for the storage area network, whether (i) a buffer in the first pool of buffers allocated to the first port is full, and (ii) a size of the first pool of buffers and the second pool of buffers is to be adjusted; and an adjustment module configured to, in response to the congestion analyzer module determining that (i) the buffer in the first pool of buffers allocated to the first port is full and (ii) the size of the first pool of buffers and the second pool of buffers is to be adjusted, perform: a) not sending a control signal configured to stall flow of packets from the storage area network, and instead i) removing packets not yet transmitted from the buffers in the second pool of buffers to free up the buffers in the second pool of buffers, and ii) increasing the size of the first pool of buffers by allocating up to all of the buffers in the second pool of buffers to the first pool of buffers; wherein the congestion analyzer module is configured to determine, subsequent to the adjustment module increasing the size of the first pool of buffers by allocating up to all of the second pool of buffers to the first pool of buffers, whether the first pool of buffers is insufficient to store packets received from the storage area network; and after performing a), b) sending the control signal in response to the congestion analyzer module determining that the first pool of buffers is insufficient to store packets received from the storage area network, wherein the control signal is configured to stall flow of packets from the storage area network.