Lines Matching refs:oct

70 static int octeon_device_init(struct octeon_device *oct);
73 static int lio_wait_for_oq_pkts(struct octeon_device *oct) in lio_wait_for_oq_pkts() argument
76 (struct octeon_device_priv *)oct->priv; in lio_wait_for_oq_pkts()
84 for (i = 0; i < MAX_OCTEON_OUTPUT_QUEUES(oct); i++) { in lio_wait_for_oq_pkts()
85 if (!(oct->io_qmask.oq & BIT_ULL(i))) in lio_wait_for_oq_pkts()
87 pkt_cnt += octeon_droq_check_hw_for_pkts(oct->droq[i]); in lio_wait_for_oq_pkts()
105 static void pcierror_quiesce_device(struct octeon_device *oct) in pcierror_quiesce_device() argument
117 if (wait_for_pending_requests(oct)) in pcierror_quiesce_device()
118 dev_err(&oct->pci_dev->dev, "There were pending requests\n"); in pcierror_quiesce_device()
121 for (i = 0; i < MAX_OCTEON_INSTR_QUEUES(oct); i++) { in pcierror_quiesce_device()
124 if (!(oct->io_qmask.iq & BIT_ULL(i))) in pcierror_quiesce_device()
126 iq = oct->instr_queue[i]; in pcierror_quiesce_device()
134 lio_process_iq_request_list(oct, iq, 0); in pcierror_quiesce_device()
140 lio_process_ordered_list(oct, 1); in pcierror_quiesce_device()
169 static void stop_pci_io(struct octeon_device *oct) in stop_pci_io() argument
175 atomic_set(&oct->status, OCT_DEV_IN_RESET); in stop_pci_io()
177 for (i = 0; i < oct->ifcount; i++) in stop_pci_io()
178 netif_device_detach(oct->props[i].netdev); in stop_pci_io()
181 oct->fn_list.disable_interrupt(oct, OCTEON_ALL_INTR); in stop_pci_io()
183 pcierror_quiesce_device(oct); in stop_pci_io()
184 if (oct->msix_on) { in stop_pci_io()
185 msix_entries = (struct msix_entry *)oct->msix_entries; in stop_pci_io()
186 for (i = 0; i < oct->num_msix_irqs; i++) { in stop_pci_io()
191 &oct->ioq_vector[i]); in stop_pci_io()
193 pci_disable_msix(oct->pci_dev); in stop_pci_io()
194 kfree(oct->msix_entries); in stop_pci_io()
195 oct->msix_entries = NULL; in stop_pci_io()
196 octeon_free_ioq_vector(oct); in stop_pci_io()
198 dev_dbg(&oct->pci_dev->dev, "Device state is now %s\n", in stop_pci_io()
199 lio_get_state_string(&oct->status)); in stop_pci_io()
202 cleanup_aer_uncorrect_error_status(oct->pci_dev); in stop_pci_io()
204 pci_disable_device(oct->pci_dev); in stop_pci_io()
218 struct octeon_device *oct = pci_get_drvdata(pdev); in liquidio_pcie_error_detected() local
222 dev_err(&oct->pci_dev->dev, "Non-correctable non-fatal error reported:\n"); in liquidio_pcie_error_detected()
223 cleanup_aer_uncorrect_error_status(oct->pci_dev); in liquidio_pcie_error_detected()
228 dev_err(&oct->pci_dev->dev, "Non-correctable FATAL reported by PCI AER driver\n"); in liquidio_pcie_error_detected()
229 stop_pci_io(oct); in liquidio_pcie_error_detected()
305 struct octeon_device *oct = lio->oct_dev; in setup_link_status_change_wq() local
310 dev_err(&oct->pci_dev->dev, "unable to create cavium link status wq\n"); in setup_link_status_change_wq()
343 struct octeon_device *oct = lio->oct_dev; in update_link_status() local
360 dev_info(&oct->pci_dev->dev, in update_link_status()
367 dev_warn(&oct->pci_dev->dev, in update_link_status()
422 static void octeon_pci_flr(struct octeon_device *oct) in octeon_pci_flr() argument
424 pci_save_state(oct->pci_dev); in octeon_pci_flr()
426 pci_cfg_access_lock(oct->pci_dev); in octeon_pci_flr()
429 pci_write_config_word(oct->pci_dev, PCI_COMMAND, in octeon_pci_flr()
432 pcie_flr(oct->pci_dev); in octeon_pci_flr()
434 pci_cfg_access_unlock(oct->pci_dev); in octeon_pci_flr()
436 pci_restore_state(oct->pci_dev); in octeon_pci_flr()
443 static void octeon_destroy_resources(struct octeon_device *oct) in octeon_destroy_resources() argument
446 (struct octeon_device_priv *)oct->priv; in octeon_destroy_resources()
450 switch (atomic_read(&oct->status)) { in octeon_destroy_resources()
454 atomic_set(&oct->status, OCT_DEV_IN_RESET); in octeon_destroy_resources()
456 oct->app_mode = CVM_DRV_INVALID_APP; in octeon_destroy_resources()
457 dev_dbg(&oct->pci_dev->dev, "Device state is now %s\n", in octeon_destroy_resources()
458 lio_get_state_string(&oct->status)); in octeon_destroy_resources()
465 if (lio_wait_for_instr_fetch(oct)) in octeon_destroy_resources()
466 dev_err(&oct->pci_dev->dev, "IQ had pending instructions\n"); in octeon_destroy_resources()
468 if (wait_for_pending_requests(oct)) in octeon_destroy_resources()
469 dev_err(&oct->pci_dev->dev, "There were pending requests\n"); in octeon_destroy_resources()
475 oct->fn_list.disable_io_queues(oct); in octeon_destroy_resources()
477 if (lio_wait_for_oq_pkts(oct)) in octeon_destroy_resources()
478 dev_err(&oct->pci_dev->dev, "OQ had pending packets\n"); in octeon_destroy_resources()
483 for (i = 0; i < MAX_OCTEON_INSTR_QUEUES(oct); i++) { in octeon_destroy_resources()
486 if (!(oct->io_qmask.iq & BIT_ULL(i))) in octeon_destroy_resources()
488 iq = oct->instr_queue[i]; in octeon_destroy_resources()
496 lio_process_iq_request_list(oct, iq, 0); in octeon_destroy_resources()
501 lio_process_ordered_list(oct, 1); in octeon_destroy_resources()
502 octeon_free_sc_done_list(oct); in octeon_destroy_resources()
503 octeon_free_sc_zombie_list(oct); in octeon_destroy_resources()
508 oct->fn_list.disable_interrupt(oct, OCTEON_ALL_INTR); in octeon_destroy_resources()
510 if (oct->msix_on) { in octeon_destroy_resources()
511 msix_entries = (struct msix_entry *)oct->msix_entries; in octeon_destroy_resources()
512 for (i = 0; i < oct->num_msix_irqs; i++) { in octeon_destroy_resources()
513 if (oct->ioq_vector[i].vector) { in octeon_destroy_resources()
518 &oct->ioq_vector[i]); in octeon_destroy_resources()
519 oct->ioq_vector[i].vector = 0; in octeon_destroy_resources()
522 pci_disable_msix(oct->pci_dev); in octeon_destroy_resources()
523 kfree(oct->msix_entries); in octeon_destroy_resources()
524 oct->msix_entries = NULL; in octeon_destroy_resources()
525 kfree(oct->irq_name_storage); in octeon_destroy_resources()
526 oct->irq_name_storage = NULL; in octeon_destroy_resources()
529 if (!pcie_reset_flr(oct->pci_dev, PCI_RESET_PROBE)) in octeon_destroy_resources()
530 octeon_pci_flr(oct); in octeon_destroy_resources()
532 cn23xx_vf_ask_pf_to_do_flr(oct); in octeon_destroy_resources()
536 octeon_free_ioq_vector(oct); in octeon_destroy_resources()
540 oct->fn_list.free_mbox(oct); in octeon_destroy_resources()
546 for (i = 0; i < MAX_OCTEON_OUTPUT_QUEUES(oct); i++) { in octeon_destroy_resources()
547 if (!(oct->io_qmask.oq & BIT_ULL(i))) in octeon_destroy_resources()
549 octeon_delete_droq(oct, i); in octeon_destroy_resources()
554 octeon_delete_response_list(oct); in octeon_destroy_resources()
558 for (i = 0; i < MAX_OCTEON_INSTR_QUEUES(oct); i++) { in octeon_destroy_resources()
559 if (!(oct->io_qmask.iq & BIT_ULL(i))) in octeon_destroy_resources()
561 octeon_delete_instr_queue(oct, i); in octeon_destroy_resources()
566 octeon_free_sc_buffer_pool(oct); in octeon_destroy_resources()
570 octeon_delete_dispatch_list(oct); in octeon_destroy_resources()
571 cancel_delayed_work_sync(&oct->nic_poll_work.work); in octeon_destroy_resources()
575 octeon_unmap_pci_barx(oct, 0); in octeon_destroy_resources()
576 octeon_unmap_pci_barx(oct, 1); in octeon_destroy_resources()
580 pci_clear_master(oct->pci_dev); in octeon_destroy_resources()
582 pci_disable_device(oct->pci_dev); in octeon_destroy_resources()
600 struct octeon_device *oct = (struct octeon_device *)lio->oct_dev; in send_rx_ctrl_cmd() local
605 if (oct->props[lio->ifidx].rx_on == start_stop) in send_rx_ctrl_cmd()
609 octeon_alloc_soft_command(oct, OCTNET_CMD_SIZE, in send_rx_ctrl_cmd()
627 octeon_prepare_soft_command(oct, sc, OPCODE_NIC, in send_rx_ctrl_cmd()
633 retval = octeon_send_soft_command(oct, sc); in send_rx_ctrl_cmd()
636 octeon_free_soft_command(oct, sc); in send_rx_ctrl_cmd()
641 retval = wait_for_sc_completion_timeout(oct, sc, 0); in send_rx_ctrl_cmd()
645 oct->props[lio->ifidx].rx_on = start_stop; in send_rx_ctrl_cmd()
660 static void liquidio_destroy_nic_device(struct octeon_device *oct, int ifidx) in liquidio_destroy_nic_device() argument
662 struct net_device *netdev = oct->props[ifidx].netdev; in liquidio_destroy_nic_device()
664 (struct octeon_device_priv *)oct->priv; in liquidio_destroy_nic_device()
669 dev_err(&oct->pci_dev->dev, "%s No netdevice ptr for index %d\n", in liquidio_destroy_nic_device()
676 dev_dbg(&oct->pci_dev->dev, "NIC device cleanup\n"); in liquidio_destroy_nic_device()
681 if (oct->props[lio->ifidx].napi_enabled == 1) { in liquidio_destroy_nic_device()
685 oct->props[lio->ifidx].napi_enabled = 0; in liquidio_destroy_nic_device()
687 oct->droq[0]->ops.poll_mode = 0; in liquidio_destroy_nic_device()
707 oct->props[ifidx].gmxport = -1; in liquidio_destroy_nic_device()
709 oct->props[ifidx].netdev = NULL; in liquidio_destroy_nic_device()
716 static int liquidio_stop_nic_module(struct octeon_device *oct) in liquidio_stop_nic_module() argument
721 dev_dbg(&oct->pci_dev->dev, "Stopping network interfaces\n"); in liquidio_stop_nic_module()
722 if (!oct->ifcount) { in liquidio_stop_nic_module()
723 dev_err(&oct->pci_dev->dev, "Init for Octeon was not completed\n"); in liquidio_stop_nic_module()
727 spin_lock_bh(&oct->cmd_resp_wqlock); in liquidio_stop_nic_module()
728 oct->cmd_resp_state = OCT_DRV_OFFLINE; in liquidio_stop_nic_module()
729 spin_unlock_bh(&oct->cmd_resp_wqlock); in liquidio_stop_nic_module()
731 for (i = 0; i < oct->ifcount; i++) { in liquidio_stop_nic_module()
732 lio = GET_LIO(oct->props[i].netdev); in liquidio_stop_nic_module()
733 for (j = 0; j < oct->num_oqs; j++) in liquidio_stop_nic_module()
734 octeon_unregister_droq_ops(oct, in liquidio_stop_nic_module()
738 for (i = 0; i < oct->ifcount; i++) in liquidio_stop_nic_module()
739 liquidio_destroy_nic_device(oct, i); in liquidio_stop_nic_module()
741 dev_dbg(&oct->pci_dev->dev, "Network interfaces stopped\n"); in liquidio_stop_nic_module()
775 static int octeon_pci_os_setup(struct octeon_device *oct) in octeon_pci_os_setup() argument
779 if (!oct->pci_dev->physfn) in octeon_pci_os_setup()
780 octeon_pci_flr(oct); in octeon_pci_os_setup()
783 if (pci_enable_device(oct->pci_dev)) { in octeon_pci_os_setup()
784 dev_err(&oct->pci_dev->dev, "pci_enable_device failed\n"); in octeon_pci_os_setup()
788 if (dma_set_mask_and_coherent(&oct->pci_dev->dev, DMA_BIT_MASK(64))) { in octeon_pci_os_setup()
789 dev_err(&oct->pci_dev->dev, "Unexpected DMA device capability\n"); in octeon_pci_os_setup()
790 pci_disable_device(oct->pci_dev); in octeon_pci_os_setup()
795 pci_set_master(oct->pci_dev); in octeon_pci_os_setup()
912 struct octeon_device *oct = lio->oct_dev; in liquidio_open() local
914 (struct octeon_device_priv *)oct->priv; in liquidio_open()
918 if (!oct->props[lio->ifidx].napi_enabled) { in liquidio_open()
924 oct->props[lio->ifidx].napi_enabled = 1; in liquidio_open()
926 oct->droq[0]->ops.poll_mode = 1; in liquidio_open()
947 dev_info(&oct->pci_dev->dev, "%s interface is opened\n", netdev->name); in liquidio_open()
959 struct octeon_device *oct = lio->oct_dev; in liquidio_stop() local
961 (struct octeon_device_priv *)oct->priv; in liquidio_stop()
983 if (lio_wait_for_clean_oq(oct)) in liquidio_stop()
987 if (oct->props[lio->ifidx].napi_enabled == 1) { in liquidio_stop()
991 oct->props[lio->ifidx].napi_enabled = 0; in liquidio_stop()
993 oct->droq[0]->ops.poll_mode = 0; in liquidio_stop()
1000 dev_info(&oct->pci_dev->dev, "%s interface is stopped\n", netdev->name); in liquidio_stop()
1041 struct octeon_device *oct = lio->oct_dev; in liquidio_set_uc_list() local
1050 dev_err(&oct->pci_dev->dev, "too many MAC addresses in netdev uc list\n"); in liquidio_set_uc_list()
1059 nctrl.ncmd.s.param1 = oct->vf_num; in liquidio_set_uc_list()
1082 struct octeon_device *oct = lio->oct_dev; in liquidio_set_mcast_list() local
1117 dev_err(&oct->pci_dev->dev, "DEVFLAGS change failed in core (ret: 0x%x)\n", in liquidio_set_mcast_list()
1133 struct octeon_device *oct = lio->oct_dev; in liquidio_set_mac() local
1161 dev_err(&oct->pci_dev->dev, "MAC Address change failed\n"); in liquidio_set_mac()
1167 dev_err(&oct->pci_dev->dev, "MAC Address change failed: no permission\n"); in liquidio_set_mac()
1182 struct octeon_device *oct; in liquidio_get_stats64() local
1188 oct = lio->oct_dev; in liquidio_get_stats64()
1193 for (i = 0; i < oct->num_iqs; i++) { in liquidio_get_stats64()
1195 iq_stats = &oct->instr_queue[iq_no]->stats; in liquidio_get_stats64()
1209 for (i = 0; i < oct->num_oqs; i++) { in liquidio_get_stats64()
1211 oq_stats = &oct->droq[oq_no]->stats; in liquidio_get_stats64()
1224 lstats->multicast = oct->link_stats.fromwire.fw_total_mcast; in liquidio_get_stats64()
1227 lstats->rx_length_errors = oct->link_stats.fromwire.l2_err; in liquidio_get_stats64()
1229 lstats->rx_crc_errors = oct->link_stats.fromwire.fcs_err; in liquidio_get_stats64()
1231 lstats->rx_frame_errors = oct->link_stats.fromwire.frame_err; in liquidio_get_stats64()
1237 lstats->tx_aborted_errors = oct->link_stats.fromhost.fw_err_pko; in liquidio_get_stats64()
1238 lstats->tx_carrier_errors = oct->link_stats.fromhost.fw_err_link; in liquidio_get_stats64()
1317 static void handle_timestamp(struct octeon_device *oct, u32 status, void *buf) in handle_timestamp() argument
1328 oct = lio->oct_dev; in handle_timestamp()
1332 dev_err(&oct->pci_dev->dev, "Tx timestamp instruction failed. Status: %llx\n", in handle_timestamp()
1350 octeon_free_soft_command(oct, sc); in handle_timestamp()
1359 static int send_nic_timestamp_pkt(struct octeon_device *oct, in send_nic_timestamp_pkt() argument
1372 sc = octeon_alloc_soft_command_resp(oct, &ndata->cmd, in send_nic_timestamp_pkt()
1377 dev_err(&oct->pci_dev->dev, "No memory for timestamped data packet\n"); in send_nic_timestamp_pkt()
1394 retval = octeon_send_command(oct, sc->iq_no, ring_doorbell, &sc->cmd, in send_nic_timestamp_pkt()
1398 dev_err(&oct->pci_dev->dev, "timestamp data packet failed status: %x\n", in send_nic_timestamp_pkt()
1400 octeon_free_soft_command(oct, sc); in send_nic_timestamp_pkt()
1422 struct octeon_device *oct; in liquidio_xmit() local
1433 oct = lio->oct_dev; in liquidio_xmit()
1439 stats = &oct->instr_queue[iq_no]->stats; in liquidio_xmit()
1466 if (octnet_iq_is_full(oct, ndata.q_no)) { in liquidio_xmit()
1494 octnet_prepare_pci_cmd(oct, &ndata.cmd, &cmdsetup, tag); in liquidio_xmit()
1496 dptr = dma_map_single(&oct->pci_dev->dev, in liquidio_xmit()
1500 if (dma_mapping_error(&oct->pci_dev->dev, dptr)) { in liquidio_xmit()
1501 dev_err(&oct->pci_dev->dev, "%s DMA mapping error 1\n", in liquidio_xmit()
1528 octnet_prepare_pci_cmd(oct, &ndata.cmd, &cmdsetup, tag); in liquidio_xmit()
1532 g->sg[0].ptr[0] = dma_map_single(&oct->pci_dev->dev, in liquidio_xmit()
1536 if (dma_mapping_error(&oct->pci_dev->dev, g->sg[0].ptr[0])) { in liquidio_xmit()
1537 dev_err(&oct->pci_dev->dev, "%s DMA mapping error 2\n", in liquidio_xmit()
1549 skb_frag_dma_map(&oct->pci_dev->dev, in liquidio_xmit()
1552 if (dma_mapping_error(&oct->pci_dev->dev, in liquidio_xmit()
1554 dma_unmap_single(&oct->pci_dev->dev, in liquidio_xmit()
1560 dma_unmap_page(&oct->pci_dev->dev, in liquidio_xmit()
1565 dev_err(&oct->pci_dev->dev, "%s DMA mapping error 3\n", in liquidio_xmit()
1601 status = send_nic_timestamp_pkt(oct, &ndata, finfo, xmit_more); in liquidio_xmit()
1603 status = octnet_send_nic_data_pkt(oct, &ndata, xmit_more); in liquidio_xmit()
1610 dev_err(&oct->pci_dev->dev, "Rcvd IQ_SEND_STOP signal; stopping IQ-%d\n", in liquidio_xmit()
1630 dma_unmap_single(&oct->pci_dev->dev, dptr, in liquidio_xmit()
1633 octeon_ring_doorbell_locked(oct, iq_no); in liquidio_xmit()
1662 struct octeon_device *oct = lio->oct_dev; in liquidio_vlan_rx_add_vid() local
1677 dev_err(&oct->pci_dev->dev, "Add VLAN filter failed in core (ret: 0x%x)\n", in liquidio_vlan_rx_add_vid()
1690 struct octeon_device *oct = lio->oct_dev; in liquidio_vlan_rx_kill_vid() local
1705 dev_err(&oct->pci_dev->dev, "Del VLAN filter failed in core (ret: 0x%x)\n", in liquidio_vlan_rx_kill_vid()
1724 struct octeon_device *oct = lio->oct_dev; in liquidio_set_rxcsum_command() local
1739 dev_err(&oct->pci_dev->dev, "DEVFLAGS RXCSUM change failed in core (ret:0x%x)\n", in liquidio_set_rxcsum_command()
1759 struct octeon_device *oct = lio->oct_dev; in liquidio_vxlan_port_command() local
1775 dev_err(&oct->pci_dev->dev, in liquidio_vxlan_port_command()
1899 struct octeon_device *oct = (struct octeon_device *)buf; in lio_nic_info() local
1906 dev_err(&oct->pci_dev->dev, "Malformed NIC_INFO, len=%d, ifidx=%d\n", in lio_nic_info()
1918 for (i = 0; i < oct->ifcount; i++) { in lio_nic_info()
1919 if (oct->props[i].gmxport == gmxport) { in lio_nic_info()
1920 update_link_status(oct->props[i].netdev, ls); in lio_nic_info()
2251 static int liquidio_init_nic_module(struct octeon_device *oct) in liquidio_init_nic_module() argument
2256 dev_dbg(&oct->pci_dev->dev, "Initializing network interfaces\n"); in liquidio_init_nic_module()
2261 oct->ifcount = num_nic_ports; in liquidio_init_nic_module()
2262 memset(oct->props, 0, in liquidio_init_nic_module()
2266 oct->props[i].gmxport = -1; in liquidio_init_nic_module()
2268 retval = setup_nic_devices(oct); in liquidio_init_nic_module()
2270 dev_err(&oct->pci_dev->dev, "Setup NIC devices failed\n"); in liquidio_init_nic_module()
2274 dev_dbg(&oct->pci_dev->dev, "Network interfaces ready\n"); in liquidio_init_nic_module()
2280 oct->ifcount = 0; in liquidio_init_nic_module()
2289 static int octeon_device_init(struct octeon_device *oct) in octeon_device_init() argument
2294 atomic_set(&oct->status, OCT_DEV_BEGIN_STATE); in octeon_device_init()
2299 if (octeon_pci_os_setup(oct)) in octeon_device_init()
2301 atomic_set(&oct->status, OCT_DEV_PCI_ENABLE_DONE); in octeon_device_init()
2303 oct->chip_id = OCTEON_CN23XX_VF_VID; in octeon_device_init()
2304 pci_read_config_dword(oct->pci_dev, 8, &rev_id); in octeon_device_init()
2305 oct->rev_id = rev_id & 0xff; in octeon_device_init()
2307 if (cn23xx_setup_octeon_vf_device(oct)) in octeon_device_init()
2310 atomic_set(&oct->status, OCT_DEV_PCI_MAP_DONE); in octeon_device_init()
2312 oct->app_mode = CVM_DRV_NIC_APP; in octeon_device_init()
2317 if (octeon_init_dispatch_list(oct)) in octeon_device_init()
2320 atomic_set(&oct->status, OCT_DEV_DISPATCH_INIT_DONE); in octeon_device_init()
2322 if (octeon_set_io_queues_off(oct)) { in octeon_device_init()
2323 dev_err(&oct->pci_dev->dev, "setting io queues off failed\n"); in octeon_device_init()
2327 if (oct->fn_list.setup_device_regs(oct)) { in octeon_device_init()
2328 dev_err(&oct->pci_dev->dev, "device registers configuration failed\n"); in octeon_device_init()
2333 if (octeon_setup_sc_buffer_pool(oct)) { in octeon_device_init()
2334 dev_err(&oct->pci_dev->dev, "sc buffer pool allocation failed\n"); in octeon_device_init()
2337 atomic_set(&oct->status, OCT_DEV_SC_BUFF_POOL_INIT_DONE); in octeon_device_init()
2340 if (octeon_setup_instr_queues(oct)) { in octeon_device_init()
2341 dev_err(&oct->pci_dev->dev, "instruction queue initialization failed\n"); in octeon_device_init()
2344 atomic_set(&oct->status, OCT_DEV_INSTR_QUEUE_INIT_DONE); in octeon_device_init()
2349 if (octeon_setup_response_list(oct)) { in octeon_device_init()
2350 dev_err(&oct->pci_dev->dev, "Response list allocation failed\n"); in octeon_device_init()
2353 atomic_set(&oct->status, OCT_DEV_RESP_LIST_INIT_DONE); in octeon_device_init()
2355 if (octeon_setup_output_queues(oct)) { in octeon_device_init()
2356 dev_err(&oct->pci_dev->dev, "Output queue initialization failed\n"); in octeon_device_init()
2359 atomic_set(&oct->status, OCT_DEV_DROQ_INIT_DONE); in octeon_device_init()
2361 if (oct->fn_list.setup_mbox(oct)) { in octeon_device_init()
2362 dev_err(&oct->pci_dev->dev, "Mailbox setup failed\n"); in octeon_device_init()
2365 atomic_set(&oct->status, OCT_DEV_MBOX_SETUP_DONE); in octeon_device_init()
2367 if (octeon_allocate_ioq_vector(oct, oct->sriov_info.rings_per_vf)) { in octeon_device_init()
2368 dev_err(&oct->pci_dev->dev, "ioq vector allocation failed\n"); in octeon_device_init()
2371 atomic_set(&oct->status, OCT_DEV_MSIX_ALLOC_VECTOR_DONE); in octeon_device_init()
2373 dev_info(&oct->pci_dev->dev, "OCTEON_CN23XX VF: %d ioqs\n", in octeon_device_init()
2374 oct->sriov_info.rings_per_vf); in octeon_device_init()
2377 if (octeon_setup_interrupt(oct, oct->sriov_info.rings_per_vf)) in octeon_device_init()
2380 atomic_set(&oct->status, OCT_DEV_INTR_SET_DONE); in octeon_device_init()
2390 oct->fn_list.enable_interrupt(oct, OCTEON_ALL_INTR); in octeon_device_init()
2392 if (cn23xx_octeon_pfvf_handshake(oct)) in octeon_device_init()
2400 oct->fn_list.enable_interrupt(oct, OCTEON_ALL_INTR); in octeon_device_init()
2404 if (oct->fn_list.enable_io_queues(oct)) { in octeon_device_init()
2405 dev_err(&oct->pci_dev->dev, "enabling io queues failed\n"); in octeon_device_init()
2409 atomic_set(&oct->status, OCT_DEV_IO_QUEUES_DONE); in octeon_device_init()
2411 atomic_set(&oct->status, OCT_DEV_HOST_OK); in octeon_device_init()
2416 for (j = 0; j < oct->num_oqs; j++) in octeon_device_init()
2417 writel(oct->droq[j]->max_count, oct->droq[j]->pkts_credit_reg); in octeon_device_init()
2421 atomic_set(&oct->status, OCT_DEV_CORE_OK); in octeon_device_init()
2423 atomic_set(&oct->status, OCT_DEV_RUNNING); in octeon_device_init()
2425 if (liquidio_init_nic_module(oct)) in octeon_device_init()