usb: rmnet: Fix UL flow control with bam mux
Check flow control threshold before queuing packets to bam mux to
avoid packet overflow and resulting errors from bam mux
Change-Id: I6c1cf9d0f4b0f5a3f42eefef9687b517e84d0ace
Signed-off-by: Vamsi Krishna <vskrishn@codeaurora.org>
diff --git a/drivers/usb/gadget/u_bam.c b/drivers/usb/gadget/u_bam.c
index e37ddbf..1de8fc1 100644
--- a/drivers/usb/gadget/u_bam.c
+++ b/drivers/usb/gadget/u_bam.c
@@ -274,7 +274,13 @@
return;
}
- while ((skb = __skb_dequeue(&d->rx_skb_q))) {
+ while (!bam_mux_rx_fctrl_support ||
+ (d->pending_with_bam < bam_mux_rx_fctrl_en_thld)) {
+ skb = __skb_dequeue(&d->rx_skb_q);
+ if (!skb) {
+ spin_unlock_irqrestore(&port->port_lock, flags);
+ return;
+ }
d->pending_with_bam++;
d->to_modem++;