Hi guys,
Attached you'll find my last patches to pegasus.c
and pegasus.h files. It's good to double check them
before i send them to Linus.
Comments?
later,
Petko
PS: should apply clean to pre5
--- linux-2.4.5/drivers/usb/pegasus.c.orig Tue Jun 12 18:59:35 2001
+++ linux/drivers/usb/pegasus.c Tue Jun 12 19:02:04 2001
@@ -53,8 +53,8 @@
/*
* Version Information
*/
-#define DRIVER_VERSION "v0.4.18 2001/03/18 (C) 1999-2000"
-#define DRIVER_AUTHOR "Petko Manolov <[EMAIL PROTECTED]>"
+#define DRIVER_VERSION "v0.4.19 2001/06/07 (C) 1999-2001"
+#define DRIVER_AUTHOR "Petko Manolov <[EMAIL PROTECTED]>"
#define DRIVER_DESC "ADMtek AN986 Pegasus USB Ethernet driver"
#define PEGASUS_USE_INTR
@@ -117,8 +117,7 @@
warn( __FUNCTION__ " status %d", urb->status);
}
pegasus->flags &= ~ETH_REGS_CHANGED;
- if ( pegasus->flags & CTRL_URB_SLEEP ) {
- pegasus->flags &= ~CTRL_URB_SLEEP;
+ if ( waitqueue_active(&pegasus->ctrl_wait) ) {
wake_up_interruptible( &pegasus->ctrl_wait );
}
}
@@ -137,10 +136,9 @@
}
memcpy(buffer,data,size);
- while ( pegasus->flags & ETH_REGS_CHANGED ) {
- pegasus->flags |= CTRL_URB_SLEEP;
+ while ( pegasus->flags & ETH_REGS_CHANGED )
interruptible_sleep_on( &pegasus->ctrl_wait );
- }
+
pegasus->dr.requesttype = PEGASUS_REQT_READ;
pegasus->dr.request = PEGASUS_REQ_GET_REGS;
pegasus->dr.value = cpu_to_le16 (0);
@@ -155,7 +153,6 @@
add_wait_queue( &pegasus->ctrl_wait, &wait );
set_current_state( TASK_INTERRUPTIBLE );
- pegasus->flags |= CTRL_URB_SLEEP;
if ( (ret = usb_submit_urb( &pegasus->ctrl_urb )) ) {
err( __FUNCTION__ " BAD CTRLs %d", ret);
@@ -163,11 +160,12 @@
}
schedule();
- remove_wait_queue( &pegasus->ctrl_wait, &wait );
out:
+ remove_wait_queue( &pegasus->ctrl_wait, &wait );
memcpy(data,buffer,size);
kfree(buffer);
- return ret;
+
+ return ret;
}
@@ -184,10 +182,9 @@
}
memcpy(buffer, data, size);
- while ( pegasus->flags & ETH_REGS_CHANGED ) {
- pegasus->flags |= CTRL_URB_SLEEP ;
+ while ( pegasus->flags & ETH_REGS_CHANGED )
interruptible_sleep_on( &pegasus->ctrl_wait );
- }
+
pegasus->dr.requesttype = PEGASUS_REQT_WRITE;
pegasus->dr.request = PEGASUS_REQ_SET_REGS;
pegasus->dr.value = cpu_to_le16 (0);
@@ -202,19 +199,18 @@
add_wait_queue( &pegasus->ctrl_wait, &wait );
set_current_state( TASK_INTERRUPTIBLE );
- pegasus->flags |= CTRL_URB_SLEEP;
if ( (ret = usb_submit_urb( &pegasus->ctrl_urb )) ) {
err( __FUNCTION__ " BAD CTRL %d", ret);
- kfree(buffer);
- return ret;
+ goto out;
}
-
+
schedule();
+out:
remove_wait_queue( &pegasus->ctrl_wait, &wait );
-
kfree(buffer);
- return ret;
+
+ return ret;
}
@@ -232,10 +228,9 @@
}
memcpy(buffer, &data, 1);
- while ( pegasus->flags & ETH_REGS_CHANGED ) {
- pegasus->flags |= CTRL_URB_SLEEP;
+ while ( pegasus->flags & ETH_REGS_CHANGED )
interruptible_sleep_on( &pegasus->ctrl_wait );
- }
+
pegasus->dr.requesttype = PEGASUS_REQT_WRITE;
pegasus->dr.request = PEGASUS_REQ_SET_REG;
pegasus->dr.value = cpu_to_le16p( &dat);
@@ -250,19 +245,18 @@
add_wait_queue( &pegasus->ctrl_wait, &wait );
set_current_state( TASK_INTERRUPTIBLE );
- pegasus->flags |= CTRL_URB_SLEEP;
if ( (ret = usb_submit_urb( &pegasus->ctrl_urb )) ) {
err( __FUNCTION__ " BAD CTRL %d", ret);
- kfree(buffer);
- return ret;
+ goto out;
}
schedule();
+out:
remove_wait_queue( &pegasus->ctrl_wait, &wait );
-
kfree(buffer);
- return ret;
+
+ return ret;
}
@@ -451,7 +445,7 @@
return 1;
if ( usb_dev_id[pegasus->dev_index].vendor == VENDOR_LINKSYS ||
- usb_dev_id[pegasus->dev_index].vendor == VENDOR_DLINK1 ) {
+ usb_dev_id[pegasus->dev_index].vendor == VENDOR_DLINK ) {
__u16 auxmode;
read_mii_word( pegasus, 0, 0x1b, &auxmode );
@@ -797,7 +791,6 @@
} else {
pegasus->eth_regs[EthCtrl0] &= ~RX_MULTICAST;
pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
- info("%s: set Rx mode", net->name);
}
pegasus->flags |= ETH_REGS_CHANGE;
--- linux-2.4.5/drivers/usb/pegasus.h.orig Tue Jun 12 18:59:43 2001
+++ linux/drivers/usb/pegasus.h Tue Jun 12 19:00:08 2001
@@ -128,30 +128,51 @@
};
#define VENDOR_3COM 0x0506
-#define VENDOR_ACCTON 0x083a
-#define VENDOR_ADMTEK 0x07a6
-#define VENDOR_BILLIONTON 0x08dd
-#define VENDOR_COREGA 0x07aa
-#define VENDOR_DLINK1 0x2001
-#define VENDOR_DLINK2 0x07b8
-#define VENDOR_IODATA 0x04bb
-#define VENDOR_LANEED 0x056e
-#define VENDOR_LINKSYS 0x066b
-#define VENDOR_MELCO 0x0411
-#define VENDOR_SMARTBRIDGES 0x08d1
-#define VENDOR_SMC 0x0707
-#define VENDOR_SOHOWARE 0x15e8
+#define VENDOR_ABOCOM 0x07b8
+#define VENDOR_ACCTON 0x083a
+#define VENDOR_ADMTEK 0x07a6
+#define VENDOR_BILLIONTON 0x08dd
+#define VENDOR_COREGA 0x07aa
+#define VENDOR_DLINK 0x2001
+#define VENDOR_ELSA 0x05cc
+#define VENDOR_IODATA 0x04bb
+#define VENDOR_LANEED 0x056e
+#define VENDOR_LINKSYS 0x066b
+#define VENDOR_MELCO 0x0411
+#define VENDOR_SMARTBRIDGES 0x08d1
+#define VENDOR_SMC 0x0707
+#define VENDOR_SOHOWARE 0x15e8
#else /* PEGASUS_DEV */
PEGASUS_DEV( "3Com USB Ethernet 3C460B", VENDOR_3COM, 0x4601,
DEFAULT_GPIO_RESET | PEGASUS_II )
+PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x110c,
+ DEFAULT_GPIO_RESET | PEGASUS_II | HAS_HOME_PNA )
+PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4104,
+ DEFAULT_GPIO_RESET | HAS_HOME_PNA )
+PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4004,
+ DEFAULT_GPIO_RESET | HAS_HOME_PNA )
+PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4007,
+ DEFAULT_GPIO_RESET | HAS_HOME_PNA )
+PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x4102,
+ DEFAULT_GPIO_RESET | PEGASUS_II )
+PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x4002,
+ DEFAULT_GPIO_RESET )
+PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x400b,
+ DEFAULT_GPIO_RESET | PEGASUS_II )
+PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x400c,
+ DEFAULT_GPIO_RESET | PEGASUS_II )
+PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0xabc1,
+ DEFAULT_GPIO_RESET )
+PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x200c,
+ DEFAULT_GPIO_RESET | PEGASUS_II )
PEGASUS_DEV( "Accton USB 10/100 Ethernet Adapter", VENDOR_ACCTON, 0x1046,
DEFAULT_GPIO_RESET )
PEGASUS_DEV( "ADMtek ADM8511 \"Pegasus II\" USB Ethernet",
VENDOR_ADMTEK, 0x8511,
DEFAULT_GPIO_RESET | PEGASUS_II )
-PEGASUS_DEV( "ADMtek AN986 \"Pegasus\" USB Ethernet (eval board)",
+PEGASUS_DEV( "ADMtek AN986 \"Pegasus\" USB Ethernet (eval. board)",
VENDOR_ADMTEK, 0x0986,
DEFAULT_GPIO_RESET | HAS_HOME_PNA )
PEGASUS_DEV( "Billionton USB-100", VENDOR_BILLIONTON, 0x0986,
@@ -164,24 +185,32 @@
DEFAULT_GPIO_RESET | PEGASUS_II )
PEGASUS_DEV( "Corega FEter USB-TX", VENDOR_COREGA, 0x0004,
DEFAULT_GPIO_RESET )
-PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK1, 0x4001,
+PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x4001,
LINKSYS_GPIO_RESET )
-PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK1, 0x4002,
+PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x4002,
LINKSYS_GPIO_RESET )
-PEGASUS_DEV( "D-Link DSB-650TX(PNA)", VENDOR_DLINK1, 0x4003,
+PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x4102,
+ LINKSYS_GPIO_RESET | PEGASUS_II )
+PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x400b,
+ LINKSYS_GPIO_RESET | PEGASUS_II )
+PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x200c,
+ LINKSYS_GPIO_RESET | PEGASUS_II )
+PEGASUS_DEV( "D-Link DSB-650TX(PNA)", VENDOR_DLINK, 0x4003,
DEFAULT_GPIO_RESET | HAS_HOME_PNA )
-PEGASUS_DEV( "D-Link DSB-650", VENDOR_DLINK1, 0xabc1,
+PEGASUS_DEV( "D-Link DSB-650", VENDOR_DLINK, 0xabc1,
DEFAULT_GPIO_RESET )
-PEGASUS_DEV( "D-Link DU-E10", VENDOR_DLINK2, 0xabc1,
+PEGASUS_DEV( "Elsa Micolink USB2Ethernet", VENDOR_ELSA, 0x3000,
DEFAULT_GPIO_RESET )
-PEGASUS_DEV( "D-Link DU-E100", VENDOR_DLINK2, 0x4002,
- DEFAULT_GPIO_RESET )
-PEGASUS_DEV( "FiberLine USB", VENDOR_DLINK2, 0x4102,
- DEFAULT_GPIO_RESET | PEGASUS_II )
PEGASUS_DEV( "IO DATA USB ET/TX", VENDOR_IODATA, 0x0904,
DEFAULT_GPIO_RESET )
PEGASUS_DEV( "LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x4002,
DEFAULT_GPIO_RESET )
+PEGASUS_DEV( "LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x400b,
+ DEFAULT_GPIO_RESET | PEGASUS_II )
+PEGASUS_DEV( "LANEED USB Ethernet LD-USB/T", VENDOR_LANEED, 0xabc1,
+ DEFAULT_GPIO_RESET )
+PEGASUS_DEV( "LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x200c,
+ DEFAULT_GPIO_RESET | PEGASUS_II )
PEGASUS_DEV( "Linksys USB10TX", VENDOR_LINKSYS, 0x2202,
LINKSYS_GPIO_RESET )
PEGASUS_DEV( "Linksys USB100TX", VENDOR_LINKSYS, 0x2203,
@@ -190,8 +219,16 @@
LINKSYS_GPIO_RESET | HAS_HOME_PNA )
PEGASUS_DEV( "Linksys USB Ethernet Adapter", VENDOR_LINKSYS, 0x2206,
LINKSYS_GPIO_RESET )
+PEGASUS_DEV( "Linksys USB USB10TX", VENDOR_LINKSYS, 0x400b,
+ LINKSYS_GPIO_RESET | PEGASUS_II )
+PEGASUS_DEV( "Linksys USB10TX", VENDOR_LINKSYS, 0x200c,
+ LINKSYS_GPIO_RESET | PEGASUS_II )
PEGASUS_DEV( "MELCO/BUFFALO LUA-TX", VENDOR_MELCO, 0x0001,
DEFAULT_GPIO_RESET )
+PEGASUS_DEV( "MELCO/BUFFALO LUA-TX", VENDOR_MELCO, 0x0005,
+ DEFAULT_GPIO_RESET )
+PEGASUS_DEV( "MELCO/BUFFALO LUA2-TX", VENDOR_MELCO, 0x0009,
+ DEFAULT_GPIO_RESET | PEGASUS_II )
PEGASUS_DEV( "smartNIC 2 PnP Adapter", VENDOR_SMARTBRIDGES, 0x0003,
DEFAULT_GPIO_RESET | PEGASUS_II )
PEGASUS_DEV( "SMC 202 USB Ethernet", VENDOR_SMC, 0x0200,