/drivers/usb/class/cdc-acm.c patch question, please cc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



using
2.6.18

quick version of this question:

how could i change line 1 to line 2 without breaking anything while
providing the
functionality of the patch i'm trying to apply?


	/* line 1  /drivers/usb/class/cdc-acm.c line 918
	readsize = le16_to_cpu(epread->wMaxPacketSize)* ( quirks ==
SINGLE_RX_URB ? 1 : 2);
	
       /* line 2
	readsize = (le16_to_cpu(epread->wMaxPacketSize) >
maxszr)?le16_to_cpu(epread->wMaxPacketSize):maxszr;





long version:

since 2.6.14 i have been applying the following patch and recompiling
my kernel so
that i can use my verizon kpc650 evdo card with my laptop.  I've
applied this patch
succesfully on 2.6.14 and 2.6.15.  It works great and I have no problems.  I am
trying to apply the patch to 2.6.18 but it fails, and i don't want to
break anything,
though I do need the functionality of the patch, since evdo is my only form of
internet(i live out in the sticks.) Without this patch, after setting
up the needed
config files, i can websurf, but if i try to download anything, the
connection closes.

The rest of this patch, other than the chunk of which this line is a part,
applies successfully.


ftp://ftp.sonic.net/pub/users/qm/PC5740/usb_bufsz_linux-2.6.14-ulmo
#################
--- ./drivers/usb/class/cdc-acm.c.~1~	2005-11-12 21:28:19.000000000 -0800
+++ ./drivers/usb/class/cdc-acm.c	2005-12-04 10:35:10.000000000 -0800
@@ -73,6 +73,7 @@
#define DRIVER_AUTHOR "Armin Fuerst, Pavel Machek, Johannes Erdfelt,
Vojtech Pavlik"
#define DRIVER_DESC "USB Abstract Control Model driver for USB modems
and ISDN adapters"

+static ushort maxszc = 0, maxszw = 0, maxszr = 0;
static struct usb_driver acm_driver;
static struct tty_driver *acm_tty_driver;
static struct acm *acm_table[ACM_TTY_MINORS];
@@ -833,9 +834,9 @@
	}
	memset(acm, 0, sizeof(struct acm));

-	ctrlsize = le16_to_cpu(epctrl->wMaxPacketSize);
-	readsize = le16_to_cpu(epread->wMaxPacketSize);
-	acm->writesize = le16_to_cpu(epwrite->wMaxPacketSize);
+	ctrlsize = (le16_to_cpu(epctrl->wMaxPacketSize) >
maxszc)?le16_to_cpu(epctrl->wMaxPacketSize):maxszc;
+	readsize = (le16_to_cpu(epread->wMaxPacketSize) >
maxszr)?le16_to_cpu(epread->wMaxPacketSize):maxszr;
+	acm->writesize = (le16_to_cpu(epwrite->wMaxPacketSize) >
maxszw)?le16_to_cpu(epwrite->wMaxPacketSize):maxszw;
	acm->control = control_interface;
	acm->data = data_interface;
	acm->minor = minor;
@@ -1084,4 +1085,9 @@
MODULE_AUTHOR( DRIVER_AUTHOR );
MODULE_DESCRIPTION( DRIVER_DESC );
MODULE_LICENSE("GPL");
-
+module_param(maxszc, ushort,0);
+MODULE_PARM_DESC(maxszc,"User specified USB endpoint control size");
+module_param(maxszr, ushort,0);
+MODULE_PARM_DESC(maxszr,"User specified USB endpoint read size");
+module_param(maxszw, ushort,0);
+MODULE_PARM_DESC(maxszw,"User specified USB endpoint write size");
--- ./drivers/usb/serial/usb-serial.c.~1~	2005-11-12 21:28:19.000000000 -0800
+++ ./drivers/usb/serial/usb-serial.c	2005-12-04 10:30:04.000000000 -0800
@@ -361,6 +361,7 @@
   drivers depend on it.
*/

+static ushort maxSize = 0;
static int debug;
static struct usb_serial *serial_table[SERIAL_TTY_MINORS];	/*
initially all NULL */
static LIST_HEAD(usb_serial_driver_list);
@@ -1061,7 +1062,7 @@
			dev_err(&interface->dev, "No free urbs available\n");
			goto probe_error;
		}
-		buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
+		buffer_size = (le16_to_cpu(endpoint->wMaxPacketSize) >
maxSize)?le16_to_cpu(endpoint->wMaxPacketSize):maxSize;
		port->bulk_in_size = buffer_size;
		port->bulk_in_endpointAddress = endpoint->bEndpointAddress;
		port->bulk_in_buffer = kmalloc (buffer_size, GFP_KERNEL);
@@ -1085,7 +1086,7 @@
			dev_err(&interface->dev, "No free urbs available\n");
			goto probe_error;
		}
-		buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
+		buffer_size = (le16_to_cpu(endpoint->wMaxPacketSize) >
maxSize)?le16_to_cpu(endpoint->wMaxPacketSize):maxSize;
		port->bulk_out_size = buffer_size;
		port->bulk_out_endpointAddress = endpoint->bEndpointAddress;
		port->bulk_out_buffer = kmalloc (buffer_size, GFP_KERNEL);
@@ -1110,7 +1111,7 @@
				dev_err(&interface->dev, "No free urbs available\n");
				goto probe_error;
			}
-			buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
+			buffer_size = (le16_to_cpu(endpoint->wMaxPacketSize) >
maxSize)?le16_to_cpu(endpoint->wMaxPacketSize):maxSize;
			port->interrupt_in_endpointAddress = endpoint->bEndpointAddress;
			port->interrupt_in_buffer = kmalloc (buffer_size, GFP_KERNEL);
			if (!port->interrupt_in_buffer) {
@@ -1137,7 +1138,7 @@
				dev_err(&interface->dev, "No free urbs available\n");
				goto probe_error;
			}
-			buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
+			buffer_size = (le16_to_cpu(endpoint->wMaxPacketSize) >
maxSize)?le16_to_cpu(endpoint->wMaxPacketSize):maxSize;
			port->interrupt_out_size = buffer_size;
			port->interrupt_out_endpointAddress = endpoint->bEndpointAddress;
			port->interrupt_out_buffer = kmalloc (buffer_size, GFP_KERNEL);
@@ -1434,3 +1435,5 @@

module_param(debug, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(debug, "Debug enabled or not");
+module_param(maxSize, ushort,0);
+MODULE_PARM_DESC(maxSize,"User specified USB endpoint size");
#################
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux