# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.482   -> 1.483  
#       drivers/usb/net/kaweth.c        1.18    -> 1.19   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/06/13      [EMAIL PROTECTED]      1.483
# [PATCH] USB: saving memory on kaweth
# 
# this saves memory by making the buffer for firmware temporary.
# --------------------------------------------
#
diff -Nru a/drivers/usb/net/kaweth.c b/drivers/usb/net/kaweth.c
--- a/drivers/usb/net/kaweth.c  Fri Jun 14 14:15:31 2002
+++ b/drivers/usb/net/kaweth.c  Fri Jun 14 14:15:31 2002
@@ -75,6 +75,7 @@
 #define KAWETH_MTU                     1514
 #define KAWETH_BUF_SIZE                        1664
 #define KAWETH_TX_TIMEOUT              (5 * HZ)
+#define KAWETH_SCRATCH_SIZE            32
 #define KAWETH_FIRMWARE_BUF_SIZE       4096
 #define KAWETH_CONTROL_TIMEOUT         (30 * HZ)
 
@@ -220,7 +221,8 @@
        struct urb *tx_urb;
        struct urb *irq_urb;
 
-       __u8 firmware_buf[KAWETH_FIRMWARE_BUF_SIZE];
+       __u8 *firmware_buf;
+       __u8 scratch[KAWETH_SCRATCH_SIZE];
        __u8 tx_buf[KAWETH_BUF_SIZE];
        __u8 rx_buf[KAWETH_BUF_SIZE];
        __u8 intbuffer[INTBUFFERSIZE];
@@ -312,7 +314,7 @@
                                USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
                                urb_size,
                                0,
-                               (void *)&kaweth->firmware_buf,
+                               (void *)&kaweth->scratch,
                                0,
                                KAWETH_CONTROL_TIMEOUT);
 
@@ -334,7 +336,7 @@
                                USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
                                sofs_wait,
                                0,
-                               (void *)&kaweth->firmware_buf,
+                               (void *)&kaweth->scratch,
                                0,
                                KAWETH_CONTROL_TIMEOUT);
 
@@ -357,7 +359,7 @@
                                USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
                                receive_filter,
                                0,
-                               (void *)&kaweth->firmware_buf,
+                               (void *)&kaweth->scratch,
                                0,
                                KAWETH_CONTROL_TIMEOUT);
 
@@ -399,7 +401,7 @@
                              USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
                              0,
                              0,
-                             (void *)&kaweth->firmware_buf,
+                             (void *)kaweth->firmware_buf,
                              data_len,
                              KAWETH_CONTROL_TIMEOUT);
 }
@@ -427,7 +429,7 @@
                              USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
                              0,
                              0,
-                             (void *)&kaweth->firmware_buf,
+                             (void *)kaweth->firmware_buf,
                              8,
                              KAWETH_CONTROL_TIMEOUT);
 }
@@ -755,7 +757,7 @@
                                USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
                                packet_filter_bitmap,
                                0,
-                               (void *)&kaweth->firmware_buf,
+                               (void *)&kaweth->scratch,
                                0,
                                KAWETH_CONTROL_TIMEOUT);
 
@@ -840,12 +842,14 @@
        } else {
                /* Download the firmware */
                kaweth_info("Downloading firmware...");
+               kaweth->firmware_buf = (__u8 *)__get_free_page(GFP_KERNEL);
                if ((result = kaweth_download_firmware(kaweth,
                                                      kaweth_new_code,
                                                      len_kaweth_new_code,
                                                      100,
                                                      2)) < 0) {
                        kaweth_err("Error downloading firmware (%d)", result);
+                       free_page((unsigned long)kaweth->firmware_buf);
                        kfree(kaweth);
                        return NULL;
                }
@@ -856,6 +860,7 @@
                                                      100,
                                                      3)) < 0) {
                        kaweth_err("Error downloading firmware fix (%d)", result);
+                       free_page((unsigned long)kaweth->firmware_buf);
                        kfree(kaweth);
                        return NULL;
                }
@@ -866,6 +871,7 @@
                                                      126,
                                                      2)) < 0) {
                        kaweth_err("Error downloading trigger code (%d)", result);
+                       free_page((unsigned long)kaweth->firmware_buf);
                        kfree(kaweth);
                        return NULL;
                }
@@ -876,6 +882,7 @@
                                                      126,
                                                      3)) < 0) {
                        kaweth_err("Error downloading trigger code fix (%d)", result);
+                       free_page((unsigned long)kaweth->firmware_buf);
                        kfree(kaweth);
                        return NULL;
                }
@@ -883,12 +890,14 @@
 
                if ((result = kaweth_trigger_firmware(kaweth, 126)) < 0) {
                        kaweth_err("Error triggering firmware (%d)", result);
+                       free_page((unsigned long)kaweth->firmware_buf);
                        kfree(kaweth);
                        return NULL;
                }
 
                /* Device will now disappear for a moment...  */
                kaweth_info("Firmware loaded.  I'll be back...");
+               free_page((unsigned long)kaweth->firmware_buf);
                kfree(kaweth);
                return NULL;
        }

_______________________________________________________________

Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas - 
http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to