Lines Matching refs:adapter
267 int qlcnic_83xx_get_fw_version(struct qlcnic_adapter *adapter) in qlcnic_83xx_get_fw_version() argument
270 struct pci_dev *pdev = adapter->pdev; in qlcnic_83xx_get_fw_version()
272 fw_major = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_MAJOR); in qlcnic_83xx_get_fw_version()
273 fw_minor = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_MINOR); in qlcnic_83xx_get_fw_version()
274 fw_build = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_SUB); in qlcnic_83xx_get_fw_version()
275 adapter->fw_version = QLCNIC_VERSION_CODE(fw_major, fw_minor, fw_build); in qlcnic_83xx_get_fw_version()
280 return adapter->fw_version; in qlcnic_83xx_get_fw_version()
283 static int __qlcnic_set_win_base(struct qlcnic_adapter *adapter, u32 addr) in __qlcnic_set_win_base() argument
288 base = adapter->ahw->pci_base0 + in __qlcnic_set_win_base()
289 QLC_83XX_CRB_WIN_FUNC(adapter->ahw->pci_func); in __qlcnic_set_win_base()
298 int qlcnic_83xx_rd_reg_indirect(struct qlcnic_adapter *adapter, ulong addr, in qlcnic_83xx_rd_reg_indirect() argument
301 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_rd_reg_indirect()
303 *err = __qlcnic_set_win_base(adapter, (u32) addr); in qlcnic_83xx_rd_reg_indirect()
307 dev_err(&adapter->pdev->dev, in qlcnic_83xx_rd_reg_indirect()
313 int qlcnic_83xx_wrt_reg_indirect(struct qlcnic_adapter *adapter, ulong addr, in qlcnic_83xx_wrt_reg_indirect() argument
317 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_wrt_reg_indirect()
319 err = __qlcnic_set_win_base(adapter, (u32) addr); in qlcnic_83xx_wrt_reg_indirect()
324 dev_err(&adapter->pdev->dev, in qlcnic_83xx_wrt_reg_indirect()
331 static void qlcnic_83xx_enable_legacy(struct qlcnic_adapter *adapter) in qlcnic_83xx_enable_legacy() argument
333 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_enable_legacy()
336 adapter->tgt_status_reg = ahw->pci_base0 + QLC_83XX_INTX_PTR; in qlcnic_83xx_enable_legacy()
337 adapter->tgt_mask_reg = ahw->pci_base0 + QLC_83XX_INTX_MASK; in qlcnic_83xx_enable_legacy()
338 adapter->isr_int_vec = ahw->pci_base0 + QLC_83XX_INTX_TRGR; in qlcnic_83xx_enable_legacy()
339 adapter->msix_entries[0].vector = adapter->pdev->irq; in qlcnic_83xx_enable_legacy()
340 dev_info(&adapter->pdev->dev, "using legacy interrupt\n"); in qlcnic_83xx_enable_legacy()
343 static int qlcnic_83xx_calculate_msix_vector(struct qlcnic_adapter *adapter) in qlcnic_83xx_calculate_msix_vector() argument
347 num_msix = adapter->drv_sds_rings; in qlcnic_83xx_calculate_msix_vector()
352 if (!(adapter->flags & QLCNIC_TX_INTR_SHARED)) in qlcnic_83xx_calculate_msix_vector()
353 num_msix += adapter->drv_tx_rings; in qlcnic_83xx_calculate_msix_vector()
358 int qlcnic_83xx_setup_intr(struct qlcnic_adapter *adapter) in qlcnic_83xx_setup_intr() argument
360 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_setup_intr()
363 if (adapter->flags & QLCNIC_TSS_RSS) { in qlcnic_83xx_setup_intr()
364 err = qlcnic_setup_tss_rss_intr(adapter); in qlcnic_83xx_setup_intr()
369 num_msix = qlcnic_83xx_calculate_msix_vector(adapter); in qlcnic_83xx_setup_intr()
371 err = qlcnic_enable_msix(adapter, num_msix); in qlcnic_83xx_setup_intr()
375 if (adapter->flags & QLCNIC_MSIX_ENABLED) { in qlcnic_83xx_setup_intr()
378 if (qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_setup_intr()
381 adapter->drv_sds_rings = QLCNIC_SINGLE_RING; in qlcnic_83xx_setup_intr()
382 adapter->drv_tx_rings = QLCNIC_SINGLE_RING; in qlcnic_83xx_setup_intr()
392 if (!(adapter->flags & QLCNIC_MSIX_ENABLED)) { in qlcnic_83xx_setup_intr()
393 if (adapter->ahw->pci_func >= QLC_MAX_LEGACY_FUNC_SUPP) { in qlcnic_83xx_setup_intr()
394 …dev_err(&adapter->pdev->dev, "PCI function number 8 and higher are not supported with legacy inter… in qlcnic_83xx_setup_intr()
399 qlcnic_83xx_enable_legacy(adapter); in qlcnic_83xx_setup_intr()
403 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_setup_intr()
414 static inline void qlcnic_83xx_clear_legacy_intr_mask(struct qlcnic_adapter *adapter) in qlcnic_83xx_clear_legacy_intr_mask() argument
416 writel(0, adapter->tgt_mask_reg); in qlcnic_83xx_clear_legacy_intr_mask()
419 static inline void qlcnic_83xx_set_legacy_intr_mask(struct qlcnic_adapter *adapter) in qlcnic_83xx_set_legacy_intr_mask() argument
421 if (adapter->tgt_mask_reg) in qlcnic_83xx_set_legacy_intr_mask()
422 writel(1, adapter->tgt_mask_reg); in qlcnic_83xx_set_legacy_intr_mask()
426 *adapter) in qlcnic_83xx_enable_legacy_msix_mbx_intr()
435 mask = QLCRDX(adapter->ahw, QLCNIC_DEF_INT_MASK); in qlcnic_83xx_enable_legacy_msix_mbx_intr()
436 writel(0, adapter->ahw->pci_base0 + mask); in qlcnic_83xx_enable_legacy_msix_mbx_intr()
439 void qlcnic_83xx_disable_mbx_intr(struct qlcnic_adapter *adapter) in qlcnic_83xx_disable_mbx_intr() argument
443 mask = QLCRDX(adapter->ahw, QLCNIC_DEF_INT_MASK); in qlcnic_83xx_disable_mbx_intr()
444 writel(1, adapter->ahw->pci_base0 + mask); in qlcnic_83xx_disable_mbx_intr()
445 QLCWRX(adapter->ahw, QLCNIC_MBX_INTR_ENBL, 0); in qlcnic_83xx_disable_mbx_intr()
448 static inline void qlcnic_83xx_get_mbx_data(struct qlcnic_adapter *adapter, in qlcnic_83xx_get_mbx_data() argument
457 cmd->rsp.arg[i] = readl(QLCNIC_MBX_FW(adapter->ahw, i)); in qlcnic_83xx_get_mbx_data()
460 irqreturn_t qlcnic_83xx_clear_legacy_intr(struct qlcnic_adapter *adapter) in qlcnic_83xx_clear_legacy_intr() argument
463 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_clear_legacy_intr()
466 intr_val = readl(adapter->tgt_status_reg); in qlcnic_83xx_clear_legacy_intr()
471 if (QLC_83XX_INTX_FUNC(intr_val) != adapter->ahw->pci_func) { in qlcnic_83xx_clear_legacy_intr()
472 adapter->stats.spurious_intr++; in qlcnic_83xx_clear_legacy_intr()
479 writel(0, adapter->isr_int_vec); in qlcnic_83xx_clear_legacy_intr()
480 intr_val = readl(adapter->isr_int_vec); in qlcnic_83xx_clear_legacy_intr()
482 intr_val = readl(adapter->tgt_status_reg); in qlcnic_83xx_clear_legacy_intr()
498 static void qlcnic_83xx_poll_process_aen(struct qlcnic_adapter *adapter) in qlcnic_83xx_poll_process_aen() argument
501 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_poll_process_aen()
505 resp = QLCRDX(adapter->ahw, QLCNIC_FW_MBX_CTRL); in qlcnic_83xx_poll_process_aen()
509 event = readl(QLCNIC_MBX_FW(adapter->ahw, 0)); in qlcnic_83xx_poll_process_aen()
511 __qlcnic_83xx_process_aen(adapter); in qlcnic_83xx_poll_process_aen()
517 qlcnic_83xx_enable_legacy_msix_mbx_intr(adapter); in qlcnic_83xx_poll_process_aen()
523 struct qlcnic_adapter *adapter = data; in qlcnic_83xx_intr() local
525 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_intr()
527 if (qlcnic_83xx_clear_legacy_intr(adapter) == IRQ_NONE) in qlcnic_83xx_intr()
530 qlcnic_83xx_poll_process_aen(adapter); in qlcnic_83xx_intr()
535 qlcnic_83xx_enable_legacy_msix_mbx_intr(adapter); in qlcnic_83xx_intr()
539 if (!test_bit(__QLCNIC_DEV_UP, &adapter->state)) { in qlcnic_83xx_intr()
540 qlcnic_83xx_enable_legacy_msix_mbx_intr(adapter); in qlcnic_83xx_intr()
542 sds_ring = &adapter->recv_ctx->sds_rings[0]; in qlcnic_83xx_intr()
552 struct qlcnic_adapter *adapter = sds_ring->adapter; in qlcnic_83xx_tmp_intr() local
554 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_tmp_intr()
557 if (adapter->nic_ops->clear_legacy_intr(adapter) == IRQ_NONE) in qlcnic_83xx_tmp_intr()
561 adapter->ahw->diag_cnt++; in qlcnic_83xx_tmp_intr()
562 qlcnic_enable_sds_intr(adapter, sds_ring); in qlcnic_83xx_tmp_intr()
567 void qlcnic_83xx_free_mbx_intr(struct qlcnic_adapter *adapter) in qlcnic_83xx_free_mbx_intr() argument
571 if (!(adapter->flags & QLCNIC_MSIX_ENABLED)) in qlcnic_83xx_free_mbx_intr()
572 qlcnic_83xx_set_legacy_intr_mask(adapter); in qlcnic_83xx_free_mbx_intr()
574 qlcnic_83xx_disable_mbx_intr(adapter); in qlcnic_83xx_free_mbx_intr()
576 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_free_mbx_intr()
577 num_msix = adapter->ahw->num_msix - 1; in qlcnic_83xx_free_mbx_intr()
583 if (adapter->msix_entries) { in qlcnic_83xx_free_mbx_intr()
584 synchronize_irq(adapter->msix_entries[num_msix].vector); in qlcnic_83xx_free_mbx_intr()
585 free_irq(adapter->msix_entries[num_msix].vector, adapter); in qlcnic_83xx_free_mbx_intr()
589 int qlcnic_83xx_setup_mbx_intr(struct qlcnic_adapter *adapter) in qlcnic_83xx_setup_mbx_intr() argument
596 if (!(adapter->flags & QLCNIC_MSI_ENABLED) && in qlcnic_83xx_setup_mbx_intr()
597 !(adapter->flags & QLCNIC_MSIX_ENABLED)) in qlcnic_83xx_setup_mbx_intr()
600 if (adapter->flags & QLCNIC_MSIX_ENABLED) { in qlcnic_83xx_setup_mbx_intr()
602 val = adapter->msix_entries[adapter->ahw->num_msix - 1].vector; in qlcnic_83xx_setup_mbx_intr()
603 err = request_irq(val, handler, flags, "qlcnic-MB", adapter); in qlcnic_83xx_setup_mbx_intr()
605 dev_err(&adapter->pdev->dev, in qlcnic_83xx_setup_mbx_intr()
611 val = adapter->msix_entries[0].vector; in qlcnic_83xx_setup_mbx_intr()
612 err = request_irq(val, handler, flags, "qlcnic", adapter); in qlcnic_83xx_setup_mbx_intr()
614 dev_err(&adapter->pdev->dev, in qlcnic_83xx_setup_mbx_intr()
618 qlcnic_83xx_clear_legacy_intr_mask(adapter); in qlcnic_83xx_setup_mbx_intr()
622 qlcnic_83xx_enable_mbx_interrupt(adapter); in qlcnic_83xx_setup_mbx_intr()
627 void qlcnic_83xx_get_func_no(struct qlcnic_adapter *adapter) in qlcnic_83xx_get_func_no() argument
629 u32 val = QLCRDX(adapter->ahw, QLCNIC_INFORMANT); in qlcnic_83xx_get_func_no()
630 adapter->ahw->pci_func = (val >> 24) & 0xff; in qlcnic_83xx_get_func_no()
633 int qlcnic_83xx_cam_lock(struct qlcnic_adapter *adapter) in qlcnic_83xx_cam_lock() argument
638 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_cam_lock()
645 QLC_SHARED_REG_WR32(adapter, QLCNIC_FLASH_LOCK_OWNER, in qlcnic_83xx_cam_lock()
655 void qlcnic_83xx_cam_unlock(struct qlcnic_adapter *adapter) in qlcnic_83xx_cam_unlock() argument
659 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_cam_unlock()
665 void qlcnic_83xx_read_crb(struct qlcnic_adapter *adapter, char *buf, in qlcnic_83xx_read_crb() argument
671 if (qlcnic_api_lock(adapter)) { in qlcnic_83xx_read_crb()
672 dev_err(&adapter->pdev->dev, in qlcnic_83xx_read_crb()
678 data = QLCRD32(adapter, (u32) offset, &ret); in qlcnic_83xx_read_crb()
679 qlcnic_api_unlock(adapter); in qlcnic_83xx_read_crb()
682 dev_err(&adapter->pdev->dev, in qlcnic_83xx_read_crb()
690 void qlcnic_83xx_write_crb(struct qlcnic_adapter *adapter, char *buf, in qlcnic_83xx_write_crb() argument
696 qlcnic_83xx_wrt_reg_indirect(adapter, (u32) offset, data); in qlcnic_83xx_write_crb()
699 int qlcnic_83xx_get_port_info(struct qlcnic_adapter *adapter) in qlcnic_83xx_get_port_info() argument
701 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_port_info()
704 status = qlcnic_83xx_get_port_config(adapter); in qlcnic_83xx_get_port_info()
706 dev_err(&adapter->pdev->dev, in qlcnic_83xx_get_port_info()
727 static void qlcnic_83xx_set_mac_filter_count(struct qlcnic_adapter *adapter) in qlcnic_83xx_set_mac_filter_count() argument
729 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_set_mac_filter_count()
743 void qlcnic_83xx_enable_mbx_interrupt(struct qlcnic_adapter *adapter) in qlcnic_83xx_enable_mbx_interrupt() argument
747 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_enable_mbx_interrupt()
748 val = BIT_2 | ((adapter->ahw->num_msix - 1) << 8); in qlcnic_83xx_enable_mbx_interrupt()
752 QLCWRX(adapter->ahw, QLCNIC_MBX_INTR_ENBL, val); in qlcnic_83xx_enable_mbx_interrupt()
753 qlcnic_83xx_enable_legacy_msix_mbx_intr(adapter); in qlcnic_83xx_enable_mbx_interrupt()
756 void qlcnic_83xx_check_vf(struct qlcnic_adapter *adapter, in qlcnic_83xx_check_vf() argument
760 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_check_vf()
763 qlcnic_get_func_no(adapter); in qlcnic_83xx_check_vf()
765 if (qlcnic_sriov_vf_check(adapter)) { in qlcnic_83xx_check_vf()
766 qlcnic_sriov_vf_set_ops(adapter); in qlcnic_83xx_check_vf()
771 op_mode = QLCRDX(adapter->ahw, QLC_83XX_DRV_OP_MODE); in qlcnic_83xx_check_vf()
780 dev_info(&adapter->pdev->dev, in qlcnic_83xx_check_vf()
783 adapter->nic_ops = &qlcnic_vf_ops; in qlcnic_83xx_check_vf()
785 if (pci_find_ext_capability(adapter->pdev, in qlcnic_83xx_check_vf()
787 set_bit(__QLCNIC_SRIOV_CAPABLE, &adapter->state); in qlcnic_83xx_check_vf()
788 adapter->nic_ops = &qlcnic_83xx_ops; in qlcnic_83xx_check_vf()
792 static void qlcnic_83xx_handle_link_aen(struct qlcnic_adapter *adapter,
794 static void qlcnic_83xx_handle_idc_comp_aen(struct qlcnic_adapter *adapter,
797 void qlcnic_dump_mbx(struct qlcnic_adapter *adapter, in qlcnic_dump_mbx() argument
805 dev_info(&adapter->pdev->dev, in qlcnic_dump_mbx()
813 dev_info(&adapter->pdev->dev, in qlcnic_dump_mbx()
823 static void qlcnic_83xx_poll_for_mbx_completion(struct qlcnic_adapter *adapter, in qlcnic_83xx_poll_for_mbx_completion() argument
826 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_poll_for_mbx_completion()
840 dev_err(&adapter->pdev->dev, in qlcnic_83xx_poll_for_mbx_completion()
847 int qlcnic_83xx_issue_cmd(struct qlcnic_adapter *adapter, in qlcnic_83xx_issue_cmd() argument
850 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_issue_cmd()
851 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_issue_cmd()
860 err = mbx->ops->enqueue_cmd(adapter, cmd, &timeout); in qlcnic_83xx_issue_cmd()
862 dev_err(&adapter->pdev->dev, in qlcnic_83xx_issue_cmd()
872 dev_err(&adapter->pdev->dev, in qlcnic_83xx_issue_cmd()
882 qlcnic_83xx_poll_for_mbx_completion(adapter, cmd); in qlcnic_83xx_issue_cmd()
885 dev_err(&adapter->pdev->dev, in qlcnic_83xx_issue_cmd()
889 qlcnic_83xx_detach_mailbox_work(adapter); in qlcnic_83xx_issue_cmd()
896 struct qlcnic_adapter *adapter, u32 type) in qlcnic_83xx_alloc_mbx_args() argument
921 temp = adapter->ahw->fw_hal_version << 29; in qlcnic_83xx_alloc_mbx_args()
928 dev_err(&adapter->pdev->dev, "%s: Invalid mailbox command opcode 0x%x\n", in qlcnic_83xx_alloc_mbx_args()
935 struct qlcnic_adapter *adapter; in qlcnic_83xx_idc_aen_work() local
939 adapter = container_of(work, struct qlcnic_adapter, idc_aen_work.work); in qlcnic_83xx_idc_aen_work()
940 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_IDC_ACK); in qlcnic_83xx_idc_aen_work()
945 cmd.req.arg[i] = adapter->ahw->mbox_aen[i]; in qlcnic_83xx_idc_aen_work()
947 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_idc_aen_work()
949 dev_info(&adapter->pdev->dev, in qlcnic_83xx_idc_aen_work()
954 static void qlcnic_83xx_handle_idc_comp_aen(struct qlcnic_adapter *adapter, in qlcnic_83xx_handle_idc_comp_aen() argument
957 dev_dbg(&adapter->pdev->dev, "Completion AEN:0x%x.\n", in qlcnic_83xx_handle_idc_comp_aen()
959 clear_bit(QLC_83XX_IDC_COMP_AEN, &adapter->ahw->idc.status); in qlcnic_83xx_handle_idc_comp_aen()
963 static void __qlcnic_83xx_process_aen(struct qlcnic_adapter *adapter) in __qlcnic_83xx_process_aen() argument
965 struct qlcnic_hardware_context *ahw = adapter->ahw; in __qlcnic_83xx_process_aen()
975 qlcnic_83xx_handle_link_aen(adapter, event); in __qlcnic_83xx_process_aen()
978 qlcnic_83xx_handle_idc_comp_aen(adapter, event); in __qlcnic_83xx_process_aen()
982 adapter->ahw->mbox_aen[i] = QLCNIC_MBX_RSP(event[i]); in __qlcnic_83xx_process_aen()
983 queue_delayed_work(adapter->qlcnic_wq, in __qlcnic_83xx_process_aen()
984 &adapter->idc_aen_work, 0); in __qlcnic_83xx_process_aen()
990 qlcnic_sriov_handle_bc_event(adapter, event[1]); in __qlcnic_83xx_process_aen()
993 dev_info(&adapter->pdev->dev, "SFP+ Insert AEN:0x%x.\n", in __qlcnic_83xx_process_aen()
997 dev_info(&adapter->pdev->dev, "SFP Removed AEN:0x%x.\n", in __qlcnic_83xx_process_aen()
1001 qlcnic_dcb_aen_handler(adapter->dcb, (void *)&event[1]); in __qlcnic_83xx_process_aen()
1004 dev_dbg(&adapter->pdev->dev, "Unsupported AEN:0x%x.\n", in __qlcnic_83xx_process_aen()
1012 static void qlcnic_83xx_process_aen(struct qlcnic_adapter *adapter) in qlcnic_83xx_process_aen() argument
1015 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_process_aen()
1024 __qlcnic_83xx_process_aen(adapter); in qlcnic_83xx_process_aen()
1035 struct qlcnic_adapter *adapter; in qlcnic_83xx_mbx_poll_work() local
1037 adapter = container_of(work, struct qlcnic_adapter, mbx_poll_work.work); in qlcnic_83xx_mbx_poll_work()
1039 if (!test_bit(__QLCNIC_MBX_POLL_ENABLE, &adapter->state)) in qlcnic_83xx_mbx_poll_work()
1042 qlcnic_83xx_process_aen(adapter); in qlcnic_83xx_mbx_poll_work()
1043 queue_delayed_work(adapter->qlcnic_wq, &adapter->mbx_poll_work, in qlcnic_83xx_mbx_poll_work()
1047 void qlcnic_83xx_enable_mbx_poll(struct qlcnic_adapter *adapter) in qlcnic_83xx_enable_mbx_poll() argument
1049 if (test_and_set_bit(__QLCNIC_MBX_POLL_ENABLE, &adapter->state)) in qlcnic_83xx_enable_mbx_poll()
1052 INIT_DELAYED_WORK(&adapter->mbx_poll_work, qlcnic_83xx_mbx_poll_work); in qlcnic_83xx_enable_mbx_poll()
1053 queue_delayed_work(adapter->qlcnic_wq, &adapter->mbx_poll_work, 0); in qlcnic_83xx_enable_mbx_poll()
1056 void qlcnic_83xx_disable_mbx_poll(struct qlcnic_adapter *adapter) in qlcnic_83xx_disable_mbx_poll() argument
1058 if (!test_and_clear_bit(__QLCNIC_MBX_POLL_ENABLE, &adapter->state)) in qlcnic_83xx_disable_mbx_poll()
1060 cancel_delayed_work_sync(&adapter->mbx_poll_work); in qlcnic_83xx_disable_mbx_poll()
1063 static int qlcnic_83xx_add_rings(struct qlcnic_adapter *adapter) in qlcnic_83xx_add_rings() argument
1073 struct qlcnic_recv_context *recv_ctx = adapter->recv_ctx; in qlcnic_83xx_add_rings()
1074 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_add_rings()
1078 num_sds = adapter->drv_sds_rings - QLCNIC_MAX_SDS_RINGS; in qlcnic_83xx_add_rings()
1079 ahw->hw_ops->alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_add_rings()
1085 for (i = 8; i < adapter->drv_sds_rings; i++) { in qlcnic_83xx_add_rings()
1094 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_add_rings()
1099 if (adapter->ahw->diag_test != QLCNIC_LOOPBACK_TEST) in qlcnic_83xx_add_rings()
1110 err = ahw->hw_ops->mbx_cmd(adapter, &cmd); in qlcnic_83xx_add_rings()
1112 dev_err(&adapter->pdev->dev, in qlcnic_83xx_add_rings()
1120 for (i = 8; i < adapter->drv_sds_rings; i++) { in qlcnic_83xx_add_rings()
1124 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_add_rings()
1137 void qlcnic_83xx_del_rx_ctx(struct qlcnic_adapter *adapter) in qlcnic_83xx_del_rx_ctx() argument
1142 struct qlcnic_recv_context *recv_ctx = adapter->recv_ctx; in qlcnic_83xx_del_rx_ctx()
1144 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_RX_CTX)) in qlcnic_83xx_del_rx_ctx()
1147 if (qlcnic_sriov_pf_check(adapter) || qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_del_rx_ctx()
1150 if (qlcnic_sriov_pf_check(adapter)) in qlcnic_83xx_del_rx_ctx()
1151 qlcnic_pf_set_interface_id_del_rx_ctx(adapter, &temp); in qlcnic_83xx_del_rx_ctx()
1154 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_del_rx_ctx()
1156 dev_err(&adapter->pdev->dev, in qlcnic_83xx_del_rx_ctx()
1163 int qlcnic_83xx_create_rx_ctx(struct qlcnic_adapter *adapter) in qlcnic_83xx_create_rx_ctx() argument
1174 struct qlcnic_recv_context *recv_ctx = adapter->recv_ctx; in qlcnic_83xx_create_rx_ctx()
1175 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_create_rx_ctx()
1176 num_rds = adapter->max_rds_rings; in qlcnic_83xx_create_rx_ctx()
1178 if (adapter->drv_sds_rings <= QLCNIC_MAX_SDS_RINGS) in qlcnic_83xx_create_rx_ctx()
1179 num_sds = adapter->drv_sds_rings; in qlcnic_83xx_create_rx_ctx()
1187 if (adapter->flags & QLCNIC_FW_LRO_MSS_CAP) in qlcnic_83xx_create_rx_ctx()
1191 err = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_create_rx_ctx()
1196 if (qlcnic_sriov_pf_check(adapter) || qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_create_rx_ctx()
1203 if (qlcnic_sriov_pf_check(adapter)) in qlcnic_83xx_create_rx_ctx()
1204 qlcnic_pf_set_interface_id_create_rx_ctx(adapter, in qlcnic_83xx_create_rx_ctx()
1216 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_create_rx_ctx()
1220 if (adapter->ahw->diag_test != QLCNIC_LOOPBACK_TEST) in qlcnic_83xx_create_rx_ctx()
1249 err = ahw->hw_ops->mbx_cmd(adapter, &cmd); in qlcnic_83xx_create_rx_ctx()
1251 dev_err(&adapter->pdev->dev, in qlcnic_83xx_create_rx_ctx()
1259 dev_info(&adapter->pdev->dev, "Rx Context[%d] Created, state:0x%x\n", in qlcnic_83xx_create_rx_ctx()
1275 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_create_rx_ctx()
1282 if (adapter->drv_sds_rings > QLCNIC_MAX_SDS_RINGS) in qlcnic_83xx_create_rx_ctx()
1283 err = qlcnic_83xx_add_rings(adapter); in qlcnic_83xx_create_rx_ctx()
1289 void qlcnic_83xx_del_tx_ctx(struct qlcnic_adapter *adapter, in qlcnic_83xx_del_tx_ctx() argument
1295 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_TX_CTX)) in qlcnic_83xx_del_tx_ctx()
1298 if (qlcnic_sriov_pf_check(adapter) || qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_del_tx_ctx()
1301 if (qlcnic_sriov_pf_check(adapter)) in qlcnic_83xx_del_tx_ctx()
1302 qlcnic_pf_set_interface_id_del_tx_ctx(adapter, &temp); in qlcnic_83xx_del_tx_ctx()
1305 if (qlcnic_issue_cmd(adapter, &cmd)) in qlcnic_83xx_del_tx_ctx()
1306 dev_err(&adapter->pdev->dev, in qlcnic_83xx_del_tx_ctx()
1311 int qlcnic_83xx_create_tx_ctx(struct qlcnic_adapter *adapter, in qlcnic_83xx_create_tx_ctx() argument
1320 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_create_tx_ctx()
1336 if (adapter->flags & QLCNIC_MSIX_ENABLED) { in qlcnic_83xx_create_tx_ctx()
1337 if (!(adapter->flags & QLCNIC_TX_INTR_SHARED)) in qlcnic_83xx_create_tx_ctx()
1338 msix_vector = adapter->drv_sds_rings + ring; in qlcnic_83xx_create_tx_ctx()
1340 msix_vector = adapter->drv_sds_rings - 1; in qlcnic_83xx_create_tx_ctx()
1346 if (adapter->ahw->diag_test != QLCNIC_LOOPBACK_TEST) in qlcnic_83xx_create_tx_ctx()
1352 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CREATE_TX_CTX); in qlcnic_83xx_create_tx_ctx()
1356 if (qlcnic_sriov_pf_check(adapter) || qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_create_tx_ctx()
1359 if (qlcnic_sriov_pf_check(adapter)) in qlcnic_83xx_create_tx_ctx()
1360 qlcnic_pf_set_interface_id_create_tx_ctx(adapter, &temp); in qlcnic_83xx_create_tx_ctx()
1368 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_create_tx_ctx()
1370 netdev_err(adapter->netdev, in qlcnic_83xx_create_tx_ctx()
1377 if ((adapter->flags & QLCNIC_MSIX_ENABLED) && in qlcnic_83xx_create_tx_ctx()
1378 !(adapter->flags & QLCNIC_TX_INTR_SHARED)) { in qlcnic_83xx_create_tx_ctx()
1379 intr_mask = ahw->intr_tbl[adapter->drv_sds_rings + ring].src; in qlcnic_83xx_create_tx_ctx()
1382 netdev_info(adapter->netdev, in qlcnic_83xx_create_tx_ctx()
1393 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_83xx_diag_alloc_res() local
1396 u16 adapter_state = adapter->is_up; in qlcnic_83xx_diag_alloc_res()
1403 __qlcnic_down(adapter, netdev); in qlcnic_83xx_diag_alloc_res()
1405 qlcnic_detach(adapter); in qlcnic_83xx_diag_alloc_res()
1407 adapter->drv_sds_rings = QLCNIC_SINGLE_RING; in qlcnic_83xx_diag_alloc_res()
1408 adapter->ahw->diag_test = test; in qlcnic_83xx_diag_alloc_res()
1409 adapter->ahw->linkup = 0; in qlcnic_83xx_diag_alloc_res()
1411 ret = qlcnic_attach(adapter); in qlcnic_83xx_diag_alloc_res()
1417 ret = qlcnic_fw_create_ctx(adapter); in qlcnic_83xx_diag_alloc_res()
1419 qlcnic_detach(adapter); in qlcnic_83xx_diag_alloc_res()
1421 adapter->drv_sds_rings = num_sds_ring; in qlcnic_83xx_diag_alloc_res()
1422 qlcnic_attach(adapter); in qlcnic_83xx_diag_alloc_res()
1428 for (ring = 0; ring < adapter->max_rds_rings; ring++) { in qlcnic_83xx_diag_alloc_res()
1429 rds_ring = &adapter->recv_ctx->rds_rings[ring]; in qlcnic_83xx_diag_alloc_res()
1430 qlcnic_post_rx_buffers(adapter, rds_ring, ring); in qlcnic_83xx_diag_alloc_res()
1433 if (adapter->ahw->diag_test == QLCNIC_INTERRUPT_TEST) { in qlcnic_83xx_diag_alloc_res()
1434 for (ring = 0; ring < adapter->drv_sds_rings; ring++) { in qlcnic_83xx_diag_alloc_res()
1435 sds_ring = &adapter->recv_ctx->sds_rings[ring]; in qlcnic_83xx_diag_alloc_res()
1436 qlcnic_enable_sds_intr(adapter, sds_ring); in qlcnic_83xx_diag_alloc_res()
1440 if (adapter->ahw->diag_test == QLCNIC_LOOPBACK_TEST) { in qlcnic_83xx_diag_alloc_res()
1441 adapter->ahw->loopback_state = 0; in qlcnic_83xx_diag_alloc_res()
1442 adapter->ahw->hw_ops->setup_link_event(adapter, 1); in qlcnic_83xx_diag_alloc_res()
1445 set_bit(__QLCNIC_DEV_UP, &adapter->state); in qlcnic_83xx_diag_alloc_res()
1452 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_83xx_diag_free_res() local
1456 clear_bit(__QLCNIC_DEV_UP, &adapter->state); in qlcnic_83xx_diag_free_res()
1457 if (adapter->ahw->diag_test == QLCNIC_INTERRUPT_TEST) { in qlcnic_83xx_diag_free_res()
1458 for (ring = 0; ring < adapter->drv_sds_rings; ring++) { in qlcnic_83xx_diag_free_res()
1459 sds_ring = &adapter->recv_ctx->sds_rings[ring]; in qlcnic_83xx_diag_free_res()
1460 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_diag_free_res()
1461 qlcnic_disable_sds_intr(adapter, sds_ring); in qlcnic_83xx_diag_free_res()
1465 qlcnic_fw_destroy_ctx(adapter); in qlcnic_83xx_diag_free_res()
1466 qlcnic_detach(adapter); in qlcnic_83xx_diag_free_res()
1468 adapter->ahw->diag_test = 0; in qlcnic_83xx_diag_free_res()
1469 adapter->drv_sds_rings = drv_sds_rings; in qlcnic_83xx_diag_free_res()
1471 if (qlcnic_attach(adapter)) in qlcnic_83xx_diag_free_res()
1475 __qlcnic_up(adapter, netdev); in qlcnic_83xx_diag_free_res()
1481 static void qlcnic_83xx_get_beacon_state(struct qlcnic_adapter *adapter) in qlcnic_83xx_get_beacon_state() argument
1483 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_beacon_state()
1488 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_LED_CONFIG); in qlcnic_83xx_get_beacon_state()
1490 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_beacon_state()
1499 netdev_err(adapter->netdev, "Get beacon state failed, err=%d\n", in qlcnic_83xx_get_beacon_state()
1508 int qlcnic_83xx_config_led(struct qlcnic_adapter *adapter, u32 state, in qlcnic_83xx_config_led() argument
1517 status = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_config_led()
1522 status = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_led()
1524 dev_err(&adapter->pdev->dev, in qlcnic_83xx_config_led()
1529 adapter->ahw->mbox_reg[i] = cmd.rsp.arg[i+1]; in qlcnic_83xx_config_led()
1535 status = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_config_led()
1545 status = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_led()
1547 dev_err(&adapter->pdev->dev, in qlcnic_83xx_config_led()
1556 status = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_config_led()
1561 cmd.req.arg[1] = adapter->ahw->mbox_reg[0]; in qlcnic_83xx_config_led()
1562 cmd.req.arg[2] = adapter->ahw->mbox_reg[1]; in qlcnic_83xx_config_led()
1563 cmd.req.arg[3] = adapter->ahw->mbox_reg[2]; in qlcnic_83xx_config_led()
1565 cmd.req.arg[4] = adapter->ahw->mbox_reg[3]; in qlcnic_83xx_config_led()
1566 status = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_led()
1568 dev_err(&adapter->pdev->dev, in qlcnic_83xx_config_led()
1578 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_83xx_set_led() local
1581 if (adapter->ahw->op_mode == QLCNIC_NON_PRIV_FUNC) { in qlcnic_83xx_set_led()
1589 if (test_and_set_bit(__QLCNIC_LED_ENABLE, &adapter->state)) in qlcnic_83xx_set_led()
1592 if (test_bit(__QLCNIC_RESETTING, &adapter->state)) in qlcnic_83xx_set_led()
1595 err = qlcnic_83xx_config_led(adapter, active, 0); in qlcnic_83xx_set_led()
1602 if (test_bit(__QLCNIC_RESETTING, &adapter->state)) in qlcnic_83xx_set_led()
1605 err = qlcnic_83xx_config_led(adapter, active, 0); in qlcnic_83xx_set_led()
1615 clear_bit(__QLCNIC_LED_ENABLE, &adapter->state); in qlcnic_83xx_set_led()
1620 void qlcnic_83xx_initialize_nic(struct qlcnic_adapter *adapter, int enable) in qlcnic_83xx_initialize_nic() argument
1625 if (qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_initialize_nic()
1629 status = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_initialize_nic()
1632 status = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_initialize_nic()
1640 if (adapter->dcb) in qlcnic_83xx_initialize_nic()
1643 status = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_initialize_nic()
1645 dev_err(&adapter->pdev->dev, in qlcnic_83xx_initialize_nic()
1652 static int qlcnic_83xx_set_port_config(struct qlcnic_adapter *adapter) in qlcnic_83xx_set_port_config() argument
1657 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_PORT_CONFIG); in qlcnic_83xx_set_port_config()
1661 cmd.req.arg[1] = adapter->ahw->port_config; in qlcnic_83xx_set_port_config()
1662 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_set_port_config()
1664 dev_info(&adapter->pdev->dev, "Set Port Config failed.\n"); in qlcnic_83xx_set_port_config()
1669 static int qlcnic_83xx_get_port_config(struct qlcnic_adapter *adapter) in qlcnic_83xx_get_port_config() argument
1674 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PORT_CONFIG); in qlcnic_83xx_get_port_config()
1678 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_port_config()
1680 dev_info(&adapter->pdev->dev, "Get Port config failed\n"); in qlcnic_83xx_get_port_config()
1682 adapter->ahw->port_config = cmd.rsp.arg[1]; in qlcnic_83xx_get_port_config()
1687 int qlcnic_83xx_setup_link_event(struct qlcnic_adapter *adapter, int enable) in qlcnic_83xx_setup_link_event() argument
1693 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_LINK_EVENT); in qlcnic_83xx_setup_link_event()
1697 temp = adapter->recv_ctx->context_id << 16; in qlcnic_83xx_setup_link_event()
1699 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_setup_link_event()
1701 dev_info(&adapter->pdev->dev, in qlcnic_83xx_setup_link_event()
1707 static void qlcnic_83xx_set_interface_id_promisc(struct qlcnic_adapter *adapter, in qlcnic_83xx_set_interface_id_promisc() argument
1710 if (qlcnic_sriov_pf_check(adapter)) { in qlcnic_83xx_set_interface_id_promisc()
1711 qlcnic_alloc_lb_filters_mem(adapter); in qlcnic_83xx_set_interface_id_promisc()
1712 qlcnic_pf_set_interface_id_promisc(adapter, interface_id); in qlcnic_83xx_set_interface_id_promisc()
1713 adapter->rx_mac_learn = true; in qlcnic_83xx_set_interface_id_promisc()
1715 if (!qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_set_interface_id_promisc()
1716 *interface_id = adapter->recv_ctx->context_id << 16; in qlcnic_83xx_set_interface_id_promisc()
1720 int qlcnic_83xx_nic_set_promisc(struct qlcnic_adapter *adapter, u32 mode) in qlcnic_83xx_nic_set_promisc() argument
1726 if (adapter->recv_ctx->state == QLCNIC_HOST_CTX_STATE_FREED) in qlcnic_83xx_nic_set_promisc()
1733 err = qlcnic_alloc_mbx_args(cmd, adapter, in qlcnic_83xx_nic_set_promisc()
1739 qlcnic_83xx_set_interface_id_promisc(adapter, &temp); in qlcnic_83xx_nic_set_promisc()
1741 if (qlcnic_84xx_check(adapter) && qlcnic_sriov_pf_check(adapter)) in qlcnic_83xx_nic_set_promisc()
1745 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_83xx_nic_set_promisc()
1758 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_83xx_loopback_test() local
1759 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_loopback_test()
1760 u8 drv_sds_rings = adapter->drv_sds_rings; in qlcnic_83xx_loopback_test()
1761 u8 drv_tx_rings = adapter->drv_tx_rings; in qlcnic_83xx_loopback_test()
1770 if (test_bit(__QLCNIC_RESETTING, &adapter->state)) { in qlcnic_83xx_loopback_test()
1775 if (qlcnic_get_diag_lock(adapter)) { in qlcnic_83xx_loopback_test()
1788 ret = qlcnic_83xx_set_lb_mode(adapter, mode); in qlcnic_83xx_loopback_test()
1796 if (test_bit(__QLCNIC_RESETTING, &adapter->state)) { in qlcnic_83xx_loopback_test()
1806 qlcnic_83xx_clear_lb_mode(adapter, mode); in qlcnic_83xx_loopback_test()
1809 } while ((adapter->ahw->linkup && ahw->has_link_events) != 1); in qlcnic_83xx_loopback_test()
1811 ret = qlcnic_do_lb_test(adapter, mode); in qlcnic_83xx_loopback_test()
1813 qlcnic_83xx_clear_lb_mode(adapter, mode); in qlcnic_83xx_loopback_test()
1819 adapter->drv_sds_rings = drv_sds_rings; in qlcnic_83xx_loopback_test()
1820 adapter->drv_tx_rings = drv_tx_rings; in qlcnic_83xx_loopback_test()
1821 qlcnic_release_diag_lock(adapter); in qlcnic_83xx_loopback_test()
1825 static void qlcnic_extend_lb_idc_cmpltn_wait(struct qlcnic_adapter *adapter, in qlcnic_extend_lb_idc_cmpltn_wait() argument
1828 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_extend_lb_idc_cmpltn_wait()
1831 netdev_info(adapter->netdev, "Received loopback IDC time extend event for 0x%x seconds\n", in qlcnic_extend_lb_idc_cmpltn_wait()
1838 static int qlcnic_83xx_set_lb_mode(struct qlcnic_adapter *adapter, u8 mode) in qlcnic_83xx_set_lb_mode() argument
1840 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_set_lb_mode()
1841 struct net_device *netdev = adapter->netdev; in qlcnic_83xx_set_lb_mode()
1847 status = qlcnic_83xx_get_port_config(adapter); in qlcnic_83xx_set_lb_mode()
1868 status = qlcnic_83xx_set_port_config(adapter); in qlcnic_83xx_set_lb_mode()
1882 if (test_bit(__QLCNIC_RESETTING, &adapter->state)) { in qlcnic_83xx_set_lb_mode()
1890 qlcnic_extend_lb_idc_cmpltn_wait(adapter, in qlcnic_83xx_set_lb_mode()
1897 qlcnic_83xx_clear_lb_mode(adapter, mode); in qlcnic_83xx_set_lb_mode()
1902 qlcnic_sre_macaddr_change(adapter, adapter->mac_addr, 0, in qlcnic_83xx_set_lb_mode()
1907 static int qlcnic_83xx_clear_lb_mode(struct qlcnic_adapter *adapter, u8 mode) in qlcnic_83xx_clear_lb_mode() argument
1909 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_clear_lb_mode()
1911 struct net_device *netdev = adapter->netdev; in qlcnic_83xx_clear_lb_mode()
1922 status = qlcnic_83xx_set_port_config(adapter); in qlcnic_83xx_clear_lb_mode()
1936 if (test_bit(__QLCNIC_RESETTING, &adapter->state)) { in qlcnic_83xx_clear_lb_mode()
1944 qlcnic_extend_lb_idc_cmpltn_wait(adapter, in qlcnic_83xx_clear_lb_mode()
1955 qlcnic_sre_macaddr_change(adapter, adapter->mac_addr, 0, in qlcnic_83xx_clear_lb_mode()
1960 static void qlcnic_83xx_set_interface_id_ipaddr(struct qlcnic_adapter *adapter, in qlcnic_83xx_set_interface_id_ipaddr() argument
1963 if (qlcnic_sriov_pf_check(adapter)) { in qlcnic_83xx_set_interface_id_ipaddr()
1964 qlcnic_pf_set_interface_id_ipaddr(adapter, interface_id); in qlcnic_83xx_set_interface_id_ipaddr()
1966 if (!qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_set_interface_id_ipaddr()
1967 *interface_id = adapter->recv_ctx->context_id << 16; in qlcnic_83xx_set_interface_id_ipaddr()
1971 void qlcnic_83xx_config_ipaddr(struct qlcnic_adapter *adapter, __be32 ip, in qlcnic_83xx_config_ipaddr() argument
1978 err = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_config_ipaddr()
1983 qlcnic_83xx_set_interface_id_ipaddr(adapter, &temp); in qlcnic_83xx_config_ipaddr()
2000 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_ipaddr()
2002 dev_err(&adapter->netdev->dev, in qlcnic_83xx_config_ipaddr()
2009 int qlcnic_83xx_config_hw_lro(struct qlcnic_adapter *adapter, int mode) in qlcnic_83xx_config_hw_lro() argument
2018 if (adapter->recv_ctx->state == QLCNIC_HOST_CTX_STATE_FREED) in qlcnic_83xx_config_hw_lro()
2021 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIGURE_HW_LRO); in qlcnic_83xx_config_hw_lro()
2025 temp = adapter->recv_ctx->context_id << 16; in qlcnic_83xx_config_hw_lro()
2029 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_hw_lro()
2031 dev_info(&adapter->pdev->dev, "LRO config failed\n"); in qlcnic_83xx_config_hw_lro()
2037 int qlcnic_83xx_config_rss(struct qlcnic_adapter *adapter, int enable) in qlcnic_83xx_config_rss() argument
2046 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIGURE_RSS); in qlcnic_83xx_config_rss()
2062 cmd.req.arg[1] = (adapter->recv_ctx->context_id); in qlcnic_83xx_config_rss()
2066 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_rss()
2069 dev_info(&adapter->pdev->dev, "RSS config failed\n"); in qlcnic_83xx_config_rss()
2076 static void qlcnic_83xx_set_interface_id_macaddr(struct qlcnic_adapter *adapter, in qlcnic_83xx_set_interface_id_macaddr() argument
2079 if (qlcnic_sriov_pf_check(adapter)) { in qlcnic_83xx_set_interface_id_macaddr()
2080 qlcnic_pf_set_interface_id_macaddr(adapter, interface_id); in qlcnic_83xx_set_interface_id_macaddr()
2082 if (!qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_set_interface_id_macaddr()
2083 *interface_id = adapter->recv_ctx->context_id << 16; in qlcnic_83xx_set_interface_id_macaddr()
2087 int qlcnic_83xx_sre_macaddr_change(struct qlcnic_adapter *adapter, u8 *addr, in qlcnic_83xx_sre_macaddr_change() argument
2095 if (adapter->recv_ctx->state == QLCNIC_HOST_CTX_STATE_FREED) in qlcnic_83xx_sre_macaddr_change()
2102 err = qlcnic_alloc_mbx_args(cmd, adapter, QLCNIC_CMD_CONFIG_MAC_VLAN); in qlcnic_83xx_sre_macaddr_change()
2113 qlcnic_83xx_set_interface_id_macaddr(adapter, &temp); in qlcnic_83xx_sre_macaddr_change()
2124 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_83xx_sre_macaddr_change()
2134 void qlcnic_83xx_change_l2_filter(struct qlcnic_adapter *adapter, u64 *addr, in qlcnic_83xx_change_l2_filter() argument
2139 qlcnic_83xx_sre_macaddr_change(adapter, mac, vlan_id, QLCNIC_MAC_ADD); in qlcnic_83xx_change_l2_filter()
2142 static void qlcnic_83xx_configure_mac(struct qlcnic_adapter *adapter, u8 *mac, in qlcnic_83xx_configure_mac() argument
2155 int qlcnic_83xx_get_mac_address(struct qlcnic_adapter *adapter, u8 *mac, in qlcnic_83xx_get_mac_address() argument
2163 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_MAC_ADDRESS); in qlcnic_83xx_get_mac_address()
2167 qlcnic_83xx_configure_mac(adapter, mac, QLCNIC_GET_CURRENT_MAC, &cmd); in qlcnic_83xx_get_mac_address()
2168 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_mac_address()
2179 dev_err(&adapter->pdev->dev, "Failed to get mac address%d\n", in qlcnic_83xx_get_mac_address()
2187 static int qlcnic_83xx_set_rx_intr_coal(struct qlcnic_adapter *adapter) in qlcnic_83xx_set_rx_intr_coal() argument
2189 struct qlcnic_nic_intr_coalesce *coal = &adapter->ahw->coal; in qlcnic_83xx_set_rx_intr_coal()
2194 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_INTR_COAL); in qlcnic_83xx_set_rx_intr_coal()
2198 temp = adapter->recv_ctx->context_id; in qlcnic_83xx_set_rx_intr_coal()
2204 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_set_rx_intr_coal()
2206 netdev_err(adapter->netdev, in qlcnic_83xx_set_rx_intr_coal()
2214 static int qlcnic_83xx_set_tx_intr_coal(struct qlcnic_adapter *adapter) in qlcnic_83xx_set_tx_intr_coal() argument
2216 struct qlcnic_nic_intr_coalesce *coal = &adapter->ahw->coal; in qlcnic_83xx_set_tx_intr_coal()
2221 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_INTR_COAL); in qlcnic_83xx_set_tx_intr_coal()
2225 temp = adapter->tx_ring->ctx_id; in qlcnic_83xx_set_tx_intr_coal()
2231 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_set_tx_intr_coal()
2233 netdev_err(adapter->netdev, in qlcnic_83xx_set_tx_intr_coal()
2241 int qlcnic_83xx_set_rx_tx_intr_coal(struct qlcnic_adapter *adapter) in qlcnic_83xx_set_rx_tx_intr_coal() argument
2245 err = qlcnic_83xx_set_rx_intr_coal(adapter); in qlcnic_83xx_set_rx_tx_intr_coal()
2247 netdev_err(adapter->netdev, in qlcnic_83xx_set_rx_tx_intr_coal()
2250 err = qlcnic_83xx_set_tx_intr_coal(adapter); in qlcnic_83xx_set_rx_tx_intr_coal()
2252 netdev_err(adapter->netdev, in qlcnic_83xx_set_rx_tx_intr_coal()
2258 int qlcnic_83xx_config_intr_coal(struct qlcnic_adapter *adapter, in qlcnic_83xx_config_intr_coal() argument
2261 struct qlcnic_nic_intr_coalesce *coal = &adapter->ahw->coal; in qlcnic_83xx_config_intr_coal()
2266 if (adapter->recv_ctx->state == QLCNIC_HOST_CTX_STATE_FREED) in qlcnic_83xx_config_intr_coal()
2295 err = qlcnic_83xx_set_rx_intr_coal(adapter); in qlcnic_83xx_config_intr_coal()
2298 err = qlcnic_83xx_set_tx_intr_coal(adapter); in qlcnic_83xx_config_intr_coal()
2301 err = qlcnic_83xx_set_rx_tx_intr_coal(adapter); in qlcnic_83xx_config_intr_coal()
2305 netdev_err(adapter->netdev, in qlcnic_83xx_config_intr_coal()
2313 static void qlcnic_83xx_handle_link_aen(struct qlcnic_adapter *adapter, in qlcnic_83xx_handle_link_aen() argument
2316 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_handle_link_aen()
2336 qlcnic_advert_link_change(adapter, link_status); in qlcnic_83xx_handle_link_aen()
2342 struct qlcnic_adapter *adapter = data; in qlcnic_83xx_handle_aen() local
2346 mbx = adapter->ahw->mailbox; in qlcnic_83xx_handle_aen()
2348 resp = QLCRDX(adapter->ahw, QLCNIC_FW_MBX_CTRL); in qlcnic_83xx_handle_aen()
2352 event = readl(QLCNIC_MBX_FW(adapter->ahw, 0)); in qlcnic_83xx_handle_aen()
2354 __qlcnic_83xx_process_aen(adapter); in qlcnic_83xx_handle_aen()
2359 adapter->stats.mbx_spurious_intr++; in qlcnic_83xx_handle_aen()
2363 mask = QLCRDX(adapter->ahw, QLCNIC_DEF_INT_MASK); in qlcnic_83xx_handle_aen()
2364 writel(0, adapter->ahw->pci_base0 + mask); in qlcnic_83xx_handle_aen()
2369 int qlcnic_83xx_set_nic_info(struct qlcnic_adapter *adapter, in qlcnic_83xx_set_nic_info() argument
2375 if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC) { in qlcnic_83xx_set_nic_info()
2376 dev_err(&adapter->pdev->dev, in qlcnic_83xx_set_nic_info()
2382 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); in qlcnic_83xx_set_nic_info()
2396 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_set_nic_info()
2399 dev_err(&adapter->pdev->dev, "Failed to set nic info%d\n", in qlcnic_83xx_set_nic_info()
2409 int qlcnic_83xx_get_nic_info(struct qlcnic_adapter *adapter, in qlcnic_83xx_get_nic_info() argument
2416 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_nic_info()
2418 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_NIC_INFO); in qlcnic_83xx_get_nic_info()
2428 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_nic_info()
2430 dev_info(&adapter->pdev->dev, in qlcnic_83xx_get_nic_info()
2462 int qlcnic_get_pci_func_type(struct qlcnic_adapter *adapter, u16 type, in qlcnic_get_pci_func_type() argument
2465 struct device *dev = &adapter->pdev->dev; in qlcnic_get_pci_func_type()
2487 int qlcnic_83xx_get_pci_info(struct qlcnic_adapter *adapter, in qlcnic_83xx_get_pci_info() argument
2490 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_pci_info()
2491 struct device *dev = &adapter->pdev->dev; in qlcnic_83xx_get_pci_info()
2497 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PCI_INFO); in qlcnic_83xx_get_pci_info()
2501 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_pci_info()
2515 err = qlcnic_get_pci_func_type(adapter, pci_info->type, in qlcnic_83xx_get_pci_info()
2546 int qlcnic_83xx_config_intrpt(struct qlcnic_adapter *adapter, bool op_type) in qlcnic_83xx_config_intrpt() argument
2553 max_ints = adapter->ahw->num_msix - 1; in qlcnic_83xx_config_intrpt()
2554 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_INTRPT); in qlcnic_83xx_config_intrpt()
2560 if (qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_config_intrpt()
2561 cmd.req.arg[1] |= (adapter->ahw->pci_func << 8) | BIT_16; in qlcnic_83xx_config_intrpt()
2565 val = type | (adapter->ahw->intr_tbl[i].type << 4); in qlcnic_83xx_config_intrpt()
2566 if (adapter->ahw->intr_tbl[i].type == QLCNIC_INTRPT_MSIX) in qlcnic_83xx_config_intrpt()
2567 val |= (adapter->ahw->intr_tbl[i].id << 16); in qlcnic_83xx_config_intrpt()
2570 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_intrpt()
2572 dev_err(&adapter->pdev->dev, in qlcnic_83xx_config_intrpt()
2581 dev_info(&adapter->pdev->dev, in qlcnic_83xx_config_intrpt()
2583 adapter->ahw->intr_tbl[i].id); in qlcnic_83xx_config_intrpt()
2587 adapter->ahw->intr_tbl[i].id = MSW(val); in qlcnic_83xx_config_intrpt()
2588 adapter->ahw->intr_tbl[i].enabled = 1; in qlcnic_83xx_config_intrpt()
2590 adapter->ahw->intr_tbl[i].src = temp; in qlcnic_83xx_config_intrpt()
2592 adapter->ahw->intr_tbl[i].id = i; in qlcnic_83xx_config_intrpt()
2593 adapter->ahw->intr_tbl[i].enabled = 0; in qlcnic_83xx_config_intrpt()
2594 adapter->ahw->intr_tbl[i].src = 0; in qlcnic_83xx_config_intrpt()
2602 int qlcnic_83xx_lock_flash(struct qlcnic_adapter *adapter) in qlcnic_83xx_lock_flash() argument
2608 status = QLC_SHARED_REG_RD32(adapter, QLCNIC_FLASH_LOCK); in qlcnic_83xx_lock_flash()
2613 id = QLC_SHARED_REG_RD32(adapter, in qlcnic_83xx_lock_flash()
2615 dev_err(&adapter->pdev->dev, in qlcnic_83xx_lock_flash()
2622 QLC_SHARED_REG_WR32(adapter, QLCNIC_FLASH_LOCK_OWNER, adapter->portnum); in qlcnic_83xx_lock_flash()
2626 void qlcnic_83xx_unlock_flash(struct qlcnic_adapter *adapter) in qlcnic_83xx_unlock_flash() argument
2628 QLC_SHARED_REG_RD32(adapter, QLCNIC_FLASH_UNLOCK); in qlcnic_83xx_unlock_flash()
2629 QLC_SHARED_REG_WR32(adapter, QLCNIC_FLASH_LOCK_OWNER, 0xFF); in qlcnic_83xx_unlock_flash()
2632 int qlcnic_83xx_lockless_flash_read32(struct qlcnic_adapter *adapter, in qlcnic_83xx_lockless_flash_read32() argument
2642 dev_err(&adapter->pdev->dev, "Illegal addr = 0x%x\n", addr); in qlcnic_83xx_lockless_flash_read32()
2646 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_DIRECT_WINDOW, in qlcnic_83xx_lockless_flash_read32()
2656 ret = QLCRD32(adapter, indirect_add, &err); in qlcnic_83xx_lockless_flash_read32()
2669 qlcnic_83xx_wrt_reg_indirect(adapter, in qlcnic_83xx_lockless_flash_read32()
2679 ret = QLCRD32(adapter, indirect_add, &err); in qlcnic_83xx_lockless_flash_read32()
2693 static int qlcnic_83xx_poll_flash_status_reg(struct qlcnic_adapter *adapter) in qlcnic_83xx_poll_flash_status_reg() argument
2700 status = QLCRD32(adapter, QLC_83XX_FLASH_STATUS, &err); in qlcnic_83xx_poll_flash_status_reg()
2717 int qlcnic_83xx_enable_flash_write(struct qlcnic_adapter *adapter) in qlcnic_83xx_enable_flash_write() argument
2721 cmd = adapter->ahw->fdt.write_statusreg_cmd; in qlcnic_83xx_enable_flash_write()
2722 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_enable_flash_write()
2724 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, in qlcnic_83xx_enable_flash_write()
2725 adapter->ahw->fdt.write_enable_bits); in qlcnic_83xx_enable_flash_write()
2726 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_enable_flash_write()
2728 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_enable_flash_write()
2735 int qlcnic_83xx_disable_flash_write(struct qlcnic_adapter *adapter) in qlcnic_83xx_disable_flash_write() argument
2739 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_disable_flash_write()
2741 adapter->ahw->fdt.write_statusreg_cmd)); in qlcnic_83xx_disable_flash_write()
2742 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, in qlcnic_83xx_disable_flash_write()
2743 adapter->ahw->fdt.write_disable_bits); in qlcnic_83xx_disable_flash_write()
2744 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_disable_flash_write()
2746 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_disable_flash_write()
2753 int qlcnic_83xx_read_flash_mfg_id(struct qlcnic_adapter *adapter) in qlcnic_83xx_read_flash_mfg_id() argument
2758 if (qlcnic_83xx_lock_flash(adapter)) in qlcnic_83xx_read_flash_mfg_id()
2761 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_read_flash_mfg_id()
2763 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_read_flash_mfg_id()
2765 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_read_flash_mfg_id()
2767 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_read_flash_mfg_id()
2771 mfg_id = QLCRD32(adapter, QLC_83XX_FLASH_RDDATA, &err); in qlcnic_83xx_read_flash_mfg_id()
2773 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_read_flash_mfg_id()
2777 adapter->flash_mfg_id = (mfg_id & 0xFF); in qlcnic_83xx_read_flash_mfg_id()
2778 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_read_flash_mfg_id()
2783 int qlcnic_83xx_read_flash_descriptor_table(struct qlcnic_adapter *adapter) in qlcnic_83xx_read_flash_descriptor_table() argument
2790 if (qlcnic_83xx_lock_flash(adapter)) in qlcnic_83xx_read_flash_descriptor_table()
2793 memset(&adapter->ahw->fdt, 0, fdt_size); in qlcnic_83xx_read_flash_descriptor_table()
2794 ret = qlcnic_83xx_lockless_flash_read32(adapter, QLCNIC_FDT_LOCATION, in qlcnic_83xx_read_flash_descriptor_table()
2795 (u8 *)&adapter->ahw->fdt, in qlcnic_83xx_read_flash_descriptor_table()
2797 qlcnic_swap32_buffer((u32 *)&adapter->ahw->fdt, count); in qlcnic_83xx_read_flash_descriptor_table()
2798 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_read_flash_descriptor_table()
2802 int qlcnic_83xx_erase_flash_sector(struct qlcnic_adapter *adapter, in qlcnic_83xx_erase_flash_sector() argument
2808 if (qlcnic_83xx_lock_flash(adapter) != 0) in qlcnic_83xx_erase_flash_sector()
2811 if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) { in qlcnic_83xx_erase_flash_sector()
2812 ret = qlcnic_83xx_enable_flash_write(adapter); in qlcnic_83xx_erase_flash_sector()
2814 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_erase_flash_sector()
2815 dev_err(&adapter->pdev->dev, in qlcnic_83xx_erase_flash_sector()
2822 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_erase_flash_sector()
2824 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_erase_flash_sector()
2825 dev_err(&adapter->pdev->dev, in qlcnic_83xx_erase_flash_sector()
2834 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, in qlcnic_83xx_erase_flash_sector()
2836 cmd = QLC_83XX_FLASH_FDT_ERASE_DEF_SIG | adapter->ahw->fdt.erase_cmd; in qlcnic_83xx_erase_flash_sector()
2837 if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) in qlcnic_83xx_erase_flash_sector()
2838 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, cmd); in qlcnic_83xx_erase_flash_sector()
2840 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_erase_flash_sector()
2842 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_erase_flash_sector()
2845 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_erase_flash_sector()
2847 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_erase_flash_sector()
2848 dev_err(&adapter->pdev->dev, in qlcnic_83xx_erase_flash_sector()
2853 if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) { in qlcnic_83xx_erase_flash_sector()
2854 ret = qlcnic_83xx_disable_flash_write(adapter); in qlcnic_83xx_erase_flash_sector()
2856 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_erase_flash_sector()
2857 dev_err(&adapter->pdev->dev, in qlcnic_83xx_erase_flash_sector()
2863 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_erase_flash_sector()
2868 int qlcnic_83xx_flash_write32(struct qlcnic_adapter *adapter, u32 addr, in qlcnic_83xx_flash_write32() argument
2874 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, addr1); in qlcnic_83xx_flash_write32()
2875 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, *p_data); in qlcnic_83xx_flash_write32()
2876 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_flash_write32()
2878 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_flash_write32()
2880 dev_err(&adapter->pdev->dev, in qlcnic_83xx_flash_write32()
2888 int qlcnic_83xx_flash_bulk_write(struct qlcnic_adapter *adapter, u32 addr, in qlcnic_83xx_flash_bulk_write() argument
2896 dev_err(&adapter->pdev->dev, in qlcnic_83xx_flash_bulk_write()
2901 temp = QLCRD32(adapter, QLC_83XX_FLASH_SPI_CONTROL, &err); in qlcnic_83xx_flash_bulk_write()
2905 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_SPI_CONTROL, in qlcnic_83xx_flash_bulk_write()
2907 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_flash_bulk_write()
2911 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, *p_data++); in qlcnic_83xx_flash_bulk_write()
2912 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_flash_bulk_write()
2914 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_flash_bulk_write()
2916 dev_err(&adapter->pdev->dev, in qlcnic_83xx_flash_bulk_write()
2922 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_flash_bulk_write()
2926 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, in qlcnic_83xx_flash_bulk_write()
2928 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_flash_bulk_write()
2930 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_flash_bulk_write()
2932 dev_err(&adapter->pdev->dev, in qlcnic_83xx_flash_bulk_write()
2939 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_flash_bulk_write()
2943 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, *p_data++); in qlcnic_83xx_flash_bulk_write()
2944 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_flash_bulk_write()
2946 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_flash_bulk_write()
2948 dev_err(&adapter->pdev->dev, in qlcnic_83xx_flash_bulk_write()
2953 ret = QLCRD32(adapter, QLC_83XX_FLASH_SPI_STATUS, &err); in qlcnic_83xx_flash_bulk_write()
2958 dev_err(&adapter->pdev->dev, "%s: failed at %d\n", in qlcnic_83xx_flash_bulk_write()
2961 temp = QLCRD32(adapter, QLC_83XX_FLASH_SPI_CONTROL, &err); in qlcnic_83xx_flash_bulk_write()
2965 qlcnic_83xx_wrt_reg_indirect(adapter, in qlcnic_83xx_flash_bulk_write()
2973 static void qlcnic_83xx_recover_driver_lock(struct qlcnic_adapter *adapter) in qlcnic_83xx_recover_driver_lock() argument
2977 val = QLCRDX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK); in qlcnic_83xx_recover_driver_lock()
2982 val = val | ((adapter->portnum << 2) | in qlcnic_83xx_recover_driver_lock()
2984 QLCWRX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK, val); in qlcnic_83xx_recover_driver_lock()
2985 dev_info(&adapter->pdev->dev, in qlcnic_83xx_recover_driver_lock()
2988 val = QLCRDX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK); in qlcnic_83xx_recover_driver_lock()
2990 if (id == adapter->portnum) { in qlcnic_83xx_recover_driver_lock()
2993 QLCWRX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK, val); in qlcnic_83xx_recover_driver_lock()
2995 QLCRDX(adapter->ahw, QLC_83XX_DRV_UNLOCK); in qlcnic_83xx_recover_driver_lock()
2998 QLCWRX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK, val); in qlcnic_83xx_recover_driver_lock()
2999 dev_info(&adapter->pdev->dev, in qlcnic_83xx_recover_driver_lock()
3002 dev_info(&adapter->pdev->dev, in qlcnic_83xx_recover_driver_lock()
3007 dev_info(&adapter->pdev->dev, in qlcnic_83xx_recover_driver_lock()
3013 int qlcnic_83xx_lock_driver(struct qlcnic_adapter *adapter) in qlcnic_83xx_lock_driver() argument
3019 status = QLCRDX(adapter->ahw, QLC_83XX_DRV_LOCK); in qlcnic_83xx_lock_driver()
3027 temp = QLCRDX(adapter->ahw, QLC_83XX_DRV_LOCK_ID); in qlcnic_83xx_lock_driver()
3030 val = QLCRDX(adapter->ahw, QLC_83XX_DRV_LOCK_ID); in qlcnic_83xx_lock_driver()
3033 dev_info(&adapter->pdev->dev, in qlcnic_83xx_lock_driver()
3036 qlcnic_83xx_recover_driver_lock(adapter); in qlcnic_83xx_lock_driver()
3040 dev_err(&adapter->pdev->dev, in qlcnic_83xx_lock_driver()
3048 dev_err(&adapter->pdev->dev, in qlcnic_83xx_lock_driver()
3054 val = QLCRDX(adapter->ahw, QLC_83XX_DRV_LOCK_ID); in qlcnic_83xx_lock_driver()
3057 val = lock_alive_counter << 8 | adapter->portnum; in qlcnic_83xx_lock_driver()
3058 QLCWRX(adapter->ahw, QLC_83XX_DRV_LOCK_ID, val); in qlcnic_83xx_lock_driver()
3063 void qlcnic_83xx_unlock_driver(struct qlcnic_adapter *adapter) in qlcnic_83xx_unlock_driver() argument
3067 val = QLCRDX(adapter->ahw, QLC_83XX_DRV_LOCK_ID); in qlcnic_83xx_unlock_driver()
3071 if (id != adapter->portnum) in qlcnic_83xx_unlock_driver()
3072 dev_err(&adapter->pdev->dev, in qlcnic_83xx_unlock_driver()
3074 __func__, adapter->portnum, id); in qlcnic_83xx_unlock_driver()
3077 QLCWRX(adapter->ahw, QLC_83XX_DRV_LOCK_ID, val); in qlcnic_83xx_unlock_driver()
3078 QLCRDX(adapter->ahw, QLC_83XX_DRV_UNLOCK); in qlcnic_83xx_unlock_driver()
3081 int qlcnic_ms_mem_write128(struct qlcnic_adapter *adapter, u64 addr, in qlcnic_ms_mem_write128() argument
3091 mutex_lock(&adapter->ahw->mem_lock); in qlcnic_ms_mem_write128()
3092 qlcnic_ind_wr(adapter, QLCNIC_MS_ADDR_HI, 0); in qlcnic_ms_mem_write128()
3099 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_ms_mem_write128()
3103 qlcnic_ind_wr(adapter, QLCNIC_MS_ADDR_LO, addr); in qlcnic_ms_mem_write128()
3104 qlcnic_ind_wr(adapter, QLCNIC_MS_WRTDATA_LO, *data++); in qlcnic_ms_mem_write128()
3105 qlcnic_ind_wr(adapter, QLCNIC_MS_WRTDATA_HI, *data++); in qlcnic_ms_mem_write128()
3106 qlcnic_ind_wr(adapter, QLCNIC_MS_WRTDATA_ULO, *data++); in qlcnic_ms_mem_write128()
3107 qlcnic_ind_wr(adapter, QLCNIC_MS_WRTDATA_UHI, *data++); in qlcnic_ms_mem_write128()
3108 qlcnic_ind_wr(adapter, QLCNIC_MS_CTRL, QLCNIC_TA_WRITE_ENABLE); in qlcnic_ms_mem_write128()
3109 qlcnic_ind_wr(adapter, QLCNIC_MS_CTRL, QLCNIC_TA_WRITE_START); in qlcnic_ms_mem_write128()
3112 temp = qlcnic_ind_rd(adapter, QLCNIC_MS_CTRL); in qlcnic_ms_mem_write128()
3122 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_ms_mem_write128()
3127 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_ms_mem_write128()
3132 int qlcnic_83xx_flash_read32(struct qlcnic_adapter *adapter, u32 flash_addr, in qlcnic_83xx_flash_read32() argument
3139 if (qlcnic_83xx_lock_flash(adapter) != 0) in qlcnic_83xx_flash_read32()
3143 dev_err(&adapter->pdev->dev, "Illegal addr = 0x%x\n", addr); in qlcnic_83xx_flash_read32()
3144 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_flash_read32()
3149 if (qlcnic_83xx_wrt_reg_indirect(adapter, in qlcnic_83xx_flash_read32()
3152 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_flash_read32()
3157 ret = QLCRD32(adapter, indirect_addr, &err); in qlcnic_83xx_flash_read32()
3167 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_flash_read32()
3172 int qlcnic_83xx_test_link(struct qlcnic_adapter *adapter) in qlcnic_83xx_test_link() argument
3178 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_test_link()
3180 if (qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_test_link()
3181 pci_func = adapter->portnum; in qlcnic_83xx_test_link()
3187 dev_info(&adapter->pdev->dev, "link state down\n"); in qlcnic_83xx_test_link()
3191 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_LINK_STATUS); in qlcnic_83xx_test_link()
3195 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_test_link()
3197 dev_info(&adapter->pdev->dev, in qlcnic_83xx_test_link()
3256 int qlcnic_83xx_get_settings(struct qlcnic_adapter *adapter, in qlcnic_83xx_get_settings() argument
3259 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_settings()
3263 if (!test_bit(__QLCNIC_MAINTENANCE_MODE, &adapter->state)) { in qlcnic_83xx_get_settings()
3265 status = qlcnic_83xx_get_port_info(adapter); in qlcnic_83xx_get_settings()
3267 config = qlcnic_83xx_test_link(adapter); in qlcnic_83xx_get_settings()
3274 if (netif_running(adapter->netdev) && ahw->has_link_events) { in qlcnic_83xx_get_settings()
3351 int qlcnic_83xx_set_settings(struct qlcnic_adapter *adapter, in qlcnic_83xx_set_settings() argument
3354 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_set_settings()
3355 u32 config = adapter->ahw->port_config; in qlcnic_83xx_set_settings()
3360 netdev_info(adapter->netdev, in qlcnic_83xx_set_settings()
3401 status = qlcnic_83xx_set_port_config(adapter); in qlcnic_83xx_set_settings()
3403 netdev_info(adapter->netdev, in qlcnic_83xx_set_settings()
3424 static u64 *qlcnic_83xx_fill_stats(struct qlcnic_adapter *adapter, in qlcnic_83xx_fill_stats() argument
3431 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_83xx_fill_stats()
3433 dev_info(&adapter->pdev->dev, in qlcnic_83xx_fill_stats()
3474 dev_warn(&adapter->pdev->dev, "Unknown get statistics mode\n"); in qlcnic_83xx_fill_stats()
3480 void qlcnic_83xx_get_stats(struct qlcnic_adapter *adapter, u64 *data) in qlcnic_83xx_get_stats() argument
3483 struct net_device *netdev = adapter->netdev; in qlcnic_83xx_get_stats()
3486 ret = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_STATISTICS); in qlcnic_83xx_get_stats()
3490 cmd.req.arg[1] = BIT_1 | (adapter->tx_ring->ctx_id << 16); in qlcnic_83xx_get_stats()
3492 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3499 cmd.req.arg[1] = BIT_2 | (adapter->portnum << 16); in qlcnic_83xx_get_stats()
3502 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3509 cmd.req.arg[1] = adapter->recv_ctx->context_id << 16; in qlcnic_83xx_get_stats()
3512 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3523 int qlcnic_83xx_extend_md_capab(struct qlcnic_adapter *adapter) in qlcnic_83xx_extend_md_capab() argument
3528 err = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_extend_md_capab()
3537 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_extend_md_capab()
3539 dev_err(&adapter->pdev->dev, in qlcnic_83xx_extend_md_capab()
3545 int qlcnic_83xx_reg_test(struct qlcnic_adapter *adapter) in qlcnic_83xx_reg_test() argument
3549 major = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_MAJOR); in qlcnic_83xx_reg_test()
3550 minor = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_MINOR); in qlcnic_83xx_reg_test()
3551 sub = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_SUB); in qlcnic_83xx_reg_test()
3553 if (adapter->fw_version != QLCNIC_VERSION_CODE(major, minor, sub)) { in qlcnic_83xx_reg_test()
3554 dev_info(&adapter->pdev->dev, "%s: Reg test failed\n", in qlcnic_83xx_reg_test()
3561 inline int qlcnic_83xx_get_regs_len(struct qlcnic_adapter *adapter) in qlcnic_83xx_get_regs_len() argument
3564 sizeof(*adapter->ahw->ext_reg_tbl)) + in qlcnic_83xx_get_regs_len()
3566 sizeof(*adapter->ahw->reg_tbl)); in qlcnic_83xx_get_regs_len()
3569 int qlcnic_83xx_get_registers(struct qlcnic_adapter *adapter, u32 *regs_buff) in qlcnic_83xx_get_registers() argument
3575 regs_buff[i] = QLC_SHARED_REG_RD32(adapter, j); in qlcnic_83xx_get_registers()
3578 regs_buff[i++] = QLCRDX(adapter->ahw, j); in qlcnic_83xx_get_registers()
3584 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_83xx_interrupt_test() local
3585 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_interrupt_test()
3587 u8 val, drv_sds_rings = adapter->drv_sds_rings; in qlcnic_83xx_interrupt_test()
3588 u8 drv_tx_rings = adapter->drv_tx_rings; in qlcnic_83xx_interrupt_test()
3593 if (test_bit(__QLCNIC_RESETTING, &adapter->state)) { in qlcnic_83xx_interrupt_test()
3598 if (qlcnic_get_diag_lock(adapter)) { in qlcnic_83xx_interrupt_test()
3609 ret = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_INTRPT_TEST); in qlcnic_83xx_interrupt_test()
3613 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_interrupt_test()
3622 ret = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_interrupt_test()
3627 dev_info(&adapter->pdev->dev, in qlcnic_83xx_interrupt_test()
3631 dev_err(&adapter->pdev->dev, in qlcnic_83xx_interrupt_test()
3644 adapter->drv_sds_rings = drv_sds_rings; in qlcnic_83xx_interrupt_test()
3645 adapter->drv_tx_rings = drv_tx_rings; in qlcnic_83xx_interrupt_test()
3646 qlcnic_release_diag_lock(adapter); in qlcnic_83xx_interrupt_test()
3650 void qlcnic_83xx_get_pauseparam(struct qlcnic_adapter *adapter, in qlcnic_83xx_get_pauseparam() argument
3653 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_pauseparam()
3657 status = qlcnic_83xx_get_port_config(adapter); in qlcnic_83xx_get_pauseparam()
3659 dev_err(&adapter->pdev->dev, in qlcnic_83xx_get_pauseparam()
3686 int qlcnic_83xx_set_pauseparam(struct qlcnic_adapter *adapter, in qlcnic_83xx_set_pauseparam() argument
3689 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_set_pauseparam()
3693 status = qlcnic_83xx_get_port_config(adapter); in qlcnic_83xx_set_pauseparam()
3695 dev_err(&adapter->pdev->dev, in qlcnic_83xx_set_pauseparam()
3725 status = qlcnic_83xx_set_port_config(adapter); in qlcnic_83xx_set_pauseparam()
3727 dev_err(&adapter->pdev->dev, in qlcnic_83xx_set_pauseparam()
3734 static int qlcnic_83xx_read_flash_status_reg(struct qlcnic_adapter *adapter) in qlcnic_83xx_read_flash_status_reg() argument
3739 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_read_flash_status_reg()
3741 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_read_flash_status_reg()
3743 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_read_flash_status_reg()
3747 temp = QLCRD32(adapter, QLC_83XX_FLASH_RDDATA, &err); in qlcnic_83xx_read_flash_status_reg()
3754 int qlcnic_83xx_flash_test(struct qlcnic_adapter *adapter) in qlcnic_83xx_flash_test() argument
3758 status = qlcnic_83xx_read_flash_status_reg(adapter); in qlcnic_83xx_flash_test()
3760 dev_info(&adapter->pdev->dev, "%s: EEPROM test failed.\n", in qlcnic_83xx_flash_test()
3769 struct qlcnic_adapter *adapter = pci_get_drvdata(pdev); in qlcnic_83xx_shutdown() local
3770 struct net_device *netdev = adapter->netdev; in qlcnic_83xx_shutdown()
3774 qlcnic_cancel_idc_work(adapter); in qlcnic_83xx_shutdown()
3777 qlcnic_down(adapter, netdev); in qlcnic_83xx_shutdown()
3779 qlcnic_83xx_disable_mbx_intr(adapter); in qlcnic_83xx_shutdown()
3780 cancel_delayed_work_sync(&adapter->idc_aen_work); in qlcnic_83xx_shutdown()
3789 static int qlcnic_83xx_resume(struct qlcnic_adapter *adapter) in qlcnic_83xx_resume() argument
3791 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_resume()
3795 err = qlcnic_83xx_idc_init(adapter); in qlcnic_83xx_resume()
3801 qlcnic_83xx_set_vnic_opmode(adapter); in qlcnic_83xx_resume()
3803 err = qlcnic_83xx_check_vnic_state(adapter); in qlcnic_83xx_resume()
3809 err = qlcnic_83xx_idc_reattach_driver(adapter); in qlcnic_83xx_resume()
3813 qlcnic_schedule_work(adapter, qlcnic_83xx_idc_poll_dev_state, in qlcnic_83xx_resume()
3834 qlcnic_83xx_notify_cmd_completion(struct qlcnic_adapter *adapter, in qlcnic_83xx_notify_cmd_completion() argument
3847 static void qlcnic_83xx_flush_mbx_queue(struct qlcnic_adapter *adapter) in qlcnic_83xx_flush_mbx_queue() argument
3849 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_flush_mbx_queue()
3857 dev_info(&adapter->pdev->dev, "%s: Mailbox command 0x%x\n", in qlcnic_83xx_flush_mbx_queue()
3861 qlcnic_83xx_notify_cmd_completion(adapter, cmd); in qlcnic_83xx_flush_mbx_queue()
3867 static int qlcnic_83xx_check_mbx_status(struct qlcnic_adapter *adapter) in qlcnic_83xx_check_mbx_status() argument
3869 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_check_mbx_status()
3886 static inline void qlcnic_83xx_signal_mbx_cmd(struct qlcnic_adapter *adapter, in qlcnic_83xx_signal_mbx_cmd() argument
3890 QLCWRX(adapter->ahw, QLCNIC_HOST_MBX_CTRL, QLCNIC_SET_OWNER); in qlcnic_83xx_signal_mbx_cmd()
3892 QLCWRX(adapter->ahw, QLCNIC_FW_MBX_CTRL, QLCNIC_CLR_OWNER); in qlcnic_83xx_signal_mbx_cmd()
3895 static void qlcnic_83xx_dequeue_mbx_cmd(struct qlcnic_adapter *adapter, in qlcnic_83xx_dequeue_mbx_cmd() argument
3898 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_dequeue_mbx_cmd()
3907 qlcnic_83xx_notify_cmd_completion(adapter, cmd); in qlcnic_83xx_dequeue_mbx_cmd()
3910 static void qlcnic_83xx_encode_mbx_cmd(struct qlcnic_adapter *adapter, in qlcnic_83xx_encode_mbx_cmd() argument
3914 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_encode_mbx_cmd()
3933 if (qlcnic_sriov_pf_check(adapter)) in qlcnic_83xx_encode_mbx_cmd()
3945 void qlcnic_83xx_detach_mailbox_work(struct qlcnic_adapter *adapter) in qlcnic_83xx_detach_mailbox_work() argument
3947 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_detach_mailbox_work()
3956 qlcnic_83xx_flush_mbx_queue(adapter); in qlcnic_83xx_detach_mailbox_work()
3959 static int qlcnic_83xx_enqueue_mbx_cmd(struct qlcnic_adapter *adapter, in qlcnic_83xx_enqueue_mbx_cmd() argument
3963 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_enqueue_mbx_cmd()
3986 static int qlcnic_83xx_check_mac_rcode(struct qlcnic_adapter *adapter, in qlcnic_83xx_check_mac_rcode() argument
3993 fw_data = readl(QLCNIC_MBX_FW(adapter->ahw, 2)); in qlcnic_83xx_check_mac_rcode()
4006 static void qlcnic_83xx_decode_mbx_rsp(struct qlcnic_adapter *adapter, in qlcnic_83xx_decode_mbx_rsp() argument
4009 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_decode_mbx_rsp()
4010 struct device *dev = &adapter->pdev->dev; in qlcnic_83xx_decode_mbx_rsp()
4016 qlcnic_83xx_get_mbx_data(adapter, cmd); in qlcnic_83xx_decode_mbx_rsp()
4024 if (!qlcnic_83xx_check_mac_rcode(adapter, cmd)) in qlcnic_83xx_decode_mbx_rsp()
4031 qlcnic_dump_mbx(adapter, cmd); in qlcnic_83xx_decode_mbx_rsp()
4037 static inline void qlcnic_dump_mailbox_registers(struct qlcnic_adapter *adapter) in qlcnic_dump_mailbox_registers() argument
4039 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_dump_mailbox_registers()
4043 …dev_info(&adapter->pdev->dev, "Mbx interrupt mask=0x%x, Mbx interrupt enable=0x%x, Host mbx contro… in qlcnic_dump_mailbox_registers()
4054 struct qlcnic_adapter *adapter = mbx->adapter; in qlcnic_83xx_mailbox_worker() local
4056 struct device *dev = &adapter->pdev->dev; in qlcnic_83xx_mailbox_worker()
4062 ahw = adapter->ahw; in qlcnic_83xx_mailbox_worker()
4065 if (qlcnic_83xx_check_mbx_status(adapter)) { in qlcnic_83xx_mailbox_worker()
4066 qlcnic_83xx_flush_mbx_queue(adapter); in qlcnic_83xx_mailbox_worker()
4084 mbx_ops->encode_cmd(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4085 mbx_ops->nofity_fw(adapter, QLC_83XX_MBX_REQUEST); in qlcnic_83xx_mailbox_worker()
4089 mbx_ops->decode_resp(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4090 mbx_ops->nofity_fw(adapter, QLC_83XX_MBX_COMPLETION); in qlcnic_83xx_mailbox_worker()
4096 qlcnic_dump_mailbox_registers(adapter); in qlcnic_83xx_mailbox_worker()
4097 qlcnic_83xx_get_mbx_data(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4098 qlcnic_dump_mbx(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4099 qlcnic_83xx_idc_request_reset(adapter, in qlcnic_83xx_mailbox_worker()
4103 mbx_ops->dequeue_cmd(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4115 int qlcnic_83xx_init_mailbox_work(struct qlcnic_adapter *adapter) in qlcnic_83xx_init_mailbox_work() argument
4117 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_init_mailbox_work()
4126 mbx->adapter = adapter; in qlcnic_83xx_init_mailbox_work()
4147 struct qlcnic_adapter *adapter = pci_get_drvdata(pdev); in qlcnic_83xx_io_error_detected() local
4155 set_bit(__QLCNIC_AER, &adapter->state); in qlcnic_83xx_io_error_detected()
4156 set_bit(__QLCNIC_RESETTING, &adapter->state); in qlcnic_83xx_io_error_detected()
4158 qlcnic_83xx_aer_stop_poll_work(adapter); in qlcnic_83xx_io_error_detected()
4168 struct qlcnic_adapter *adapter = pci_get_drvdata(pdev); in qlcnic_83xx_io_slot_reset() local
4180 err = qlcnic_83xx_aer_reset(adapter); in qlcnic_83xx_io_slot_reset()
4184 clear_bit(__QLCNIC_AER, &adapter->state); in qlcnic_83xx_io_slot_reset()
4185 clear_bit(__QLCNIC_RESETTING, &adapter->state); in qlcnic_83xx_io_slot_reset()
4191 struct qlcnic_adapter *adapter = pci_get_drvdata(pdev); in qlcnic_83xx_io_resume() local
4194 if (test_and_clear_bit(__QLCNIC_AER, &adapter->state)) in qlcnic_83xx_io_resume()
4195 qlcnic_83xx_aer_start_poll_work(adapter); in qlcnic_83xx_io_resume()