diff options
Diffstat (limited to 'drivers/net/s2io.c')
| -rw-r--r-- | drivers/net/s2io.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index fa57c49c0c51..f2ba944e035e 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c | |||
| @@ -84,7 +84,7 @@ | |||
| 84 | #include "s2io.h" | 84 | #include "s2io.h" |
| 85 | #include "s2io-regs.h" | 85 | #include "s2io-regs.h" |
| 86 | 86 | ||
| 87 | #define DRV_VERSION "2.0.26.10" | 87 | #define DRV_VERSION "2.0.26.17" |
| 88 | 88 | ||
| 89 | /* S2io Driver name & version. */ | 89 | /* S2io Driver name & version. */ |
| 90 | static char s2io_driver_name[] = "Neterion"; | 90 | static char s2io_driver_name[] = "Neterion"; |
| @@ -3848,8 +3848,6 @@ static int s2io_open(struct net_device *dev) | |||
| 3848 | netif_carrier_off(dev); | 3848 | netif_carrier_off(dev); |
| 3849 | sp->last_link_state = 0; | 3849 | sp->last_link_state = 0; |
| 3850 | 3850 | ||
| 3851 | napi_enable(&sp->napi); | ||
| 3852 | |||
| 3853 | if (sp->config.intr_type == MSI_X) { | 3851 | if (sp->config.intr_type == MSI_X) { |
| 3854 | int ret = s2io_enable_msi_x(sp); | 3852 | int ret = s2io_enable_msi_x(sp); |
| 3855 | 3853 | ||
| @@ -3892,7 +3890,6 @@ static int s2io_open(struct net_device *dev) | |||
| 3892 | return 0; | 3890 | return 0; |
| 3893 | 3891 | ||
| 3894 | hw_init_failed: | 3892 | hw_init_failed: |
| 3895 | napi_disable(&sp->napi); | ||
| 3896 | if (sp->config.intr_type == MSI_X) { | 3893 | if (sp->config.intr_type == MSI_X) { |
| 3897 | if (sp->entries) { | 3894 | if (sp->entries) { |
| 3898 | kfree(sp->entries); | 3895 | kfree(sp->entries); |
| @@ -3932,7 +3929,6 @@ static int s2io_close(struct net_device *dev) | |||
| 3932 | return 0; | 3929 | return 0; |
| 3933 | 3930 | ||
| 3934 | netif_stop_queue(dev); | 3931 | netif_stop_queue(dev); |
| 3935 | napi_disable(&sp->napi); | ||
| 3936 | /* Reset card, kill tasklet and free Tx and Rx buffers. */ | 3932 | /* Reset card, kill tasklet and free Tx and Rx buffers. */ |
| 3937 | s2io_card_down(sp); | 3933 | s2io_card_down(sp); |
| 3938 | 3934 | ||
| @@ -6796,6 +6792,8 @@ static void do_s2io_card_down(struct s2io_nic * sp, int do_io) | |||
| 6796 | struct XENA_dev_config __iomem *bar0 = sp->bar0; | 6792 | struct XENA_dev_config __iomem *bar0 = sp->bar0; |
| 6797 | unsigned long flags; | 6793 | unsigned long flags; |
| 6798 | register u64 val64 = 0; | 6794 | register u64 val64 = 0; |
| 6795 | struct config_param *config; | ||
| 6796 | config = &sp->config; | ||
| 6799 | 6797 | ||
| 6800 | if (!is_s2io_card_up(sp)) | 6798 | if (!is_s2io_card_up(sp)) |
| 6801 | return; | 6799 | return; |
| @@ -6807,6 +6805,10 @@ static void do_s2io_card_down(struct s2io_nic * sp, int do_io) | |||
| 6807 | } | 6805 | } |
| 6808 | clear_bit(__S2IO_STATE_CARD_UP, &sp->state); | 6806 | clear_bit(__S2IO_STATE_CARD_UP, &sp->state); |
| 6809 | 6807 | ||
| 6808 | /* Disable napi */ | ||
| 6809 | if (config->napi) | ||
| 6810 | napi_disable(&sp->napi); | ||
| 6811 | |||
| 6810 | /* disable Tx and Rx traffic on the NIC */ | 6812 | /* disable Tx and Rx traffic on the NIC */ |
| 6811 | if (do_io) | 6813 | if (do_io) |
| 6812 | stop_nic(sp); | 6814 | stop_nic(sp); |
| @@ -6900,6 +6902,11 @@ static int s2io_card_up(struct s2io_nic * sp) | |||
| 6900 | DBG_PRINT(INFO_DBG, "Buf in ring:%d is %d:\n", i, | 6902 | DBG_PRINT(INFO_DBG, "Buf in ring:%d is %d:\n", i, |
| 6901 | atomic_read(&sp->rx_bufs_left[i])); | 6903 | atomic_read(&sp->rx_bufs_left[i])); |
| 6902 | } | 6904 | } |
| 6905 | |||
| 6906 | /* Initialise napi */ | ||
| 6907 | if (config->napi) | ||
| 6908 | napi_enable(&sp->napi); | ||
| 6909 | |||
| 6903 | /* Maintain the state prior to the open */ | 6910 | /* Maintain the state prior to the open */ |
| 6904 | if (sp->promisc_flg) | 6911 | if (sp->promisc_flg) |
| 6905 | sp->promisc_flg = 0; | 6912 | sp->promisc_flg = 0; |
