Lines Matching refs:adapter

265 int qlcnic_83xx_get_fw_version(struct qlcnic_adapter *adapter)  in qlcnic_83xx_get_fw_version()  argument
268 struct pci_dev *pdev = adapter->pdev; in qlcnic_83xx_get_fw_version()
270 fw_major = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_MAJOR); in qlcnic_83xx_get_fw_version()
271 fw_minor = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_MINOR); in qlcnic_83xx_get_fw_version()
272 fw_build = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_SUB); in qlcnic_83xx_get_fw_version()
273 adapter->fw_version = QLCNIC_VERSION_CODE(fw_major, fw_minor, fw_build); in qlcnic_83xx_get_fw_version()
278 return adapter->fw_version; in qlcnic_83xx_get_fw_version()
281 static int __qlcnic_set_win_base(struct qlcnic_adapter *adapter, u32 addr) in __qlcnic_set_win_base() argument
286 base = adapter->ahw->pci_base0 + in __qlcnic_set_win_base()
287 QLC_83XX_CRB_WIN_FUNC(adapter->ahw->pci_func); in __qlcnic_set_win_base()
296 int qlcnic_83xx_rd_reg_indirect(struct qlcnic_adapter *adapter, ulong addr, in qlcnic_83xx_rd_reg_indirect() argument
299 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_rd_reg_indirect()
301 *err = __qlcnic_set_win_base(adapter, (u32) addr); in qlcnic_83xx_rd_reg_indirect()
305 dev_err(&adapter->pdev->dev, in qlcnic_83xx_rd_reg_indirect()
311 int qlcnic_83xx_wrt_reg_indirect(struct qlcnic_adapter *adapter, ulong addr, in qlcnic_83xx_wrt_reg_indirect() argument
315 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_wrt_reg_indirect()
317 err = __qlcnic_set_win_base(adapter, (u32) addr); in qlcnic_83xx_wrt_reg_indirect()
322 dev_err(&adapter->pdev->dev, in qlcnic_83xx_wrt_reg_indirect()
329 static void qlcnic_83xx_enable_legacy(struct qlcnic_adapter *adapter) in qlcnic_83xx_enable_legacy() argument
331 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_enable_legacy()
334 adapter->tgt_status_reg = ahw->pci_base0 + QLC_83XX_INTX_PTR; in qlcnic_83xx_enable_legacy()
335 adapter->tgt_mask_reg = ahw->pci_base0 + QLC_83XX_INTX_MASK; in qlcnic_83xx_enable_legacy()
336 adapter->isr_int_vec = ahw->pci_base0 + QLC_83XX_INTX_TRGR; in qlcnic_83xx_enable_legacy()
337 adapter->msix_entries[0].vector = adapter->pdev->irq; in qlcnic_83xx_enable_legacy()
338 dev_info(&adapter->pdev->dev, "using legacy interrupt\n"); in qlcnic_83xx_enable_legacy()
341 static int qlcnic_83xx_calculate_msix_vector(struct qlcnic_adapter *adapter) in qlcnic_83xx_calculate_msix_vector() argument
345 num_msix = adapter->drv_sds_rings; in qlcnic_83xx_calculate_msix_vector()
350 if (!(adapter->flags & QLCNIC_TX_INTR_SHARED)) in qlcnic_83xx_calculate_msix_vector()
351 num_msix += adapter->drv_tx_rings; in qlcnic_83xx_calculate_msix_vector()
356 int qlcnic_83xx_setup_intr(struct qlcnic_adapter *adapter) in qlcnic_83xx_setup_intr() argument
358 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_setup_intr()
361 if (adapter->flags & QLCNIC_TSS_RSS) { in qlcnic_83xx_setup_intr()
362 err = qlcnic_setup_tss_rss_intr(adapter); in qlcnic_83xx_setup_intr()
367 num_msix = qlcnic_83xx_calculate_msix_vector(adapter); in qlcnic_83xx_setup_intr()
369 err = qlcnic_enable_msix(adapter, num_msix); in qlcnic_83xx_setup_intr()
373 if (adapter->flags & QLCNIC_MSIX_ENABLED) { in qlcnic_83xx_setup_intr()
376 if (qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_setup_intr()
379 adapter->drv_sds_rings = QLCNIC_SINGLE_RING; in qlcnic_83xx_setup_intr()
380 adapter->drv_tx_rings = QLCNIC_SINGLE_RING; in qlcnic_83xx_setup_intr()
390 if (!(adapter->flags & QLCNIC_MSIX_ENABLED)) { in qlcnic_83xx_setup_intr()
391 if (adapter->ahw->pci_func >= QLC_MAX_LEGACY_FUNC_SUPP) { in qlcnic_83xx_setup_intr()
392 …dev_err(&adapter->pdev->dev, "PCI function number 8 and higher are not supported with legacy inter… in qlcnic_83xx_setup_intr()
397 qlcnic_83xx_enable_legacy(adapter); in qlcnic_83xx_setup_intr()
401 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_setup_intr()
412 static inline void qlcnic_83xx_clear_legacy_intr_mask(struct qlcnic_adapter *adapter) in qlcnic_83xx_clear_legacy_intr_mask() argument
414 writel(0, adapter->tgt_mask_reg); in qlcnic_83xx_clear_legacy_intr_mask()
417 static inline void qlcnic_83xx_set_legacy_intr_mask(struct qlcnic_adapter *adapter) in qlcnic_83xx_set_legacy_intr_mask() argument
419 if (adapter->tgt_mask_reg) in qlcnic_83xx_set_legacy_intr_mask()
420 writel(1, adapter->tgt_mask_reg); in qlcnic_83xx_set_legacy_intr_mask()
424 *adapter) in qlcnic_83xx_enable_legacy_msix_mbx_intr()
433 mask = QLCRDX(adapter->ahw, QLCNIC_DEF_INT_MASK); in qlcnic_83xx_enable_legacy_msix_mbx_intr()
434 writel(0, adapter->ahw->pci_base0 + mask); in qlcnic_83xx_enable_legacy_msix_mbx_intr()
437 void qlcnic_83xx_disable_mbx_intr(struct qlcnic_adapter *adapter) in qlcnic_83xx_disable_mbx_intr() argument
441 mask = QLCRDX(adapter->ahw, QLCNIC_DEF_INT_MASK); in qlcnic_83xx_disable_mbx_intr()
442 writel(1, adapter->ahw->pci_base0 + mask); in qlcnic_83xx_disable_mbx_intr()
443 QLCWRX(adapter->ahw, QLCNIC_MBX_INTR_ENBL, 0); in qlcnic_83xx_disable_mbx_intr()
446 static inline void qlcnic_83xx_get_mbx_data(struct qlcnic_adapter *adapter, in qlcnic_83xx_get_mbx_data() argument
455 cmd->rsp.arg[i] = readl(QLCNIC_MBX_FW(adapter->ahw, i)); in qlcnic_83xx_get_mbx_data()
458 irqreturn_t qlcnic_83xx_clear_legacy_intr(struct qlcnic_adapter *adapter) in qlcnic_83xx_clear_legacy_intr() argument
461 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_clear_legacy_intr()
464 intr_val = readl(adapter->tgt_status_reg); in qlcnic_83xx_clear_legacy_intr()
469 if (QLC_83XX_INTX_FUNC(intr_val) != adapter->ahw->pci_func) { in qlcnic_83xx_clear_legacy_intr()
470 adapter->stats.spurious_intr++; in qlcnic_83xx_clear_legacy_intr()
477 writel(0, adapter->isr_int_vec); in qlcnic_83xx_clear_legacy_intr()
478 intr_val = readl(adapter->isr_int_vec); in qlcnic_83xx_clear_legacy_intr()
480 intr_val = readl(adapter->tgt_status_reg); in qlcnic_83xx_clear_legacy_intr()
496 static void qlcnic_83xx_poll_process_aen(struct qlcnic_adapter *adapter) in qlcnic_83xx_poll_process_aen() argument
499 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_poll_process_aen()
503 resp = QLCRDX(adapter->ahw, QLCNIC_FW_MBX_CTRL); in qlcnic_83xx_poll_process_aen()
507 event = readl(QLCNIC_MBX_FW(adapter->ahw, 0)); in qlcnic_83xx_poll_process_aen()
509 __qlcnic_83xx_process_aen(adapter); in qlcnic_83xx_poll_process_aen()
515 qlcnic_83xx_enable_legacy_msix_mbx_intr(adapter); in qlcnic_83xx_poll_process_aen()
521 struct qlcnic_adapter *adapter = data; in qlcnic_83xx_intr() local
523 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_intr()
525 if (qlcnic_83xx_clear_legacy_intr(adapter) == IRQ_NONE) in qlcnic_83xx_intr()
528 qlcnic_83xx_poll_process_aen(adapter); in qlcnic_83xx_intr()
533 qlcnic_83xx_enable_legacy_msix_mbx_intr(adapter); in qlcnic_83xx_intr()
537 if (!test_bit(__QLCNIC_DEV_UP, &adapter->state)) { in qlcnic_83xx_intr()
538 qlcnic_83xx_enable_legacy_msix_mbx_intr(adapter); in qlcnic_83xx_intr()
540 sds_ring = &adapter->recv_ctx->sds_rings[0]; in qlcnic_83xx_intr()
550 struct qlcnic_adapter *adapter = sds_ring->adapter; in qlcnic_83xx_tmp_intr() local
552 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_tmp_intr()
555 if (adapter->nic_ops->clear_legacy_intr(adapter) == IRQ_NONE) in qlcnic_83xx_tmp_intr()
559 adapter->ahw->diag_cnt++; in qlcnic_83xx_tmp_intr()
560 qlcnic_enable_sds_intr(adapter, sds_ring); in qlcnic_83xx_tmp_intr()
565 void qlcnic_83xx_free_mbx_intr(struct qlcnic_adapter *adapter) in qlcnic_83xx_free_mbx_intr() argument
569 if (!(adapter->flags & QLCNIC_MSIX_ENABLED)) in qlcnic_83xx_free_mbx_intr()
570 qlcnic_83xx_set_legacy_intr_mask(adapter); in qlcnic_83xx_free_mbx_intr()
572 qlcnic_83xx_disable_mbx_intr(adapter); in qlcnic_83xx_free_mbx_intr()
574 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_free_mbx_intr()
575 num_msix = adapter->ahw->num_msix - 1; in qlcnic_83xx_free_mbx_intr()
581 if (adapter->msix_entries) { in qlcnic_83xx_free_mbx_intr()
582 synchronize_irq(adapter->msix_entries[num_msix].vector); in qlcnic_83xx_free_mbx_intr()
583 free_irq(adapter->msix_entries[num_msix].vector, adapter); in qlcnic_83xx_free_mbx_intr()
587 int qlcnic_83xx_setup_mbx_intr(struct qlcnic_adapter *adapter) in qlcnic_83xx_setup_mbx_intr() argument
594 if (!(adapter->flags & QLCNIC_MSI_ENABLED) && in qlcnic_83xx_setup_mbx_intr()
595 !(adapter->flags & QLCNIC_MSIX_ENABLED)) in qlcnic_83xx_setup_mbx_intr()
598 if (adapter->flags & QLCNIC_MSIX_ENABLED) { in qlcnic_83xx_setup_mbx_intr()
600 val = adapter->msix_entries[adapter->ahw->num_msix - 1].vector; in qlcnic_83xx_setup_mbx_intr()
601 err = request_irq(val, handler, flags, "qlcnic-MB", adapter); in qlcnic_83xx_setup_mbx_intr()
603 dev_err(&adapter->pdev->dev, in qlcnic_83xx_setup_mbx_intr()
609 val = adapter->msix_entries[0].vector; in qlcnic_83xx_setup_mbx_intr()
610 err = request_irq(val, handler, flags, "qlcnic", adapter); in qlcnic_83xx_setup_mbx_intr()
612 dev_err(&adapter->pdev->dev, in qlcnic_83xx_setup_mbx_intr()
616 qlcnic_83xx_clear_legacy_intr_mask(adapter); in qlcnic_83xx_setup_mbx_intr()
620 qlcnic_83xx_enable_mbx_interrupt(adapter); in qlcnic_83xx_setup_mbx_intr()
625 void qlcnic_83xx_get_func_no(struct qlcnic_adapter *adapter) in qlcnic_83xx_get_func_no() argument
627 u32 val = QLCRDX(adapter->ahw, QLCNIC_INFORMANT); in qlcnic_83xx_get_func_no()
628 adapter->ahw->pci_func = (val >> 24) & 0xff; in qlcnic_83xx_get_func_no()
631 int qlcnic_83xx_cam_lock(struct qlcnic_adapter *adapter) in qlcnic_83xx_cam_lock() argument
636 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_cam_lock()
643 QLC_SHARED_REG_WR32(adapter, QLCNIC_FLASH_LOCK_OWNER, in qlcnic_83xx_cam_lock()
653 void qlcnic_83xx_cam_unlock(struct qlcnic_adapter *adapter) in qlcnic_83xx_cam_unlock() argument
657 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_cam_unlock()
663 void qlcnic_83xx_read_crb(struct qlcnic_adapter *adapter, char *buf, in qlcnic_83xx_read_crb() argument
669 if (qlcnic_api_lock(adapter)) { in qlcnic_83xx_read_crb()
670 dev_err(&adapter->pdev->dev, in qlcnic_83xx_read_crb()
676 data = QLCRD32(adapter, (u32) offset, &ret); in qlcnic_83xx_read_crb()
677 qlcnic_api_unlock(adapter); in qlcnic_83xx_read_crb()
680 dev_err(&adapter->pdev->dev, in qlcnic_83xx_read_crb()
688 void qlcnic_83xx_write_crb(struct qlcnic_adapter *adapter, char *buf, in qlcnic_83xx_write_crb() argument
694 qlcnic_83xx_wrt_reg_indirect(adapter, (u32) offset, data); in qlcnic_83xx_write_crb()
697 int qlcnic_83xx_get_port_info(struct qlcnic_adapter *adapter) in qlcnic_83xx_get_port_info() argument
699 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_port_info()
702 status = qlcnic_83xx_get_port_config(adapter); in qlcnic_83xx_get_port_info()
704 dev_err(&adapter->pdev->dev, in qlcnic_83xx_get_port_info()
725 static void qlcnic_83xx_set_mac_filter_count(struct qlcnic_adapter *adapter) in qlcnic_83xx_set_mac_filter_count() argument
727 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_set_mac_filter_count()
741 void qlcnic_83xx_enable_mbx_interrupt(struct qlcnic_adapter *adapter) in qlcnic_83xx_enable_mbx_interrupt() argument
745 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_enable_mbx_interrupt()
746 val = BIT_2 | ((adapter->ahw->num_msix - 1) << 8); in qlcnic_83xx_enable_mbx_interrupt()
750 QLCWRX(adapter->ahw, QLCNIC_MBX_INTR_ENBL, val); in qlcnic_83xx_enable_mbx_interrupt()
751 qlcnic_83xx_enable_legacy_msix_mbx_intr(adapter); in qlcnic_83xx_enable_mbx_interrupt()
754 void qlcnic_83xx_check_vf(struct qlcnic_adapter *adapter, in qlcnic_83xx_check_vf() argument
758 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_check_vf()
761 qlcnic_get_func_no(adapter); in qlcnic_83xx_check_vf()
763 if (qlcnic_sriov_vf_check(adapter)) { in qlcnic_83xx_check_vf()
764 qlcnic_sriov_vf_set_ops(adapter); in qlcnic_83xx_check_vf()
769 op_mode = QLCRDX(adapter->ahw, QLC_83XX_DRV_OP_MODE); in qlcnic_83xx_check_vf()
778 dev_info(&adapter->pdev->dev, in qlcnic_83xx_check_vf()
781 adapter->nic_ops = &qlcnic_vf_ops; in qlcnic_83xx_check_vf()
783 if (pci_find_ext_capability(adapter->pdev, in qlcnic_83xx_check_vf()
785 set_bit(__QLCNIC_SRIOV_CAPABLE, &adapter->state); in qlcnic_83xx_check_vf()
786 adapter->nic_ops = &qlcnic_83xx_ops; in qlcnic_83xx_check_vf()
790 static void qlcnic_83xx_handle_link_aen(struct qlcnic_adapter *adapter,
792 static void qlcnic_83xx_handle_idc_comp_aen(struct qlcnic_adapter *adapter,
795 void qlcnic_dump_mbx(struct qlcnic_adapter *adapter, in qlcnic_dump_mbx() argument
803 dev_info(&adapter->pdev->dev, in qlcnic_dump_mbx()
811 dev_info(&adapter->pdev->dev, in qlcnic_dump_mbx()
821 static void qlcnic_83xx_poll_for_mbx_completion(struct qlcnic_adapter *adapter, in qlcnic_83xx_poll_for_mbx_completion() argument
824 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_poll_for_mbx_completion()
838 dev_err(&adapter->pdev->dev, in qlcnic_83xx_poll_for_mbx_completion()
845 int qlcnic_83xx_issue_cmd(struct qlcnic_adapter *adapter, in qlcnic_83xx_issue_cmd() argument
848 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_issue_cmd()
849 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_issue_cmd()
858 err = mbx->ops->enqueue_cmd(adapter, cmd, &timeout); in qlcnic_83xx_issue_cmd()
860 dev_err(&adapter->pdev->dev, in qlcnic_83xx_issue_cmd()
870 dev_err(&adapter->pdev->dev, in qlcnic_83xx_issue_cmd()
880 qlcnic_83xx_poll_for_mbx_completion(adapter, cmd); in qlcnic_83xx_issue_cmd()
883 dev_err(&adapter->pdev->dev, in qlcnic_83xx_issue_cmd()
887 qlcnic_83xx_detach_mailbox_work(adapter); in qlcnic_83xx_issue_cmd()
894 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()
2341 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 mask = QLCRDX(adapter->ahw, QLCNIC_DEF_INT_MASK); in qlcnic_83xx_handle_aen()
2360 writel(0, adapter->ahw->pci_base0 + mask); in qlcnic_83xx_handle_aen()
2365 int qlcnic_83xx_set_nic_info(struct qlcnic_adapter *adapter, in qlcnic_83xx_set_nic_info() argument
2371 if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC) { in qlcnic_83xx_set_nic_info()
2372 dev_err(&adapter->pdev->dev, in qlcnic_83xx_set_nic_info()
2378 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); in qlcnic_83xx_set_nic_info()
2392 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_set_nic_info()
2395 dev_err(&adapter->pdev->dev, "Failed to set nic info%d\n", in qlcnic_83xx_set_nic_info()
2405 int qlcnic_83xx_get_nic_info(struct qlcnic_adapter *adapter, in qlcnic_83xx_get_nic_info() argument
2412 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_nic_info()
2414 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_NIC_INFO); in qlcnic_83xx_get_nic_info()
2424 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_nic_info()
2426 dev_info(&adapter->pdev->dev, in qlcnic_83xx_get_nic_info()
2458 int qlcnic_get_pci_func_type(struct qlcnic_adapter *adapter, u16 type, in qlcnic_get_pci_func_type() argument
2461 struct device *dev = &adapter->pdev->dev; in qlcnic_get_pci_func_type()
2483 int qlcnic_83xx_get_pci_info(struct qlcnic_adapter *adapter, in qlcnic_83xx_get_pci_info() argument
2486 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_pci_info()
2487 struct device *dev = &adapter->pdev->dev; in qlcnic_83xx_get_pci_info()
2493 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PCI_INFO); in qlcnic_83xx_get_pci_info()
2497 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_pci_info()
2511 err = qlcnic_get_pci_func_type(adapter, pci_info->type, in qlcnic_83xx_get_pci_info()
2542 int qlcnic_83xx_config_intrpt(struct qlcnic_adapter *adapter, bool op_type) in qlcnic_83xx_config_intrpt() argument
2549 max_ints = adapter->ahw->num_msix - 1; in qlcnic_83xx_config_intrpt()
2550 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_INTRPT); in qlcnic_83xx_config_intrpt()
2556 if (qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_config_intrpt()
2557 cmd.req.arg[1] |= (adapter->ahw->pci_func << 8) | BIT_16; in qlcnic_83xx_config_intrpt()
2561 val = type | (adapter->ahw->intr_tbl[i].type << 4); in qlcnic_83xx_config_intrpt()
2562 if (adapter->ahw->intr_tbl[i].type == QLCNIC_INTRPT_MSIX) in qlcnic_83xx_config_intrpt()
2563 val |= (adapter->ahw->intr_tbl[i].id << 16); in qlcnic_83xx_config_intrpt()
2566 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_intrpt()
2568 dev_err(&adapter->pdev->dev, in qlcnic_83xx_config_intrpt()
2577 dev_info(&adapter->pdev->dev, in qlcnic_83xx_config_intrpt()
2579 adapter->ahw->intr_tbl[i].id); in qlcnic_83xx_config_intrpt()
2583 adapter->ahw->intr_tbl[i].id = MSW(val); in qlcnic_83xx_config_intrpt()
2584 adapter->ahw->intr_tbl[i].enabled = 1; in qlcnic_83xx_config_intrpt()
2586 adapter->ahw->intr_tbl[i].src = temp; in qlcnic_83xx_config_intrpt()
2588 adapter->ahw->intr_tbl[i].id = i; in qlcnic_83xx_config_intrpt()
2589 adapter->ahw->intr_tbl[i].enabled = 0; in qlcnic_83xx_config_intrpt()
2590 adapter->ahw->intr_tbl[i].src = 0; in qlcnic_83xx_config_intrpt()
2598 int qlcnic_83xx_lock_flash(struct qlcnic_adapter *adapter) in qlcnic_83xx_lock_flash() argument
2604 status = QLC_SHARED_REG_RD32(adapter, QLCNIC_FLASH_LOCK); in qlcnic_83xx_lock_flash()
2609 id = QLC_SHARED_REG_RD32(adapter, in qlcnic_83xx_lock_flash()
2611 dev_err(&adapter->pdev->dev, in qlcnic_83xx_lock_flash()
2618 QLC_SHARED_REG_WR32(adapter, QLCNIC_FLASH_LOCK_OWNER, adapter->portnum); in qlcnic_83xx_lock_flash()
2622 void qlcnic_83xx_unlock_flash(struct qlcnic_adapter *adapter) in qlcnic_83xx_unlock_flash() argument
2624 QLC_SHARED_REG_RD32(adapter, QLCNIC_FLASH_UNLOCK); in qlcnic_83xx_unlock_flash()
2625 QLC_SHARED_REG_WR32(adapter, QLCNIC_FLASH_LOCK_OWNER, 0xFF); in qlcnic_83xx_unlock_flash()
2628 int qlcnic_83xx_lockless_flash_read32(struct qlcnic_adapter *adapter, in qlcnic_83xx_lockless_flash_read32() argument
2638 dev_err(&adapter->pdev->dev, "Illegal addr = 0x%x\n", addr); in qlcnic_83xx_lockless_flash_read32()
2642 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_DIRECT_WINDOW, in qlcnic_83xx_lockless_flash_read32()
2652 ret = QLCRD32(adapter, indirect_add, &err); in qlcnic_83xx_lockless_flash_read32()
2665 qlcnic_83xx_wrt_reg_indirect(adapter, in qlcnic_83xx_lockless_flash_read32()
2675 ret = QLCRD32(adapter, indirect_add, &err); in qlcnic_83xx_lockless_flash_read32()
2689 static int qlcnic_83xx_poll_flash_status_reg(struct qlcnic_adapter *adapter) in qlcnic_83xx_poll_flash_status_reg() argument
2696 status = QLCRD32(adapter, QLC_83XX_FLASH_STATUS, &err); in qlcnic_83xx_poll_flash_status_reg()
2713 int qlcnic_83xx_enable_flash_write(struct qlcnic_adapter *adapter) in qlcnic_83xx_enable_flash_write() argument
2717 cmd = adapter->ahw->fdt.write_statusreg_cmd; in qlcnic_83xx_enable_flash_write()
2718 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_enable_flash_write()
2720 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, in qlcnic_83xx_enable_flash_write()
2721 adapter->ahw->fdt.write_enable_bits); in qlcnic_83xx_enable_flash_write()
2722 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_enable_flash_write()
2724 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_enable_flash_write()
2731 int qlcnic_83xx_disable_flash_write(struct qlcnic_adapter *adapter) in qlcnic_83xx_disable_flash_write() argument
2735 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_disable_flash_write()
2737 adapter->ahw->fdt.write_statusreg_cmd)); in qlcnic_83xx_disable_flash_write()
2738 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, in qlcnic_83xx_disable_flash_write()
2739 adapter->ahw->fdt.write_disable_bits); in qlcnic_83xx_disable_flash_write()
2740 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_disable_flash_write()
2742 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_disable_flash_write()
2749 int qlcnic_83xx_read_flash_mfg_id(struct qlcnic_adapter *adapter) in qlcnic_83xx_read_flash_mfg_id() argument
2754 if (qlcnic_83xx_lock_flash(adapter)) in qlcnic_83xx_read_flash_mfg_id()
2757 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_read_flash_mfg_id()
2759 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_read_flash_mfg_id()
2761 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_read_flash_mfg_id()
2763 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_read_flash_mfg_id()
2767 mfg_id = QLCRD32(adapter, QLC_83XX_FLASH_RDDATA, &err); in qlcnic_83xx_read_flash_mfg_id()
2769 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_read_flash_mfg_id()
2773 adapter->flash_mfg_id = (mfg_id & 0xFF); in qlcnic_83xx_read_flash_mfg_id()
2774 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_read_flash_mfg_id()
2779 int qlcnic_83xx_read_flash_descriptor_table(struct qlcnic_adapter *adapter) in qlcnic_83xx_read_flash_descriptor_table() argument
2786 if (qlcnic_83xx_lock_flash(adapter)) in qlcnic_83xx_read_flash_descriptor_table()
2789 memset(&adapter->ahw->fdt, 0, fdt_size); in qlcnic_83xx_read_flash_descriptor_table()
2790 ret = qlcnic_83xx_lockless_flash_read32(adapter, QLCNIC_FDT_LOCATION, in qlcnic_83xx_read_flash_descriptor_table()
2791 (u8 *)&adapter->ahw->fdt, in qlcnic_83xx_read_flash_descriptor_table()
2793 qlcnic_swap32_buffer((u32 *)&adapter->ahw->fdt, count); in qlcnic_83xx_read_flash_descriptor_table()
2794 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_read_flash_descriptor_table()
2798 int qlcnic_83xx_erase_flash_sector(struct qlcnic_adapter *adapter, in qlcnic_83xx_erase_flash_sector() argument
2804 if (qlcnic_83xx_lock_flash(adapter) != 0) in qlcnic_83xx_erase_flash_sector()
2807 if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) { in qlcnic_83xx_erase_flash_sector()
2808 ret = qlcnic_83xx_enable_flash_write(adapter); in qlcnic_83xx_erase_flash_sector()
2810 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_erase_flash_sector()
2811 dev_err(&adapter->pdev->dev, in qlcnic_83xx_erase_flash_sector()
2818 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_erase_flash_sector()
2820 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_erase_flash_sector()
2821 dev_err(&adapter->pdev->dev, in qlcnic_83xx_erase_flash_sector()
2830 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, in qlcnic_83xx_erase_flash_sector()
2832 cmd = QLC_83XX_FLASH_FDT_ERASE_DEF_SIG | adapter->ahw->fdt.erase_cmd; in qlcnic_83xx_erase_flash_sector()
2833 if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) in qlcnic_83xx_erase_flash_sector()
2834 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, cmd); in qlcnic_83xx_erase_flash_sector()
2836 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_erase_flash_sector()
2838 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_erase_flash_sector()
2841 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_erase_flash_sector()
2843 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_erase_flash_sector()
2844 dev_err(&adapter->pdev->dev, in qlcnic_83xx_erase_flash_sector()
2849 if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) { in qlcnic_83xx_erase_flash_sector()
2850 ret = qlcnic_83xx_disable_flash_write(adapter); in qlcnic_83xx_erase_flash_sector()
2852 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_erase_flash_sector()
2853 dev_err(&adapter->pdev->dev, in qlcnic_83xx_erase_flash_sector()
2859 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_erase_flash_sector()
2864 int qlcnic_83xx_flash_write32(struct qlcnic_adapter *adapter, u32 addr, in qlcnic_83xx_flash_write32() argument
2870 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, addr1); in qlcnic_83xx_flash_write32()
2871 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, *p_data); in qlcnic_83xx_flash_write32()
2872 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_flash_write32()
2874 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_flash_write32()
2876 dev_err(&adapter->pdev->dev, in qlcnic_83xx_flash_write32()
2884 int qlcnic_83xx_flash_bulk_write(struct qlcnic_adapter *adapter, u32 addr, in qlcnic_83xx_flash_bulk_write() argument
2892 dev_err(&adapter->pdev->dev, in qlcnic_83xx_flash_bulk_write()
2897 temp = QLCRD32(adapter, QLC_83XX_FLASH_SPI_CONTROL, &err); in qlcnic_83xx_flash_bulk_write()
2901 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_SPI_CONTROL, in qlcnic_83xx_flash_bulk_write()
2903 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_flash_bulk_write()
2907 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, *p_data++); in qlcnic_83xx_flash_bulk_write()
2908 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_flash_bulk_write()
2910 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_flash_bulk_write()
2912 dev_err(&adapter->pdev->dev, in qlcnic_83xx_flash_bulk_write()
2918 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_flash_bulk_write()
2922 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, in qlcnic_83xx_flash_bulk_write()
2924 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_flash_bulk_write()
2926 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_flash_bulk_write()
2928 dev_err(&adapter->pdev->dev, in qlcnic_83xx_flash_bulk_write()
2935 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_flash_bulk_write()
2939 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_WRDATA, *p_data++); in qlcnic_83xx_flash_bulk_write()
2940 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_flash_bulk_write()
2942 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_flash_bulk_write()
2944 dev_err(&adapter->pdev->dev, in qlcnic_83xx_flash_bulk_write()
2949 ret = QLCRD32(adapter, QLC_83XX_FLASH_SPI_STATUS, &err); in qlcnic_83xx_flash_bulk_write()
2954 dev_err(&adapter->pdev->dev, "%s: failed at %d\n", in qlcnic_83xx_flash_bulk_write()
2957 temp = QLCRD32(adapter, QLC_83XX_FLASH_SPI_CONTROL, &err); in qlcnic_83xx_flash_bulk_write()
2961 qlcnic_83xx_wrt_reg_indirect(adapter, in qlcnic_83xx_flash_bulk_write()
2969 static void qlcnic_83xx_recover_driver_lock(struct qlcnic_adapter *adapter) in qlcnic_83xx_recover_driver_lock() argument
2973 val = QLCRDX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK); in qlcnic_83xx_recover_driver_lock()
2978 val = val | ((adapter->portnum << 2) | in qlcnic_83xx_recover_driver_lock()
2980 QLCWRX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK, val); in qlcnic_83xx_recover_driver_lock()
2981 dev_info(&adapter->pdev->dev, in qlcnic_83xx_recover_driver_lock()
2984 val = QLCRDX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK); in qlcnic_83xx_recover_driver_lock()
2986 if (id == adapter->portnum) { in qlcnic_83xx_recover_driver_lock()
2989 QLCWRX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK, val); in qlcnic_83xx_recover_driver_lock()
2991 QLCRDX(adapter->ahw, QLC_83XX_DRV_UNLOCK); in qlcnic_83xx_recover_driver_lock()
2994 QLCWRX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK, val); in qlcnic_83xx_recover_driver_lock()
2995 dev_info(&adapter->pdev->dev, in qlcnic_83xx_recover_driver_lock()
2998 dev_info(&adapter->pdev->dev, in qlcnic_83xx_recover_driver_lock()
3003 dev_info(&adapter->pdev->dev, in qlcnic_83xx_recover_driver_lock()
3009 int qlcnic_83xx_lock_driver(struct qlcnic_adapter *adapter) in qlcnic_83xx_lock_driver() argument
3015 status = QLCRDX(adapter->ahw, QLC_83XX_DRV_LOCK); in qlcnic_83xx_lock_driver()
3023 temp = QLCRDX(adapter->ahw, QLC_83XX_DRV_LOCK_ID); in qlcnic_83xx_lock_driver()
3026 val = QLCRDX(adapter->ahw, QLC_83XX_DRV_LOCK_ID); in qlcnic_83xx_lock_driver()
3029 dev_info(&adapter->pdev->dev, in qlcnic_83xx_lock_driver()
3032 qlcnic_83xx_recover_driver_lock(adapter); in qlcnic_83xx_lock_driver()
3036 dev_err(&adapter->pdev->dev, in qlcnic_83xx_lock_driver()
3044 dev_err(&adapter->pdev->dev, in qlcnic_83xx_lock_driver()
3050 val = QLCRDX(adapter->ahw, QLC_83XX_DRV_LOCK_ID); in qlcnic_83xx_lock_driver()
3053 val = lock_alive_counter << 8 | adapter->portnum; in qlcnic_83xx_lock_driver()
3054 QLCWRX(adapter->ahw, QLC_83XX_DRV_LOCK_ID, val); in qlcnic_83xx_lock_driver()
3059 void qlcnic_83xx_unlock_driver(struct qlcnic_adapter *adapter) in qlcnic_83xx_unlock_driver() argument
3063 val = QLCRDX(adapter->ahw, QLC_83XX_DRV_LOCK_ID); in qlcnic_83xx_unlock_driver()
3067 if (id != adapter->portnum) in qlcnic_83xx_unlock_driver()
3068 dev_err(&adapter->pdev->dev, in qlcnic_83xx_unlock_driver()
3070 __func__, adapter->portnum, id); in qlcnic_83xx_unlock_driver()
3073 QLCWRX(adapter->ahw, QLC_83XX_DRV_LOCK_ID, val); in qlcnic_83xx_unlock_driver()
3074 QLCRDX(adapter->ahw, QLC_83XX_DRV_UNLOCK); in qlcnic_83xx_unlock_driver()
3077 int qlcnic_ms_mem_write128(struct qlcnic_adapter *adapter, u64 addr, in qlcnic_ms_mem_write128() argument
3087 mutex_lock(&adapter->ahw->mem_lock); in qlcnic_ms_mem_write128()
3088 qlcnic_ind_wr(adapter, QLCNIC_MS_ADDR_HI, 0); in qlcnic_ms_mem_write128()
3095 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_ms_mem_write128()
3099 qlcnic_ind_wr(adapter, QLCNIC_MS_ADDR_LO, addr); in qlcnic_ms_mem_write128()
3100 qlcnic_ind_wr(adapter, QLCNIC_MS_WRTDATA_LO, *data++); in qlcnic_ms_mem_write128()
3101 qlcnic_ind_wr(adapter, QLCNIC_MS_WRTDATA_HI, *data++); in qlcnic_ms_mem_write128()
3102 qlcnic_ind_wr(adapter, QLCNIC_MS_WRTDATA_ULO, *data++); in qlcnic_ms_mem_write128()
3103 qlcnic_ind_wr(adapter, QLCNIC_MS_WRTDATA_UHI, *data++); in qlcnic_ms_mem_write128()
3104 qlcnic_ind_wr(adapter, QLCNIC_MS_CTRL, QLCNIC_TA_WRITE_ENABLE); in qlcnic_ms_mem_write128()
3105 qlcnic_ind_wr(adapter, QLCNIC_MS_CTRL, QLCNIC_TA_WRITE_START); in qlcnic_ms_mem_write128()
3108 temp = qlcnic_ind_rd(adapter, QLCNIC_MS_CTRL); in qlcnic_ms_mem_write128()
3118 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_ms_mem_write128()
3123 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_ms_mem_write128()
3128 int qlcnic_83xx_flash_read32(struct qlcnic_adapter *adapter, u32 flash_addr, in qlcnic_83xx_flash_read32() argument
3135 if (qlcnic_83xx_lock_flash(adapter) != 0) in qlcnic_83xx_flash_read32()
3139 dev_err(&adapter->pdev->dev, "Illegal addr = 0x%x\n", addr); in qlcnic_83xx_flash_read32()
3140 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_flash_read32()
3145 if (qlcnic_83xx_wrt_reg_indirect(adapter, in qlcnic_83xx_flash_read32()
3148 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_flash_read32()
3153 ret = QLCRD32(adapter, indirect_addr, &err); in qlcnic_83xx_flash_read32()
3163 qlcnic_83xx_unlock_flash(adapter); in qlcnic_83xx_flash_read32()
3168 int qlcnic_83xx_test_link(struct qlcnic_adapter *adapter) in qlcnic_83xx_test_link() argument
3174 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_test_link()
3176 if (qlcnic_sriov_vf_check(adapter)) in qlcnic_83xx_test_link()
3177 pci_func = adapter->portnum; in qlcnic_83xx_test_link()
3183 dev_info(&adapter->pdev->dev, "link state down\n"); in qlcnic_83xx_test_link()
3187 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_LINK_STATUS); in qlcnic_83xx_test_link()
3191 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_test_link()
3193 dev_info(&adapter->pdev->dev, in qlcnic_83xx_test_link()
3252 int qlcnic_83xx_get_settings(struct qlcnic_adapter *adapter, in qlcnic_83xx_get_settings() argument
3255 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_settings()
3259 if (!test_bit(__QLCNIC_MAINTENANCE_MODE, &adapter->state)) { in qlcnic_83xx_get_settings()
3261 status = qlcnic_83xx_get_port_info(adapter); in qlcnic_83xx_get_settings()
3263 config = qlcnic_83xx_test_link(adapter); in qlcnic_83xx_get_settings()
3270 if (netif_running(adapter->netdev) && ahw->has_link_events) { in qlcnic_83xx_get_settings()
3347 int qlcnic_83xx_set_settings(struct qlcnic_adapter *adapter, in qlcnic_83xx_set_settings() argument
3350 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_set_settings()
3351 u32 config = adapter->ahw->port_config; in qlcnic_83xx_set_settings()
3356 netdev_info(adapter->netdev, in qlcnic_83xx_set_settings()
3397 status = qlcnic_83xx_set_port_config(adapter); in qlcnic_83xx_set_settings()
3399 netdev_info(adapter->netdev, in qlcnic_83xx_set_settings()
3420 static u64 *qlcnic_83xx_fill_stats(struct qlcnic_adapter *adapter, in qlcnic_83xx_fill_stats() argument
3427 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_83xx_fill_stats()
3429 dev_info(&adapter->pdev->dev, in qlcnic_83xx_fill_stats()
3470 dev_warn(&adapter->pdev->dev, "Unknown get statistics mode\n"); in qlcnic_83xx_fill_stats()
3476 void qlcnic_83xx_get_stats(struct qlcnic_adapter *adapter, u64 *data) in qlcnic_83xx_get_stats() argument
3479 struct net_device *netdev = adapter->netdev; in qlcnic_83xx_get_stats()
3482 ret = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_STATISTICS); in qlcnic_83xx_get_stats()
3486 cmd.req.arg[1] = BIT_1 | (adapter->tx_ring->ctx_id << 16); in qlcnic_83xx_get_stats()
3488 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3495 cmd.req.arg[1] = BIT_2 | (adapter->portnum << 16); in qlcnic_83xx_get_stats()
3498 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3505 cmd.req.arg[1] = adapter->recv_ctx->context_id << 16; in qlcnic_83xx_get_stats()
3508 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3516 int qlcnic_83xx_reg_test(struct qlcnic_adapter *adapter) in qlcnic_83xx_reg_test() argument
3520 major = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_MAJOR); in qlcnic_83xx_reg_test()
3521 minor = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_MINOR); in qlcnic_83xx_reg_test()
3522 sub = QLC_SHARED_REG_RD32(adapter, QLCNIC_FW_VERSION_SUB); in qlcnic_83xx_reg_test()
3524 if (adapter->fw_version != QLCNIC_VERSION_CODE(major, minor, sub)) { in qlcnic_83xx_reg_test()
3525 dev_info(&adapter->pdev->dev, "%s: Reg test failed\n", in qlcnic_83xx_reg_test()
3532 inline int qlcnic_83xx_get_regs_len(struct qlcnic_adapter *adapter) in qlcnic_83xx_get_regs_len() argument
3535 sizeof(*adapter->ahw->ext_reg_tbl)) + in qlcnic_83xx_get_regs_len()
3537 sizeof(*adapter->ahw->reg_tbl)); in qlcnic_83xx_get_regs_len()
3540 int qlcnic_83xx_get_registers(struct qlcnic_adapter *adapter, u32 *regs_buff) in qlcnic_83xx_get_registers() argument
3546 regs_buff[i] = QLC_SHARED_REG_RD32(adapter, j); in qlcnic_83xx_get_registers()
3549 regs_buff[i++] = QLCRDX(adapter->ahw, j); in qlcnic_83xx_get_registers()
3555 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_83xx_interrupt_test() local
3556 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_interrupt_test()
3558 u8 val, drv_sds_rings = adapter->drv_sds_rings; in qlcnic_83xx_interrupt_test()
3559 u8 drv_tx_rings = adapter->drv_tx_rings; in qlcnic_83xx_interrupt_test()
3564 if (test_bit(__QLCNIC_RESETTING, &adapter->state)) { in qlcnic_83xx_interrupt_test()
3569 if (qlcnic_get_diag_lock(adapter)) { in qlcnic_83xx_interrupt_test()
3580 ret = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_INTRPT_TEST); in qlcnic_83xx_interrupt_test()
3584 if (adapter->flags & QLCNIC_MSIX_ENABLED) in qlcnic_83xx_interrupt_test()
3593 ret = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_interrupt_test()
3598 dev_info(&adapter->pdev->dev, in qlcnic_83xx_interrupt_test()
3602 dev_err(&adapter->pdev->dev, in qlcnic_83xx_interrupt_test()
3615 adapter->drv_sds_rings = drv_sds_rings; in qlcnic_83xx_interrupt_test()
3616 adapter->drv_tx_rings = drv_tx_rings; in qlcnic_83xx_interrupt_test()
3617 qlcnic_release_diag_lock(adapter); in qlcnic_83xx_interrupt_test()
3621 void qlcnic_83xx_get_pauseparam(struct qlcnic_adapter *adapter, in qlcnic_83xx_get_pauseparam() argument
3624 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_pauseparam()
3628 status = qlcnic_83xx_get_port_config(adapter); in qlcnic_83xx_get_pauseparam()
3630 dev_err(&adapter->pdev->dev, in qlcnic_83xx_get_pauseparam()
3657 int qlcnic_83xx_set_pauseparam(struct qlcnic_adapter *adapter, in qlcnic_83xx_set_pauseparam() argument
3660 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_set_pauseparam()
3664 status = qlcnic_83xx_get_port_config(adapter); in qlcnic_83xx_set_pauseparam()
3666 dev_err(&adapter->pdev->dev, in qlcnic_83xx_set_pauseparam()
3696 status = qlcnic_83xx_set_port_config(adapter); in qlcnic_83xx_set_pauseparam()
3698 dev_err(&adapter->pdev->dev, in qlcnic_83xx_set_pauseparam()
3705 static int qlcnic_83xx_read_flash_status_reg(struct qlcnic_adapter *adapter) in qlcnic_83xx_read_flash_status_reg() argument
3710 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, in qlcnic_83xx_read_flash_status_reg()
3712 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_CONTROL, in qlcnic_83xx_read_flash_status_reg()
3714 ret = qlcnic_83xx_poll_flash_status_reg(adapter); in qlcnic_83xx_read_flash_status_reg()
3718 temp = QLCRD32(adapter, QLC_83XX_FLASH_RDDATA, &err); in qlcnic_83xx_read_flash_status_reg()
3725 int qlcnic_83xx_flash_test(struct qlcnic_adapter *adapter) in qlcnic_83xx_flash_test() argument
3729 status = qlcnic_83xx_read_flash_status_reg(adapter); in qlcnic_83xx_flash_test()
3731 dev_info(&adapter->pdev->dev, "%s: EEPROM test failed.\n", in qlcnic_83xx_flash_test()
3740 struct qlcnic_adapter *adapter = pci_get_drvdata(pdev); in qlcnic_83xx_shutdown() local
3741 struct net_device *netdev = adapter->netdev; in qlcnic_83xx_shutdown()
3745 qlcnic_cancel_idc_work(adapter); in qlcnic_83xx_shutdown()
3748 qlcnic_down(adapter, netdev); in qlcnic_83xx_shutdown()
3750 qlcnic_83xx_disable_mbx_intr(adapter); in qlcnic_83xx_shutdown()
3751 cancel_delayed_work_sync(&adapter->idc_aen_work); in qlcnic_83xx_shutdown()
3760 static int qlcnic_83xx_resume(struct qlcnic_adapter *adapter) in qlcnic_83xx_resume() argument
3762 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_resume()
3766 err = qlcnic_83xx_idc_init(adapter); in qlcnic_83xx_resume()
3772 qlcnic_83xx_set_vnic_opmode(adapter); in qlcnic_83xx_resume()
3774 err = qlcnic_83xx_check_vnic_state(adapter); in qlcnic_83xx_resume()
3780 err = qlcnic_83xx_idc_reattach_driver(adapter); in qlcnic_83xx_resume()
3784 qlcnic_schedule_work(adapter, qlcnic_83xx_idc_poll_dev_state, in qlcnic_83xx_resume()
3805 qlcnic_83xx_notify_cmd_completion(struct qlcnic_adapter *adapter, in qlcnic_83xx_notify_cmd_completion() argument
3818 static void qlcnic_83xx_flush_mbx_queue(struct qlcnic_adapter *adapter) in qlcnic_83xx_flush_mbx_queue() argument
3820 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_flush_mbx_queue()
3828 dev_info(&adapter->pdev->dev, "%s: Mailbox command 0x%x\n", in qlcnic_83xx_flush_mbx_queue()
3832 qlcnic_83xx_notify_cmd_completion(adapter, cmd); in qlcnic_83xx_flush_mbx_queue()
3838 static int qlcnic_83xx_check_mbx_status(struct qlcnic_adapter *adapter) in qlcnic_83xx_check_mbx_status() argument
3840 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_check_mbx_status()
3857 static inline void qlcnic_83xx_signal_mbx_cmd(struct qlcnic_adapter *adapter, in qlcnic_83xx_signal_mbx_cmd() argument
3861 QLCWRX(adapter->ahw, QLCNIC_HOST_MBX_CTRL, QLCNIC_SET_OWNER); in qlcnic_83xx_signal_mbx_cmd()
3863 QLCWRX(adapter->ahw, QLCNIC_FW_MBX_CTRL, QLCNIC_CLR_OWNER); in qlcnic_83xx_signal_mbx_cmd()
3866 static void qlcnic_83xx_dequeue_mbx_cmd(struct qlcnic_adapter *adapter, in qlcnic_83xx_dequeue_mbx_cmd() argument
3869 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_dequeue_mbx_cmd()
3878 qlcnic_83xx_notify_cmd_completion(adapter, cmd); in qlcnic_83xx_dequeue_mbx_cmd()
3881 static void qlcnic_83xx_encode_mbx_cmd(struct qlcnic_adapter *adapter, in qlcnic_83xx_encode_mbx_cmd() argument
3885 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_encode_mbx_cmd()
3904 if (qlcnic_sriov_pf_check(adapter)) in qlcnic_83xx_encode_mbx_cmd()
3916 void qlcnic_83xx_detach_mailbox_work(struct qlcnic_adapter *adapter) in qlcnic_83xx_detach_mailbox_work() argument
3918 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_detach_mailbox_work()
3927 qlcnic_83xx_flush_mbx_queue(adapter); in qlcnic_83xx_detach_mailbox_work()
3930 static int qlcnic_83xx_enqueue_mbx_cmd(struct qlcnic_adapter *adapter, in qlcnic_83xx_enqueue_mbx_cmd() argument
3934 struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; in qlcnic_83xx_enqueue_mbx_cmd()
3957 static int qlcnic_83xx_check_mac_rcode(struct qlcnic_adapter *adapter, in qlcnic_83xx_check_mac_rcode() argument
3964 fw_data = readl(QLCNIC_MBX_FW(adapter->ahw, 2)); in qlcnic_83xx_check_mac_rcode()
3977 static void qlcnic_83xx_decode_mbx_rsp(struct qlcnic_adapter *adapter, in qlcnic_83xx_decode_mbx_rsp() argument
3980 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_decode_mbx_rsp()
3981 struct device *dev = &adapter->pdev->dev; in qlcnic_83xx_decode_mbx_rsp()
3987 qlcnic_83xx_get_mbx_data(adapter, cmd); in qlcnic_83xx_decode_mbx_rsp()
3995 if (!qlcnic_83xx_check_mac_rcode(adapter, cmd)) in qlcnic_83xx_decode_mbx_rsp()
4002 qlcnic_dump_mbx(adapter, cmd); in qlcnic_83xx_decode_mbx_rsp()
4008 static inline void qlcnic_dump_mailbox_registers(struct qlcnic_adapter *adapter) in qlcnic_dump_mailbox_registers() argument
4010 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_dump_mailbox_registers()
4014 …dev_info(&adapter->pdev->dev, "Mbx interrupt mask=0x%x, Mbx interrupt enable=0x%x, Host mbx contro… in qlcnic_dump_mailbox_registers()
4025 struct qlcnic_adapter *adapter = mbx->adapter; in qlcnic_83xx_mailbox_worker() local
4027 struct device *dev = &adapter->pdev->dev; in qlcnic_83xx_mailbox_worker()
4033 ahw = adapter->ahw; in qlcnic_83xx_mailbox_worker()
4036 if (qlcnic_83xx_check_mbx_status(adapter)) { in qlcnic_83xx_mailbox_worker()
4037 qlcnic_83xx_flush_mbx_queue(adapter); in qlcnic_83xx_mailbox_worker()
4053 mbx_ops->encode_cmd(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4054 mbx_ops->nofity_fw(adapter, QLC_83XX_MBX_REQUEST); in qlcnic_83xx_mailbox_worker()
4058 mbx_ops->decode_resp(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4059 mbx_ops->nofity_fw(adapter, QLC_83XX_MBX_COMPLETION); in qlcnic_83xx_mailbox_worker()
4065 qlcnic_dump_mailbox_registers(adapter); in qlcnic_83xx_mailbox_worker()
4066 qlcnic_83xx_get_mbx_data(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4067 qlcnic_dump_mbx(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4068 qlcnic_83xx_idc_request_reset(adapter, in qlcnic_83xx_mailbox_worker()
4072 mbx_ops->dequeue_cmd(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4084 int qlcnic_83xx_init_mailbox_work(struct qlcnic_adapter *adapter) in qlcnic_83xx_init_mailbox_work() argument
4086 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_init_mailbox_work()
4095 mbx->adapter = adapter; in qlcnic_83xx_init_mailbox_work()
4116 struct qlcnic_adapter *adapter = pci_get_drvdata(pdev); in qlcnic_83xx_io_error_detected() local
4124 set_bit(__QLCNIC_AER, &adapter->state); in qlcnic_83xx_io_error_detected()
4125 set_bit(__QLCNIC_RESETTING, &adapter->state); in qlcnic_83xx_io_error_detected()
4127 qlcnic_83xx_aer_stop_poll_work(adapter); in qlcnic_83xx_io_error_detected()
4137 struct qlcnic_adapter *adapter = pci_get_drvdata(pdev); in qlcnic_83xx_io_slot_reset() local
4149 err = qlcnic_83xx_aer_reset(adapter); in qlcnic_83xx_io_slot_reset()
4153 clear_bit(__QLCNIC_AER, &adapter->state); in qlcnic_83xx_io_slot_reset()
4154 clear_bit(__QLCNIC_RESETTING, &adapter->state); in qlcnic_83xx_io_slot_reset()
4160 struct qlcnic_adapter *adapter = pci_get_drvdata(pdev); in qlcnic_83xx_io_resume() local
4163 if (test_and_clear_bit(__QLCNIC_AER, &adapter->state)) in qlcnic_83xx_io_resume()
4164 qlcnic_83xx_aer_start_poll_work(adapter); in qlcnic_83xx_io_resume()