aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/netxen/netxen_nic.h1
-rw-r--r--drivers/net/netxen/netxen_nic_ethtool.c9
-rw-r--r--drivers/net/netxen/netxen_nic_init.c8
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);
1040int netxen_backup_crbinit(struct netxen_adapter *adapter); 1040int netxen_backup_crbinit(struct netxen_adapter *adapter);
1041int netxen_flash_erase_secondary(struct netxen_adapter *adapter); 1041int netxen_flash_erase_secondary(struct netxen_adapter *adapter);
1042int netxen_flash_erase_primary(struct netxen_adapter *adapter); 1042int netxen_flash_erase_primary(struct netxen_adapter *adapter);
1043void netxen_halt_pegs(struct netxen_adapter *adapter);
1043 1044
1044int netxen_rom_fast_write(struct netxen_adapter *adapter, int addr, int data); 1045int netxen_rom_fast_write(struct netxen_adapter *adapter, int addr, int data);
1045int netxen_rom_se(struct netxen_adapter *adapter, int addr); 1046int 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
405static u32 netxen_nic_get_link(struct net_device *dev) 405static 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
720void 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
720int netxen_flash_unlock(struct netxen_adapter *adapter) 728int netxen_flash_unlock(struct netxen_adapter *adapter)
721{ 729{
722 int ret = 0; 730 int ret = 0;