summaryrefslogtreecommitdiff
path: root/packages/zd1211/zd1211-20050822
diff options
context:
space:
mode:
Diffstat (limited to 'packages/zd1211/zd1211-20050822')
-rw-r--r--packages/zd1211/zd1211-20050822/access_ok.patch11
-rw-r--r--packages/zd1211/zd1211-20050822/iwconfig-rate.patch126
-rw-r--r--packages/zd1211/zd1211-20050822/urb-async.patch82
3 files changed, 219 insertions, 0 deletions
diff --git a/packages/zd1211/zd1211-20050822/access_ok.patch b/packages/zd1211/zd1211-20050822/access_ok.patch
new file mode 100644
index 0000000000..95fbb592b0
--- /dev/null
+++ b/packages/zd1211/zd1211-20050822/access_ok.patch
@@ -0,0 +1,11 @@
+--- zd1211/src/zd1205.c.orig 2005-10-06 03:30:27.200837520 +0200
++++ zd1211/src/zd1205.c 2005-10-06 03:29:37.176442384 +0200
+@@ -4434,7 +4434,7 @@
+ { SIOCIWFIRSTPRIV + 0xD, 0, 0, "save_conf" },
+ };
+
+- err = verify_area(VERIFY_WRITE, wrq->u.data.pointer, sizeof(privtab));
++ err = access_ok(VERIFY_WRITE, wrq->u.data.pointer, sizeof(privtab));
+ if (err)
+ break;
+
diff --git a/packages/zd1211/zd1211-20050822/iwconfig-rate.patch b/packages/zd1211/zd1211-20050822/iwconfig-rate.patch
new file mode 100644
index 0000000000..c1cb634b1a
--- /dev/null
+++ b/packages/zd1211/zd1211-20050822/iwconfig-rate.patch
@@ -0,0 +1,126 @@
+--- zd1211/src/zd1205.c 7 Jun 2005 21:45:21 -0000 1.17
++++ zd1211/src/zd1205.c 24 Aug 2005 11:39:29 -0000
+@@ -3599,9 +3599,59 @@
+
+ }
+
++static const unsigned long zd1205_rates[] = {
++ /* RATE_1M, 0 */
++ 1000000,
++ /* RATE_2M, 1 */
++ 2000000,
++ /* RATE_5M, 2 */
++ 5500000,
++ /* RATE_11M, 3 */
++ 11000000,
++ /* RATE_6M, 4 */
++ 600000,
++ /* RATE_9M, 5 */
++ 9000000,
++ /* RATE_12M, 6 */
++ 12000000,
++ /* RATE_18M, 7 */
++ 18000000,
++ /* RATE_24M, 8 */
++ 24000000,
++ /* RATE_36M, 9 */
++ 36000000,
++ /* RATE_48M, 10 */
++ 48000000,
++ /* RATE_54M, 11 */
++ 54000000,
++};
++
++#define ZD1205_NRATES ((sizeof(zd1205_rates))/(sizeof(unsigned long)))
++
+ static int zd1205_ioctl_setrate(struct net_device *dev, struct iw_param *frq)
+ {
+- return 0;
++ struct zd1205_private *macp = dev->priv;
++ U8 rate;
++ if(frq->value < 0) {
++ /* Auto */
++ macp->bFixedRate = 0;
++ macp->AdapterMaxRate = RATE_54M;
++ return 0;
++ }
++ for(rate = 0; rate < ZD1205_NRATES; rate++)
++ if(zd1205_rates[rate] == frq->value) {
++ zd1205_lock(macp);
++ macp->bFixedRate = frq->fixed;
++ if(frq->fixed)
++ macp->cardSetting.FixedRate = rate;
++ else {
++ macp->AdapterMaxRate = rate;
++ macp->cardSetting.TxRate = rate;
++ }
++ zd1205_unlock(macp);
++ return 0;
++ }
++ return -EINVAL;
+ }
+
+ static int zd1205_ioctl_getrate(struct net_device *dev, struct iw_param *frq)
+@@ -3612,60 +3662,9 @@
+ frq->disabled = 0;
+ frq->value = 0;
+
+- switch(macp->cardSetting.CurrTxRate)
+- {
+- case RATE_1M:
+- frq->value = 1000000;
+- break;
+-
+- case RATE_2M:
+- frq->value = 2000000;
+- break;
+-
+- case RATE_5M:
+- frq->value = 5500000;
+- break;
+-
+- case RATE_11M:
+- frq->value = 11000000;
+- break;
+-
+- case RATE_6M:
+- frq->value = 600000;
+- break;
+-
+- case RATE_9M:
+- frq->value = 9000000;
+- break;
+-
+- case RATE_12M:
+- frq->value = 12000000;
+- break;
+-
+- case RATE_18M:
+- frq->value = 18000000;
+- break;
+-
+- case RATE_24M:
+- frq->value = 24000000;
+- break;
+-
+- case RATE_36M:
+- frq->value = 36000000;
+- break;
+-
+- case RATE_48M:
+- frq->value = 48000000;
+- break;
+-
+- case RATE_54M:
+- frq->value = 54000000;
+- break;
+-
+- default:
++ if(macp->cardSetting.CurrTxRate > ZD1205_NRATES)
+ return -EINVAL;
+- }
+-
++ frq->value = zd1205_rates[macp->cardSetting.CurrTxRate];
+ return 0;
+ }
+
diff --git a/packages/zd1211/zd1211-20050822/urb-async.patch b/packages/zd1211/zd1211-20050822/urb-async.patch
new file mode 100644
index 0000000000..cd1149e766
--- /dev/null
+++ b/packages/zd1211/zd1211-20050822/urb-async.patch
@@ -0,0 +1,82 @@
+--- zd1211/src/zd1211.c.orig 2005-03-27 22:47:35.000000000 +0200
++++ zd1211/src/zd1211.c 2005-10-06 02:53:23.380909536 +0200
+@@ -313,7 +313,6 @@
+ } else {
+ usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pBuffer, DataLen,zd1211_reg_cb, macp);
+ }
+- macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK;
+
+ if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) {
+ printk(KERN_ERR "zd1211: failed reg_urb\n");
+@@ -362,7 +361,6 @@
+ } else {
+ usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize,zd1211_reg_cb, macp);
+ }
+- macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK;
+ if ((ret = SUBMIT_URB(macp->reg_urb, memflags))) {
+ printk(KERN_ERR "zd1211: failed reg_urb\n");
+ zd1211_DumpErrorCode(macp, ret);
+@@ -426,7 +424,6 @@
+ } else {
+ usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize,zd1211_reg_cb, macp);
+ }
+- macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK;
+
+ if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) {
+ printk(KERN_ERR "zd1211: failed reg_urb\n");
+@@ -569,7 +566,6 @@
+ usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize,zd1211_reg_cb, macp);
+ }
+
+- macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK;
+ if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) {
+ printk(KERN_ERR "zd1211: failed reg_urb\n");
+ zd1211_DumpErrorCode(macp, ret);
+@@ -1240,7 +1236,6 @@
+ pRegBuffer, bufSize,
+ zd1211_reg_cb, macp);
+
+- macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK;
+
+ if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) {
+ printk(KERN_ERR "zd1211: failed rf reg_urb\n");
+@@ -1311,7 +1306,6 @@
+ return;
+
+ printk("%s: Tx timed out.\n", dev->name);
+- macp->tx_urb->transfer_flags |= URB_ASYNC_UNLINK;
+ USB_URB(macp->tx_urb);
+ }
+
+@@ -1384,7 +1378,6 @@
+ zd1211_intr_cb, macp);
+ #endif
+
+- macp->intr_urb->transfer_flags |= URB_ASYNC_UNLINK;
+
+ if ((res = SUBMIT_URB(macp->intr_urb, GFP_KERNEL))) {
+ printk(KERN_ERR "zd1211: failed intr_urb\n");
+@@ -1822,7 +1815,6 @@
+ macp->IntEPBuffer, MAX_EPINT_BUFFER,
+ zd1211_intr_cb, macp);
+
+- macp->intr_urb->transfer_flags |= URB_ASYNC_UNLINK;
+ status = SUBMIT_URB(macp->intr_urb, GFP_ATOMIC);
+
+ if (status)
+@@ -1916,7 +1908,6 @@
+ usb_rcvbulkpipe(macp->usb, EP_DATA_IN),
+ rx_buff, bufLen, zd1211_rx_comp_cb, macp);
+
+- macp->rx_urb->transfer_flags |= URB_ASYNC_UNLINK;
+ if ((res = SUBMIT_URB(macp->rx_urb, GFP_ATOMIC))) {
+ printk(KERN_ERR "zd1211: failed rx_urb\n");
+ zd1211_DumpErrorCode(macp, res);
+@@ -2024,7 +2015,6 @@
+ macp->tx_buff, TotalLength,zd1211_tx_comp_cb, macp);
+
+ macp->tx_urb->transfer_buffer_length = TotalLength;
+- macp->tx_urb->transfer_flags |= URB_ASYNC_UNLINK;
+ res = SUBMIT_URB(macp->tx_urb, GFP_ATOMIC);
+ if (res) {
+ printk("error in tx submit urb: %d", res);