|
@@ -222,7 +222,13 @@ setup_for_next:
|
|
|
else
|
|
|
size = MWIFIEX_RX_DATA_BUF_SIZE;
|
|
|
|
|
|
- mwifiex_usb_submit_rx_urb(context, size);
|
|
|
+ if (card->rx_cmd_ep == context->ep) {
|
|
|
+ mwifiex_usb_submit_rx_urb(context, size);
|
|
|
+ } else {
|
|
|
+ context->skb = NULL;
|
|
|
+ if (atomic_read(&adapter->rx_pending) <= HIGH_RX_PENDING)
|
|
|
+ mwifiex_usb_submit_rx_urb(context, size);
|
|
|
+ }
|
|
|
|
|
|
return;
|
|
|
}
|
|
@@ -978,6 +984,20 @@ static int mwifiex_pm_wakeup_card(struct mwifiex_adapter *adapter)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static void mwifiex_usb_submit_rem_rx_urbs(struct mwifiex_adapter *adapter)
|
|
|
+{
|
|
|
+ struct usb_card_rec *card = (struct usb_card_rec *)adapter->card;
|
|
|
+ int i;
|
|
|
+ struct urb_context *ctx;
|
|
|
+
|
|
|
+ for (i = 0; i < MWIFIEX_RX_DATA_URB; i++) {
|
|
|
+ if (card->rx_data_list[i].skb)
|
|
|
+ continue;
|
|
|
+ ctx = &card->rx_data_list[i];
|
|
|
+ mwifiex_usb_submit_rx_urb(ctx, MWIFIEX_RX_DATA_BUF_SIZE);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static struct mwifiex_if_ops usb_ops = {
|
|
|
.register_dev = mwifiex_register_dev,
|
|
|
.unregister_dev = mwifiex_unregister_dev,
|
|
@@ -989,6 +1009,7 @@ static struct mwifiex_if_ops usb_ops = {
|
|
|
.cmdrsp_complete = mwifiex_usb_cmd_event_complete,
|
|
|
.event_complete = mwifiex_usb_cmd_event_complete,
|
|
|
.host_to_card = mwifiex_usb_host_to_card,
|
|
|
+ .submit_rem_rx_urbs = mwifiex_usb_submit_rem_rx_urbs,
|
|
|
};
|
|
|
|
|
|
/* This function initializes the USB driver module.
|