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)
committerJohn Stultz <john.stultz@linaro.org>
Tue, 16 Feb 2016 21:52:05 +0000 (13:52 -0800)
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/function/f_rndis.c
drivers/usb/gadget/function/u_ether.c

index 07fad13f93d2fac141ee953f4f029f77778d5944..635bbbbd063952245e55c6a563926cbef8c390e4 100644 (file)
@@ -480,6 +480,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 25a77ce82caa95af62eb921b2fb570d84ffdf677..69bf03e046031fa739a388f43427ab40aaf1ac45 100644 (file)
@@ -296,6 +296,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;