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)
commit482c9e798738dea847a5e5e0d20692fe80d48a76
tree737fc458762b7479380fc917c02ef3039bcee4ff
parent2b3f291bf98e7cbf76afd9b0c96c81df5f5890f9
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