bnxt_en: Fix netpoll handling.
authorMichael Chan <michael.chan@broadcom.com>
Fri, 23 Jun 2017 18:01:01 +0000 (14:01 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 23 Jun 2017 18:48:27 +0000 (14:48 -0400)
commit2270bc5da34979454e6f2eb133d800b635156174
treee41c847ec1c2f797403d296ae53adbf44dd9d0ca
parent69c149e2e39e8d66437c9034bb4926ef2c1f7c23
bnxt_en: Fix netpoll handling.

To handle netpoll properly, the driver must only handle TX packets
during NAPI.  Handling RX events cause warnings and errors in
netpoll mode. The ndo_poll_controller() method should call
napi_schedule() directly so that a NAPI weight of zero will be used
during netpoll mode.

The bnxt_en driver supports 2 ring modes: combined, and separate rx/tx.
In separate rx/tx mode, the ndo_poll_controller() method will only
process the tx rings.  In combined mode, the rx and tx completion
entries are mixed in the completion ring and we need to drop the rx
entries and recycle the rx buffers.

Add a function bnxt_force_rx_discard() to handle this in netpoll mode
when we see rx entries in combined ring mode.

Reported-by: Calvin Owens <calvinowens@fb.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c