|
@@ -816,11 +816,14 @@ static void mvneta_txq_pend_desc_add(struct mvneta_port *pp,
|
|
|
{
|
|
|
u32 val;
|
|
|
|
|
|
- /* Only 255 descriptors can be added at once ; Assume caller
|
|
|
- * process TX desriptors in quanta less than 256
|
|
|
- */
|
|
|
- val = pend_desc + txq->pending;
|
|
|
- mvreg_write(pp, MVNETA_TXQ_UPDATE_REG(txq->id), val);
|
|
|
+ pend_desc += txq->pending;
|
|
|
+
|
|
|
+ /* Only 255 Tx descriptors can be added at once */
|
|
|
+ do {
|
|
|
+ val = min(pend_desc, 255);
|
|
|
+ mvreg_write(pp, MVNETA_TXQ_UPDATE_REG(txq->id), val);
|
|
|
+ pend_desc -= val;
|
|
|
+ } while (pend_desc > 0);
|
|
|
txq->pending = 0;
|
|
|
}
|
|
|
|