Merge branch 'master' into upstream
Conflicts: drivers/net/netxen/netxen_nic.h drivers/net/netxen/netxen_nic_main.c
This commit is contained in:
@@ -852,7 +852,8 @@ struct netxen_adapter {
|
||||
spinlock_t tx_lock;
|
||||
spinlock_t lock;
|
||||
struct work_struct watchdog_task;
|
||||
struct work_struct tx_timeout_task[NETXEN_MAX_PORTS];
|
||||
struct work_struct tx_timeout_task;
|
||||
struct net_device *netdev;
|
||||
struct timer_list watchdog_timer;
|
||||
|
||||
u32 curr_window;
|
||||
@@ -1071,7 +1072,7 @@ netxen_nic_do_ioctl(struct netxen_adapter *adapter, void *u_data,
|
||||
struct netxen_port *port);
|
||||
int netxen_nic_rx_has_work(struct netxen_adapter *adapter);
|
||||
int netxen_nic_tx_has_work(struct netxen_adapter *adapter);
|
||||
void netxen_watchdog_task(unsigned long v);
|
||||
void netxen_watchdog_task(struct work_struct *work);
|
||||
void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx,
|
||||
u32 ringid);
|
||||
void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter, u32 ctx,
|
||||
|
@@ -746,12 +746,13 @@ static inline int netxen_nic_check_temp(struct netxen_adapter *adapter)
|
||||
return rv;
|
||||
}
|
||||
|
||||
void netxen_watchdog_task(unsigned long v)
|
||||
void netxen_watchdog_task(struct work_struct *work)
|
||||
{
|
||||
int port_num;
|
||||
struct netxen_port *port;
|
||||
struct net_device *netdev;
|
||||
struct netxen_adapter *adapter = (struct netxen_adapter *)v;
|
||||
struct netxen_adapter *adapter =
|
||||
container_of(work, struct netxen_adapter, watchdog_task);
|
||||
|
||||
if (netxen_nic_check_temp(adapter))
|
||||
return;
|
||||
|
@@ -72,7 +72,7 @@ static int netxen_nic_open(struct net_device *netdev);
|
||||
static int netxen_nic_close(struct net_device *netdev);
|
||||
static int netxen_nic_xmit_frame(struct sk_buff *, struct net_device *);
|
||||
static void netxen_tx_timeout(struct net_device *netdev);
|
||||
static void netxen_tx_timeout_task(struct net_device *netdev);
|
||||
static void netxen_tx_timeout_task(struct work_struct *work);
|
||||
static void netxen_watchdog(unsigned long);
|
||||
static int netxen_handle_int(struct netxen_adapter *, struct net_device *);
|
||||
static int netxen_nic_ioctl(struct net_device *netdev,
|
||||
@@ -318,8 +318,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
adapter->ahw.xg_linkup = 0;
|
||||
adapter->watchdog_timer.function = &netxen_watchdog;
|
||||
adapter->watchdog_timer.data = (unsigned long)adapter;
|
||||
INIT_WORK(&adapter->watchdog_task,
|
||||
(void (*)(void *))netxen_watchdog_task, adapter);
|
||||
INIT_WORK(&adapter->watchdog_task, netxen_watchdog_task);
|
||||
adapter->ahw.pdev = pdev;
|
||||
adapter->proc_cmd_buf_counter = 0;
|
||||
adapter->ahw.revision_id = nx_p2_id;
|
||||
@@ -429,8 +428,8 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
netdev->dev_addr);
|
||||
}
|
||||
}
|
||||
INIT_WORK(adapter->tx_timeout_task + i,
|
||||
(void (*)(void *))netxen_tx_timeout_task, netdev);
|
||||
adapter->netdev = netdev;
|
||||
INIT_WORK(&adapter->tx_timeout_task, netxen_tx_timeout_task);
|
||||
netif_carrier_off(netdev);
|
||||
netif_stop_queue(netdev);
|
||||
|
||||
@@ -973,18 +972,20 @@ static void netxen_tx_timeout(struct net_device *netdev)
|
||||
SCHEDULE_WORK(port->adapter->tx_timeout_task + port->portnum);
|
||||
}
|
||||
|
||||
static void netxen_tx_timeout_task(struct net_device *netdev)
|
||||
static void netxen_tx_timeout_task(struct work_struct *work)
|
||||
{
|
||||
struct netxen_port *port = (struct netxen_port *)netdev_priv(netdev);
|
||||
struct netxen_adapter *adapter =
|
||||
container_of(work, struct netxen_adapter, tx_timeout_task);
|
||||
struct net_device *netdev = adapter->netdev;
|
||||
unsigned long flags;
|
||||
|
||||
printk(KERN_ERR "%s %s: transmit timeout, resetting.\n",
|
||||
netxen_nic_driver_name, netdev->name);
|
||||
|
||||
spin_lock_irqsave(&port->adapter->lock, flags);
|
||||
spin_lock_irqsave(&adapter->lock, flags);
|
||||
netxen_nic_close(netdev);
|
||||
netxen_nic_open(netdev);
|
||||
spin_unlock_irqrestore(&port->adapter->lock, flags);
|
||||
spin_unlock_irqrestore(&adapter->lock, flags);
|
||||
netdev->trans_start = jiffies;
|
||||
netif_wake_queue(netdev);
|
||||
}
|
||||
|
Reference in New Issue
Block a user