Lines Matching refs:nesdev

66 static void nes_cqp_ce_handler(struct nes_device *nesdev, struct nes_hw_cq *cq);
67 static void nes_init_csr_ne020(struct nes_device *nesdev, u8 hw_rev, u8 port_count);
68 static int nes_init_serdes(struct nes_device *nesdev, u8 hw_rev, u8 port_count,
70 static void nes_nic_napi_ce_handler(struct nes_device *nesdev, struct nes_hw_nic_cq *cq);
71 static void nes_process_aeq(struct nes_device *nesdev, struct nes_hw_aeq *aeq);
72 static void nes_process_ceq(struct nes_device *nesdev, struct nes_hw_ceq *ceq);
73 static void nes_process_iwarp_aeqe(struct nes_device *nesdev,
75 static void process_critical_error(struct nes_device *nesdev);
76 static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number);
77 static unsigned int nes_reset_adapter_ne020(struct nes_device *nesdev, u8 *OneG_Mode);
124 void nes_nic_init_timer_defaults(struct nes_device *nesdev, u8 jumbomode) in nes_nic_init_timer_defaults() argument
127 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_nic_init_timer_defaults()
152 static void nes_nic_init_timer(struct nes_device *nesdev) in nes_nic_init_timer() argument
155 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_nic_init_timer()
161 nesdev->deepcq_count = 0; in nes_nic_init_timer()
170 nes_write32(nesdev->regs+NES_PERIODIC_CONTROL, in nes_nic_init_timer()
181 static void nes_nic_tune_timer(struct nes_device *nesdev) in nes_nic_tune_timer() argument
184 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_nic_tune_timer()
186 u16 cq_count = nesdev->currcq_count; in nes_nic_tune_timer()
200 nesdev->currcq_count = 0; in nes_nic_tune_timer()
207 nesdev->deepcq_count += cq_count; in nes_nic_tune_timer()
245 nesdev->currcq_count = 0; in nes_nic_tune_timer()
254 struct nes_adapter *nes_init_adapter(struct nes_device *nesdev, u8 hw_rev) { in nes_init_adapter() argument
279 nesdev->pcidev->devfn, in nes_init_adapter()
282 PCI_SLOT(nesdev->pcidev->devfn), in nes_init_adapter()
283 nesdev->pcidev->bus->number ); in nes_init_adapter()
284 if ((PCI_SLOT(nesadapter->devfn) == PCI_SLOT(nesdev->pcidev->devfn)) && in nes_init_adapter()
285 (nesadapter->bus_number == nesdev->pcidev->bus->number)) { in nes_init_adapter()
292 num_pds = pci_resource_len(nesdev->pcidev, BAR_1) >> PAGE_SHIFT; in nes_init_adapter()
300 nes_read_indexed(nesdev, NES_IDX_QP_CONTROL + PCI_FUNC(nesdev->pcidev->devfn) * 8), in nes_init_adapter()
301 nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS), in nes_init_adapter()
302 nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS + 4), in nes_init_adapter()
303 nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS + 8)); in nes_init_adapter()
308 if ((port_count = nes_reset_adapter_ne020(nesdev, &OneG_Mode)) == 0) in nes_init_adapter()
311 max_qp = nes_read_indexed(nesdev, NES_IDX_QP_CTX_SIZE); in nes_init_adapter()
314 u32temp = nes_read_indexed(nesdev, NES_IDX_QUAD_HASH_TABLE_SIZE); in nes_init_adapter()
325 u32temp = nes_read_indexed(nesdev, NES_IDX_IRRQ_COUNT); in nes_init_adapter()
339 u32temp = nes_read_indexed(nesdev, NES_IDX_MRT_SIZE); in nes_init_adapter()
342 u32temp = nes_read_indexed(nesdev, NES_IDX_PBL_REGION_SIZE); in nes_init_adapter()
345 max_cq = nes_read_indexed(nesdev, NES_IDX_CQ_CTX_SIZE); in nes_init_adapter()
347 u32temp = nes_read_indexed(nesdev, NES_IDX_ARP_CACHE_SIZE); in nes_init_adapter()
368 if (nes_read_eeprom_values(nesdev, nesadapter)) { in nes_init_adapter()
377 pci_bus_read_config_word(nesdev->pcidev->bus, nesdev->pcidev->devfn, in nes_init_adapter()
381 if (nes_init_serdes(nesdev, hw_rev, port_count, nesadapter, in nes_init_adapter()
386 nes_init_csr_ne020(nesdev, hw_rev, port_count); in nes_init_adapter()
392 nesadapter->devfn = nesdev->pcidev->devfn; in nes_init_adapter()
393 nesadapter->bus_number = nesdev->pcidev->bus->number; in nes_init_adapter()
397 nesadapter->doorbell_start = nesdev->doorbell_region; in nes_init_adapter()
428 nes_write32(nesdev->regs+NES_PERIODIC_CONTROL, 0x80000000 | in nes_init_adapter()
431 nes_write32(nesdev->regs+NES_PERIODIC_CONTROL, 0x00000000); in nes_init_adapter()
457 u32temp = nes_read_indexed(nesdev, NES_IDX_QP_MAX_CFG_SIZES); in nes_init_adapter()
496 if (nes_read_eeprom_values(nesdev, nesadapter)) { in nes_init_adapter()
502 u32temp = nes_read_indexed(nesdev, NES_IDX_TCP_TIMER_CONFIG); in nes_init_adapter()
503 nes_write_indexed(nesdev, NES_IDX_TCP_TIMER_CONFIG, in nes_init_adapter()
510 nes_write_indexed(nesdev, NES_IDX_TX_POOL_SIZE, 0x00000002); in nes_init_adapter()
512 nes_write_indexed(nesdev, NES_IDX_TX_POOL_SIZE, 0x00000003); in nes_init_adapter()
522 nes_write_indexed(nesdev, NES_IDX_TX_POOL_SIZE, 0x00000003); in nes_init_adapter()
525 nes_write_indexed(nesdev, NES_IDX_NIC_LOGPORT_TO_PHYPORT, in nes_init_adapter()
528 nes_read_indexed(nesdev, NES_IDX_NIC_LOGPORT_TO_PHYPORT)); in nes_init_adapter()
549 pcs_control_status0 = nes_read_indexed(nesdev, in nes_init_adapter()
551 pcs_control_status1 = nes_read_indexed(nesdev, in nes_init_adapter()
555 pcs_control_status0 = nes_read_indexed(nesdev, in nes_init_adapter()
557 pcs_control_status1 = nes_read_indexed(nesdev, in nes_init_adapter()
566 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F0C8); in nes_init_adapter()
568 reset_value = nes_read32(nesdev->regs+NES_SOFTWARE_RESET); in nes_init_adapter()
570 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, reset_value); in nes_init_adapter()
572 while (((nes_read32(nesdev->regs+NES_SOFTWARE_RESET) in nes_init_adapter()
576 pcs_control_status0 = nes_read_indexed(nesdev, in nes_init_adapter()
578 pcs_control_status1 = nes_read_indexed(nesdev, in nes_init_adapter()
582 pcs_control_status0 = nes_read_indexed(nesdev, in nes_init_adapter()
584 pcs_control_status1 = nes_read_indexed(nesdev, in nes_init_adapter()
590 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, in nes_init_adapter()
593 reset_value = nes_read32(nesdev->regs+NES_SOFTWARE_RESET); in nes_init_adapter()
595 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, reset_value); in nes_init_adapter()
597 while (((nes_read32(nesdev->regs+NES_SOFTWARE_RESET) in nes_init_adapter()
612 nesadapter->mh_timer.data = (unsigned long)nesdev; in nes_init_adapter()
615 nes_write32(nesdev->regs+NES_INTF_INT_STAT, 0x0f000000); in nes_init_adapter()
621 nesadapter->lc_timer.data = (unsigned long)nesdev; in nes_init_adapter()
627 pci_bus_read_config_word(nesdev->pcidev->bus, in nes_init_adapter()
628 PCI_DEVFN(PCI_SLOT(nesdev->pcidev->devfn), in nes_init_adapter()
634 func_index, pci_name(nesdev->pcidev)); in nes_init_adapter()
644 static unsigned int nes_reset_adapter_ne020(struct nes_device *nesdev, u8 *OneG_Mode) in nes_reset_adapter_ne020() argument
650 u32temp = nes_read32(nesdev->regs+NES_SOFTWARE_RESET); in nes_reset_adapter_ne020()
675 if (nes_read_indexed(nesdev, NES_IDX_QP_CONTROL+(PCI_FUNC(nesdev->pcidev->devfn)*8))) { in nes_reset_adapter_ne020()
677 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, u32temp | 0xd); in nes_reset_adapter_ne020()
680 while (((nes_read32(nesdev->regs+NES_SOFTWARE_RESET) & 0x00000040) == 0) && i++ < 10000) in nes_reset_adapter_ne020()
688 while ((nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS) != 0x80) && i++ < 10000) in nes_reset_adapter_ne020()
692 nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS)); in nes_reset_adapter_ne020()
711 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, u32temp | 0xd); in nes_reset_adapter_ne020()
714 while (((nes_read32(nesdev->regs+NES_SOFTWARE_RESET) & 0x00000040) == 0) && i++ < 10000) in nes_reset_adapter_ne020()
723 while (((u32temp = (nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS0) in nes_reset_adapter_ne020()
734 while (((u32temp = (nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS1) in nes_reset_adapter_ne020()
750 static int nes_init_serdes(struct nes_device *nesdev, u8 hw_rev, u8 port_count, in nes_init_serdes() argument
762 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000FFFAA); in nes_init_serdes()
764 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF); in nes_init_serdes()
767 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF); in nes_init_serdes()
768 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP0, 0x00000000); in nes_init_serdes()
771 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF); in nes_init_serdes()
772 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0); in nes_init_serdes()
774 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, sds); in nes_init_serdes()
777 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF); in nes_init_serdes()
782 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE0, 0x11110000); in nes_init_serdes()
789 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000000FF); in nes_init_serdes()
794 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP0, 0x00000000); in nes_init_serdes()
795 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP1, 0x00000000); in nes_init_serdes()
799 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000FFFAA); in nes_init_serdes()
802 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP1, 0x00000000); in nes_init_serdes()
805 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1); in nes_init_serdes()
807 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds); in nes_init_serdes()
810 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE1, 0x11110000); in nes_init_serdes()
811 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1); in nes_init_serdes()
813 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds); in nes_init_serdes()
817 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, 0x00000008); in nes_init_serdes()
819 while (((u32temp = (nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS0) in nes_init_serdes()
826 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP0, 0x000bdef7); in nes_init_serdes()
827 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_DRIVE0, 0x9ce73000); in nes_init_serdes()
828 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_MODE0, 0x0ff00000); in nes_init_serdes()
829 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_SIGDET0, 0x00000000); in nes_init_serdes()
830 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_BYPASS0, 0x00000000); in nes_init_serdes()
831 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_LOOPBACK_CONTROL0, 0x00000000); in nes_init_serdes()
833 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_EQ_CONTROL0, 0xf0182222); in nes_init_serdes()
835 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_EQ_CONTROL0, 0xf0042222); in nes_init_serdes()
837 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000ff); in nes_init_serdes()
840 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x00000048); in nes_init_serdes()
842 while (((u32temp = (nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS1) in nes_init_serdes()
849 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP1, 0x000bdef7); in nes_init_serdes()
850 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_DRIVE1, 0x9ce73000); in nes_init_serdes()
851 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_MODE1, 0x0ff00000); in nes_init_serdes()
852 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_SIGDET1, 0x00000000); in nes_init_serdes()
853 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_BYPASS1, 0x00000000); in nes_init_serdes()
854 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_LOOPBACK_CONTROL1, 0x00000000); in nes_init_serdes()
855 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_RX_EQ_CONTROL1, 0xf0002222); in nes_init_serdes()
856 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000000ff); in nes_init_serdes()
867 static void nes_init_csr_ne020(struct nes_device *nesdev, u8 hw_rev, u8 port_count) in nes_init_csr_ne020() argument
873 nes_write_indexed(nesdev, 0x000001E4, 0x00000007); in nes_init_csr_ne020()
875 nes_write_indexed(nesdev, 0x000001E8, 0x00020874); in nes_init_csr_ne020()
876 nes_write_indexed(nesdev, 0x000001D8, 0x00048002); in nes_init_csr_ne020()
878 nes_write_indexed(nesdev, 0x000001FC, 0x00050005); in nes_init_csr_ne020()
879 nes_write_indexed(nesdev, 0x00000600, 0x55555555); in nes_init_csr_ne020()
880 nes_write_indexed(nesdev, 0x00000604, 0x55555555); in nes_init_csr_ne020()
883 nes_write_indexed(nesdev, 0x00002000, 0x00000001); in nes_init_csr_ne020()
884 nes_write_indexed(nesdev, 0x00002004, 0x00000001); in nes_init_csr_ne020()
885 nes_write_indexed(nesdev, 0x00002008, 0x0000FFFF); in nes_init_csr_ne020()
886 nes_write_indexed(nesdev, 0x0000200C, 0x00000001); in nes_init_csr_ne020()
887 nes_write_indexed(nesdev, 0x00002010, 0x000003c1); in nes_init_csr_ne020()
888 nes_write_indexed(nesdev, 0x0000201C, 0x75345678); in nes_init_csr_ne020()
890 nes_write_indexed(nesdev, 0x00002200, 0x00000001); in nes_init_csr_ne020()
891 nes_write_indexed(nesdev, 0x00002204, 0x00000001); in nes_init_csr_ne020()
892 nes_write_indexed(nesdev, 0x00002208, 0x0000FFFF); in nes_init_csr_ne020()
893 nes_write_indexed(nesdev, 0x0000220C, 0x00000001); in nes_init_csr_ne020()
894 nes_write_indexed(nesdev, 0x00002210, 0x000003c1); in nes_init_csr_ne020()
895 nes_write_indexed(nesdev, 0x0000221C, 0x75345678); in nes_init_csr_ne020()
896 nes_write_indexed(nesdev, 0x00000908, 0x20000001); in nes_init_csr_ne020()
899 nes_write_indexed(nesdev, 0x00002400, 0x00000001); in nes_init_csr_ne020()
900 nes_write_indexed(nesdev, 0x00002404, 0x00000001); in nes_init_csr_ne020()
901 nes_write_indexed(nesdev, 0x00002408, 0x0000FFFF); in nes_init_csr_ne020()
902 nes_write_indexed(nesdev, 0x0000240C, 0x00000001); in nes_init_csr_ne020()
903 nes_write_indexed(nesdev, 0x00002410, 0x000003c1); in nes_init_csr_ne020()
904 nes_write_indexed(nesdev, 0x0000241C, 0x75345678); in nes_init_csr_ne020()
905 nes_write_indexed(nesdev, 0x00000910, 0x20000001); in nes_init_csr_ne020()
907 nes_write_indexed(nesdev, 0x00002600, 0x00000001); in nes_init_csr_ne020()
908 nes_write_indexed(nesdev, 0x00002604, 0x00000001); in nes_init_csr_ne020()
909 nes_write_indexed(nesdev, 0x00002608, 0x0000FFFF); in nes_init_csr_ne020()
910 nes_write_indexed(nesdev, 0x0000260C, 0x00000001); in nes_init_csr_ne020()
911 nes_write_indexed(nesdev, 0x00002610, 0x000003c1); in nes_init_csr_ne020()
912 nes_write_indexed(nesdev, 0x0000261C, 0x75345678); in nes_init_csr_ne020()
913 nes_write_indexed(nesdev, 0x00000918, 0x20000001); in nes_init_csr_ne020()
916 nes_write_indexed(nesdev, 0x00005000, 0x00018000); in nes_init_csr_ne020()
918 nes_write_indexed(nesdev, NES_IDX_WQM_CONFIG1, (wqm_quanta << 1) | in nes_init_csr_ne020()
920 nes_write_indexed(nesdev, 0x00005008, 0x1F1F1F1F); in nes_init_csr_ne020()
921 nes_write_indexed(nesdev, 0x00005010, 0x1F1F1F1F); in nes_init_csr_ne020()
922 nes_write_indexed(nesdev, 0x00005018, 0x1F1F1F1F); in nes_init_csr_ne020()
923 nes_write_indexed(nesdev, 0x00005020, 0x1F1F1F1F); in nes_init_csr_ne020()
924 nes_write_indexed(nesdev, 0x00006090, 0xFFFFFFFF); in nes_init_csr_ne020()
927 nes_write_indexed(nesdev, 0x00000900, 0x20000001); in nes_init_csr_ne020()
928 nes_write_indexed(nesdev, 0x000060C0, 0x0000028e); in nes_init_csr_ne020()
929 nes_write_indexed(nesdev, 0x000060C8, 0x00000020); in nes_init_csr_ne020()
931 nes_write_indexed(nesdev, 0x000001EC, 0x7b2625a0); in nes_init_csr_ne020()
935 u32temp = nes_read_indexed(nesdev, 0x000008e8); in nes_init_csr_ne020()
937 nes_write_indexed(nesdev, 0x000008e8, u32temp); in nes_init_csr_ne020()
938 u32temp = nes_read_indexed(nesdev, 0x000021f8); in nes_init_csr_ne020()
941 nes_write_indexed(nesdev, 0x000021f8, u32temp); in nes_init_csr_ne020()
943 u32temp = nes_read_indexed(nesdev, 0x000023f8); in nes_init_csr_ne020()
946 nes_write_indexed(nesdev, 0x000023f8, u32temp); in nes_init_csr_ne020()
980 int nes_init_cqp(struct nes_device *nesdev) in nes_init_cqp() argument
982 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_init_cqp()
998 nesdev->cqp_mem_size = 512 + in nes_init_cqp()
1006 nesdev->cqp_vbase = pci_zalloc_consistent(nesdev->pcidev, in nes_init_cqp()
1007 nesdev->cqp_mem_size, in nes_init_cqp()
1008 &nesdev->cqp_pbase); in nes_init_cqp()
1009 if (!nesdev->cqp_vbase) { in nes_init_cqp()
1015 nesdev->nes_cqp_requests = kzalloc(sizeof(struct nes_cqp_request) * in nes_init_cqp()
1017 if (nesdev->nes_cqp_requests == NULL) { in nes_init_cqp()
1019 pci_free_consistent(nesdev->pcidev, nesdev->cqp_mem_size, nesdev->cqp.sq_vbase, in nes_init_cqp()
1020 nesdev->cqp.sq_pbase); in nes_init_cqp()
1025 nesdev->cqp_vbase, (unsigned long)nesdev->cqp_pbase, nesdev->cqp_mem_size); in nes_init_cqp()
1027 spin_lock_init(&nesdev->cqp.lock); in nes_init_cqp()
1028 init_waitqueue_head(&nesdev->cqp.waitq); in nes_init_cqp()
1031 vmem = (void *)(((unsigned long)nesdev->cqp_vbase + (512 - 1)) & in nes_init_cqp()
1033 pmem = (dma_addr_t)(((unsigned long long)nesdev->cqp_pbase + (512 - 1)) & in nes_init_cqp()
1036 nesdev->cqp.sq_vbase = vmem; in nes_init_cqp()
1037 nesdev->cqp.sq_pbase = pmem; in nes_init_cqp()
1038 nesdev->cqp.sq_size = NES_CQP_SQ_SIZE; in nes_init_cqp()
1039 nesdev->cqp.sq_head = 0; in nes_init_cqp()
1040 nesdev->cqp.sq_tail = 0; in nes_init_cqp()
1041 nesdev->cqp.qp_id = PCI_FUNC(nesdev->pcidev->devfn); in nes_init_cqp()
1043 vmem += (sizeof(struct nes_hw_cqp_wqe) * nesdev->cqp.sq_size); in nes_init_cqp()
1044 pmem += (sizeof(struct nes_hw_cqp_wqe) * nesdev->cqp.sq_size); in nes_init_cqp()
1046 nesdev->ccq.cq_vbase = vmem; in nes_init_cqp()
1047 nesdev->ccq.cq_pbase = pmem; in nes_init_cqp()
1048 nesdev->ccq.cq_size = NES_CCQ_SIZE; in nes_init_cqp()
1049 nesdev->ccq.cq_head = 0; in nes_init_cqp()
1050 nesdev->ccq.ce_handler = nes_cqp_ce_handler; in nes_init_cqp()
1051 nesdev->ccq.cq_number = PCI_FUNC(nesdev->pcidev->devfn); in nes_init_cqp()
1053 vmem += (sizeof(struct nes_hw_cqe) * nesdev->ccq.cq_size); in nes_init_cqp()
1054 pmem += (sizeof(struct nes_hw_cqe) * nesdev->ccq.cq_size); in nes_init_cqp()
1056 nesdev->ceq_index = PCI_FUNC(nesdev->pcidev->devfn); in nes_init_cqp()
1057 ceq = &nesadapter->ceq[nesdev->ceq_index]; in nes_init_cqp()
1066 nesdev->nic_ceq_index = PCI_FUNC(nesdev->pcidev->devfn) + 8; in nes_init_cqp()
1067 nic_ceq = &nesadapter->ceq[nesdev->nic_ceq_index]; in nes_init_cqp()
1076 aeq = &nesadapter->aeq[PCI_FUNC(nesdev->pcidev->devfn)]; in nes_init_cqp()
1088 cpu_to_le32((PCI_FUNC(nesdev->pcidev->devfn) << 12) + (2 << 10)); in nes_init_cqp()
1090 cqp_qp_context->context_words[2] = cpu_to_le32((u32)nesdev->cqp.sq_pbase); in nes_init_cqp()
1091 cqp_qp_context->context_words[3] = cpu_to_le32(((u64)nesdev->cqp.sq_pbase) >> 32); in nes_init_cqp()
1096 nes_write_indexed(nesdev, in nes_init_cqp()
1097 NES_IDX_CREATE_CQP_HIGH + (PCI_FUNC(nesdev->pcidev->devfn) * 8), in nes_init_cqp()
1100 nes_write_indexed(nesdev, in nes_init_cqp()
1101 NES_IDX_CREATE_CQP_HIGH + (PCI_FUNC(nesdev->pcidev->devfn) * 8), 0); in nes_init_cqp()
1103 nes_write_indexed(nesdev, in nes_init_cqp()
1104 NES_IDX_CREATE_CQP_LOW + (PCI_FUNC(nesdev->pcidev->devfn) * 8), in nes_init_cqp()
1107 INIT_LIST_HEAD(&nesdev->cqp_avail_reqs); in nes_init_cqp()
1108 INIT_LIST_HEAD(&nesdev->cqp_pending_reqs); in nes_init_cqp()
1111 init_waitqueue_head(&nesdev->nes_cqp_requests[count].waitq); in nes_init_cqp()
1112 list_add_tail(&nesdev->nes_cqp_requests[count].list, &nesdev->cqp_avail_reqs); in nes_init_cqp()
1116 cqp_head = nesdev->cqp.sq_head++; in nes_init_cqp()
1117 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_cqp()
1118 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_cqp()
1121 NES_CQP_CQ_CHK_OVERFLOW | ((u32)nesdev->ccq.cq_size << 16))); in nes_init_cqp()
1123 (nesdev->ccq.cq_number | in nes_init_cqp()
1124 ((u32)nesdev->ceq_index << 16))); in nes_init_cqp()
1125 u64temp = (u64)nesdev->ccq.cq_pbase; in nes_init_cqp()
1128 u64temp = (unsigned long)&nesdev->ccq; in nes_init_cqp()
1136 cqp_head = nesdev->cqp.sq_head++; in nes_init_cqp()
1137 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_cqp()
1138 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_cqp()
1140 (NES_CQP_CREATE_CEQ + ((u32)nesdev->ceq_index << 8))); in nes_init_cqp()
1146 cqp_head = nesdev->cqp.sq_head++; in nes_init_cqp()
1147 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_cqp()
1148 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_cqp()
1150 (NES_CQP_CREATE_AEQ + ((u32)PCI_FUNC(nesdev->pcidev->devfn) << 8))); in nes_init_cqp()
1156 cqp_head = nesdev->cqp.sq_head++; in nes_init_cqp()
1157 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_cqp()
1158 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_cqp()
1160 (NES_CQP_CREATE_CEQ + ((u32)nesdev->nic_ceq_index << 8))); in nes_init_cqp()
1170 pci_free_consistent(nesdev->pcidev, nesdev->cqp_mem_size, in nes_init_cqp()
1171 nesdev->cqp_vbase, nesdev->cqp_pbase); in nes_init_cqp()
1175 } while (!(nes_read_indexed(nesdev, in nes_init_cqp()
1176 NES_IDX_QP_CONTROL + (PCI_FUNC(nesdev->pcidev->devfn) * 8)) & (1 << 8))); in nes_init_cqp()
1178 nes_debug(NES_DBG_INIT, "CQP Status = 0x%08X\n", nes_read_indexed(nesdev, in nes_init_cqp()
1179 NES_IDX_QP_CONTROL+(PCI_FUNC(nesdev->pcidev->devfn)*8))); in nes_init_cqp()
1182 nes_write32(nesdev->regs+NES_WQE_ALLOC, u32temp | nesdev->cqp.qp_id); in nes_init_cqp()
1189 pci_free_consistent(nesdev->pcidev, nesdev->cqp_mem_size, in nes_init_cqp()
1190 nesdev->cqp_vbase, nesdev->cqp_pbase); in nes_init_cqp()
1194 } while (((nes_read_indexed(nesdev, in nes_init_cqp()
1195 NES_IDX_QP_CONTROL+(PCI_FUNC(nesdev->pcidev->devfn)*8)) & (15<<8)) != (15<<8))); in nes_init_cqp()
1198 nes_debug(NES_DBG_INIT, "QP Status = 0x%08X\n", nes_read_indexed(nesdev, in nes_init_cqp()
1199 NES_IDX_QP_CONTROL+(PCI_FUNC(nesdev->pcidev->devfn)*8))); in nes_init_cqp()
1201 nesdev->cqp.sq_tail++; in nes_init_cqp()
1210 int nes_destroy_cqp(struct nes_device *nesdev) in nes_destroy_cqp() argument
1221 } while (!(nesdev->cqp.sq_head == nesdev->cqp.sq_tail)); in nes_destroy_cqp()
1224 nes_write32(nesdev->regs+NES_CQE_ALLOC, NES_CQE_ALLOC_RESET | in nes_destroy_cqp()
1225 nesdev->ccq.cq_number); in nes_destroy_cqp()
1228 nes_write32(nesdev->regs+NES_INT_MASK, 0x7fffffff); in nes_destroy_cqp()
1230 spin_lock_irqsave(&nesdev->cqp.lock, flags); in nes_destroy_cqp()
1233 cqp_head = nesdev->cqp.sq_head++; in nes_destroy_cqp()
1234 nesdev->cqp.sq_head &= nesdev->cqp.sq_size-1; in nes_destroy_cqp()
1235 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_cqp()
1237 ((u32)PCI_FUNC(nesdev->pcidev->devfn) << 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 ((u32)nesdev->nic_ceq_index << 8)); in nes_destroy_cqp()
1248 cqp_head = nesdev->cqp.sq_head++; in nes_destroy_cqp()
1249 nesdev->cqp.sq_head &= nesdev->cqp.sq_size-1; in nes_destroy_cqp()
1250 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_cqp()
1252 (nesdev->ceq_index << 8)); in nes_destroy_cqp()
1255 cqp_head = nesdev->cqp.sq_head++; in nes_destroy_cqp()
1256 nesdev->cqp.sq_head &= nesdev->cqp.sq_size-1; in nes_destroy_cqp()
1257 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_cqp()
1259 cqp_wqe->wqe_words[NES_CQP_WQE_ID_IDX] = cpu_to_le32(nesdev->ccq.cq_number | in nes_destroy_cqp()
1260 ((u32)nesdev->ceq_index << 16)); in nes_destroy_cqp()
1263 cqp_head = nesdev->cqp.sq_head++; in nes_destroy_cqp()
1264 nesdev->cqp.sq_head &= nesdev->cqp.sq_size-1; in nes_destroy_cqp()
1265 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_cqp()
1268 cqp_wqe->wqe_words[NES_CQP_WQE_ID_IDX] = cpu_to_le32(nesdev->cqp.qp_id); in nes_destroy_cqp()
1272 nes_write32(nesdev->regs+NES_WQE_ALLOC, 0x05800000 | nesdev->cqp.qp_id); in nes_destroy_cqp()
1274 spin_unlock_irqrestore(&nesdev->cqp.lock, flags); in nes_destroy_cqp()
1281 PCI_FUNC(nesdev->pcidev->devfn)); in nes_destroy_cqp()
1285 } while (((nes_read_indexed(nesdev, in nes_destroy_cqp()
1286 NES_IDX_QP_CONTROL + (PCI_FUNC(nesdev->pcidev->devfn)*8)) & (15 << 8)) != 0)); in nes_destroy_cqp()
1290 PCI_FUNC(nesdev->pcidev->devfn), in nes_destroy_cqp()
1291 nes_read_indexed(nesdev, in nes_destroy_cqp()
1292 NES_IDX_QP_CONTROL+(PCI_FUNC(nesdev->pcidev->devfn)*8))); in nes_destroy_cqp()
1294 kfree(nesdev->nes_cqp_requests); in nes_destroy_cqp()
1297 pci_free_consistent(nesdev->pcidev, nesdev->cqp_mem_size, nesdev->cqp.sq_vbase, in nes_destroy_cqp()
1298 nesdev->cqp.sq_pbase); in nes_destroy_cqp()
1307 static int nes_init_1g_phy(struct nes_device *nesdev, u8 phy_type, u8 phy_index) in nes_init_1g_phy() argument
1313 nes_read_1G_phy_reg(nesdev, 1, phy_index, &phy_data); in nes_init_1g_phy()
1314 nes_write_1G_phy_reg(nesdev, 23, phy_index, 0xb000); in nes_init_1g_phy()
1317 nes_write_1G_phy_reg(nesdev, 0, phy_index, 0x8000); in nes_init_1g_phy()
1321 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data); in nes_init_1g_phy()
1331 nes_write_1G_phy_reg(nesdev, 0, phy_index, phy_data); in nes_init_1g_phy()
1332 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data); in nes_init_1g_phy()
1333 nes_read_1G_phy_reg(nesdev, 0x17, phy_index, &phy_data); in nes_init_1g_phy()
1334 nes_read_1G_phy_reg(nesdev, 0x1e, phy_index, &phy_data); in nes_init_1g_phy()
1337 nes_read_1G_phy_reg(nesdev, 0x19, phy_index, &phy_data); in nes_init_1g_phy()
1338 nes_write_1G_phy_reg(nesdev, 0x19, phy_index, 0xffee); in nes_init_1g_phy()
1339 nes_read_1G_phy_reg(nesdev, 0x19, phy_index, &phy_data); in nes_init_1g_phy()
1342 nes_read_1G_phy_reg(nesdev, 4, phy_index, &phy_data); in nes_init_1g_phy()
1343 nes_write_1G_phy_reg(nesdev, 4, phy_index, (phy_data & ~(0x03E0)) | 0xc00); in nes_init_1g_phy()
1344 nes_read_1G_phy_reg(nesdev, 4, phy_index, &phy_data); in nes_init_1g_phy()
1347 nes_read_1G_phy_reg(nesdev, 9, phy_index, &phy_data); in nes_init_1g_phy()
1348 nes_write_1G_phy_reg(nesdev, 9, phy_index, phy_data & ~(0x0100)); in nes_init_1g_phy()
1349 nes_read_1G_phy_reg(nesdev, 9, phy_index, &phy_data); in nes_init_1g_phy()
1351 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data); in nes_init_1g_phy()
1352 nes_write_1G_phy_reg(nesdev, 0, phy_index, phy_data | 0x0300); in nes_init_1g_phy()
1361 static int nes_init_2025_phy(struct nes_device *nesdev, u8 phy_type, u8 phy_index) in nes_init_2025_phy() argument
1367 u32 mac_index = nesdev->mac_index; in nes_init_2025_phy()
1372 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee); in nes_init_2025_phy()
1373 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1375 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee); in nes_init_2025_phy()
1376 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1379 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7fd); in nes_init_2025_phy()
1380 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1387 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0x0000, 0x8000); in nes_init_2025_phy()
1388 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc300, 0x0000); in nes_init_2025_phy()
1389 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc316, 0x000A); in nes_init_2025_phy()
1390 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc318, 0x0052); in nes_init_2025_phy()
1394 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc316, 0x000A); in nes_init_2025_phy()
1395 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc318, 0x0052); in nes_init_2025_phy()
1396 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x000C); in nes_init_2025_phy()
1397 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0008); in nes_init_2025_phy()
1398 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0027, 0x0001); in nes_init_2025_phy()
1399 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc31a, 0x0098); in nes_init_2025_phy()
1400 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0026, 0x0E00); in nes_init_2025_phy()
1403 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd006, 0x0007); in nes_init_2025_phy()
1404 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd007, 0x000A); in nes_init_2025_phy()
1405 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd008, 0x0009); in nes_init_2025_phy()
1409 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc316, 0x000A); in nes_init_2025_phy()
1410 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc318, 0x0052); in nes_init_2025_phy()
1411 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x0004); in nes_init_2025_phy()
1412 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0038); in nes_init_2025_phy()
1413 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0027, 0x0013); in nes_init_2025_phy()
1414 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc31a, 0x0098); in nes_init_2025_phy()
1415 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0026, 0x0E00); in nes_init_2025_phy()
1418 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd006, 0x0007); in nes_init_2025_phy()
1419 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd007, 0x000A); in nes_init_2025_phy()
1420 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd008, 0x0009); in nes_init_2025_phy()
1424 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc316, 0x000A); in nes_init_2025_phy()
1425 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc318, 0x0052); in nes_init_2025_phy()
1426 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x000C); in nes_init_2025_phy()
1427 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0010); in nes_init_2025_phy()
1428 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0027, 0x0013); in nes_init_2025_phy()
1429 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc31a, 0x0080); in nes_init_2025_phy()
1430 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0026, 0x0E00); in nes_init_2025_phy()
1433 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd006, 0x000B); in nes_init_2025_phy()
1434 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd007, 0x0003); in nes_init_2025_phy()
1435 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd008, 0x0004); in nes_init_2025_phy()
1437 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0022, 0x406D); in nes_init_2025_phy()
1438 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0023, 0x0020); in nes_init_2025_phy()
1442 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0028, 0xA528); in nes_init_2025_phy()
1445 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc300, 0x0002); in nes_init_2025_phy()
1450 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee); in nes_init_2025_phy()
1451 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1458 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee); in nes_init_2025_phy()
1459 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1465 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7fd); in nes_init_2025_phy()
1466 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_init_2025_phy()
1472 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0xe854, 0x00c0); in nes_init_2025_phy()
1473 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0xe854, 0x0040); in nes_init_2025_phy()
1484 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd003, 0x0000); in nes_init_2025_phy()
1485 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00D, 0x00FE); in nes_init_2025_phy()
1486 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00E, 0x0032); in nes_init_2025_phy()
1488 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00F, 0x000C); in nes_init_2025_phy()
1490 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00F, 0x0002); in nes_init_2025_phy()
1491 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc314, 0x0063); in nes_init_2025_phy()
1495 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 + mac_index * 0x200); in nes_init_2025_phy()
1497 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 + mac_index * 0x200, sds); in nes_init_2025_phy()
1499 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 + mac_index * 0x200, sds); in nes_init_2025_phy()
1502 while (((nes_read32(nesdev->regs + NES_SOFTWARE_RESET) & 0x00000040) != 0x00000040) in nes_init_2025_phy()
1513 int nes_init_phy(struct nes_device *nesdev) in nes_init_phy() argument
1515 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_init_phy()
1516 u32 mac_index = nesdev->mac_index; in nes_init_phy()
1523 tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG); in nes_init_phy()
1533 nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config); in nes_init_phy()
1535 spin_lock_irqsave(&nesdev->nesadapter->phy_lock, flags); in nes_init_phy()
1539 ret = nes_init_1g_phy(nesdev, phy_type, phy_index); in nes_init_phy()
1544 ret = nes_init_2025_phy(nesdev, phy_type, phy_index); in nes_init_phy()
1548 spin_unlock_irqrestore(&nesdev->nesadapter->phy_lock, flags); in nes_init_phy()
1564 struct nes_device *nesdev; in nes_replenish_nic_rq() local
1569 nesdev = nesvnic->nesdev; in nes_replenish_nic_rq()
1589 bus_address = pci_map_single(nesdev->pcidev, in nes_replenish_nic_rq()
1609 nes_write32(nesdev->regs+NES_WQE_ALLOC, (rx_wqes_posted << 24) | nesnic->qp_id); in nes_replenish_nic_rq()
1627 nes_write32(nesdev->regs+NES_WQE_ALLOC, (rx_wqes_posted << 24) | nesnic->qp_id); in nes_replenish_nic_rq()
1667 int nes_init_nic_qp(struct nes_device *nesdev, struct net_device *netdev) in nes_init_nic_qp() argument
1694 nesvnic->nic_vbase = pci_zalloc_consistent(nesdev->pcidev, in nes_init_nic_qp()
1759 if (nesdev->nesadapter->netdev_count > 2) in nes_init_nic_qp()
1772 spin_lock_irqsave(&nesdev->cqp.lock, flags); in nes_init_nic_qp()
1773 cqp_head = nesdev->cqp.sq_head; in nes_init_nic_qp()
1775 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_nic_qp()
1776 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_nic_qp()
1782 nesvnic->nic_cq.cq_number | ((u32)nesdev->nic_ceq_index << 16)); in nes_init_nic_qp()
1791 if (++cqp_head >= nesdev->cqp.sq_size) in nes_init_nic_qp()
1793 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_init_nic_qp()
1794 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_init_nic_qp()
1800 ((u32)PCI_FUNC(nesdev->pcidev->devfn) << 12)); in nes_init_nic_qp()
1802 nes_read_indexed(nesdev, NES_IDX_RX_WINDOW_BUFFER_PAGE_TABLE_SIZE), in nes_init_nic_qp()
1803 nes_read_indexed(nesdev, NES_IDX_RX_WINDOW_BUFFER_SIZE)); in nes_init_nic_qp()
1804 if (nes_read_indexed(nesdev, NES_IDX_RX_WINDOW_BUFFER_SIZE) != 0) { in nes_init_nic_qp()
1822 if (++cqp_head >= nesdev->cqp.sq_size) in nes_init_nic_qp()
1824 nesdev->cqp.sq_head = cqp_head; in nes_init_nic_qp()
1829 nes_write32(nesdev->regs+NES_WQE_ALLOC, 0x02800000 | nesdev->cqp.qp_id); in nes_init_nic_qp()
1831 spin_unlock_irqrestore(&nesdev->cqp.lock, flags); in nes_init_nic_qp()
1835 ret = wait_event_timeout(nesdev->cqp.waitq, (nesdev->cqp.sq_tail == cqp_head), in nes_init_nic_qp()
1841 pci_free_consistent(nesdev->pcidev, nesvnic->nic_mem_size, nesvnic->nic_vbase, in nes_init_nic_qp()
1858 pmem = pci_map_single(nesdev->pcidev, skb->data, in nes_init_nic_qp()
1878 nes_write32(nesdev->regs+NES_WQE_ALLOC, (counter << 24) | nesvnic->nic.qp_id); in nes_init_nic_qp()
1884 if (nesdev->nesadapter->et_use_adaptive_rx_coalesce) in nes_init_nic_qp()
1886 nes_nic_init_timer(nesdev); in nes_init_nic_qp()
1889 nes_nic_init_timer_defaults(nesdev, jumbomode); in nes_init_nic_qp()
1891 if ((nesdev->nesadapter->allow_unaligned_fpdus) && in nes_init_nic_qp()
1892 (nes_init_mgt_qp(nesdev, netdev, nesvnic))) { in nes_init_nic_qp()
1917 struct nes_device *nesdev = nesvnic->nesdev; in nes_destroy_nic_qp() local
1929 if (nesdev->nesadapter->allow_unaligned_fpdus) in nes_destroy_nic_qp()
1933 wqm_cfg0 = nes_read_indexed(nesdev, NES_IDX_WQM_CONFIG0); in nes_destroy_nic_qp()
1934 nes_write_indexed(nesdev, NES_IDX_WQM_CONFIG0, wqm_cfg0 & 0xFFFF7FFF); in nes_destroy_nic_qp()
1940 pci_unmap_single(nesdev->pcidev, cb->busaddr, cb->maplen, in nes_destroy_nic_qp()
1965 pci_unmap_single(nesdev->pcidev, in nes_destroy_nic_qp()
1982 pci_unmap_page(nesdev->pcidev, in nes_destroy_nic_qp()
2000 spin_lock_irqsave(&nesdev->cqp.lock, flags); in nes_destroy_nic_qp()
2003 cqp_head = nesdev->cqp.sq_head; in nes_destroy_nic_qp()
2004 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_nic_qp()
2005 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_destroy_nic_qp()
2012 if (++cqp_head >= nesdev->cqp.sq_size) in nes_destroy_nic_qp()
2015 cqp_wqe = &nesdev->cqp.sq_vbase[cqp_head]; in nes_destroy_nic_qp()
2018 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_destroy_nic_qp()
2022 (nesvnic->nic_cq.cq_number | ((u32)nesdev->nic_ceq_index << 16))); in nes_destroy_nic_qp()
2024 if (++cqp_head >= nesdev->cqp.sq_size) in nes_destroy_nic_qp()
2027 nesdev->cqp.sq_head = cqp_head; in nes_destroy_nic_qp()
2031 nes_write32(nesdev->regs+NES_WQE_ALLOC, 0x02800000 | nesdev->cqp.qp_id); in nes_destroy_nic_qp()
2033 spin_unlock_irqrestore(&nesdev->cqp.lock, flags); in nes_destroy_nic_qp()
2036 cqp_head, nesdev->cqp.sq_head, in nes_destroy_nic_qp()
2037 nesdev->cqp.sq_tail, nesdev->cqp.sq_size); in nes_destroy_nic_qp()
2039 ret = wait_event_timeout(nesdev->cqp.waitq, (nesdev->cqp.sq_tail == cqp_head), in nes_destroy_nic_qp()
2044 ret, cqp_head, nesdev->cqp.sq_head, nesdev->cqp.sq_tail); in nes_destroy_nic_qp()
2050 pci_free_consistent(nesdev->pcidev, nesvnic->nic_mem_size, nesvnic->nic_vbase, in nes_destroy_nic_qp()
2054 nes_write_indexed(nesdev, NES_IDX_WQM_CONFIG0, wqm_cfg0); in nes_destroy_nic_qp()
2060 int nes_napi_isr(struct nes_device *nesdev) in nes_napi_isr() argument
2062 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_napi_isr()
2065 if (nesdev->napi_isr_ran) { in nes_napi_isr()
2067 int_stat = nesdev->int_stat; in nes_napi_isr()
2069 int_stat = nes_read32(nesdev->regs + NES_INT_STAT); in nes_napi_isr()
2070 nesdev->int_stat = int_stat; in nes_napi_isr()
2071 nesdev->napi_isr_ran = 1; in nes_napi_isr()
2074 int_stat &= nesdev->int_req; in nes_napi_isr()
2077 nesdev->napi_isr_ran = 0; in nes_napi_isr()
2078 nes_write32(nesdev->regs + NES_INT_STAT, in nes_napi_isr()
2083 nes_process_ceq(nesdev, &nesdev->nesadapter->ceq[nesdev->nic_ceq_index]); in nes_napi_isr()
2088 (nesdev->deepcq_count > nesadapter->et_pkt_rate_low))))) { in nes_napi_isr()
2089 if ((nesdev->int_req & NES_INT_TIMER) == 0) { in nes_napi_isr()
2091 nesdev->int_req |= NES_INT_TIMER; in nes_napi_isr()
2094 nes_write32(nesdev->regs+NES_TIMER_STAT, in nes_napi_isr()
2095 nesdev->timer_int_req | ~(nesdev->nesadapter->timer_int_req)); in nes_napi_isr()
2096 nes_write32(nesdev->regs+NES_INTF_INT_MASK, in nes_napi_isr()
2097 ~(nesdev->intf_int_req | NES_INTF_PERIODIC_TIMER)); in nes_napi_isr()
2102 nes_nic_init_timer(nesdev); in nes_napi_isr()
2105 nes_write32(nesdev->regs+NES_INT_MASK, 0x0000ffff | (~nesdev->int_req)); in nes_napi_isr()
2108 nesdev->int_req &= ~NES_INT_TIMER; in nes_napi_isr()
2109 nes_write32(nesdev->regs+NES_INTF_INT_MASK, ~(nesdev->intf_int_req)); in nes_napi_isr()
2110 nes_write32(nesdev->regs+NES_INT_MASK, ~nesdev->int_req); in nes_napi_isr()
2112 nesdev->deepcq_count = 0; in nes_napi_isr()
2119 static void process_critical_error(struct nes_device *nesdev) in process_critical_error() argument
2125 debug_error = nes_read_indexed(nesdev, NES_IDX_DEBUG_ERROR_CONTROL_STATUS); in process_critical_error()
2128 nes_write_indexed(nesdev, NES_IDX_DEBUG_ERROR_CONTROL_STATUS, in process_critical_error()
2131 nes_write_indexed(nesdev, NES_IDX_DEBUG_ERROR_MASKS1, 1 << 0x17); in process_critical_error()
2133 if (++nesdev->nesadapter->crit_error_count[error_module-1] >= in process_critical_error()
2137 nes_idx_debug_error_masks0 = nes_read_indexed(nesdev, in process_critical_error()
2139 nes_write_indexed(nesdev, NES_IDX_DEBUG_ERROR_MASKS0, in process_critical_error()
2148 struct nes_device *nesdev = (struct nes_device *)param; in nes_dpc() local
2149 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_dpc()
2166 if (nesdev->napi_isr_ran) { in nes_dpc()
2167 nesdev->napi_isr_ran = 0; in nes_dpc()
2168 int_stat = nesdev->int_stat; in nes_dpc()
2170 int_stat = nes_read32(nesdev->regs+NES_INT_STAT); in nes_dpc()
2172 int_stat &= nesdev->int_req & ~NES_INT_INTF; in nes_dpc()
2174 int_stat &= nesdev->int_req; in nes_dpc()
2178 timer_stat = nes_read32(nesdev->regs + NES_TIMER_STAT); in nes_dpc()
2179 if ((timer_stat & nesdev->timer_int_req) == 0) { in nes_dpc()
2191 nes_write32(nesdev->regs+NES_INT_STAT, in nes_dpc()
2199 nes_process_ceq(nesdev, &nesadapter->ceq[counter]); in nes_dpc()
2209 int_status_bit = 1 << (16 + PCI_FUNC(nesdev->pcidev->devfn)); in nes_dpc()
2211 nes_process_aeq(nesdev, &nesadapter->aeq[PCI_FUNC(nesdev->pcidev->devfn)]); in nes_dpc()
2215 int_status_bit = 1 << (24 + nesdev->mac_index); in nes_dpc()
2217 nes_process_mac_intr(nesdev, nesdev->mac_index); in nes_dpc()
2221 if (timer_stat & nesdev->timer_int_req) { in nes_dpc()
2222 nes_write32(nesdev->regs + NES_TIMER_STAT, in nes_dpc()
2223 (timer_stat & nesdev->timer_int_req) | in nes_dpc()
2224 ~(nesdev->nesadapter->timer_int_req)); in nes_dpc()
2231 intf_int_stat = nes_read32(nesdev->regs+NES_INTF_INT_STAT); in nes_dpc()
2232 intf_int_stat &= nesdev->intf_int_req; in nes_dpc()
2234 process_critical_error(nesdev); in nes_dpc()
2244 nes_write32(nesdev->regs+NES_INTF_INT_STAT, intf_int_stat); in nes_dpc()
2258 nesdev->timer_only_int_count++; in nes_dpc()
2259 if (nesdev->timer_only_int_count>=nesadapter->timer_int_limit) { in nes_dpc()
2260 nesdev->timer_only_int_count = 0; in nes_dpc()
2261 nesdev->int_req &= ~NES_INT_TIMER; in nes_dpc()
2262 nes_write32(nesdev->regs + NES_INTF_INT_MASK, ~(nesdev->intf_int_req)); in nes_dpc()
2263 nes_write32(nesdev->regs + NES_INT_MASK, ~nesdev->int_req); in nes_dpc()
2265 nes_write32(nesdev->regs+NES_INT_MASK, 0x0000ffff | (~nesdev->int_req)); in nes_dpc()
2270 nes_nic_init_timer(nesdev); in nes_dpc()
2272 nesdev->timer_only_int_count = 0; in nes_dpc()
2273 nes_write32(nesdev->regs+NES_INT_MASK, 0x0000ffff | (~nesdev->int_req)); in nes_dpc()
2276 nesdev->timer_only_int_count = 0; in nes_dpc()
2277 nesdev->int_req &= ~NES_INT_TIMER; in nes_dpc()
2278 nes_write32(nesdev->regs+NES_INTF_INT_MASK, ~(nesdev->intf_int_req)); in nes_dpc()
2279 nes_write32(nesdev->regs+NES_TIMER_STAT, in nes_dpc()
2280 nesdev->timer_int_req | ~(nesdev->nesadapter->timer_int_req)); in nes_dpc()
2281 nes_write32(nesdev->regs+NES_INT_MASK, ~nesdev->int_req); in nes_dpc()
2287 ((nesdev->deepcq_count > nesadapter->et_pkt_rate_low) && in nes_dpc()
2290 nesdev->timer_only_int_count = 0; in nes_dpc()
2291 nesdev->int_req |= NES_INT_TIMER; in nes_dpc()
2292 nes_write32(nesdev->regs+NES_TIMER_STAT, in nes_dpc()
2293 nesdev->timer_int_req | ~(nesdev->nesadapter->timer_int_req)); in nes_dpc()
2294 nes_write32(nesdev->regs+NES_INTF_INT_MASK, in nes_dpc()
2295 ~(nesdev->intf_int_req | NES_INTF_PERIODIC_TIMER)); in nes_dpc()
2296 nes_write32(nesdev->regs+NES_INT_MASK, 0x0000ffff | (~nesdev->int_req)); in nes_dpc()
2298 nes_write32(nesdev->regs+NES_INT_MASK, ~nesdev->int_req); in nes_dpc()
2301 nesdev->deepcq_count = 0; in nes_dpc()
2308 static void nes_process_ceq(struct nes_device *nesdev, struct nes_hw_ceq *ceq) in nes_process_ceq() argument
2331 cq->ce_handler(nesdev, cq); in nes_process_ceq()
2348 static void nes_process_aeq(struct nes_device *nesdev, struct nes_hw_aeq *aeq) in nes_process_aeq() argument
2373 nes_process_iwarp_aeqe(nesdev, (struct nes_hw_aeqe *)aeqe); in nes_process_aeq()
2386 nes_write32(nesdev->regs + NES_AEQ_ALLOC, 1 << 16); in nes_process_aeq()
2392 static void nes_reset_link(struct nes_device *nesdev, u32 mac_index) in nes_reset_link() argument
2394 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_reset_link()
2404 reset_value = nes_read32(nesdev->regs+NES_SOFTWARE_RESET); in nes_reset_link()
2415 u32temp = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1); in nes_reset_link()
2417 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F088); in nes_reset_link()
2419 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F0C8); in nes_reset_link()
2426 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, reset_value); in nes_reset_link()
2428 while (((nes_read32(nesdev->regs+NES_SOFTWARE_RESET) in nes_reset_link()
2435 pcs_control_status0 = nes_read_indexed(nesdev, NES_IDX_PHY_PCS_CONTROL_STATUS0); in nes_reset_link()
2436 pcs_control_status1 = nes_read_indexed(nesdev, NES_IDX_PHY_PCS_CONTROL_STATUS0 + 0x200); in nes_reset_link()
2446 u32temp = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1); in nes_reset_link()
2448 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F088); in nes_reset_link()
2450 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F0C8); in nes_reset_link()
2452 nes_write32(nesdev->regs+NES_SOFTWARE_RESET, reset_value); in nes_reset_link()
2454 while (((nes_read32(nesdev->regs + NES_SOFTWARE_RESET) in nes_reset_link()
2463 static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number) in nes_process_mac_intr() argument
2467 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_process_mac_intr()
2470 u32 mac_index = nesdev->mac_index; in nes_process_mac_intr()
2486 mac_status = nes_read_indexed(nesdev, NES_IDX_MAC_INT_STATUS + (mac_index * 0x200)); in nes_process_mac_intr()
2488 nes_write_indexed(nesdev, NES_IDX_MAC_INT_STATUS + (mac_index * 0x200), mac_status); in nes_process_mac_intr()
2493 nesdev->link_status_interrupts++; in nes_process_mac_intr()
2495 nes_reset_link(nesdev, mac_index); in nes_process_mac_intr()
2501 nes_read_1G_phy_reg(nesdev, 0x1a, in nes_process_mac_intr()
2509 nes_read_1G_phy_reg(nesdev, 0x11, in nes_process_mac_intr()
2518 nes_read_1G_phy_reg(nesdev, 0x1e, in nes_process_mac_intr()
2523 nes_read_1G_phy_reg(nesdev, 1, in nes_process_mac_intr()
2536 nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS0), in nes_process_mac_intr()
2537 nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_STATUS0+0x200)); in nes_process_mac_intr()
2543 pcs_control_status = nes_read_indexed(nesdev, in nes_process_mac_intr()
2547 pcs_control_status = nes_read_indexed(nesdev, in nes_process_mac_intr()
2552 pcs_control_status = nes_read_indexed(nesdev, in nes_process_mac_intr()
2554 pcs_control_status = nes_read_indexed(nesdev, in nes_process_mac_intr()
2576 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0x0008); in nes_process_mac_intr()
2577 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc001); in nes_process_mac_intr()
2578 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc002); in nes_process_mac_intr()
2579 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc005); in nes_process_mac_intr()
2580 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc006); in nes_process_mac_intr()
2581 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9003); in nes_process_mac_intr()
2582 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9004); in nes_process_mac_intr()
2583 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9005); in nes_process_mac_intr()
2585 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9003); in nes_process_mac_intr()
2586 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_process_mac_intr()
2588 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021); in nes_process_mac_intr()
2589 nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_process_mac_intr()
2590 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021); in nes_process_mac_intr()
2591 phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_process_mac_intr()
2615 cdr_ctrl = nes_read_indexed(nesdev, in nes_process_mac_intr()
2618 nes_write_indexed(nesdev, in nes_process_mac_intr()
2637 if (nesdev->iw_status == 0) { in nes_process_mac_intr()
2638 nesdev->iw_status = 1; in nes_process_mac_intr()
2649 cdr_ctrl = nes_read_indexed(nesdev, in nes_process_mac_intr()
2652 nes_write_indexed(nesdev, in nes_process_mac_intr()
2671 if (nesdev->iw_status == 1) { in nes_process_mac_intr()
2672 nesdev->iw_status = 0; in nes_process_mac_intr()
2681 nesdev->link_recheck = 1; in nes_process_mac_intr()
2682 mod_delayed_work(system_wq, &nesdev->work, in nes_process_mac_intr()
2695 struct nes_device *nesdev = container_of(work, struct nes_device, work.work); in nes_recheck_link_status() local
2696 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_recheck_link_status()
2698 u32 mac_index = nesdev->mac_index; in nes_recheck_link_status()
2705 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9003); in nes_recheck_link_status()
2706 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_recheck_link_status()
2708 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021); in nes_recheck_link_status()
2709 nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_recheck_link_status()
2710 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021); in nes_recheck_link_status()
2711 phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); in nes_recheck_link_status()
2732 if (nesdev->iw_status == 0) { in nes_recheck_link_status()
2733 nesdev->iw_status = 1; in nes_recheck_link_status()
2754 if (nesdev->iw_status == 1) { in nes_recheck_link_status()
2755 nesdev->iw_status = 0; in nes_recheck_link_status()
2763 if (nesdev->link_recheck++ < NES_LINK_RECHECK_MAX) in nes_recheck_link_status()
2764 schedule_delayed_work(&nesdev->work, NES_LINK_RECHECK_DELAY); in nes_recheck_link_status()
2766 nesdev->link_recheck = 0; in nes_recheck_link_status()
2772 static void nes_nic_napi_ce_handler(struct nes_device *nesdev, struct nes_hw_nic_cq *cq) in nes_nic_napi_ce_handler() argument
2788 void nes_nic_ce_handler(struct nes_device *nesdev, struct nes_hw_nic_cq *cq) in nes_nic_ce_handler() argument
2794 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_nic_ce_handler()
2839 pci_unmap_single(nesdev->pcidev, in nes_nic_ce_handler()
2851 pci_unmap_page(nesdev->pcidev, in nes_nic_ce_handler()
2882 pci_unmap_single(nesdev->pcidev, bus_address, in nes_nic_ce_handler()
2896 nes_write32(nesdev->regs+NES_CQE_ALLOC, in nes_nic_ce_handler()
2899 nesdev->currcq_count += cqe_count; in nes_nic_ce_handler()
2971 nes_write32(nesdev->regs+NES_CQE_ALLOC, in nes_nic_ce_handler()
2974 nesdev->currcq_count += cqe_count; in nes_nic_ce_handler()
3002 nesdev->currcq_count += cqe_count; in nes_nic_ce_handler()
3003 nes_nic_tune_timer(nesdev); in nes_nic_ce_handler()
3014 static void nes_cqp_ce_handler(struct nes_device *nesdev, struct nes_hw_cq *cq) in nes_cqp_ce_handler() argument
3039 cqp = &nesdev->cqp; in nes_cqp_ce_handler()
3064 nes_put_cqp_request(nesdev, cqp_request); in nes_cqp_ce_handler()
3067 cqp_request->cqp_callback(nesdev, cqp_request); in nes_cqp_ce_handler()
3068 nes_free_cqp_request(nesdev, cqp_request); in nes_cqp_ce_handler()
3071 wake_up(&nesdev->cqp.waitq); in nes_cqp_ce_handler()
3075 nes_write32(nesdev->regs + NES_CQE_ALLOC, cq->cq_number | (1 << 16)); in nes_cqp_ce_handler()
3089 spin_lock_irqsave(&nesdev->cqp.lock, flags); in nes_cqp_ce_handler()
3090 while ((!list_empty(&nesdev->cqp_pending_reqs)) && in nes_cqp_ce_handler()
3091 ((((nesdev->cqp.sq_tail+nesdev->cqp.sq_size)-nesdev->cqp.sq_head) & in nes_cqp_ce_handler()
3092 (nesdev->cqp.sq_size - 1)) != 1)) { in nes_cqp_ce_handler()
3093 cqp_request = list_entry(nesdev->cqp_pending_reqs.next, in nes_cqp_ce_handler()
3096 head = nesdev->cqp.sq_head++; in nes_cqp_ce_handler()
3097 nesdev->cqp.sq_head &= nesdev->cqp.sq_size-1; in nes_cqp_ce_handler()
3098 cqp_wqe = &nesdev->cqp.sq_vbase[head]; in nes_cqp_ce_handler()
3115 nes_write32(nesdev->regs+NES_WQE_ALLOC, 0x01800000 | nesdev->cqp.qp_id); in nes_cqp_ce_handler()
3117 spin_unlock_irqrestore(&nesdev->cqp.lock, flags); in nes_cqp_ce_handler()
3120 nes_write32(nesdev->regs+NES_CQE_ALLOC, NES_CQE_ALLOC_NOTIFY_NEXT | in nes_cqp_ce_handler()
3122 nes_read32(nesdev->regs+NES_CQE_ALLOC); in nes_cqp_ce_handler()
3366 static void nes_terminate_connection(struct nes_device *nesdev, struct nes_qp *nesqp, in nes_terminate_connection() argument
3378 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_terminate_connection()
3408 if (!nesdev->iw_status) { in nes_terminate_connection()
3410 nes_hw_modify_qp(nesdev, nesqp, NES_CQP_QP_IWARP_STATE_ERROR, 0, 0); in nes_terminate_connection()
3415 nes_hw_modify_qp(nesdev, nesqp, mod_qp_flags, termlen, 0); in nes_terminate_connection()
3419 static void nes_terminate_send_fin(struct nes_device *nesdev, in nes_terminate_send_fin() argument
3440 nes_hw_modify_qp(nesdev, nesqp, NES_CQP_QP_IWARP_STATE_TERMINATE | in nes_terminate_send_fin()
3450 struct nes_device *nesdev = nesvnic->nesdev; in nes_terminate_done() local
3470 nes_hw_modify_qp(nesdev, nesqp, next_iwarp_state, 0, 0); in nes_terminate_done()
3475 static void nes_terminate_received(struct nes_device *nesdev, in nes_terminate_received() argument
3510 nes_terminate_connection(nesdev, nesqp, aeqe, IB_EVENT_QP_FATAL); in nes_terminate_received()
3518 nes_terminate_send_fin(nesdev, nesqp, aeqe); in nes_terminate_received()
3538 static void nes_process_iwarp_aeqe(struct nes_device *nesdev, in nes_process_iwarp_aeqe() argument
3547 struct nes_adapter *nesadapter = nesdev->nesadapter; in nes_process_iwarp_aeqe()
3601 nes_hw_modify_qp(nesdev, nesqp, next_iwarp_state, 0, 0); in nes_process_iwarp_aeqe()
3632 nes_hw_modify_qp(nesdev, nesqp, next_iwarp_state, 0, 0); in nes_process_iwarp_aeqe()
3648 nes_terminate_send_fin(nesdev, nesqp, aeqe); in nes_process_iwarp_aeqe()
3652 nes_terminate_received(nesdev, nesqp, aeqe); in nes_process_iwarp_aeqe()
3667 nes_terminate_connection(nesdev, nesqp, aeqe, IB_EVENT_QP_ACCESS_ERR); in nes_process_iwarp_aeqe()
3719 nes_terminate_connection(nesdev, nesqp, aeqe, IB_EVENT_QP_FATAL); in nes_process_iwarp_aeqe()
3755 void nes_iwarp_ce_handler(struct nes_device *nesdev, struct nes_hw_cq *hw_cq) in nes_iwarp_ce_handler() argument
3761 nes_write32(nesdev->regs+NES_CQ_ACK, nescq->hw_cq.cq_number); in nes_iwarp_ce_handler()
3776 struct nes_device *nesdev = nesvnic->nesdev; in nes_manage_apbvt() local
3783 cqp_request = nes_get_cqp_request(nesdev); in nes_manage_apbvt()
3795 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_manage_apbvt()
3804 nes_post_cqp_request(nesdev, cqp_request); in nes_manage_apbvt()
3813 nes_put_cqp_request(nesdev, cqp_request); in nes_manage_apbvt()
3832 struct nes_device *nesdev; in nes_manage_arp_cache() local
3836 nesdev = nesvnic->nesdev; in nes_manage_arp_cache()
3837 arp_index = nes_arp_table(nesdev, ip_addr, mac_addr, action); in nes_manage_arp_cache()
3843 cqp_request = nes_get_cqp_request(nesdev); in nes_manage_arp_cache()
3850 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in nes_manage_arp_cache()
3855 (u32)PCI_FUNC(nesdev->pcidev->devfn) << NES_CQP_ARP_AEQ_INDEX_SHIFT); in nes_manage_arp_cache()
3871 nesdev->cqp.sq_head, nesdev->cqp.sq_tail); in nes_manage_arp_cache()
3874 nes_post_cqp_request(nesdev, cqp_request); in nes_manage_arp_cache()
3881 void flush_wqes(struct nes_device *nesdev, struct nes_qp *nesqp, in flush_wqes() argument
3890 cqp_request = nes_get_cqp_request(nesdev); in flush_wqes()
3902 nes_fill_init_cqp_wqe(cqp_wqe, nesdev); in flush_wqes()
3926 nes_post_cqp_request(nesdev, cqp_request); in flush_wqes()
3935 nes_put_cqp_request(nesdev, cqp_request); in flush_wqes()