aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajesh Borundia <rajesh.borundia@qlogic.com>2010-08-31 13:17:46 -0400
committerDavid S. Miller <davem@davemloft.net>2010-09-01 13:41:54 -0400
commitda48e6c362d24d324f36a780d8566109e5f5a1d7 (patch)
treee135b5667ae6765abb3b6e4daaa06b0972a98b62
parent2cffcdbf7670980d4d74e2daea8a6cc0729902b8 (diff)
qlcnic: fix mac addr read
o Mac addr was read from flash for every fw reset for Non-priviledge function.It should be read only once. o Remove unnecessary get_mac_addr callback Signed-off-by: Rajesh Borundia <rajesh.borundia@qlogic.com> Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/qlcnic/qlcnic.h2
-rw-r--r--drivers/net/qlcnic/qlcnic_hw.c13
-rw-r--r--drivers/net/qlcnic/qlcnic_main.c28
3 files changed, 13 insertions, 30 deletions
diff --git a/drivers/net/qlcnic/qlcnic.h b/drivers/net/qlcnic/qlcnic.h
index 74eff18fc1ec..220370fac726 100644
--- a/drivers/net/qlcnic/qlcnic.h
+++ b/drivers/net/qlcnic/qlcnic.h
@@ -1259,7 +1259,6 @@ int qlcnic_config_bridged_mode(struct qlcnic_adapter *adapter, u32 enable);
1259int qlcnic_send_lro_cleanup(struct qlcnic_adapter *adapter); 1259int qlcnic_send_lro_cleanup(struct qlcnic_adapter *adapter);
1260void qlcnic_update_cmd_producer(struct qlcnic_adapter *adapter, 1260void qlcnic_update_cmd_producer(struct qlcnic_adapter *adapter,
1261 struct qlcnic_host_tx_ring *tx_ring); 1261 struct qlcnic_host_tx_ring *tx_ring);
1262int qlcnic_get_mac_addr(struct qlcnic_adapter *adapter, u8 *mac);
1263void qlcnic_clear_ilb_mode(struct qlcnic_adapter *adapter); 1262void qlcnic_clear_ilb_mode(struct qlcnic_adapter *adapter);
1264int qlcnic_set_ilb_mode(struct qlcnic_adapter *adapter); 1263int qlcnic_set_ilb_mode(struct qlcnic_adapter *adapter);
1265void qlcnic_fetch_mac(struct qlcnic_adapter *, u32, u32, u8, u8 *); 1264void qlcnic_fetch_mac(struct qlcnic_adapter *, u32, u32, u8, u8 *);
@@ -1346,7 +1345,6 @@ static inline u32 qlcnic_tx_avail(struct qlcnic_host_tx_ring *tx_ring)
1346extern const struct ethtool_ops qlcnic_ethtool_ops; 1345extern const struct ethtool_ops qlcnic_ethtool_ops;
1347 1346
1348struct qlcnic_nic_template { 1347struct qlcnic_nic_template {
1349 int (*get_mac_addr) (struct qlcnic_adapter *, u8*);
1350 int (*config_bridged_mode) (struct qlcnic_adapter *, u32); 1348 int (*config_bridged_mode) (struct qlcnic_adapter *, u32);
1351 int (*config_led) (struct qlcnic_adapter *, u32, u32); 1349 int (*config_led) (struct qlcnic_adapter *, u32, u32);
1352 int (*start_firmware) (struct qlcnic_adapter *); 1350 int (*start_firmware) (struct qlcnic_adapter *);
diff --git a/drivers/net/qlcnic/qlcnic_hw.c b/drivers/net/qlcnic/qlcnic_hw.c
index 5e6f4864df94..670a54a84ba6 100644
--- a/drivers/net/qlcnic/qlcnic_hw.c
+++ b/drivers/net/qlcnic/qlcnic_hw.c
@@ -715,19 +715,6 @@ int qlcnic_change_mtu(struct net_device *netdev, int mtu)
715 return rc; 715 return rc;
716} 716}
717 717
718int qlcnic_get_mac_addr(struct qlcnic_adapter *adapter, u8 *mac)
719{
720 u32 crbaddr;
721 int pci_func = adapter->ahw.pci_func;
722
723 crbaddr = CRB_MAC_BLOCK_START +
724 (4 * ((pci_func/2) * 3)) + (4 * (pci_func & 1));
725
726 qlcnic_fetch_mac(adapter, crbaddr, crbaddr+4, pci_func & 1, mac);
727
728 return 0;
729}
730
731/* 718/*
732 * Changes the CRB window to the specified window. 719 * Changes the CRB window to the specified window.
733 */ 720 */
diff --git a/drivers/net/qlcnic/qlcnic_main.c b/drivers/net/qlcnic/qlcnic_main.c
index 771a160b88c1..3f2f93b1a9fe 100644
--- a/drivers/net/qlcnic/qlcnic_main.c
+++ b/drivers/net/qlcnic/qlcnic_main.c
@@ -322,7 +322,7 @@ qlcnic_read_mac_addr(struct qlcnic_adapter *adapter)
322 struct net_device *netdev = adapter->netdev; 322 struct net_device *netdev = adapter->netdev;
323 struct pci_dev *pdev = adapter->pdev; 323 struct pci_dev *pdev = adapter->pdev;
324 324
325 if (adapter->nic_ops->get_mac_addr(adapter, mac_addr) != 0) 325 if (qlcnic_get_mac_address(adapter, mac_addr) != 0)
326 return -EIO; 326 return -EIO;
327 327
328 memcpy(netdev->dev_addr, mac_addr, ETH_ALEN); 328 memcpy(netdev->dev_addr, mac_addr, ETH_ALEN);
@@ -378,14 +378,12 @@ static const struct net_device_ops qlcnic_netdev_ops = {
378}; 378};
379 379
380static struct qlcnic_nic_template qlcnic_ops = { 380static struct qlcnic_nic_template qlcnic_ops = {
381 .get_mac_addr = qlcnic_get_mac_address,
382 .config_bridged_mode = qlcnic_config_bridged_mode, 381 .config_bridged_mode = qlcnic_config_bridged_mode,
383 .config_led = qlcnic_config_led, 382 .config_led = qlcnic_config_led,
384 .start_firmware = qlcnic_start_firmware 383 .start_firmware = qlcnic_start_firmware
385}; 384};
386 385
387static struct qlcnic_nic_template qlcnic_vf_ops = { 386static struct qlcnic_nic_template qlcnic_vf_ops = {
388 .get_mac_addr = qlcnic_get_mac_address,
389 .config_bridged_mode = qlcnicvf_config_bridged_mode, 387 .config_bridged_mode = qlcnicvf_config_bridged_mode,
390 .config_led = qlcnicvf_config_led, 388 .config_led = qlcnicvf_config_led,
391 .start_firmware = qlcnicvf_start_firmware 389 .start_firmware = qlcnicvf_start_firmware
@@ -668,7 +666,6 @@ static void
668qlcnic_check_options(struct qlcnic_adapter *adapter) 666qlcnic_check_options(struct qlcnic_adapter *adapter)
669{ 667{
670 u32 fw_major, fw_minor, fw_build; 668 u32 fw_major, fw_minor, fw_build;
671 char brd_name[QLCNIC_MAX_BOARD_NAME_LEN];
672 struct pci_dev *pdev = adapter->pdev; 669 struct pci_dev *pdev = adapter->pdev;
673 struct qlcnic_info nic_info; 670 struct qlcnic_info nic_info;
674 671
@@ -678,17 +675,6 @@ qlcnic_check_options(struct qlcnic_adapter *adapter)
678 675
679 adapter->fw_version = QLCNIC_VERSION_CODE(fw_major, fw_minor, fw_build); 676 adapter->fw_version = QLCNIC_VERSION_CODE(fw_major, fw_minor, fw_build);
680 677
681 if (!(adapter->flags & QLCNIC_ADAPTER_INITIALIZED))
682 if (qlcnic_read_mac_addr(adapter))
683 dev_warn(&pdev->dev, "failed to read mac addr\n");
684 if (adapter->portnum == 0) {
685 get_brd_name(adapter, brd_name);
686
687 pr_info("%s: %s Board Chip rev 0x%x\n",
688 module_name(THIS_MODULE),
689 brd_name, adapter->ahw.revision_id);
690 }
691
692 dev_info(&pdev->dev, "firmware v%d.%d.%d\n", 678 dev_info(&pdev->dev, "firmware v%d.%d.%d\n",
693 fw_major, fw_minor, fw_build); 679 fw_major, fw_minor, fw_build);
694 680
@@ -1468,6 +1454,7 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1468 int err; 1454 int err;
1469 uint8_t revision_id; 1455 uint8_t revision_id;
1470 uint8_t pci_using_dac; 1456 uint8_t pci_using_dac;
1457 char brd_name[QLCNIC_MAX_BOARD_NAME_LEN];
1471 1458
1472 err = pci_enable_device(pdev); 1459 err = pci_enable_device(pdev);
1473 if (err) 1460 if (err)
@@ -1535,6 +1522,17 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1535 goto err_out_decr_ref; 1522 goto err_out_decr_ref;
1536 } 1523 }
1537 1524
1525 if (qlcnic_read_mac_addr(adapter))
1526 dev_warn(&pdev->dev, "failed to read mac addr\n");
1527
1528 if (adapter->portnum == 0) {
1529 get_brd_name(adapter, brd_name);
1530
1531 pr_info("%s: %s Board Chip rev 0x%x\n",
1532 module_name(THIS_MODULE),
1533 brd_name, adapter->ahw.revision_id);
1534 }
1535
1538 qlcnic_clear_stats(adapter); 1536 qlcnic_clear_stats(adapter);
1539 1537
1540 qlcnic_setup_intr(adapter); 1538 qlcnic_setup_intr(adapter);