diff options
author | Amit S. Kale <amitkale@netxen.com> | 2006-12-18 08:53:36 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-12-26 16:46:05 -0500 |
commit | 6c5866441669ab71f6297556ea281a6bcbfd13db (patch) | |
tree | 6deccde9df7c483d8c2a0172b3a45b76d836c249 | |
parent | d2378e89720f364ccf3a57b26f1827923d3464f2 (diff) |
NetXen: work queue fixes.
Signed-off-by: Amit S. Kale <amitkale@netxen.com>
netxen_nic.h | 3 +--
netxen_nic_init.c | 2 +-
netxen_nic_main.c | 15 +++++++--------
3 files changed, 9 insertions(+), 11 deletions(-)
Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r-- | drivers/net/netxen/netxen_nic.h | 3 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_init.c | 2 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_main.c | 15 |
3 files changed, 9 insertions, 11 deletions
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h index 421a07425442..86dcd52683da 100644 --- a/drivers/net/netxen/netxen_nic.h +++ b/drivers/net/netxen/netxen_nic.h | |||
@@ -852,8 +852,6 @@ struct netxen_adapter { | |||
852 | spinlock_t tx_lock; | 852 | spinlock_t tx_lock; |
853 | spinlock_t lock; | 853 | spinlock_t lock; |
854 | struct work_struct watchdog_task; | 854 | struct work_struct watchdog_task; |
855 | struct work_struct tx_timeout_task; | ||
856 | struct net_device *netdev; | ||
857 | struct timer_list watchdog_timer; | 855 | struct timer_list watchdog_timer; |
858 | 856 | ||
859 | u32 curr_window; | 857 | u32 curr_window; |
@@ -949,6 +947,7 @@ struct netxen_port { | |||
949 | struct pci_dev *pdev; | 947 | struct pci_dev *pdev; |
950 | struct net_device_stats net_stats; | 948 | struct net_device_stats net_stats; |
951 | struct netxen_port_stats stats; | 949 | struct netxen_port_stats stats; |
950 | struct work_struct tx_timeout_task; | ||
952 | }; | 951 | }; |
953 | 952 | ||
954 | #define PCI_OFFSET_FIRST_RANGE(adapter, off) \ | 953 | #define PCI_OFFSET_FIRST_RANGE(adapter, off) \ |
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index 869725f0bb18..c147943a9f54 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c | |||
@@ -1023,7 +1023,7 @@ int netxen_process_cmd_ring(unsigned long data) | |||
1023 | && netif_carrier_ok(port->netdev)) | 1023 | && netif_carrier_ok(port->netdev)) |
1024 | && ((jiffies - port->netdev->trans_start) > | 1024 | && ((jiffies - port->netdev->trans_start) > |
1025 | port->netdev->watchdog_timeo)) { | 1025 | port->netdev->watchdog_timeo)) { |
1026 | SCHEDULE_WORK(&port->adapter->tx_timeout_task); | 1026 | SCHEDULE_WORK(&port->tx_timeout_task); |
1027 | } | 1027 | } |
1028 | 1028 | ||
1029 | last_consumer = get_next_index(last_consumer, | 1029 | last_consumer = get_next_index(last_consumer, |
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index 926ead774f58..bc08d21adc47 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
@@ -424,8 +424,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
424 | netdev->dev_addr); | 424 | netdev->dev_addr); |
425 | } | 425 | } |
426 | } | 426 | } |
427 | adapter->netdev = netdev; | 427 | INIT_WORK(&port->tx_timeout_task, netxen_tx_timeout_task); |
428 | INIT_WORK(&adapter->tx_timeout_task, netxen_tx_timeout_task); | ||
429 | netif_carrier_off(netdev); | 428 | netif_carrier_off(netdev); |
430 | netif_stop_queue(netdev); | 429 | netif_stop_queue(netdev); |
431 | 430 | ||
@@ -966,23 +965,23 @@ static void netxen_tx_timeout(struct net_device *netdev) | |||
966 | { | 965 | { |
967 | struct netxen_port *port = (struct netxen_port *)netdev_priv(netdev); | 966 | struct netxen_port *port = (struct netxen_port *)netdev_priv(netdev); |
968 | 967 | ||
969 | SCHEDULE_WORK(&port->adapter->tx_timeout_task); | 968 | SCHEDULE_WORK(&port->tx_timeout_task); |
970 | } | 969 | } |
971 | 970 | ||
972 | static void netxen_tx_timeout_task(struct work_struct *work) | 971 | static void netxen_tx_timeout_task(struct work_struct *work) |
973 | { | 972 | { |
974 | struct netxen_adapter *adapter = | 973 | struct netxen_port *port = |
975 | container_of(work, struct netxen_adapter, tx_timeout_task); | 974 | container_of(work, struct netxen_port, tx_timeout_task); |
976 | struct net_device *netdev = adapter->netdev; | 975 | struct net_device *netdev = port->netdev; |
977 | unsigned long flags; | 976 | unsigned long flags; |
978 | 977 | ||
979 | printk(KERN_ERR "%s %s: transmit timeout, resetting.\n", | 978 | printk(KERN_ERR "%s %s: transmit timeout, resetting.\n", |
980 | netxen_nic_driver_name, netdev->name); | 979 | netxen_nic_driver_name, netdev->name); |
981 | 980 | ||
982 | spin_lock_irqsave(&adapter->lock, flags); | 981 | spin_lock_irqsave(&port->adapter->lock, flags); |
983 | netxen_nic_close(netdev); | 982 | netxen_nic_close(netdev); |
984 | netxen_nic_open(netdev); | 983 | netxen_nic_open(netdev); |
985 | spin_unlock_irqrestore(&adapter->lock, flags); | 984 | spin_unlock_irqrestore(&port->adapter->lock, flags); |
986 | netdev->trans_start = jiffies; | 985 | netdev->trans_start = jiffies; |
987 | netif_wake_queue(netdev); | 986 | netif_wake_queue(netdev); |
988 | } | 987 | } |