Commit eacac770 authored by Ivan Vecera's avatar Ivan Vecera Committed by Kamal Mostafa

bna: fix interrupts storm caused by erroneous packets

commit ade4dc3e upstream.

The commit "e29aa339 bna: Enable Multi Buffer RX" moved packets counter
increment from the beginning of the NAPI processing loop after the check
for erroneous packets so they are never accounted. This counter is used
to inform firmware about number of processed completions (packets).
As these packets are never acked the firmware fires IRQs for them again
and again.

Fixes: e29aa339 ("bna: Enable Multi Buffer RX")
Signed-off-by: default avatarIvan Vecera <ivecera@redhat.com>
Acked-by: default avatarRasesh Mody <rasesh.mody@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
parent 0ed9687b
...@@ -674,6 +674,7 @@ bnad_cq_process(struct bnad *bnad, struct bna_ccb *ccb, int budget) ...@@ -674,6 +674,7 @@ bnad_cq_process(struct bnad *bnad, struct bna_ccb *ccb, int budget)
if (!next_cmpl->valid) if (!next_cmpl->valid)
break; break;
} }
packets++;
/* TODO: BNA_CQ_EF_LOCAL ? */ /* TODO: BNA_CQ_EF_LOCAL ? */
if (unlikely(flags & (BNA_CQ_EF_MAC_ERROR | if (unlikely(flags & (BNA_CQ_EF_MAC_ERROR |
...@@ -690,7 +691,6 @@ bnad_cq_process(struct bnad *bnad, struct bna_ccb *ccb, int budget) ...@@ -690,7 +691,6 @@ bnad_cq_process(struct bnad *bnad, struct bna_ccb *ccb, int budget)
else else
bnad_cq_setup_skb_frags(rcb, skb, sop_ci, nvecs, len); bnad_cq_setup_skb_frags(rcb, skb, sop_ci, nvecs, len);
packets++;
rcb->rxq->rx_packets++; rcb->rxq->rx_packets++;
rcb->rxq->rx_bytes += totlen; rcb->rxq->rx_bytes += totlen;
ccb->bytes_per_intr += totlen; ccb->bytes_per_intr += totlen;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment