Lines Matching refs:nesdev
59 static void nes_cqp_ce_handler(struct nes_device *nesdev, struct nes_hw_cq *cq);
60 static void nes_init_csr_ne020(struct nes_device *nesdev, u8 hw_rev, u8 port_count);
61 static int nes_init_serdes(struct nes_device *nesdev, u8 hw_rev, u8 port_count,
63 static void nes_nic_napi_ce_handler(struct nes_device *nesdev, struct nes_hw_nic_cq *cq);
64 static void nes_process_aeq(struct nes_device *nesdev, struct nes_hw_aeq *aeq);
65 static void nes_process_ceq(struct nes_device *nesdev, struct nes_hw_ceq *ceq);
66 static void nes_process_iwarp_aeqe(struct nes_device *nesdev,
68 static void process_critical_error(struct nes_device *nesdev);
69 static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number);
70 static unsigned int nes_reset_adapter_ne020(struct nes_device *nesdev, u8 *OneG_Mode);
115 void nes_nic_init_timer_defaults(struct nes_device *nesdev, u8 jumbomode) in nes_nic_init_timer_defaults() argument
118 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_nic_init_timer_defaults()
143 static void nes_nic_init_timer(struct nes_device *nesdev) in nes_nic_init_timer() argument
146 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_nic_init_timer()
152 nesdev->deepcq_count = 0; in nes_nic_init_timer()
161 nes_write32(nesdev->regs+NES_PERIODIC_CONTROL, in nes_nic_init_timer()
172 static void nes_nic_tune_timer(struct nes_device *nesdev) in nes_nic_tune_timer() argument
175 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_nic_tune_timer()
177 u16 cq_count = nesdev->currcq_count; in nes_nic_tune_timer()
191 nesdev->currcq_count = 0; in nes_nic_tune_timer()
198 nesdev->deepcq_count += cq_count; in nes_nic_tune_timer()
236 nesdev->currcq_count = 0; in nes_nic_tune_timer()
245 struct nes_adapter *nes_init_adapter(struct nes_device *nesdev, u8 hw_rev) { in nes_init_adapter() argument
270 nesdev->pcidev->devfn, in nes_init_adapter()
273 PCI_SLOT(nesdev->pcidev->devfn), in nes_init_adapter()
274 nesdev->pcidev->bus->number ); in nes_init_adapter()
275 if ((PCI_SLOT(nesadapter->devfn) == PCI_SLOT(nesdev->pcidev->devfn)) && in nes_init_adapter()
276 (nesadapter->bus_number == nesdev->pcidev->bus->number)) { in nes_init_adapter()
283 num_pds = pci_resource_len(nesdev->pcidev, BAR_1) >> PAGE_SHIFT; in nes_init_adapter()
291 nes_read_indexed(nesdev, NES_IDX_QP_CONTROL + PCI_FUNC(nesdev->pcidev->devfn) * 8), in nes_init_adapter()
292 nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS), in nes_init_adapter()
293 nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS + 4), in nes_init_adapter()
294 nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS + 8)); in nes_init_adapter()
299 if ((port_count = nes_reset_adapter_ne020(nesdev, &OneG_Mode)) == 0) in nes_init_adapter()
302 max_qp = nes_read_indexed(nesdev, NES_IDX_QP_CTX_SIZE); in nes_init_adapter()
305 u32temp = nes_read_indexed(nesdev, NES_IDX_QUAD_HASH_TABLE_SIZE); in nes_init_adapter()
316 u32temp = nes_read_indexed(nesdev, NES_IDX_IRRQ_COUNT); in nes_init_adapter()
330 u32temp = nes_read_indexed(nesdev, NES_IDX_MRT_SIZE); in nes_init_adapter()
333 u32temp = nes_read_indexed(nesdev, NES_IDX_PBL_REGION_SIZE); in nes_init_adapter()
336 max_cq = nes_read_indexed(nesdev, NES_IDX_CQ_CTX_SIZE); in nes_init_adapter()
338 u32temp = nes_read_indexed(nesdev, NES_IDX_ARP_CACHE_SIZE); in nes_init_adapter()
358 if (nes_read_eeprom_values(nesdev, nesadapter)) { in nes_init_adapter()
367 pci_bus_read_config_word(nesdev->pcidev->bus, nesdev->pcidev->devfn, in nes_init_adapter()
371 if (nes_init_serdes(nesdev, hw_rev, port_count, nesadapter, in nes_init_adapter()
376 nes_init_csr_ne020(nesdev, hw_rev, port_count); in nes_init_adapter()
382 nesadapter->nesdev = nesdev; in nes_init_adapter()
383 nesadapter->devfn = nesdev->pcidev->devfn; in nes_init_adapter()
384 nesadapter->bus_number = nesdev->pcidev->bus->number; in nes_init_adapter()
388 nesadapter->doorbell_start = nesdev->doorbell_region; in nes_init_adapter()
419 nes_write32(nesdev->regs+NES_PERIODIC_CONTROL, 0x80000000 | in nes_init_adapter()
422 nes_write32(nesdev->regs+NES_PERIODIC_CONTROL, 0x00000000); in nes_init_adapter()
448 u32temp = nes_read_indexed(nesdev, NES_IDX_QP_MAX_CFG_SIZES); in nes_init_adapter()
487 if (nes_read_eeprom_values(nesdev, nesadapter)) { in nes_init_adapter()
493 u32temp = nes_read_indexed(nesdev, NES_IDX_TCP_TIMER_CONFIG); in nes_init_adapter()
494 nes_write_indexed(nesdev, NES_IDX_TCP_TIMER_CONFIG, in nes_init_adapter()
501 nes_write_indexed(nesdev, NES_IDX_TX_POOL_SIZE, 0x00000002); in nes_init_adapter()
503 nes_write_indexed(nesdev, NES_IDX_TX_POOL_SIZE, 0x00000003); in nes_init_adapter()
513 nes_write_indexed(nesdev, NES_IDX_TX_POOL_SIZE, 0x00000003); in nes_init_adapter()
516 nes_write_indexed(nesdev, NES_IDX_NIC_LOGPORT_TO_PHYPORT, in nes_init_adapter()
519 nes_read_indexed(nesdev, NES_IDX_NIC_LOGPORT_TO_PHYPORT)); in nes_init_adapter()
540 pcs_control_status0 = nes_read_indexed(nesdev, in nes_init_adapter()
542 pcs_control_status1 = nes_read_indexed(nesdev, in nes_init_adapter()
546 pcs_control_status0 = nes_read_indexed(nesdev, in nes_init_adapter()
548 pcs_control_status1 = nes_read_indexed(nesdev, in nes_init_adapter()
557 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F0C8); in nes_init_adapter()
559 reset_value = nes_read32(nesdev->regs+NES_SOFTWARE_RESET); in nes_init_adapter()
561 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, reset_value); in nes_init_adapter()
563 while (((nes_read32(nesdev->regs+NES_SOFTWARE_RESET) in nes_init_adapter()
567 pcs_control_status0 = nes_read_indexed(nesdev, in nes_init_adapter()
569 pcs_control_status1 = nes_read_indexed(nesdev, in nes_init_adapter()
573 pcs_control_status0 = nes_read_indexed(nesdev, in nes_init_adapter()
575 pcs_control_status1 = nes_read_indexed(nesdev, in nes_init_adapter()
581 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, in nes_init_adapter()
584 reset_value = nes_read32(nesdev->regs+NES_SOFTWARE_RESET); in nes_init_adapter()
586 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, reset_value); in nes_init_adapter()
588 while (((nes_read32(nesdev->regs+NES_SOFTWARE_RESET) in nes_init_adapter()
604 nes_write32(nesdev->regs+NES_INTF_INT_STAT, 0x0f000000); in nes_init_adapter()
614 pci_bus_read_config_word(nesdev->pcidev->bus, in nes_init_adapter()
615 PCI_DEVFN(PCI_SLOT(nesdev->pcidev->devfn), in nes_init_adapter()
621 func_index, pci_name(nesdev->pcidev)); in nes_init_adapter()
631 static unsigned int nes_reset_adapter_ne020(struct nes_device *nesdev, u8 *OneG_Mode) in nes_reset_adapter_ne020() argument
637 u32temp = nes_read32(nesdev->regs+NES_SOFTWARE_RESET); in nes_reset_adapter_ne020()
662 if (nes_read_indexed(nesdev, NES_IDX_QP_CONTROL+(PCI_FUNC(nesdev->pcidev->devfn)*8))) { in nes_reset_adapter_ne020()
664 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, u32temp | 0xd); in nes_reset_adapter_ne020()
667 while (((nes_read32(nesdev->regs+NES_SOFTWARE_RESET) & 0x00000040) == 0) && i++ < 10000) in nes_reset_adapter_ne020()
675 while ((nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS) != 0x80) && i++ < 10000) in nes_reset_adapter_ne020()
679 nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS)); in nes_reset_adapter_ne020()
698 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, u32temp | 0xd); in nes_reset_adapter_ne020()
701 while (((nes_read32(nesdev->regs+NES_SOFTWARE_RESET) & 0x00000040) == 0) && i++ < 10000) in nes_reset_adapter_ne020()
710 while (((u32temp = (nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS0) in nes_reset_adapter_ne020()
721 while (((u32temp = (nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS1) in nes_reset_adapter_ne020()
737 static int nes_init_serdes(struct nes_device *nesdev, u8 hw_rev, u8 port_count, in nes_init_serdes() argument
749 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000FFFAA); in nes_init_serdes()
751 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF); in nes_init_serdes()
754 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF); in nes_init_serdes()
755 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP0, 0x00000000); in nes_init_serdes()
758 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF); in nes_init_serdes()
759 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0); in nes_init_serdes()
761 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, sds); in nes_init_serdes()
764 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF); in nes_init_serdes()
769 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE0, 0x11110000); in nes_init_serdes()
776 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000000FF); in nes_init_serdes()
781 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP0, 0x00000000); in nes_init_serdes()
782 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP1, 0x00000000); in nes_init_serdes()
786 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000FFFAA); in nes_init_serdes()
789 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP1, 0x00000000); in nes_init_serdes()
792 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1); in nes_init_serdes()
794 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds); in nes_init_serdes()
797 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE1, 0x11110000); in nes_init_serdes()
798 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1); in nes_init_serdes()
800 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds); in nes_init_serdes()
804 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, 0x00000008); in nes_init_serdes()
806 while (((u32temp = (nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS0) in nes_init_serdes()
813 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP0, 0x000bdef7); in nes_init_serdes()
814 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_DRIVE0, 0x9ce73000); in nes_init_serdes()
815 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_MODE0, 0x0ff00000); in nes_init_serdes()
816 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_SIGDET0, 0x00000000); in nes_init_serdes()
817 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_BYPASS0, 0x00000000); in nes_init_serdes()
818 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_LOOPBACK_CONTROL0, 0x00000000); in nes_init_serdes()
820 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_EQ_CONTROL0, 0xf0182222); in nes_init_serdes()
822 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_EQ_CONTROL0, 0xf0042222); in nes_init_serdes()
824 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000ff); in nes_init_serdes()
827 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x00000048); in nes_init_serdes()
829 while (((u32temp = (nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS1) in nes_init_serdes()
836 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP1, 0x000bdef7); in nes_init_serdes()
837 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_DRIVE1, 0x9ce73000); in nes_init_serdes()
838 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_MODE1, 0x0ff00000); in nes_init_serdes()
839 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_SIGDET1, 0x00000000); in nes_init_serdes()
840 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_BYPASS1, 0x00000000); in nes_init_serdes()
841 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_LOOPBACK_CONTROL1, 0x00000000); in nes_init_serdes()
842 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_EQ_CONTROL1, 0xf0002222); in nes_init_serdes()
843 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000000ff); in nes_init_serdes()
854 static void nes_init_csr_ne020(struct nes_device *nesdev, u8 hw_rev, u8 port_count) in nes_init_csr_ne020() argument
860 nes_write_indexed(nesdev, 0x000001E4, 0x00000007); in nes_init_csr_ne020()
862 nes_write_indexed(nesdev, 0x000001E8, 0x00020874); in nes_init_csr_ne020()
863 nes_write_indexed(nesdev, 0x000001D8, 0x00048002); in nes_init_csr_ne020()
865 nes_write_indexed(nesdev, 0x000001FC, 0x00050005); in nes_init_csr_ne020()
866 nes_write_indexed(nesdev, 0x00000600, 0x55555555); in nes_init_csr_ne020()
867 nes_write_indexed(nesdev, 0x00000604, 0x55555555); in nes_init_csr_ne020()
870 nes_write_indexed(nesdev, 0x00002000, 0x00000001); in nes_init_csr_ne020()
871 nes_write_indexed(nesdev, 0x00002004, 0x00000001); in nes_init_csr_ne020()
872 nes_write_indexed(nesdev, 0x00002008, 0x0000FFFF); in nes_init_csr_ne020()
873 nes_write_indexed(nesdev, 0x0000200C, 0x00000001); in nes_init_csr_ne020()
874 nes_write_indexed(nesdev, 0x00002010, 0x000003c1); in nes_init_csr_ne020()
875 nes_write_indexed(nesdev, 0x0000201C, 0x75345678); in nes_init_csr_ne020()
877 nes_write_indexed(nesdev, 0x00002200, 0x00000001); in nes_init_csr_ne020()
878 nes_write_indexed(nesdev, 0x00002204, 0x00000001); in nes_init_csr_ne020()
879 nes_write_indexed(nesdev, 0x00002208, 0x0000FFFF); in nes_init_csr_ne020()
880 nes_write_indexed(nesdev, 0x0000220C, 0x00000001); in nes_init_csr_ne020()
881 nes_write_indexed(nesdev, 0x00002210, 0x000003c1); in nes_init_csr_ne020()
882 nes_write_indexed(nesdev, 0x0000221C, 0x75345678); in nes_init_csr_ne020()
883 nes_write_indexed(nesdev, 0x00000908, 0x20000001); in nes_init_csr_ne020()
886 nes_write_indexed(nesdev, 0x00002400, 0x00000001); in nes_init_csr_ne020()
887 nes_write_indexed(nesdev, 0x00002404, 0x00000001); in nes_init_csr_ne020()
888 nes_write_indexed(nesdev, 0x00002408, 0x0000FFFF); in nes_init_csr_ne020()
889 nes_write_indexed(nesdev, 0x0000240C, 0x00000001); in nes_init_csr_ne020()
890 nes_write_indexed(nesdev, 0x00002410, 0x000003c1); in nes_init_csr_ne020()
891 nes_write_indexed(nesdev, 0x0000241C, 0x75345678); in nes_init_csr_ne020()
892 nes_write_indexed(nesdev, 0x00000910, 0x20000001); in nes_init_csr_ne020()
894 nes_write_indexed(nesdev, 0x00002600, 0x00000001); in nes_init_csr_ne020()
895 nes_write_indexed(nesdev, 0x00002604, 0x00000001); in nes_init_csr_ne020()
896 nes_write_indexed(nesdev, 0x00002608, 0x0000FFFF); in nes_init_csr_ne020()
897 nes_write_indexed(nesdev, 0x0000260C, 0x00000001); in nes_init_csr_ne020()
898 nes_write_indexed(nesdev, 0x00002610, 0x000003c1); in nes_init_csr_ne020()
899 nes_write_indexed(nesdev, 0x0000261C, 0x75345678); in nes_init_csr_ne020()
900 nes_write_indexed(nesdev, 0x00000918, 0x20000001); in nes_init_csr_ne020()
903 nes_write_indexed(nesdev, 0x00005000, 0x00018000); in nes_init_csr_ne020()
905 nes_write_indexed(nesdev, NES_IDX_WQM_CONFIG1, (wqm_quanta << 1) | in nes_init_csr_ne020()
907 nes_write_indexed(nesdev, 0x00005008, 0x1F1F1F1F); in nes_init_csr_ne020()
908 nes_write_indexed(nesdev, 0x00005010, 0x1F1F1F1F); in nes_init_csr_ne020()
909 nes_write_indexed(nesdev, 0x00005018, 0x1F1F1F1F); in nes_init_csr_ne020()
910 nes_write_indexed(nesdev, 0x00005020, 0x1F1F1F1F); in nes_init_csr_ne020()
911 nes_write_indexed(nesdev, 0x00006090, 0xFFFFFFFF); in nes_init_csr_ne020()
914 nes_write_indexed(nesdev, 0x00000900, 0x20000001); in nes_init_csr_ne020()
915 nes_write_indexed(nesdev, 0x000060C0, 0x0000028e); in nes_init_csr_ne020()
916 nes_write_indexed(nesdev, 0x000060C8, 0x00000020); in nes_init_csr_ne020()
918 nes_write_indexed(nesdev, 0x000001EC, 0x7b2625a0); in nes_init_csr_ne020()
922 u32temp = nes_read_indexed(nesdev, 0x000008e8); in nes_init_csr_ne020()
924 nes_write_indexed(nesdev, 0x000008e8, u32temp); in nes_init_csr_ne020()
925 u32temp = nes_read_indexed(nesdev, 0x000021f8); in nes_init_csr_ne020()
928 nes_write_indexed(nesdev, 0x000021f8, u32temp); in nes_init_csr_ne020()
930 u32temp = nes_read_indexed(nesdev, 0x000023f8); in nes_init_csr_ne020()
933 nes_write_indexed(nesdev, 0x000023f8, u32temp); in nes_init_csr_ne020()
967 int nes_init_cqp(struct nes_device *nesdev) in nes_init_cqp() argument
969 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_init_cqp()
985 nesdev->cqp_mem_size = 512 + in nes_init_cqp()
993 nesdev->cqp_vbase = pci_zalloc_consistent(nesdev->pcidev, in nes_init_cqp()
994 nesdev->cqp_mem_size, in nes_init_cqp()
995 &nesdev->cqp_pbase); in nes_init_cqp()
996 if (!nesdev->cqp_vbase) { in nes_init_cqp()
1002 nesdev->nes_cqp_requests = kzalloc(sizeof(struct nes_cqp_request) * in nes_init_cqp()
1004 if (!nesdev->nes_cqp_requests) { in nes_init_cqp()
1005 pci_free_consistent(nesdev->pcidev, nesdev->cqp_mem_size, nesdev->cqp.sq_vbase, in nes_init_cqp()
1006 nesdev->cqp.sq_pbase); in nes_init_cqp()
1011 nesdev->cqp_vbase, (unsigned long)nesdev->cqp_pbase, nesdev->cqp_mem_size); in nes_init_cqp()
1013 spin_lock_init(&nesdev->cqp.lock); in nes_init_cqp()
1014 init_waitqueue_head(&nesdev->cqp.waitq); in nes_init_cqp()
1017 vmem = (void *)(((unsigned long)nesdev->cqp_vbase + (512 - 1)) & in nes_init_cqp()
1019 pmem = (dma_addr_t)(((unsigned long long)nesdev->cqp_pbase + (512 - 1)) & in nes_init_cqp()
1022 nesdev->cqp.sq_vbase = vmem; in nes_init_cqp()
1023 nesdev->cqp.sq_pbase = pmem; in nes_init_cqp()
1024 nesdev->cqp.sq_size = NES_CQP_SQ_SIZE; in nes_init_cqp()
1025 nesdev->cqp.sq_head = 0; in nes_init_cqp()
1026 nesdev->cqp.sq_tail = 0; in nes_init_cqp()
1027 nesdev->cqp.qp_id = PCI_FUNC(nesdev->pcidev->devfn); in nes_init_cqp()
1029 vmem += (sizeof(struct nes_hw_cqp_wqe) * nesdev->cqp.sq_size); in nes_init_cqp()
1030 pmem += (sizeof(struct nes_hw_cqp_wqe) * nesdev->cqp.sq_size); in nes_init_cqp()
1032 nesdev->ccq.cq_vbase = vmem; in nes_init_cqp()
1033 nesdev->ccq.cq_pbase = pmem; in nes_init_cqp()
1034 nesdev->ccq.cq_size = NES_CCQ_SIZE; in nes_init_cqp()
1035 nesdev->ccq.cq_head = 0; in nes_init_cqp()
1036 nesdev->ccq.ce_handler = nes_cqp_ce_handler; in nes_init_cqp()
1037 nesdev->ccq.cq_number = PCI_FUNC(nesdev->pcidev->devfn); in nes_init_cqp()
1039 vmem += (sizeof(struct nes_hw_cqe) * nesdev->ccq.cq_size); in nes_init_cqp()
1040 pmem += (sizeof(struct nes_hw_cqe) * nesdev->ccq.cq_size); in nes_init_cqp()
1042 nesdev->ceq_index = PCI_FUNC(nesdev->pcidev->devfn); in nes_init_cqp()
1043 ceq = &nesadapter->ceq[nesdev->ceq_index]; in nes_init_cqp()
1052 nesdev->nic_ceq_index = PCI_FUNC(nesdev->pcidev->devfn) + 8; in nes_init_cqp()
1053 nic_ceq = &nesadapter->ceq[nesdev->nic_ceq_index]; in nes_init_cqp()
1062 aeq = &nesadapter->aeq[PCI_FUNC(nesdev->pcidev->devfn)]; in nes_init_cqp()
1074 cpu_to_le32((PCI_FUNC(nesdev->pcidev->devfn) << 12) + (2 << 10)); in nes_init_cqp()
1076 cqp_qp_context->context_words[2] = cpu_to_le32((u32)nesdev->cqp.sq_pbase); in nes_init_cqp()
1077 cqp_qp_context->context_words[3] = cpu_to_le32(((u64)nesdev->cqp.sq_pbase) >> 32); in nes_init_cqp()
1082 nes_write_indexed(nesdev, in nes_init_cqp()
1083 NES_IDX_CREATE_CQP_HIGH + (PCI_FUNC(nesdev->pcidev->devfn) * 8), in nes_init_cqp()
1086 nes_write_indexed(nesdev, in nes_init_cqp()
1087 NES_IDX_CREATE_CQP_HIGH + (PCI_FUNC(nesdev->pcidev->devfn) * 8), 0); in nes_init_cqp()
1089 nes_write_indexed(nesdev, in nes_init_cqp()
1090 NES_IDX_CREATE_CQP_LOW + (PCI_FUNC(nesdev->pcidev->devfn) * 8), in nes_init_cqp()
1093 INIT_LIST_HEAD(&nesdev->cqp_avail_reqs); in nes_init_cqp()
1094 INIT_LIST_HEAD(&nesdev->cqp_pending_reqs); in nes_init_cqp()
1097 init_waitqueue_head(&nesdev->nes_cqp_requests[count].waitq); in nes_init_cqp()
1098 list_add_tail(&nesdev->nes_cqp_requests[count].list, &nesdev->cqp_avail_reqs); in nes_init_cqp()
1102 cqp_head = nesdev->cqp.sq_head++; in nes_init_cqp()
1103 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_cqp()
1104 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_cqp()
1107 NES_CQP_CQ_CHK_OVERFLOW | ((u32)nesdev->ccq.cq_size << 16))); in nes_init_cqp()
1109 (nesdev->ccq.cq_number | in nes_init_cqp()
1110 ((u32)nesdev->ceq_index << 16))); in nes_init_cqp()
1111 u64temp = (u64)nesdev->ccq.cq_pbase; in nes_init_cqp()
1114 u64temp = (unsigned long)&nesdev->ccq; in nes_init_cqp()
1122 cqp_head = nesdev->cqp.sq_head++; in nes_init_cqp()
1123 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_cqp()
1124 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_cqp()
1126 (NES_CQP_CREATE_CEQ + ((u32)nesdev->ceq_index << 8))); in nes_init_cqp()
1132 cqp_head = nesdev->cqp.sq_head++; in nes_init_cqp()
1133 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_cqp()
1134 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_cqp()
1136 (NES_CQP_CREATE_AEQ + ((u32)PCI_FUNC(nesdev->pcidev->devfn) << 8))); in nes_init_cqp()
1142 cqp_head = nesdev->cqp.sq_head++; in nes_init_cqp()
1143 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_cqp()
1144 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_cqp()
1146 (NES_CQP_CREATE_CEQ + ((u32)nesdev->nic_ceq_index << 8))); in nes_init_cqp()
1156 pci_free_consistent(nesdev->pcidev, nesdev->cqp_mem_size, in nes_init_cqp()
1157 nesdev->cqp_vbase, nesdev->cqp_pbase); in nes_init_cqp()
1161 } while (!(nes_read_indexed(nesdev, in nes_init_cqp()
1162 NES_IDX_QP_CONTROL + (PCI_FUNC(nesdev->pcidev->devfn) * 8)) & (1 << 8))); in nes_init_cqp()
1164 nes_debug(NES_DBG_INIT, "CQP Status = 0x%08X\n", nes_read_indexed(nesdev, in nes_init_cqp()
1165 NES_IDX_QP_CONTROL+(PCI_FUNC(nesdev->pcidev->devfn)*8))); in nes_init_cqp()
1168 nes_write32(nesdev->regs+NES_WQE_ALLOC, u32temp | nesdev->cqp.qp_id); in nes_init_cqp()
1175 pci_free_consistent(nesdev->pcidev, nesdev->cqp_mem_size, in nes_init_cqp()
1176 nesdev->cqp_vbase, nesdev->cqp_pbase); in nes_init_cqp()
1180 } while (((nes_read_indexed(nesdev, in nes_init_cqp()
1181 NES_IDX_QP_CONTROL+(PCI_FUNC(nesdev->pcidev->devfn)*8)) & (15<<8)) != (15<<8))); in nes_init_cqp()
1184 nes_debug(NES_DBG_INIT, "QP Status = 0x%08X\n", nes_read_indexed(nesdev, in nes_init_cqp()
1185 NES_IDX_QP_CONTROL+(PCI_FUNC(nesdev->pcidev->devfn)*8))); in nes_init_cqp()
1187 nesdev->cqp.sq_tail++; in nes_init_cqp()
1196 int nes_destroy_cqp(struct nes_device *nesdev) in nes_destroy_cqp() argument
1207 } while (!(nesdev->cqp.sq_head == nesdev->cqp.sq_tail)); in nes_destroy_cqp()
1210 nes_write32(nesdev->regs+NES_CQE_ALLOC, NES_CQE_ALLOC_RESET | in nes_destroy_cqp()
1211 nesdev->ccq.cq_number); in nes_destroy_cqp()
1214 nes_write32(nesdev->regs+NES_INT_MASK, 0x7fffffff); in nes_destroy_cqp()
1216 spin_lock_irqsave(&nesdev->cqp.lock, flags); in nes_destroy_cqp()
1219 cqp_head = nesdev->cqp.sq_head++; in nes_destroy_cqp()
1220 nesdev->cqp.sq_head &= nesdev->cqp.sq_size-1; in nes_destroy_cqp()
1221 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_cqp()
1223 ((u32)PCI_FUNC(nesdev->pcidev->devfn) << 8)); in nes_destroy_cqp()
1227 cqp_head = nesdev->cqp.sq_head++; in nes_destroy_cqp()
1228 nesdev->cqp.sq_head &= nesdev->cqp.sq_size-1; in nes_destroy_cqp()
1229 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_cqp()
1231 ((u32)nesdev->nic_ceq_index << 8)); in nes_destroy_cqp()
1234 cqp_head = nesdev->cqp.sq_head++; in nes_destroy_cqp()
1235 nesdev->cqp.sq_head &= nesdev->cqp.sq_size-1; in nes_destroy_cqp()
1236 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_cqp()
1238 (nesdev->ceq_index << 8)); in nes_destroy_cqp()
1241 cqp_head = nesdev->cqp.sq_head++; in nes_destroy_cqp()
1242 nesdev->cqp.sq_head &= nesdev->cqp.sq_size-1; in nes_destroy_cqp()
1243 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_cqp()
1245 cqp_wqe->wqe_words[NES_CQP_WQE_ID_IDX] = cpu_to_le32(nesdev->ccq.cq_number | in nes_destroy_cqp()
1246 ((u32)nesdev->ceq_index << 16)); in nes_destroy_cqp()
1249 cqp_head = nesdev->cqp.sq_head++; in nes_destroy_cqp()
1250 nesdev->cqp.sq_head &= nesdev->cqp.sq_size-1; in nes_destroy_cqp()
1251 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_cqp()
1254 cqp_wqe->wqe_words[NES_CQP_WQE_ID_IDX] = cpu_to_le32(nesdev->cqp.qp_id); in nes_destroy_cqp()
1258 nes_write32(nesdev->regs+NES_WQE_ALLOC, 0x05800000 | nesdev->cqp.qp_id); in nes_destroy_cqp()
1260 spin_unlock_irqrestore(&nesdev->cqp.lock, flags); in nes_destroy_cqp()
1267 PCI_FUNC(nesdev->pcidev->devfn)); in nes_destroy_cqp()
1271 } while (((nes_read_indexed(nesdev, in nes_destroy_cqp()
1272 NES_IDX_QP_CONTROL + (PCI_FUNC(nesdev->pcidev->devfn)*8)) & (15 << 8)) != 0)); in nes_destroy_cqp()
1276 PCI_FUNC(nesdev->pcidev->devfn), in nes_destroy_cqp()
1277 nes_read_indexed(nesdev, in nes_destroy_cqp()
1278 NES_IDX_QP_CONTROL+(PCI_FUNC(nesdev->pcidev->devfn)*8))); in nes_destroy_cqp()
1280 kfree(nesdev->nes_cqp_requests); in nes_destroy_cqp()
1283 pci_free_consistent(nesdev->pcidev, nesdev->cqp_mem_size, nesdev->cqp.sq_vbase, in nes_destroy_cqp()
1284 nesdev->cqp.sq_pbase); in nes_destroy_cqp()
1293 static int nes_init_1g_phy(struct nes_device *nesdev, u8 phy_type, u8 phy_index) in nes_init_1g_phy() argument
1299 nes_read_1G_phy_reg(nesdev, 1, phy_index, &phy_data); in nes_init_1g_phy()
1300 nes_write_1G_phy_reg(nesdev, 23, phy_index, 0xb000); in nes_init_1g_phy()
1303 nes_write_1G_phy_reg(nesdev, 0, phy_index, 0x8000); in nes_init_1g_phy()
1307 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data); in nes_init_1g_phy()
1317 nes_write_1G_phy_reg(nesdev, 0, phy_index, phy_data); in nes_init_1g_phy()
1318 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data); in nes_init_1g_phy()
1319 nes_read_1G_phy_reg(nesdev, 0x17, phy_index, &phy_data); in nes_init_1g_phy()
1320 nes_read_1G_phy_reg(nesdev, 0x1e, phy_index, &phy_data); in nes_init_1g_phy()
1323 nes_read_1G_phy_reg(nesdev, 0x19, phy_index, &phy_data); in nes_init_1g_phy()
1324 nes_write_1G_phy_reg(nesdev, 0x19, phy_index, 0xffee); in nes_init_1g_phy()
1325 nes_read_1G_phy_reg(nesdev, 0x19, phy_index, &phy_data); in nes_init_1g_phy()
1328 nes_read_1G_phy_reg(nesdev, 4, phy_index, &phy_data); in nes_init_1g_phy()
1329 nes_write_1G_phy_reg(nesdev, 4, phy_index, (phy_data & ~(0x03E0)) | 0xc00); in nes_init_1g_phy()
1330 nes_read_1G_phy_reg(nesdev, 4, phy_index, &phy_data); in nes_init_1g_phy()
1333 nes_read_1G_phy_reg(nesdev, 9, phy_index, &phy_data); in nes_init_1g_phy()
1334 nes_write_1G_phy_reg(nesdev, 9, phy_index, phy_data & ~(0x0100)); in nes_init_1g_phy()
1335 nes_read_1G_phy_reg(nesdev, 9, phy_index, &phy_data); in nes_init_1g_phy()
1337 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data); in nes_init_1g_phy()
1338 nes_write_1G_phy_reg(nesdev, 0, phy_index, phy_data | 0x0300); in nes_init_1g_phy()
1347 static int nes_init_2025_phy(struct nes_device *nesdev, u8 phy_type, u8 phy_index) in nes_init_2025_phy() argument
1353 u32 mac_index = nesdev->mac_index; in nes_init_2025_phy()
1358 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee); in nes_init_2025_phy()
1359 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1361 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee); in nes_init_2025_phy()
1362 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1365 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7fd); in nes_init_2025_phy()
1366 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1373 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0x0000, 0x8000); in nes_init_2025_phy()
1374 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc300, 0x0000); in nes_init_2025_phy()
1375 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc316, 0x000A); in nes_init_2025_phy()
1376 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc318, 0x0052); in nes_init_2025_phy()
1380 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc316, 0x000A); in nes_init_2025_phy()
1381 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc318, 0x0052); in nes_init_2025_phy()
1382 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x000C); in nes_init_2025_phy()
1383 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0008); in nes_init_2025_phy()
1384 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0027, 0x0001); in nes_init_2025_phy()
1385 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc31a, 0x0098); in nes_init_2025_phy()
1386 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0026, 0x0E00); in nes_init_2025_phy()
1389 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd006, 0x0007); in nes_init_2025_phy()
1390 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd007, 0x000A); in nes_init_2025_phy()
1391 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd008, 0x0009); in nes_init_2025_phy()
1395 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc316, 0x000A); in nes_init_2025_phy()
1396 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc318, 0x0052); in nes_init_2025_phy()
1397 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x0004); in nes_init_2025_phy()
1398 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0038); in nes_init_2025_phy()
1399 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0027, 0x0013); in nes_init_2025_phy()
1400 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc31a, 0x0098); in nes_init_2025_phy()
1401 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0026, 0x0E00); in nes_init_2025_phy()
1404 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd006, 0x0007); in nes_init_2025_phy()
1405 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd007, 0x000A); in nes_init_2025_phy()
1406 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd008, 0x0009); in nes_init_2025_phy()
1410 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc316, 0x000A); in nes_init_2025_phy()
1411 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc318, 0x0052); in nes_init_2025_phy()
1412 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x000C); in nes_init_2025_phy()
1413 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0010); in nes_init_2025_phy()
1414 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0027, 0x0013); in nes_init_2025_phy()
1415 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc31a, 0x0080); in nes_init_2025_phy()
1416 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0026, 0x0E00); in nes_init_2025_phy()
1419 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd006, 0x000B); in nes_init_2025_phy()
1420 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd007, 0x0003); in nes_init_2025_phy()
1421 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd008, 0x0004); in nes_init_2025_phy()
1423 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0022, 0x406D); in nes_init_2025_phy()
1424 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0023, 0x0020); in nes_init_2025_phy()
1428 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0028, 0xA528); in nes_init_2025_phy()
1431 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc300, 0x0002); in nes_init_2025_phy()
1436 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee); in nes_init_2025_phy()
1437 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1444 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee); in nes_init_2025_phy()
1445 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1451 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7fd); in nes_init_2025_phy()
1452 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1458 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0xe854, 0x00c0); in nes_init_2025_phy()
1459 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0xe854, 0x0040); in nes_init_2025_phy()
1470 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd003, 0x0000); in nes_init_2025_phy()
1471 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00D, 0x00FE); in nes_init_2025_phy()
1472 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00E, 0x0032); in nes_init_2025_phy()
1474 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00F, 0x000C); in nes_init_2025_phy()
1476 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00F, 0x0002); in nes_init_2025_phy()
1477 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc314, 0x0063); in nes_init_2025_phy()
1481 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 + mac_index * 0x200); in nes_init_2025_phy()
1483 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 + mac_index * 0x200, sds); in nes_init_2025_phy()
1485 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 + mac_index * 0x200, sds); in nes_init_2025_phy()
1488 while (((nes_read32(nesdev->regs + NES_SOFTWARE_RESET) & 0x00000040) != 0x00000040) in nes_init_2025_phy()
1499 int nes_init_phy(struct nes_device *nesdev) in nes_init_phy() argument
1501 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_init_phy()
1502 u32 mac_index = nesdev->mac_index; in nes_init_phy()
1509 tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG); in nes_init_phy()
1519 nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config); in nes_init_phy()
1521 spin_lock_irqsave(&nesdev->nesadapter->phy_lock, flags); in nes_init_phy()
1525 ret = nes_init_1g_phy(nesdev, phy_type, phy_index); in nes_init_phy()
1530 ret = nes_init_2025_phy(nesdev, phy_type, phy_index); in nes_init_phy()
1534 spin_unlock_irqrestore(&nesdev->nesadapter->phy_lock, flags); in nes_init_phy()
1550 struct nes_device *nesdev; in nes_replenish_nic_rq() local
1555 nesdev = nesvnic->nesdev; in nes_replenish_nic_rq()
1575 bus_address = pci_map_single(nesdev->pcidev, in nes_replenish_nic_rq()
1595 nes_write32(nesdev->regs+NES_WQE_ALLOC, (rx_wqes_posted << 24) | nesnic->qp_id); in nes_replenish_nic_rq()
1613 nes_write32(nesdev->regs+NES_WQE_ALLOC, (rx_wqes_posted << 24) | nesnic->qp_id); in nes_replenish_nic_rq()
1634 int nes_init_nic_qp(struct nes_device *nesdev, struct net_device *netdev) in nes_init_nic_qp() argument
1661 nesvnic->nic_vbase = pci_zalloc_consistent(nesdev->pcidev, in nes_init_nic_qp()
1726 if (nesdev->nesadapter->netdev_count > 2) in nes_init_nic_qp()
1739 spin_lock_irqsave(&nesdev->cqp.lock, flags); in nes_init_nic_qp()
1740 cqp_head = nesdev->cqp.sq_head; in nes_init_nic_qp()
1742 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_nic_qp()
1743 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_nic_qp()
1749 nesvnic->nic_cq.cq_number | ((u32)nesdev->nic_ceq_index << 16)); in nes_init_nic_qp()
1758 if (++cqp_head >= nesdev->cqp.sq_size) in nes_init_nic_qp()
1760 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_nic_qp()
1761 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_nic_qp()
1767 ((u32)PCI_FUNC(nesdev->pcidev->devfn) << 12)); in nes_init_nic_qp()
1769 nes_read_indexed(nesdev, NES_IDX_RX_WINDOW_BUFFER_PAGE_TABLE_SIZE), in nes_init_nic_qp()
1770 nes_read_indexed(nesdev, NES_IDX_RX_WINDOW_BUFFER_SIZE)); in nes_init_nic_qp()
1771 if (nes_read_indexed(nesdev, NES_IDX_RX_WINDOW_BUFFER_SIZE) != 0) { in nes_init_nic_qp()
1789 if (++cqp_head >= nesdev->cqp.sq_size) in nes_init_nic_qp()
1791 nesdev->cqp.sq_head = cqp_head; in nes_init_nic_qp()
1796 nes_write32(nesdev->regs+NES_WQE_ALLOC, 0x02800000 | nesdev->cqp.qp_id); in nes_init_nic_qp()
1798 spin_unlock_irqrestore(&nesdev->cqp.lock, flags); in nes_init_nic_qp()
1802 ret = wait_event_timeout(nesdev->cqp.waitq, (nesdev->cqp.sq_tail == cqp_head), in nes_init_nic_qp()
1808 pci_free_consistent(nesdev->pcidev, nesvnic->nic_mem_size, nesvnic->nic_vbase, in nes_init_nic_qp()
1825 pmem = pci_map_single(nesdev->pcidev, skb->data, in nes_init_nic_qp()
1845 nes_write32(nesdev->regs+NES_WQE_ALLOC, (counter << 24) | nesvnic->nic.qp_id); in nes_init_nic_qp()
1849 if (nesdev->nesadapter->et_use_adaptive_rx_coalesce) in nes_init_nic_qp()
1851 nes_nic_init_timer(nesdev); in nes_init_nic_qp()
1854 nes_nic_init_timer_defaults(nesdev, jumbomode); in nes_init_nic_qp()
1856 if ((nesdev->nesadapter->allow_unaligned_fpdus) && in nes_init_nic_qp()
1857 (nes_init_mgt_qp(nesdev, netdev, nesvnic))) { in nes_init_nic_qp()
1875 struct nes_device *nesdev = nesvnic->nesdev; in nes_destroy_nic_qp() local
1887 if (nesdev->nesadapter->allow_unaligned_fpdus) in nes_destroy_nic_qp()
1891 wqm_cfg0 = nes_read_indexed(nesdev, NES_IDX_WQM_CONFIG0); in nes_destroy_nic_qp()
1892 nes_write_indexed(nesdev, NES_IDX_WQM_CONFIG0, wqm_cfg0 & 0xFFFF7FFF); in nes_destroy_nic_qp()
1898 pci_unmap_single(nesdev->pcidev, cb->busaddr, cb->maplen, in nes_destroy_nic_qp()
1923 pci_unmap_single(nesdev->pcidev, in nes_destroy_nic_qp()
1940 pci_unmap_page(nesdev->pcidev, in nes_destroy_nic_qp()
1958 spin_lock_irqsave(&nesdev->cqp.lock, flags); in nes_destroy_nic_qp()
1961 cqp_head = nesdev->cqp.sq_head; in nes_destroy_nic_qp()
1962 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_nic_qp()
1963 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_destroy_nic_qp()
1970 if (++cqp_head >= nesdev->cqp.sq_size) in nes_destroy_nic_qp()
1973 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_nic_qp()
1976 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_destroy_nic_qp()
1980 (nesvnic->nic_cq.cq_number | ((u32)nesdev->nic_ceq_index << 16))); in nes_destroy_nic_qp()
1982 if (++cqp_head >= nesdev->cqp.sq_size) in nes_destroy_nic_qp()
1985 nesdev->cqp.sq_head = cqp_head; in nes_destroy_nic_qp()
1989 nes_write32(nesdev->regs+NES_WQE_ALLOC, 0x02800000 | nesdev->cqp.qp_id); in nes_destroy_nic_qp()
1991 spin_unlock_irqrestore(&nesdev->cqp.lock, flags); in nes_destroy_nic_qp()
1994 cqp_head, nesdev->cqp.sq_head, in nes_destroy_nic_qp()
1995 nesdev->cqp.sq_tail, nesdev->cqp.sq_size); in nes_destroy_nic_qp()
1997 ret = wait_event_timeout(nesdev->cqp.waitq, (nesdev->cqp.sq_tail == cqp_head), in nes_destroy_nic_qp()
2002 ret, cqp_head, nesdev->cqp.sq_head, nesdev->cqp.sq_tail); in nes_destroy_nic_qp()
2008 pci_free_consistent(nesdev->pcidev, nesvnic->nic_mem_size, nesvnic->nic_vbase, in nes_destroy_nic_qp()
2012 nes_write_indexed(nesdev, NES_IDX_WQM_CONFIG0, wqm_cfg0); in nes_destroy_nic_qp()
2018 int nes_napi_isr(struct nes_device *nesdev) in nes_napi_isr() argument
2020 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_napi_isr()
2023 if (nesdev->napi_isr_ran) { in nes_napi_isr()
2025 int_stat = nesdev->int_stat; in nes_napi_isr()
2027 int_stat = nes_read32(nesdev->regs + NES_INT_STAT); in nes_napi_isr()
2028 nesdev->int_stat = int_stat; in nes_napi_isr()
2029 nesdev->napi_isr_ran = 1; in nes_napi_isr()
2032 int_stat &= nesdev->int_req; in nes_napi_isr()
2035 nesdev->napi_isr_ran = 0; in nes_napi_isr()
2036 nes_write32(nesdev->regs + NES_INT_STAT, in nes_napi_isr()
2041 nes_process_ceq(nesdev, &nesdev->nesadapter->ceq[nesdev->nic_ceq_index]); in nes_napi_isr()
2046 (nesdev->deepcq_count > nesadapter->et_pkt_rate_low))))) { in nes_napi_isr()
2047 if ((nesdev->int_req & NES_INT_TIMER) == 0) { in nes_napi_isr()
2049 nesdev->int_req |= NES_INT_TIMER; in nes_napi_isr()
2052 nes_write32(nesdev->regs+NES_TIMER_STAT, in nes_napi_isr()
2053 nesdev->timer_int_req | ~(nesdev->nesadapter->timer_int_req)); in nes_napi_isr()
2054 nes_write32(nesdev->regs+NES_INTF_INT_MASK, in nes_napi_isr()
2055 ~(nesdev->intf_int_req | NES_INTF_PERIODIC_TIMER)); in nes_napi_isr()
2060 nes_nic_init_timer(nesdev); in nes_napi_isr()
2063 nes_write32(nesdev->regs+NES_INT_MASK, 0x0000ffff | (~nesdev->int_req)); in nes_napi_isr()
2066 nesdev->int_req &= ~NES_INT_TIMER; in nes_napi_isr()
2067 nes_write32(nesdev->regs+NES_INTF_INT_MASK, ~(nesdev->intf_int_req)); in nes_napi_isr()
2068 nes_write32(nesdev->regs+NES_INT_MASK, ~nesdev->int_req); in nes_napi_isr()
2070 nesdev->deepcq_count = 0; in nes_napi_isr()
2077 static void process_critical_error(struct nes_device *nesdev) in process_critical_error() argument
2083 debug_error = nes_read_indexed(nesdev, NES_IDX_DEBUG_ERROR_CONTROL_STATUS); in process_critical_error()
2086 nes_write_indexed(nesdev, NES_IDX_DEBUG_ERROR_CONTROL_STATUS, in process_critical_error()
2089 nes_write_indexed(nesdev, NES_IDX_DEBUG_ERROR_MASKS1, 1 << 0x17); in process_critical_error()
2091 if (++nesdev->nesadapter->crit_error_count[error_module-1] >= in process_critical_error()
2095 nes_idx_debug_error_masks0 = nes_read_indexed(nesdev, in process_critical_error()
2097 nes_write_indexed(nesdev, NES_IDX_DEBUG_ERROR_MASKS0, in process_critical_error()
2106 struct nes_device *nesdev = (struct nes_device *)param; in nes_dpc() local
2107 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_dpc()
2124 if (nesdev->napi_isr_ran) { in nes_dpc()
2125 nesdev->napi_isr_ran = 0; in nes_dpc()
2126 int_stat = nesdev->int_stat; in nes_dpc()
2128 int_stat = nes_read32(nesdev->regs+NES_INT_STAT); in nes_dpc()
2130 int_stat &= nesdev->int_req & ~NES_INT_INTF; in nes_dpc()
2132 int_stat &= nesdev->int_req; in nes_dpc()
2136 timer_stat = nes_read32(nesdev->regs + NES_TIMER_STAT); in nes_dpc()
2137 if ((timer_stat & nesdev->timer_int_req) == 0) { in nes_dpc()
2149 nes_write32(nesdev->regs+NES_INT_STAT, in nes_dpc()
2157 nes_process_ceq(nesdev, &nesadapter->ceq[counter]); in nes_dpc()
2167 int_status_bit = 1 << (16 + PCI_FUNC(nesdev->pcidev->devfn)); in nes_dpc()
2169 nes_process_aeq(nesdev, &nesadapter->aeq[PCI_FUNC(nesdev->pcidev->devfn)]); in nes_dpc()
2173 int_status_bit = 1 << (24 + nesdev->mac_index); in nes_dpc()
2175 nes_process_mac_intr(nesdev, nesdev->mac_index); in nes_dpc()
2179 if (timer_stat & nesdev->timer_int_req) { in nes_dpc()
2180 nes_write32(nesdev->regs + NES_TIMER_STAT, in nes_dpc()
2181 (timer_stat & nesdev->timer_int_req) | in nes_dpc()
2182 ~(nesdev->nesadapter->timer_int_req)); in nes_dpc()
2189 intf_int_stat = nes_read32(nesdev->regs+NES_INTF_INT_STAT); in nes_dpc()
2190 intf_int_stat &= nesdev->intf_int_req; in nes_dpc()
2192 process_critical_error(nesdev); in nes_dpc()
2202 nes_write32(nesdev->regs+NES_INTF_INT_STAT, intf_int_stat); in nes_dpc()
2216 nesdev->timer_only_int_count++; in nes_dpc()
2217 if (nesdev->timer_only_int_count>=nesadapter->timer_int_limit) { in nes_dpc()
2218 nesdev->timer_only_int_count = 0; in nes_dpc()
2219 nesdev->int_req &= ~NES_INT_TIMER; in nes_dpc()
2220 nes_write32(nesdev->regs + NES_INTF_INT_MASK, ~(nesdev->intf_int_req)); in nes_dpc()
2221 nes_write32(nesdev->regs + NES_INT_MASK, ~nesdev->int_req); in nes_dpc()
2223 nes_write32(nesdev->regs+NES_INT_MASK, 0x0000ffff | (~nesdev->int_req)); in nes_dpc()
2228 nes_nic_init_timer(nesdev); in nes_dpc()
2230 nesdev->timer_only_int_count = 0; in nes_dpc()
2231 nes_write32(nesdev->regs+NES_INT_MASK, 0x0000ffff | (~nesdev->int_req)); in nes_dpc()
2234 nesdev->timer_only_int_count = 0; in nes_dpc()
2235 nesdev->int_req &= ~NES_INT_TIMER; in nes_dpc()
2236 nes_write32(nesdev->regs+NES_INTF_INT_MASK, ~(nesdev->intf_int_req)); in nes_dpc()
2237 nes_write32(nesdev->regs+NES_TIMER_STAT, in nes_dpc()
2238 nesdev->timer_int_req | ~(nesdev->nesadapter->timer_int_req)); in nes_dpc()
2239 nes_write32(nesdev->regs+NES_INT_MASK, ~nesdev->int_req); in nes_dpc()
2245 ((nesdev->deepcq_count > nesadapter->et_pkt_rate_low) && in nes_dpc()
2248 nesdev->timer_only_int_count = 0; in nes_dpc()
2249 nesdev->int_req |= NES_INT_TIMER; in nes_dpc()
2250 nes_write32(nesdev->regs+NES_TIMER_STAT, in nes_dpc()
2251 nesdev->timer_int_req | ~(nesdev->nesadapter->timer_int_req)); in nes_dpc()
2252 nes_write32(nesdev->regs+NES_INTF_INT_MASK, in nes_dpc()
2253 ~(nesdev->intf_int_req | NES_INTF_PERIODIC_TIMER)); in nes_dpc()
2254 nes_write32(nesdev->regs+NES_INT_MASK, 0x0000ffff | (~nesdev->int_req)); in nes_dpc()
2256 nes_write32(nesdev->regs+NES_INT_MASK, ~nesdev->int_req); in nes_dpc()
2259 nesdev->deepcq_count = 0; in nes_dpc()
2266 static void nes_process_ceq(struct nes_device *nesdev, struct nes_hw_ceq *ceq) in nes_process_ceq() argument
2289 cq->ce_handler(nesdev, cq); in nes_process_ceq()
2306 static void nes_process_aeq(struct nes_device *nesdev, struct nes_hw_aeq *aeq) in nes_process_aeq() argument
2331 nes_process_iwarp_aeqe(nesdev, (struct nes_hw_aeqe *)aeqe); in nes_process_aeq()
2344 nes_write32(nesdev->regs + NES_AEQ_ALLOC, 1 << 16); in nes_process_aeq()
2350 static void nes_reset_link(struct nes_device *nesdev, u32 mac_index) in nes_reset_link() argument
2352 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_reset_link()
2362 reset_value = nes_read32(nesdev->regs+NES_SOFTWARE_RESET); in nes_reset_link()
2373 u32temp = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1); in nes_reset_link()
2375 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F088); in nes_reset_link()
2377 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F0C8); in nes_reset_link()
2384 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, reset_value); in nes_reset_link()
2386 while (((nes_read32(nesdev->regs+NES_SOFTWARE_RESET) in nes_reset_link()
2393 pcs_control_status0 = nes_read_indexed(nesdev, NES_IDX_PHY_PCS_CONTROL_STATUS0); in nes_reset_link()
2394 pcs_control_status1 = nes_read_indexed(nesdev, NES_IDX_PHY_PCS_CONTROL_STATUS0 + 0x200); in nes_reset_link()
2404 u32temp = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1); in nes_reset_link()
2406 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F088); in nes_reset_link()
2408 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F0C8); in nes_reset_link()
2410 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, reset_value); in nes_reset_link()
2412 while (((nes_read32(nesdev->regs + NES_SOFTWARE_RESET) in nes_reset_link()
2421 static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number) in nes_process_mac_intr() argument
2425 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_process_mac_intr()
2428 u32 mac_index = nesdev->mac_index; in nes_process_mac_intr()
2444 mac_status = nes_read_indexed(nesdev, NES_IDX_MAC_INT_STATUS + (mac_index * 0x200)); in nes_process_mac_intr()
2446 nes_write_indexed(nesdev, NES_IDX_MAC_INT_STATUS + (mac_index * 0x200), mac_status); in nes_process_mac_intr()
2451 nesdev->link_status_interrupts++; in nes_process_mac_intr()
2453 nes_reset_link(nesdev, mac_index); in nes_process_mac_intr()
2459 nes_read_1G_phy_reg(nesdev, 0x1a, in nes_process_mac_intr()
2467 nes_read_1G_phy_reg(nesdev, 0x11, in nes_process_mac_intr()
2476 nes_read_1G_phy_reg(nesdev, 0x1e, in nes_process_mac_intr()
2481 nes_read_1G_phy_reg(nesdev, 1, in nes_process_mac_intr()
2494 nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS0), in nes_process_mac_intr()
2495 nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS0+0x200)); in nes_process_mac_intr()
2501 pcs_control_status = nes_read_indexed(nesdev, in nes_process_mac_intr()
2505 pcs_control_status = nes_read_indexed(nesdev, in nes_process_mac_intr()
2510 pcs_control_status = nes_read_indexed(nesdev, in nes_process_mac_intr()
2512 pcs_control_status = nes_read_indexed(nesdev, in nes_process_mac_intr()
2534 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0x0008); in nes_process_mac_intr()
2535 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc001); in nes_process_mac_intr()
2536 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc002); in nes_process_mac_intr()
2537 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc005); in nes_process_mac_intr()
2538 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc006); in nes_process_mac_intr()
2539 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9003); in nes_process_mac_intr()
2540 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9004); in nes_process_mac_intr()
2541 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9005); in nes_process_mac_intr()
2543 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9003); in nes_process_mac_intr()
2544 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_process_mac_intr()
2546 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021); in nes_process_mac_intr()
2547 nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_process_mac_intr()
2548 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021); in nes_process_mac_intr()
2549 phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_process_mac_intr()
2573 cdr_ctrl = nes_read_indexed(nesdev, in nes_process_mac_intr()
2576 nes_write_indexed(nesdev, in nes_process_mac_intr()
2595 if (nesdev->iw_status == 0) { in nes_process_mac_intr()
2596 nesdev->iw_status = 1; in nes_process_mac_intr()
2607 cdr_ctrl = nes_read_indexed(nesdev, in nes_process_mac_intr()
2610 nes_write_indexed(nesdev, in nes_process_mac_intr()
2629 if (nesdev->iw_status == 1) { in nes_process_mac_intr()
2630 nesdev->iw_status = 0; in nes_process_mac_intr()
2639 nesdev->link_recheck = 1; in nes_process_mac_intr()
2640 mod_delayed_work(system_wq, &nesdev->work, in nes_process_mac_intr()
2653 struct nes_device *nesdev = container_of(work, struct nes_device, work.work); in nes_recheck_link_status() local
2654 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_recheck_link_status()
2656 u32 mac_index = nesdev->mac_index; in nes_recheck_link_status()
2663 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9003); in nes_recheck_link_status()
2664 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_recheck_link_status()
2666 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021); in nes_recheck_link_status()
2667 nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_recheck_link_status()
2668 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021); in nes_recheck_link_status()
2669 phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_recheck_link_status()
2690 if (nesdev->iw_status == 0) { in nes_recheck_link_status()
2691 nesdev->iw_status = 1; in nes_recheck_link_status()
2712 if (nesdev->iw_status == 1) { in nes_recheck_link_status()
2713 nesdev->iw_status = 0; in nes_recheck_link_status()
2721 if (nesdev->link_recheck++ < NES_LINK_RECHECK_MAX) in nes_recheck_link_status()
2722 schedule_delayed_work(&nesdev->work, NES_LINK_RECHECK_DELAY); in nes_recheck_link_status()
2724 nesdev->link_recheck = 0; in nes_recheck_link_status()
2730 static void nes_nic_napi_ce_handler(struct nes_device *nesdev, struct nes_hw_nic_cq *cq) in nes_nic_napi_ce_handler() argument
2746 void nes_nic_ce_handler(struct nes_device *nesdev, struct nes_hw_nic_cq *cq) in nes_nic_ce_handler() argument
2752 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_nic_ce_handler()
2794 pci_unmap_single(nesdev->pcidev, in nes_nic_ce_handler()
2806 pci_unmap_page(nesdev->pcidev, in nes_nic_ce_handler()
2837 pci_unmap_single(nesdev->pcidev, bus_address, in nes_nic_ce_handler()
2851 nes_write32(nesdev->regs+NES_CQE_ALLOC, in nes_nic_ce_handler()
2854 nesdev->currcq_count += cqe_count; in nes_nic_ce_handler()
2923 nes_write32(nesdev->regs+NES_CQE_ALLOC, in nes_nic_ce_handler()
2926 nesdev->currcq_count += cqe_count; in nes_nic_ce_handler()
2952 nesdev->currcq_count += cqe_count; in nes_nic_ce_handler()
2953 nes_nic_tune_timer(nesdev); in nes_nic_ce_handler()
2964 static void nes_cqp_ce_handler(struct nes_device *nesdev, struct nes_hw_cq *cq) in nes_cqp_ce_handler() argument
2989 cqp = &nesdev->cqp; in nes_cqp_ce_handler()
3014 nes_put_cqp_request(nesdev, cqp_request); in nes_cqp_ce_handler()
3017 cqp_request->cqp_callback(nesdev, cqp_request); in nes_cqp_ce_handler()
3018 nes_free_cqp_request(nesdev, cqp_request); in nes_cqp_ce_handler()
3021 wake_up(&nesdev->cqp.waitq); in nes_cqp_ce_handler()
3025 nes_write32(nesdev->regs + NES_CQE_ALLOC, cq->cq_number | (1 << 16)); in nes_cqp_ce_handler()
3039 spin_lock_irqsave(&nesdev->cqp.lock, flags); in nes_cqp_ce_handler()
3040 while ((!list_empty(&nesdev->cqp_pending_reqs)) && in nes_cqp_ce_handler()
3041 ((((nesdev->cqp.sq_tail+nesdev->cqp.sq_size)-nesdev->cqp.sq_head) & in nes_cqp_ce_handler()
3042 (nesdev->cqp.sq_size - 1)) != 1)) { in nes_cqp_ce_handler()
3043 cqp_request = list_entry(nesdev->cqp_pending_reqs.next, in nes_cqp_ce_handler()
3046 head = nesdev->cqp.sq_head++; in nes_cqp_ce_handler()
3047 nesdev->cqp.sq_head &= nesdev->cqp.sq_size-1; in nes_cqp_ce_handler()
3048 cqp_wqe = &nesdev->cqp.sq_vbase[head]; in nes_cqp_ce_handler()
3065 nes_write32(nesdev->regs+NES_WQE_ALLOC, 0x01800000 | nesdev->cqp.qp_id); in nes_cqp_ce_handler()
3067 spin_unlock_irqrestore(&nesdev->cqp.lock, flags); in nes_cqp_ce_handler()
3070 nes_write32(nesdev->regs+NES_CQE_ALLOC, NES_CQE_ALLOC_NOTIFY_NEXT | in nes_cqp_ce_handler()
3072 nes_read32(nesdev->regs+NES_CQE_ALLOC); in nes_cqp_ce_handler()
3316 static void nes_terminate_connection(struct nes_device *nesdev, struct nes_qp *nesqp, in nes_terminate_connection() argument
3328 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_terminate_connection()
3358 if (!nesdev->iw_status) { in nes_terminate_connection()
3360 nes_hw_modify_qp(nesdev, nesqp, NES_CQP_QP_IWARP_STATE_ERROR, 0, 0); in nes_terminate_connection()
3365 nes_hw_modify_qp(nesdev, nesqp, mod_qp_flags, termlen, 0); in nes_terminate_connection()
3369 static void nes_terminate_send_fin(struct nes_device *nesdev, in nes_terminate_send_fin() argument
3390 nes_hw_modify_qp(nesdev, nesqp, NES_CQP_QP_IWARP_STATE_TERMINATE | in nes_terminate_send_fin()
3400 struct nes_device *nesdev = nesvnic->nesdev; in nes_terminate_done() local
3420 nes_hw_modify_qp(nesdev, nesqp, next_iwarp_state, 0, 0); in nes_terminate_done()
3425 static void nes_terminate_received(struct nes_device *nesdev, in nes_terminate_received() argument
3460 nes_terminate_connection(nesdev, nesqp, aeqe, IB_EVENT_QP_FATAL); in nes_terminate_received()
3468 nes_terminate_send_fin(nesdev, nesqp, aeqe); in nes_terminate_received()
3488 static void nes_process_iwarp_aeqe(struct nes_device *nesdev, in nes_process_iwarp_aeqe() argument
3497 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_process_iwarp_aeqe()
3551 nes_hw_modify_qp(nesdev, nesqp, next_iwarp_state, 0, 0); in nes_process_iwarp_aeqe()
3582 nes_hw_modify_qp(nesdev, nesqp, next_iwarp_state, 0, 0); in nes_process_iwarp_aeqe()
3598 nes_terminate_send_fin(nesdev, nesqp, aeqe); in nes_process_iwarp_aeqe()
3602 nes_terminate_received(nesdev, nesqp, aeqe); in nes_process_iwarp_aeqe()
3617 nes_terminate_connection(nesdev, nesqp, aeqe, IB_EVENT_QP_ACCESS_ERR); in nes_process_iwarp_aeqe()
3669 nes_terminate_connection(nesdev, nesqp, aeqe, IB_EVENT_QP_FATAL); in nes_process_iwarp_aeqe()
3705 void nes_iwarp_ce_handler(struct nes_device *nesdev, struct nes_hw_cq *hw_cq) in nes_iwarp_ce_handler() argument
3711 nes_write32(nesdev->regs+NES_CQ_ACK, nescq->hw_cq.cq_number); in nes_iwarp_ce_handler()
3726 struct nes_device *nesdev = nesvnic->nesdev; in nes_manage_apbvt() local
3733 cqp_request = nes_get_cqp_request(nesdev); in nes_manage_apbvt()
3745 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_manage_apbvt()
3754 nes_post_cqp_request(nesdev, cqp_request); in nes_manage_apbvt()
3763 nes_put_cqp_request(nesdev, cqp_request); in nes_manage_apbvt()
3782 struct nes_device *nesdev; in nes_manage_arp_cache() local
3786 nesdev = nesvnic->nesdev; in nes_manage_arp_cache()
3787 arp_index = nes_arp_table(nesdev, ip_addr, mac_addr, action); in nes_manage_arp_cache()
3793 cqp_request = nes_get_cqp_request(nesdev); in nes_manage_arp_cache()
3800 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_manage_arp_cache()
3805 (u32)PCI_FUNC(nesdev->pcidev->devfn) << NES_CQP_ARP_AEQ_INDEX_SHIFT); in nes_manage_arp_cache()
3821 nesdev->cqp.sq_head, nesdev->cqp.sq_tail); in nes_manage_arp_cache()
3824 nes_post_cqp_request(nesdev, cqp_request); in nes_manage_arp_cache()
3831 void flush_wqes(struct nes_device *nesdev, struct nes_qp *nesqp, in flush_wqes() argument
3840 cqp_request = nes_get_cqp_request(nesdev); in flush_wqes()
3852 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in flush_wqes()
3876 nes_post_cqp_request(nesdev, cqp_request); in flush_wqes()
3885 nes_put_cqp_request(nesdev, cqp_request); in flush_wqes()