On Wed, Apr 03, 2002 at 10:45:09AM -0800, Greg KH wrote:
> [EMAIL PROTECTED], 2002-04-02 16:58:32-08:00, [EMAIL PROTECTED]
>   USB pegasus driver
>   
>   semaphore cleanup and proper link detection
> 
>  drivers/usb/pegasus.c |   16 +++++++---------
>  1 files changed, 7 insertions(+), 9 deletions(-)


# 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.306   -> 1.307  
#       drivers/usb/pegasus.c   1.13    -> 1.14   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/04/02      [EMAIL PROTECTED] 1.307
# USB pegasus driver
# 
# semaphore cleanup and proper link detection
# --------------------------------------------
#
diff -Nru a/drivers/usb/pegasus.c b/drivers/usb/pegasus.c
--- a/drivers/usb/pegasus.c     Wed Apr  3 10:48:01 2002
+++ b/drivers/usb/pegasus.c     Wed Apr  3 10:48:01 2002
@@ -484,14 +484,12 @@
        __u8    data[4];
        pegasus_t *pegasus = dev->priv;
 
-
-       if ( read_mii_word(pegasus, pegasus->phy, MII_BMSR, &bmsr) ) 
-               return 1;
-#if 0
-       if ( !(bmsr & 0x20) && !loopback ) 
+       /* read twice 'cos this is a latch bit */
+       read_mii_word(pegasus, pegasus->phy, MII_BMSR, &bmsr);
+       read_mii_word(pegasus, pegasus->phy, MII_BMSR, &bmsr);
+       if ( !(bmsr & 4) && !loopback ) 
                warn( "%s: link NOT established (0x%x) - check the cable.",
                        dev->name, bmsr );
-#endif
        if ( read_mii_word(pegasus, pegasus->phy, MII_LPA, &linkpart) )
                return 2;
        if ( !(linkpart & 1) )
@@ -1021,11 +1019,11 @@
                usb_free_urb (pegasus->rx_urb);
                usb_free_urb (pegasus->ctrl_urb);
                kfree( pegasus );
-               pegasus = NULL;
-               goto exit;
+               return NULL;
        }
 
        init_MUTEX(&pegasus->sem);
+       down(&pegasus->sem);
        pegasus->usb = dev;
        pegasus->net = net;
        SET_MODULE_OWNER(net);
@@ -1072,7 +1070,7 @@
        }
 
 exit:
-       up(&gsem);
+       up(&pegasus->sem);
        return pegasus;
 }
 

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

Reply via email to