]> git.hungrycats.org Git - linux/commitdiff
[PATCH] USB: pegasus link status fix
authorPetko Manolov <petkan@users.sourceforge.net>
Fri, 4 Apr 2003 08:14:20 +0000 (00:14 -0800)
committerGreg Kroah-Hartman <greg@kroah.com>
Fri, 4 Apr 2003 08:14:20 +0000 (00:14 -0800)
  fixed up the link status detection

drivers/usb/net/pegasus.c
drivers/usb/net/pegasus.h

index 65edcc990c4aaa0cb4819afe05ddf713e4f5903c..565efde4595f8b84afdcf62755dc6533bf540dfa 100644 (file)
@@ -45,7 +45,7 @@
 /*
  * Version Information
  */
-#define DRIVER_VERSION "v0.5.9 (2002/12/31)"
+#define DRIVER_VERSION "v0.5.10 (2003/04/01)"
 #define DRIVER_AUTHOR "Petko Manolov <petkan@users.sourceforge.net>"
 #define DRIVER_DESC "Pegasus/Pegasus II USB Ethernet driver"
 
@@ -121,7 +121,7 @@ static int get_registers(pegasus_t * pegasus, __u16 indx, __u16 size,
        char *buffer;
        DECLARE_WAITQUEUE(wait, current);
 
-       buffer = kmalloc(size, GFP_KERNEL);
+       buffer = kmalloc(size, GFP_DMA);
        if (!buffer) {
                warn("%s: looks like we're out of memory", __FUNCTION__);
                return -ENOMEM;
@@ -170,7 +170,7 @@ static int set_registers(pegasus_t * pegasus, __u16 indx, __u16 size,
        char *buffer;
        DECLARE_WAITQUEUE(wait, current);
 
-       buffer = kmalloc(size, GFP_KERNEL);
+       buffer = kmalloc(size, GFP_DMA);
        if (!buffer) {
                warn("%s: looks like we're out of memory", __FUNCTION__);
                return -ENOMEM;
@@ -218,7 +218,7 @@ static int set_register(pegasus_t * pegasus, __u16 indx, __u8 data)
        char *tmp;
        DECLARE_WAITQUEUE(wait, current);
 
-       tmp = kmalloc(1, GFP_KERNEL);
+       tmp = kmalloc(1, GFP_DMA);
        if (!tmp) {
                warn("%s: looks like we're out of memory", __FUNCTION__);
                return -ENOMEM;
@@ -711,11 +711,11 @@ static void intr_callback(struct urb *urb, struct pt_regs *regs)
                        pegasus->stats.tx_aborted_errors++;
                if (d[0] & LATE_COL)
                        pegasus->stats.tx_window_errors++;
-               if (d[0] & (NO_CARRIER | LOSS_CARRIER)) {
-                       pegasus->stats.tx_carrier_errors++;
-                       netif_carrier_off(net);
-               } else {
+               if (d[5] & LINK_STATUS) {
                        netif_carrier_on(net);
+               } else {
+                       pegasus->stats.tx_carrier_errors++;
+                       netif_carrier_off(net); 
                }
        }
 
index 4c3301b62c1c9d8f07246aac66457893934eded0..680c4bee7690a2f6b96253d35d08a8159536dc2b 100644 (file)
@@ -52,6 +52,8 @@
 #define        LOSS_CARRIER            0x08
 #define        JABBER_TIMEOUT          0x04
 
+#define        LINK_STATUS             0x01
+
 #define        PEGASUS_REQT_READ       0xc0
 #define        PEGASUS_REQT_WRITE      0x40
 #define        PEGASUS_REQ_GET_REGS    0xf0