ChangeSet 1.1713.7.3, 2004/04/02 09:57:49-08:00, [EMAIL PROTECTED]

[PATCH] USB Gadget: ethernet/rndis gadget updates

This fixes an oops during "ifconfig usb0 down" after unplug
from a Windows box.  It also shrinks the driver size to something
much more reasonable by leaving out debug messaging, and adds
a few missing newlines.


 drivers/usb/gadget/ether.c |    6 +++++-
 drivers/usb/gadget/rndis.c |   22 ++++++++++++++--------
 2 files changed, 19 insertions(+), 9 deletions(-)


diff -Nru a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
--- a/drivers/usb/gadget/ether.c        Wed Apr 14 14:34:06 2004
+++ b/drivers/usb/gadget/ether.c        Wed Apr 14 14:34:06 2004
@@ -2033,7 +2033,11 @@
        u32                     length;
        struct usb_request      *resp;
        
-       /* RNDIS completion function */
+       /* in case RNDIS calls this after disconnect */
+       if (!dev->status_ep) {
+               DEBUG (dev, "status ENODEV\n");
+               return -ENODEV;
+       }
 
        /* Allocate memory for notification ie. ACK */
        resp = usb_ep_alloc_request (dev->status_ep, GFP_ATOMIC);
diff -Nru a/drivers/usb/gadget/rndis.c b/drivers/usb/gadget/rndis.c
--- a/drivers/usb/gadget/rndis.c        Wed Apr 14 14:34:06 2004
+++ b/drivers/usb/gadget/rndis.c        Wed Apr 14 14:34:06 2004
@@ -37,7 +37,16 @@
 #include "rndis.h"
 
 
+#if 0
 #define DEBUG if (rndis_debug) printk 
+static int rndis_debug = 0;
+
+MODULE_PARM (rndis_debug, "i");
+MODULE_PARM_DESC (rndis_debug, "enable debugging");
+
+#else
+#define DEBUG(str,args...) do{}while(0)
+#endif
 
 #define RNDIS_MAX_CONFIGS      1
 
@@ -45,10 +54,6 @@
 static struct proc_dir_entry *rndis_connect_state [RNDIS_MAX_CONFIGS];
 
 static rndis_params rndis_per_dev_params [RNDIS_MAX_CONFIGS];
-static int rndis_debug = 0;
-
-MODULE_PARM (rndis_debug, "i");
-MODULE_PARM_DESC (rndis_debug, "enable debugging");
 
 /* Driver Version */
 static const u32 rndis_driver_version = __constant_cpu_to_le32 (1);
@@ -1088,7 +1093,7 @@
 
 void rndis_deregister (int configNr)
 {
-       DEBUG("%s: ", __FUNCTION__ );
+       DEBUG("%s: \n", __FUNCTION__ );
        
        if (configNr >= RNDIS_MAX_CONFIGS) return;
        rndis_per_dev_params [configNr].used = 0;
@@ -1099,7 +1104,7 @@
 int rndis_set_param_dev (u8 configNr, struct net_device *dev, 
                         struct net_device_stats *stats)
 {
-       DEBUG("%s: ", __FUNCTION__ );
+       DEBUG("%s:\n", __FUNCTION__ );
        if (!dev || !stats) return -1;
        if (configNr >= RNDIS_MAX_CONFIGS) return -1;
        
@@ -1111,7 +1116,7 @@
 
 int rndis_set_param_vendor (u8 configNr, u32 vendorID, const char *vendorDescr)
 {
-       DEBUG("%s: ", __FUNCTION__ );
+       DEBUG("%s:\n", __FUNCTION__ );
        if (!vendorDescr) return -1;
        if (configNr >= RNDIS_MAX_CONFIGS) return -1;
        
@@ -1123,7 +1128,7 @@
 
 int rndis_set_param_medium (u8 configNr, u32 medium, u32 speed)
 {
-       DEBUG("%s: ", __FUNCTION__ );
+       DEBUG("%s:\n", __FUNCTION__ );
        if (configNr >= RNDIS_MAX_CONFIGS) return -1;
        
        rndis_per_dev_params [configNr].medium = medium;
@@ -1326,6 +1331,7 @@
                                sprintf (name, "%03d", i);
                                remove_proc_entry (name, rndis_connect_dir);
                        }
+                       DEBUG ("\n");
                        
                        remove_proc_entry ("000", rndis_connect_dir);
                        remove_proc_entry ("rndis", NULL);



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id70&alloc_id638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to