Lines Matching refs:adapter

318 qlcnic_pcie_sem_lock(struct qlcnic_adapter *adapter, int sem, u32 id_reg)  in qlcnic_pcie_sem_lock()  argument
323 done = QLCRD32(adapter, QLCNIC_PCIE_REG(PCIE_SEM_LOCK(sem)), in qlcnic_pcie_sem_lock()
329 done = QLCRD32(adapter, id_reg, &err); in qlcnic_pcie_sem_lock()
331 dev_err(&adapter->pdev->dev, in qlcnic_pcie_sem_lock()
335 dev_err(&adapter->pdev->dev, in qlcnic_pcie_sem_lock()
339 dev_err(&adapter->pdev->dev, in qlcnic_pcie_sem_lock()
348 QLCWR32(adapter, id_reg, adapter->portnum); in qlcnic_pcie_sem_lock()
354 qlcnic_pcie_sem_unlock(struct qlcnic_adapter *adapter, int sem) in qlcnic_pcie_sem_unlock() argument
358 QLCRD32(adapter, QLCNIC_PCIE_REG(PCIE_SEM_UNLOCK(sem)), &err); in qlcnic_pcie_sem_unlock()
361 int qlcnic_ind_rd(struct qlcnic_adapter *adapter, u32 addr) in qlcnic_ind_rd() argument
366 if (qlcnic_82xx_check(adapter)) in qlcnic_ind_rd()
367 qlcnic_read_window_reg(addr, adapter->ahw->pci_base0, &data); in qlcnic_ind_rd()
369 data = QLCRD32(adapter, addr, &err); in qlcnic_ind_rd()
376 int qlcnic_ind_wr(struct qlcnic_adapter *adapter, u32 addr, u32 data) in qlcnic_ind_wr() argument
380 if (qlcnic_82xx_check(adapter)) in qlcnic_ind_wr()
381 qlcnic_write_window_reg(addr, adapter->ahw->pci_base0, data); in qlcnic_ind_wr()
383 ret = qlcnic_83xx_wrt_reg_indirect(adapter, addr, data); in qlcnic_ind_wr()
389 qlcnic_send_cmd_descs(struct qlcnic_adapter *adapter, in qlcnic_send_cmd_descs() argument
399 if (!test_bit(__QLCNIC_FW_ATTACHED, &adapter->state)) in qlcnic_send_cmd_descs()
402 tx_ring = &adapter->tx_ring[0]; in qlcnic_send_cmd_descs()
414 adapter->stats.xmit_off++; in qlcnic_send_cmd_descs()
444 int qlcnic_82xx_sre_macaddr_change(struct qlcnic_adapter *adapter, u8 *addr, in qlcnic_82xx_sre_macaddr_change() argument
455 word = QLCNIC_MAC_EVENT | ((u64)adapter->portnum << 16); in qlcnic_82xx_sre_macaddr_change()
465 return qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in qlcnic_82xx_sre_macaddr_change()
468 int qlcnic_nic_del_mac(struct qlcnic_adapter *adapter, const u8 *addr) in qlcnic_nic_del_mac() argument
475 list_for_each(head, &adapter->mac_list) { in qlcnic_nic_del_mac()
478 err = qlcnic_sre_macaddr_change(adapter, cur->mac_addr, in qlcnic_nic_del_mac()
490 int qlcnic_nic_add_mac(struct qlcnic_adapter *adapter, const u8 *addr, u16 vlan, in qlcnic_nic_add_mac() argument
497 list_for_each(head, &adapter->mac_list) { in qlcnic_nic_add_mac()
510 if (qlcnic_sre_macaddr_change(adapter, in qlcnic_nic_add_mac()
519 list_add_tail(&cur->list, &adapter->mac_list); in qlcnic_nic_add_mac()
523 void qlcnic_flush_mcast_mac(struct qlcnic_adapter *adapter) in qlcnic_flush_mcast_mac() argument
528 list_for_each_safe(head, tmp, &adapter->mac_list) { in qlcnic_flush_mcast_mac()
533 qlcnic_sre_macaddr_change(adapter, cur->mac_addr, in qlcnic_flush_mcast_mac()
542 struct qlcnic_adapter *adapter = netdev_priv(netdev); in __qlcnic_set_multi() local
543 struct qlcnic_hardware_context *ahw = adapter->ahw; in __qlcnic_set_multi()
550 if (!test_bit(__QLCNIC_FW_ATTACHED, &adapter->state)) in __qlcnic_set_multi()
553 qlcnic_nic_add_mac(adapter, adapter->mac_addr, vlan, in __qlcnic_set_multi()
555 qlcnic_nic_add_mac(adapter, bcast_addr, vlan, QLCNIC_BROADCAST_MAC); in __qlcnic_set_multi()
558 if (!(adapter->flags & QLCNIC_PROMISC_DISABLED)) in __qlcnic_set_multi()
564 qlcnic_flush_mcast_mac(adapter); in __qlcnic_set_multi()
566 qlcnic_nic_add_mac(adapter, ha->addr, vlan, in __qlcnic_set_multi()
577 qlcnic_nic_add_mac(adapter, ha->addr, vlan, in __qlcnic_set_multi()
582 !adapter->fdb_mac_learn) { in __qlcnic_set_multi()
583 qlcnic_alloc_lb_filters_mem(adapter); in __qlcnic_set_multi()
584 adapter->drv_mac_learn = 1; in __qlcnic_set_multi()
585 if (adapter->flags & QLCNIC_ESWITCH_ENABLED) in __qlcnic_set_multi()
586 adapter->rx_mac_learn = true; in __qlcnic_set_multi()
588 adapter->drv_mac_learn = 0; in __qlcnic_set_multi()
589 adapter->rx_mac_learn = false; in __qlcnic_set_multi()
592 qlcnic_nic_set_promisc(adapter, mode); in __qlcnic_set_multi()
597 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_set_multi() local
599 if (!test_bit(__QLCNIC_FW_ATTACHED, &adapter->state)) in qlcnic_set_multi()
602 if (qlcnic_sriov_vf_check(adapter)) in qlcnic_set_multi()
608 int qlcnic_82xx_nic_set_promisc(struct qlcnic_adapter *adapter, u32 mode) in qlcnic_82xx_nic_set_promisc() argument
618 ((u64)adapter->portnum << 16); in qlcnic_82xx_nic_set_promisc()
623 return qlcnic_send_cmd_descs(adapter, in qlcnic_82xx_nic_set_promisc()
627 void qlcnic_82xx_free_mac_list(struct qlcnic_adapter *adapter) in qlcnic_82xx_free_mac_list() argument
629 struct list_head *head = &adapter->mac_list; in qlcnic_82xx_free_mac_list()
634 qlcnic_sre_macaddr_change(adapter, in qlcnic_82xx_free_mac_list()
641 void qlcnic_prune_lb_filters(struct qlcnic_adapter *adapter) in qlcnic_prune_lb_filters() argument
650 for (i = 0; i < adapter->fhash.fbucket_size; i++) { in qlcnic_prune_lb_filters()
651 head = &(adapter->fhash.fhead[i]); in qlcnic_prune_lb_filters()
657 qlcnic_sre_macaddr_change(adapter, in qlcnic_prune_lb_filters()
661 spin_lock_bh(&adapter->mac_learn_lock); in qlcnic_prune_lb_filters()
662 adapter->fhash.fnum--; in qlcnic_prune_lb_filters()
664 spin_unlock_bh(&adapter->mac_learn_lock); in qlcnic_prune_lb_filters()
669 for (i = 0; i < adapter->rx_fhash.fbucket_size; i++) { in qlcnic_prune_lb_filters()
670 head = &(adapter->rx_fhash.fhead[i]); in qlcnic_prune_lb_filters()
676 spin_lock_bh(&adapter->rx_mac_learn_lock); in qlcnic_prune_lb_filters()
677 adapter->rx_fhash.fnum--; in qlcnic_prune_lb_filters()
679 spin_unlock_bh(&adapter->rx_mac_learn_lock); in qlcnic_prune_lb_filters()
686 void qlcnic_delete_lb_filters(struct qlcnic_adapter *adapter) in qlcnic_delete_lb_filters() argument
694 for (i = 0; i < adapter->fhash.fbucket_size; i++) { in qlcnic_delete_lb_filters()
695 head = &(adapter->fhash.fhead[i]); in qlcnic_delete_lb_filters()
699 qlcnic_sre_macaddr_change(adapter, in qlcnic_delete_lb_filters()
703 spin_lock_bh(&adapter->mac_learn_lock); in qlcnic_delete_lb_filters()
704 adapter->fhash.fnum--; in qlcnic_delete_lb_filters()
706 spin_unlock_bh(&adapter->mac_learn_lock); in qlcnic_delete_lb_filters()
712 static int qlcnic_set_fw_loopback(struct qlcnic_adapter *adapter, u8 flag) in qlcnic_set_fw_loopback() argument
721 ((u64) adapter->portnum << 16) | ((u64) 0x1 << 32)); in qlcnic_set_fw_loopback()
725 rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in qlcnic_set_fw_loopback()
727 dev_err(&adapter->pdev->dev, "%sting loopback mode failed\n", in qlcnic_set_fw_loopback()
732 int qlcnic_82xx_set_lb_mode(struct qlcnic_adapter *adapter, u8 mode) in qlcnic_82xx_set_lb_mode() argument
734 if (qlcnic_set_fw_loopback(adapter, mode)) in qlcnic_82xx_set_lb_mode()
737 if (qlcnic_nic_set_promisc(adapter, in qlcnic_82xx_set_lb_mode()
739 qlcnic_set_fw_loopback(adapter, 0); in qlcnic_82xx_set_lb_mode()
747 int qlcnic_82xx_clear_lb_mode(struct qlcnic_adapter *adapter, u8 mode) in qlcnic_82xx_clear_lb_mode() argument
749 struct net_device *netdev = adapter->netdev; in qlcnic_82xx_clear_lb_mode()
752 qlcnic_set_fw_loopback(adapter, 0); in qlcnic_82xx_clear_lb_mode()
759 qlcnic_nic_set_promisc(adapter, mode); in qlcnic_82xx_clear_lb_mode()
764 int qlcnic_82xx_read_phys_port_id(struct qlcnic_adapter *adapter) in qlcnic_82xx_read_phys_port_id() argument
769 ret = qlcnic_get_mac_address(adapter, mac, in qlcnic_82xx_read_phys_port_id()
770 adapter->ahw->physical_port); in qlcnic_82xx_read_phys_port_id()
774 memcpy(adapter->ahw->phys_port_id, mac, ETH_ALEN); in qlcnic_82xx_read_phys_port_id()
775 adapter->flags |= QLCNIC_HAS_PHYS_PORT_ID; in qlcnic_82xx_read_phys_port_id()
780 int qlcnic_82xx_set_rx_coalesce(struct qlcnic_adapter *adapter) in qlcnic_82xx_set_rx_coalesce() argument
790 ((u64) adapter->portnum << 16)); in qlcnic_82xx_set_rx_coalesce()
792 req.words[0] = cpu_to_le64(((u64) adapter->ahw->coal.flag) << 32); in qlcnic_82xx_set_rx_coalesce()
793 req.words[2] = cpu_to_le64(adapter->ahw->coal.rx_packets | in qlcnic_82xx_set_rx_coalesce()
794 ((u64) adapter->ahw->coal.rx_time_us) << 16); in qlcnic_82xx_set_rx_coalesce()
795 req.words[5] = cpu_to_le64(adapter->ahw->coal.timer_out | in qlcnic_82xx_set_rx_coalesce()
796 ((u64) adapter->ahw->coal.type) << 32 | in qlcnic_82xx_set_rx_coalesce()
797 ((u64) adapter->ahw->coal.sts_ring_mask) << 40); in qlcnic_82xx_set_rx_coalesce()
798 rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in qlcnic_82xx_set_rx_coalesce()
800 dev_err(&adapter->netdev->dev, in qlcnic_82xx_set_rx_coalesce()
807 int qlcnic_82xx_config_intr_coalesce(struct qlcnic_adapter *adapter, in qlcnic_82xx_config_intr_coalesce() argument
810 struct qlcnic_nic_intr_coalesce *coal = &adapter->ahw->coal; in qlcnic_82xx_config_intr_coalesce()
817 rv = qlcnic_82xx_set_rx_coalesce(adapter); in qlcnic_82xx_config_intr_coalesce()
820 netdev_err(adapter->netdev, in qlcnic_82xx_config_intr_coalesce()
829 int qlcnic_82xx_config_hw_lro(struct qlcnic_adapter *adapter, int enable) in qlcnic_82xx_config_hw_lro() argument
835 if (!test_bit(__QLCNIC_FW_ATTACHED, &adapter->state)) in qlcnic_82xx_config_hw_lro()
842 word = QLCNIC_H2C_OPCODE_CONFIG_HW_LRO | ((u64)adapter->portnum << 16); in qlcnic_82xx_config_hw_lro()
848 if (adapter->ahw->extra_capability[0] & in qlcnic_82xx_config_hw_lro()
855 rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in qlcnic_82xx_config_hw_lro()
857 dev_err(&adapter->netdev->dev, in qlcnic_82xx_config_hw_lro()
863 int qlcnic_config_bridged_mode(struct qlcnic_adapter *adapter, u32 enable) in qlcnic_config_bridged_mode() argument
869 if (!!(adapter->flags & QLCNIC_BRIDGE_ENABLED) == enable) in qlcnic_config_bridged_mode()
877 ((u64)adapter->portnum << 16); in qlcnic_config_bridged_mode()
882 rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in qlcnic_config_bridged_mode()
884 dev_err(&adapter->netdev->dev, in qlcnic_config_bridged_mode()
887 adapter->flags ^= QLCNIC_BRIDGE_ENABLED; in qlcnic_config_bridged_mode()
898 int qlcnic_82xx_config_rss(struct qlcnic_adapter *adapter, int enable) in qlcnic_82xx_config_rss() argument
913 word = QLCNIC_H2C_OPCODE_CONFIG_RSS | ((u64)adapter->portnum << 16); in qlcnic_82xx_config_rss()
940 rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in qlcnic_82xx_config_rss()
942 dev_err(&adapter->netdev->dev, "could not configure RSS\n"); in qlcnic_82xx_config_rss()
947 void qlcnic_82xx_config_ipaddr(struct qlcnic_adapter *adapter, in qlcnic_82xx_config_ipaddr() argument
958 word = QLCNIC_H2C_OPCODE_CONFIG_IPADDR | ((u64)adapter->portnum << 16); in qlcnic_82xx_config_ipaddr()
965 rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in qlcnic_82xx_config_ipaddr()
967 dev_err(&adapter->netdev->dev, in qlcnic_82xx_config_ipaddr()
972 int qlcnic_82xx_linkevent_request(struct qlcnic_adapter *adapter, int enable) in qlcnic_82xx_linkevent_request() argument
980 word = QLCNIC_H2C_OPCODE_GET_LINKEVENT | ((u64)adapter->portnum << 16); in qlcnic_82xx_linkevent_request()
983 rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in qlcnic_82xx_linkevent_request()
985 dev_err(&adapter->netdev->dev, in qlcnic_82xx_linkevent_request()
991 static int qlcnic_send_lro_cleanup(struct qlcnic_adapter *adapter) in qlcnic_send_lro_cleanup() argument
997 if (!test_bit(__QLCNIC_FW_ATTACHED, &adapter->state)) in qlcnic_send_lro_cleanup()
1004 ((u64)adapter->portnum << 16) | in qlcnic_send_lro_cleanup()
1009 rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in qlcnic_send_lro_cleanup()
1011 dev_err(&adapter->netdev->dev, in qlcnic_send_lro_cleanup()
1024 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_change_mtu() local
1028 dev_err(&adapter->netdev->dev, "%d bytes < mtu < %d bytes" in qlcnic_change_mtu()
1033 rc = qlcnic_fw_cmd_set_mtu(adapter, mtu); in qlcnic_change_mtu()
1041 static netdev_features_t qlcnic_process_flags(struct qlcnic_adapter *adapter, in qlcnic_process_flags() argument
1044 u32 offload_flags = adapter->offload_flags; in qlcnic_process_flags()
1049 adapter->rx_csum = 1; in qlcnic_process_flags()
1050 if (QLCNIC_IS_TSO_CAPABLE(adapter)) { in qlcnic_process_flags()
1066 if (QLCNIC_IS_TSO_CAPABLE(adapter)) in qlcnic_process_flags()
1068 adapter->rx_csum = 0; in qlcnic_process_flags()
1077 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_fix_features() local
1080 if (qlcnic_82xx_check(adapter) && in qlcnic_fix_features()
1081 (adapter->flags & QLCNIC_ESWITCH_ENABLED)) { in qlcnic_fix_features()
1082 if (adapter->flags & QLCNIC_APP_CHANGED_FLAGS) { in qlcnic_fix_features()
1083 features = qlcnic_process_flags(adapter, features); in qlcnic_fix_features()
1103 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_set_features() local
1112 if (qlcnic_config_hw_lro(adapter, hw_lro)) in qlcnic_set_features()
1115 if (!hw_lro && qlcnic_82xx_check(adapter)) { in qlcnic_set_features()
1116 if (qlcnic_send_lro_cleanup(adapter)) in qlcnic_set_features()
1166 qlcnic_pci_set_crbwindow_2M(struct qlcnic_adapter *adapter, ulong off) in qlcnic_pci_set_crbwindow_2M() argument
1169 void __iomem *addr = adapter->ahw->pci_base0 + CRB_WINDOW_2M; in qlcnic_pci_set_crbwindow_2M()
1175 dev_err(&adapter->pdev->dev, "Invalid offset 0x%lx\n", off); in qlcnic_pci_set_crbwindow_2M()
1182 dev_warn(&adapter->pdev->dev, in qlcnic_pci_set_crbwindow_2M()
1190 int qlcnic_82xx_hw_write_wx_2M(struct qlcnic_adapter *adapter, ulong off, in qlcnic_82xx_hw_write_wx_2M() argument
1197 rv = qlcnic_pci_get_crb_addr_2M(adapter->ahw, off, &addr); in qlcnic_82xx_hw_write_wx_2M()
1206 write_lock_irqsave(&adapter->ahw->crb_lock, flags); in qlcnic_82xx_hw_write_wx_2M()
1207 crb_win_lock(adapter); in qlcnic_82xx_hw_write_wx_2M()
1208 rv = qlcnic_pci_set_crbwindow_2M(adapter, off); in qlcnic_82xx_hw_write_wx_2M()
1211 crb_win_unlock(adapter); in qlcnic_82xx_hw_write_wx_2M()
1212 write_unlock_irqrestore(&adapter->ahw->crb_lock, flags); in qlcnic_82xx_hw_write_wx_2M()
1216 dev_err(&adapter->pdev->dev, in qlcnic_82xx_hw_write_wx_2M()
1222 int qlcnic_82xx_hw_read_wx_2M(struct qlcnic_adapter *adapter, ulong off, in qlcnic_82xx_hw_read_wx_2M() argument
1230 rv = qlcnic_pci_get_crb_addr_2M(adapter->ahw, off, &addr); in qlcnic_82xx_hw_read_wx_2M()
1237 write_lock_irqsave(&adapter->ahw->crb_lock, flags); in qlcnic_82xx_hw_read_wx_2M()
1238 crb_win_lock(adapter); in qlcnic_82xx_hw_read_wx_2M()
1239 if (!qlcnic_pci_set_crbwindow_2M(adapter, off)) in qlcnic_82xx_hw_read_wx_2M()
1241 crb_win_unlock(adapter); in qlcnic_82xx_hw_read_wx_2M()
1242 write_unlock_irqrestore(&adapter->ahw->crb_lock, flags); in qlcnic_82xx_hw_read_wx_2M()
1246 dev_err(&adapter->pdev->dev, in qlcnic_82xx_hw_read_wx_2M()
1262 static int qlcnic_pci_mem_access_direct(struct qlcnic_adapter *adapter, in qlcnic_pci_mem_access_direct() argument
1268 mutex_lock(&adapter->ahw->mem_lock); in qlcnic_pci_mem_access_direct()
1270 writel(window, adapter->ahw->ocm_win_crb); in qlcnic_pci_mem_access_direct()
1272 readl(adapter->ahw->ocm_win_crb); in qlcnic_pci_mem_access_direct()
1275 addr = adapter->ahw->pci_base0 + start; in qlcnic_pci_mem_access_direct()
1283 writel(0, adapter->ahw->ocm_win_crb); in qlcnic_pci_mem_access_direct()
1284 readl(adapter->ahw->ocm_win_crb); in qlcnic_pci_mem_access_direct()
1286 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_pci_mem_access_direct()
1291 qlcnic_pci_camqm_read_2M(struct qlcnic_adapter *adapter, u64 off, u64 *data) in qlcnic_pci_camqm_read_2M() argument
1293 void __iomem *addr = adapter->ahw->pci_base0 + in qlcnic_pci_camqm_read_2M()
1296 mutex_lock(&adapter->ahw->mem_lock); in qlcnic_pci_camqm_read_2M()
1298 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_pci_camqm_read_2M()
1302 qlcnic_pci_camqm_write_2M(struct qlcnic_adapter *adapter, u64 off, u64 data) in qlcnic_pci_camqm_write_2M() argument
1304 void __iomem *addr = adapter->ahw->pci_base0 + in qlcnic_pci_camqm_write_2M()
1307 mutex_lock(&adapter->ahw->mem_lock); in qlcnic_pci_camqm_write_2M()
1309 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_pci_camqm_write_2M()
1315 static void qlcnic_set_ms_controls(struct qlcnic_adapter *adapter, u64 off, in qlcnic_set_ms_controls() argument
1345 int qlcnic_pci_mem_write_2M(struct qlcnic_adapter *adapter, u64 off, u64 data) in qlcnic_pci_mem_write_2M() argument
1362 qlcnic_set_ms_controls(adapter, off, &ms); in qlcnic_pci_mem_write_2M()
1365 return qlcnic_pci_mem_access_direct(adapter, ms.ocm_window, in qlcnic_pci_mem_write_2M()
1370 mutex_lock(&adapter->ahw->mem_lock); in qlcnic_pci_mem_write_2M()
1372 qlcnic_ind_wr(adapter, ms.low, off8); in qlcnic_pci_mem_write_2M()
1373 qlcnic_ind_wr(adapter, ms.hi, 0); in qlcnic_pci_mem_write_2M()
1375 qlcnic_ind_wr(adapter, ms.control, TA_CTL_ENABLE); in qlcnic_pci_mem_write_2M()
1376 qlcnic_ind_wr(adapter, ms.control, QLCNIC_TA_START_ENABLE); in qlcnic_pci_mem_write_2M()
1379 temp = qlcnic_ind_rd(adapter, ms.control); in qlcnic_pci_mem_write_2M()
1390 qlcnic_ind_wr(adapter, ms.wd[0], qlcnic_ind_rd(adapter, ms.rd[0])); in qlcnic_pci_mem_write_2M()
1391 qlcnic_ind_wr(adapter, ms.wd[1], qlcnic_ind_rd(adapter, ms.rd[1])); in qlcnic_pci_mem_write_2M()
1393 qlcnic_ind_wr(adapter, ms.wd[2], data & 0xffffffff); in qlcnic_pci_mem_write_2M()
1394 qlcnic_ind_wr(adapter, ms.wd[3], (data >> 32) & 0xffffffff); in qlcnic_pci_mem_write_2M()
1396 qlcnic_ind_wr(adapter, ms.control, QLCNIC_TA_WRITE_ENABLE); in qlcnic_pci_mem_write_2M()
1397 qlcnic_ind_wr(adapter, ms.control, QLCNIC_TA_WRITE_START); in qlcnic_pci_mem_write_2M()
1400 temp = qlcnic_ind_rd(adapter, ms.control); in qlcnic_pci_mem_write_2M()
1407 dev_err(&adapter->pdev->dev, in qlcnic_pci_mem_write_2M()
1414 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_pci_mem_write_2M()
1419 int qlcnic_pci_mem_read_2M(struct qlcnic_adapter *adapter, u64 off, u64 *data) in qlcnic_pci_mem_read_2M() argument
1436 qlcnic_set_ms_controls(adapter, off, &ms); in qlcnic_pci_mem_read_2M()
1439 return qlcnic_pci_mem_access_direct(adapter, ms.ocm_window, in qlcnic_pci_mem_read_2M()
1442 mutex_lock(&adapter->ahw->mem_lock); in qlcnic_pci_mem_read_2M()
1446 qlcnic_ind_wr(adapter, ms.low, off8); in qlcnic_pci_mem_read_2M()
1447 qlcnic_ind_wr(adapter, ms.hi, 0); in qlcnic_pci_mem_read_2M()
1449 qlcnic_ind_wr(adapter, ms.control, TA_CTL_ENABLE); in qlcnic_pci_mem_read_2M()
1450 qlcnic_ind_wr(adapter, ms.control, QLCNIC_TA_START_ENABLE); in qlcnic_pci_mem_read_2M()
1453 temp = qlcnic_ind_rd(adapter, ms.control); in qlcnic_pci_mem_read_2M()
1460 dev_err(&adapter->pdev->dev, in qlcnic_pci_mem_read_2M()
1465 temp = qlcnic_ind_rd(adapter, ms.rd[3]); in qlcnic_pci_mem_read_2M()
1467 val |= qlcnic_ind_rd(adapter, ms.rd[2]); in qlcnic_pci_mem_read_2M()
1472 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_pci_mem_read_2M()
1477 int qlcnic_82xx_get_board_info(struct qlcnic_adapter *adapter) in qlcnic_82xx_get_board_info() argument
1480 struct pci_dev *pdev = adapter->pdev; in qlcnic_82xx_get_board_info()
1483 if (qlcnic_rom_fast_read(adapter, offset, &magic)) in qlcnic_82xx_get_board_info()
1493 if (qlcnic_rom_fast_read(adapter, offset, &board_type)) in qlcnic_82xx_get_board_info()
1496 adapter->ahw->board_type = board_type; in qlcnic_82xx_get_board_info()
1499 u32 gpio = QLCRD32(adapter, QLCNIC_ROMUSB_GLB_PAD_GPIO_I, &err); in qlcnic_82xx_get_board_info()
1517 adapter->ahw->port_type = QLCNIC_XGBE; in qlcnic_82xx_get_board_info()
1522 adapter->ahw->port_type = QLCNIC_GBE; in qlcnic_82xx_get_board_info()
1525 adapter->ahw->port_type = (adapter->portnum < 2) ? in qlcnic_82xx_get_board_info()
1530 adapter->ahw->port_type = QLCNIC_XGBE; in qlcnic_82xx_get_board_info()
1538 qlcnic_wol_supported(struct qlcnic_adapter *adapter) in qlcnic_wol_supported() argument
1543 wol_cfg = QLCRD32(adapter, QLCNIC_WOL_CONFIG_NV, &err); in qlcnic_wol_supported()
1544 if (wol_cfg & (1UL << adapter->portnum)) { in qlcnic_wol_supported()
1545 wol_cfg = QLCRD32(adapter, QLCNIC_WOL_CONFIG, &err); in qlcnic_wol_supported()
1548 if (wol_cfg & (1 << adapter->portnum)) in qlcnic_wol_supported()
1555 int qlcnic_82xx_config_led(struct qlcnic_adapter *adapter, u32 state, u32 rate) in qlcnic_82xx_config_led() argument
1564 word = QLCNIC_H2C_OPCODE_CONFIG_LED | ((u64)adapter->portnum << 16); in qlcnic_82xx_config_led()
1567 req.words[0] = cpu_to_le64(((u64)rate << 32) | adapter->portnum); in qlcnic_82xx_config_led()
1570 rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in qlcnic_82xx_config_led()
1572 dev_err(&adapter->pdev->dev, "LED configuration failed.\n"); in qlcnic_82xx_config_led()
1577 void qlcnic_82xx_get_beacon_state(struct qlcnic_adapter *adapter) in qlcnic_82xx_get_beacon_state() argument
1579 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_82xx_get_beacon_state()
1585 err = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_82xx_get_beacon_state()
1588 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_82xx_get_beacon_state()
1590 netdev_err(adapter->netdev, in qlcnic_82xx_get_beacon_state()
1607 void qlcnic_82xx_get_func_no(struct qlcnic_adapter *adapter) in qlcnic_82xx_get_func_no() argument
1613 pci_read_config_dword(adapter->pdev, QLCNIC_MSIX_TABLE_OFFSET, &func); in qlcnic_82xx_get_func_no()
1614 msix_base_addr = adapter->ahw->pci_base0 + QLCNIC_MSIX_BASE; in qlcnic_82xx_get_func_no()
1617 adapter->ahw->pci_func = func; in qlcnic_82xx_get_func_no()
1620 void qlcnic_82xx_read_crb(struct qlcnic_adapter *adapter, char *buf, in qlcnic_82xx_read_crb() argument
1628 qlcnic_pci_camqm_read_2M(adapter, offset, &qmdata); in qlcnic_82xx_read_crb()
1631 data = QLCRD32(adapter, offset, &err); in qlcnic_82xx_read_crb()
1636 void qlcnic_82xx_write_crb(struct qlcnic_adapter *adapter, char *buf, in qlcnic_82xx_write_crb() argument
1644 qlcnic_pci_camqm_write_2M(adapter, offset, qmdata); in qlcnic_82xx_write_crb()
1647 QLCWR32(adapter, offset, data); in qlcnic_82xx_write_crb()
1651 int qlcnic_82xx_api_lock(struct qlcnic_adapter *adapter) in qlcnic_82xx_api_lock() argument
1653 return qlcnic_pcie_sem_lock(adapter, 5, 0); in qlcnic_82xx_api_lock()
1656 void qlcnic_82xx_api_unlock(struct qlcnic_adapter *adapter) in qlcnic_82xx_api_unlock() argument
1658 qlcnic_pcie_sem_unlock(adapter, 5); in qlcnic_82xx_api_unlock()
1663 struct qlcnic_adapter *adapter = pci_get_drvdata(pdev); in qlcnic_82xx_shutdown() local
1664 struct net_device *netdev = adapter->netdev; in qlcnic_82xx_shutdown()
1669 qlcnic_cancel_idc_work(adapter); in qlcnic_82xx_shutdown()
1672 qlcnic_down(adapter, netdev); in qlcnic_82xx_shutdown()
1674 qlcnic_clr_all_drv_state(adapter, 0); in qlcnic_82xx_shutdown()
1676 clear_bit(__QLCNIC_RESETTING, &adapter->state); in qlcnic_82xx_shutdown()
1682 if (qlcnic_wol_supported(adapter)) { in qlcnic_82xx_shutdown()
1690 int qlcnic_82xx_resume(struct qlcnic_adapter *adapter) in qlcnic_82xx_resume() argument
1692 struct net_device *netdev = adapter->netdev; in qlcnic_82xx_resume()
1695 err = qlcnic_start_firmware(adapter); in qlcnic_82xx_resume()
1697 dev_err(&adapter->pdev->dev, "failed to start firmware\n"); in qlcnic_82xx_resume()
1702 err = qlcnic_up(adapter, netdev); in qlcnic_82xx_resume()
1708 qlcnic_schedule_work(adapter, qlcnic_fw_poll_work, FW_POLL_DELAY); in qlcnic_82xx_resume()