]> git.baikalelectronics.ru Git - kernel.git/commit
be2net: create/destroy rx-queues on interface open/close
authorSathya Perla <sathya.perla@emulex.com>
Wed, 29 Jun 2011 23:33:17 +0000 (23:33 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 1 Jul 2011 05:32:50 +0000 (22:32 -0700)
commit40d44d41124dcee541ad57b91361f1e98d90407e
tree737fc458762b7479380fc917c02ef3039bcee4ff
parent8bec74615108c6eb645a2a4c5332ca03a0ae58c5
be2net: create/destroy rx-queues on interface open/close

On some skews, the BE card sends pause frames (and not drop pkts) if there are
no more posted buffers available for packet reception.  This behaviour has a
side effect: When an interface is disabled, buffers are no longer posted on the
corresponding RX rings. All broadcast and multicast traffic being received on
the port will quickly fill up the PMEM and cause pause push back. As the PMEM
is shared by both the ports, all traffic being received on the other (enabled)
port also gets stalled.
The fix is to destroy RX rings when the interface is disabled. If there is no
RX ring match in the RXF lookup, the packets are discarded and so don't hog the
PMEM.
The RXQ creation cmd must now use MCC instead of MBOX as they are are called
post MCC queue creation.

Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/benet/be_cmds.c
drivers/net/benet/be_cmds.h
drivers/net/benet/be_main.c