static int loopback = 0;
static int mii_mode = 0;
static int multicast_filter_limit = 32;
-static DECLARE_MUTEX(gsem);
static struct usb_eth_dev usb_dev_id[] = {
#define PEGASUS_DEV(pn, vid, pid, flags) \
pegasus_t *pegasus = dev->priv;
- if ( read_mii_word(pegasus, pegasus->phy, MII_BMSR, &bmsr) )
- return 1;
- if ( !(bmsr & 0x20) && !loopback )
- warn( "%s: link NOT established (0x%x) - check the cable.",
+ 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 (%04x) - check the cable.",
dev->name, bmsr );
if ( read_mii_word(pegasus, pegasus->phy, MII_LPA, &linkpart) )
return 2;
err("usb_set_configuration() failed");
return NULL;
}
- down(&gsem);
if(!(pegasus = kmalloc(sizeof(struct pegasus), GFP_KERNEL))) {
err("out of memory allocating device structure");
- goto exit;
+ return NULL;
}
usb_inc_dev_use( dev );
pegasus->ctrl_urb = usb_alloc_urb(0, GFP_KERNEL);
if (!pegasus->ctrl_urb) {
kfree (pegasus);
- pegasus = NULL;
- goto exit;
+ return NULL;
}
pegasus->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
if (!pegasus->rx_urb) {
usb_free_urb (pegasus->ctrl_urb);
kfree (pegasus);
- pegasus = NULL;
- goto exit;
+ return NULL;
}
pegasus->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
if (!pegasus->tx_urb) {
usb_free_urb (pegasus->rx_urb);
usb_free_urb (pegasus->ctrl_urb);
kfree (pegasus);
- pegasus = NULL;
- goto exit;
+ return NULL;
}
pegasus->intr_urb = usb_alloc_urb(0, GFP_KERNEL);
if (!pegasus->intr_urb) {
usb_free_urb (pegasus->rx_urb);
usb_free_urb (pegasus->ctrl_urb);
kfree (pegasus);
- pegasus = NULL;
- goto exit;
+ return NULL;
}
net = init_etherdev( NULL, 0 );
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);
pegasus->phy = 1;
}
exit:
- up(&gsem);
+ up(&pegasus->sem);
return pegasus;
}