diff options
| author | Amit S. Kale <amitkale@netxen.com> | 2007-02-09 08:49:08 -0500 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2007-02-09 16:09:46 -0500 |
| commit | e45d9ab4051d99c9f237c96e75c4dd6671661236 (patch) | |
| tree | d148d2588da8964f66befbdbec166822fa16eb6a | |
| parent | 9b41011724024238c94b4c5469df11bb4fd3ba12 (diff) | |
NetXen: Updates for ethtool support
NetXen: Updates for ethtool support.
Signed-off-by: Amit S. Kale <amitkale@netxen.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
| -rw-r--r-- | drivers/net/netxen/netxen_nic.h | 1 | ||||
| -rw-r--r-- | drivers/net/netxen/netxen_nic_ethtool.c | 9 | ||||
| -rw-r--r-- | drivers/net/netxen/netxen_nic_init.c | 8 |
3 files changed, 14 insertions, 4 deletions
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h index 3f3896e98879..e021a30abd8d 100644 --- a/drivers/net/netxen/netxen_nic.h +++ b/drivers/net/netxen/netxen_nic.h | |||
| @@ -1040,6 +1040,7 @@ int netxen_flash_unlock(struct netxen_adapter *adapter); | |||
| 1040 | int netxen_backup_crbinit(struct netxen_adapter *adapter); | 1040 | int netxen_backup_crbinit(struct netxen_adapter *adapter); |
| 1041 | int netxen_flash_erase_secondary(struct netxen_adapter *adapter); | 1041 | int netxen_flash_erase_secondary(struct netxen_adapter *adapter); |
| 1042 | int netxen_flash_erase_primary(struct netxen_adapter *adapter); | 1042 | int netxen_flash_erase_primary(struct netxen_adapter *adapter); |
| 1043 | void netxen_halt_pegs(struct netxen_adapter *adapter); | ||
| 1043 | 1044 | ||
| 1044 | int netxen_rom_fast_write(struct netxen_adapter *adapter, int addr, int data); | 1045 | int netxen_rom_fast_write(struct netxen_adapter *adapter, int addr, int data); |
| 1045 | int netxen_rom_se(struct netxen_adapter *adapter, int addr); | 1046 | int netxen_rom_se(struct netxen_adapter *adapter, int addr); |
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c index cc0efe213e01..6252e9a87278 100644 --- a/drivers/net/netxen/netxen_nic_ethtool.c +++ b/drivers/net/netxen/netxen_nic_ethtool.c | |||
| @@ -402,7 +402,7 @@ netxen_nic_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) | |||
| 402 | wol->wolopts = 0; | 402 | wol->wolopts = 0; |
| 403 | } | 403 | } |
| 404 | 404 | ||
| 405 | static u32 netxen_nic_get_link(struct net_device *dev) | 405 | static u32 netxen_nic_test_link(struct net_device *dev) |
| 406 | { | 406 | { |
| 407 | struct netxen_port *port = netdev_priv(dev); | 407 | struct netxen_port *port = netdev_priv(dev); |
| 408 | struct netxen_adapter *adapter = port->adapter; | 408 | struct netxen_adapter *adapter = port->adapter; |
| @@ -459,6 +459,7 @@ netxen_nic_set_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom, | |||
| 459 | int ret; | 459 | int ret; |
| 460 | 460 | ||
| 461 | if (flash_start == 0) { | 461 | if (flash_start == 0) { |
| 462 | netxen_halt_pegs(adapter); | ||
| 462 | ret = netxen_flash_unlock(adapter); | 463 | ret = netxen_flash_unlock(adapter); |
| 463 | if (ret < 0) { | 464 | if (ret < 0) { |
| 464 | printk(KERN_ERR "%s: Flash unlock failed.\n", | 465 | printk(KERN_ERR "%s: Flash unlock failed.\n", |
| @@ -712,7 +713,7 @@ netxen_nic_diag_test(struct net_device *dev, struct ethtool_test *eth_test, | |||
| 712 | { | 713 | { |
| 713 | if (eth_test->flags == ETH_TEST_FL_OFFLINE) { /* offline tests */ | 714 | if (eth_test->flags == ETH_TEST_FL_OFFLINE) { /* offline tests */ |
| 714 | /* link test */ | 715 | /* link test */ |
| 715 | if (!(data[4] = (u64) netxen_nic_get_link(dev))) | 716 | if (!(data[4] = (u64) netxen_nic_test_link(dev))) |
| 716 | eth_test->flags |= ETH_TEST_FL_FAILED; | 717 | eth_test->flags |= ETH_TEST_FL_FAILED; |
| 717 | 718 | ||
| 718 | if (netif_running(dev)) | 719 | if (netif_running(dev)) |
| @@ -727,7 +728,7 @@ netxen_nic_diag_test(struct net_device *dev, struct ethtool_test *eth_test, | |||
| 727 | dev->open(dev); | 728 | dev->open(dev); |
| 728 | } else { /* online tests */ | 729 | } else { /* online tests */ |
| 729 | /* link test */ | 730 | /* link test */ |
| 730 | if (!(data[4] = (u64) netxen_nic_get_link(dev))) | 731 | if (!(data[4] = (u64) netxen_nic_test_link(dev))) |
| 731 | eth_test->flags |= ETH_TEST_FL_FAILED; | 732 | eth_test->flags |= ETH_TEST_FL_FAILED; |
| 732 | 733 | ||
| 733 | /* other tests pass by default */ | 734 | /* other tests pass by default */ |
| @@ -783,7 +784,7 @@ struct ethtool_ops netxen_nic_ethtool_ops = { | |||
| 783 | .get_regs_len = netxen_nic_get_regs_len, | 784 | .get_regs_len = netxen_nic_get_regs_len, |
| 784 | .get_regs = netxen_nic_get_regs, | 785 | .get_regs = netxen_nic_get_regs, |
| 785 | .get_wol = netxen_nic_get_wol, | 786 | .get_wol = netxen_nic_get_wol, |
| 786 | .get_link = netxen_nic_get_link, | 787 | .get_link = ethtool_op_get_link, |
| 787 | .get_eeprom_len = netxen_nic_get_eeprom_len, | 788 | .get_eeprom_len = netxen_nic_get_eeprom_len, |
| 788 | .get_eeprom = netxen_nic_get_eeprom, | 789 | .get_eeprom = netxen_nic_get_eeprom, |
| 789 | .set_eeprom = netxen_nic_set_eeprom, | 790 | .set_eeprom = netxen_nic_set_eeprom, |
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index c243c16fe546..2f324366784d 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c | |||
| @@ -717,6 +717,14 @@ netxen_flash_erase_primary(struct netxen_adapter *adapter) | |||
| 717 | return ret; | 717 | return ret; |
| 718 | } | 718 | } |
| 719 | 719 | ||
| 720 | void netxen_halt_pegs(struct netxen_adapter *adapter) | ||
| 721 | { | ||
| 722 | netxen_crb_writelit_adapter(adapter, NETXEN_CRB_PEG_NET_0 + 0x3c, 1); | ||
| 723 | netxen_crb_writelit_adapter(adapter, NETXEN_CRB_PEG_NET_1 + 0x3c, 1); | ||
| 724 | netxen_crb_writelit_adapter(adapter, NETXEN_CRB_PEG_NET_2 + 0x3c, 1); | ||
| 725 | netxen_crb_writelit_adapter(adapter, NETXEN_CRB_PEG_NET_3 + 0x3c, 1); | ||
| 726 | } | ||
| 727 | |||
| 720 | int netxen_flash_unlock(struct netxen_adapter *adapter) | 728 | int netxen_flash_unlock(struct netxen_adapter *adapter) |
| 721 | { | 729 | { |
| 722 | int ret = 0; | 730 | int ret = 0; |
