|
@@ -71,6 +71,7 @@
|
|
|
|
|
|
struct net_local {
|
|
|
struct timer_list watchdog;
|
|
|
+ struct net_device *watchdog_dev;
|
|
|
|
|
|
spinlock_t lock;
|
|
|
struct sk_buff *rx_buf_p; /* receive buffer ptr */
|
|
@@ -128,7 +129,7 @@ static void send_frame( struct net_device * );
|
|
|
static int upload_data( struct net_device *,
|
|
|
unsigned, unsigned, unsigned, u32 );
|
|
|
static void download_data( struct net_device *, u32 * );
|
|
|
-static void sbni_watchdog( unsigned long );
|
|
|
+static void sbni_watchdog(struct timer_list *);
|
|
|
static void interpret_ack( struct net_device *, unsigned );
|
|
|
static int append_frame_to_pkt( struct net_device *, unsigned, u32 );
|
|
|
static void indicate_pkt( struct net_device * );
|
|
@@ -1029,11 +1030,10 @@ indicate_pkt( struct net_device *dev )
|
|
|
*/
|
|
|
|
|
|
static void
|
|
|
-sbni_watchdog( unsigned long arg )
|
|
|
+sbni_watchdog(struct timer_list *t)
|
|
|
{
|
|
|
- struct net_device *dev = (struct net_device *) arg;
|
|
|
- struct net_local *nl = netdev_priv(dev);
|
|
|
- struct timer_list *w = &nl->watchdog;
|
|
|
+ struct net_local *nl = from_timer(nl, t, watchdog);
|
|
|
+ struct net_device *dev = nl->watchdog_dev;
|
|
|
unsigned long flags;
|
|
|
unsigned char csr0;
|
|
|
|
|
@@ -1060,11 +1060,7 @@ sbni_watchdog( unsigned long arg )
|
|
|
|
|
|
outb( csr0 | RC_CHK, dev->base_addr + CSR0 );
|
|
|
|
|
|
- init_timer( w );
|
|
|
- w->expires = jiffies + SBNI_TIMEOUT;
|
|
|
- w->data = arg;
|
|
|
- w->function = sbni_watchdog;
|
|
|
- add_timer( w );
|
|
|
+ mod_timer(t, jiffies + SBNI_TIMEOUT);
|
|
|
|
|
|
spin_unlock_irqrestore( &nl->lock, flags );
|
|
|
}
|
|
@@ -1195,10 +1191,9 @@ handler_attached:
|
|
|
netif_start_queue( dev );
|
|
|
|
|
|
/* set timer watchdog */
|
|
|
- init_timer( w );
|
|
|
+ nl->watchdog_dev = dev;
|
|
|
+ timer_setup(w, sbni_watchdog, 0);
|
|
|
w->expires = jiffies + SBNI_TIMEOUT;
|
|
|
- w->data = (unsigned long) dev;
|
|
|
- w->function = sbni_watchdog;
|
|
|
add_timer( w );
|
|
|
|
|
|
spin_unlock( &nl->lock );
|