Sfoglia il codice sorgente

be2net: Prevent CQ full condition for Lancer

Indicate to HW that the CQ is cleaned up before posting new RX buffers.
This prevents the HW to go into CQ full error condition.

Signed-off-by: Padmanabh Ratnakar <padmanabh.ratnakar@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Padmanabh Ratnakar 14 anni fa
parent
commit
9372cacb30
1 ha cambiato i file con 4 aggiunte e 4 eliminazioni
  1. 4 4
      drivers/net/ethernet/emulex/benet/be_main.c

+ 4 - 4
drivers/net/ethernet/emulex/benet/be_main.c

@@ -1905,6 +1905,8 @@ loop_continue:
 		be_rx_stats_update(rxo, rxcp);
 		be_rx_stats_update(rxo, rxcp);
 	}
 	}
 
 
+	be_cq_notify(adapter, rx_cq->id, false, work_done);
+
 	/* Refill the queue */
 	/* Refill the queue */
 	if (work_done && atomic_read(&rxo->q.used) < RX_FRAGS_REFILL_WM)
 	if (work_done && atomic_read(&rxo->q.used) < RX_FRAGS_REFILL_WM)
 		be_post_rx_frags(rxo, GFP_ATOMIC);
 		be_post_rx_frags(rxo, GFP_ATOMIC);
@@ -1912,10 +1914,8 @@ loop_continue:
 	/* All consumed */
 	/* All consumed */
 	if (work_done < budget) {
 	if (work_done < budget) {
 		napi_complete(napi);
 		napi_complete(napi);
-		be_cq_notify(adapter, rx_cq->id, true, work_done);
-	} else {
-		/* More to be consumed; continue with interrupts disabled */
-		be_cq_notify(adapter, rx_cq->id, false, work_done);
+		/* Arm CQ */
+		be_cq_notify(adapter, rx_cq->id, true, 0);
 	}
 	}
 	return work_done;
 	return work_done;
 }
 }