ndis: Add debug support to disable RNDIS Multipacket Feature
authorBadhri Jagan Sridharan <Badhri@google.com>
Thu, 18 Sep 2014 17:48:48 +0000 (10:48 -0700)
committerBadhri Jagan Sridharan <Badhri@google.com>
Thu, 25 Sep 2014 02:00:42 +0000 (19:00 -0700)
This change adds module param which allows to disable RNDIS
Multi-packet Feature (Aggregation support in Downlink path)
as this feature is enabled by default.

To disable use this param before moving to RNDIS Composition:
echo 1 > /sys/module/g_android/parameters/rndis_multipacket_dl_disable

Also counts errors as Rx errors if received RNDIS packets are
not following RNDIS message format as those packets are being
discarded.

Change-Id: I764430da78f2204af92e14bb279c11b24c7e4c67
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
drivers/usb/gadget/f_rndis.c
drivers/usb/gadget/u_ether.c

index 130efdfa7881437fb9ef26894d37430f21ce39cc..a0240195b46ace7c28a6db72ed9ad3eda81d5ac9 100644 (file)
@@ -477,6 +477,8 @@ static void rndis_command_complete(struct usb_ep *ep, struct usb_request *req)
                                __func__, buf->MaxTransferSize,
                                rndis->port.multi_pkt_xfer ? "enabled" :
                                                            "disabled");
+               if (rndis_multipacket_dl_disable)
+                       rndis->port.multi_pkt_xfer = 0;
        }
 //     spin_unlock(&dev->lock);
 }
index 9705c2bb15fb33821c80035f7bf008b1a5c5a24c..ff26f5c2d38e1d689c6e231c04974143dfbc510f 100644 (file)
@@ -292,6 +292,10 @@ static void rx_complete(struct usb_ep *ep, struct usb_request *req)
                                status = dev->unwrap(dev->port_usb,
                                                        skb,
                                                        &dev->rx_frames);
+                               if (status == -EINVAL)
+                                       dev->net->stats.rx_errors++;
+                               else if (status == -EOVERFLOW)
+                                       dev->net->stats.rx_over_errors++;
                        } else {
                                dev_kfree_skb_any(skb);
                                status = -ENOTCONN;