Lines Matching refs:octeon_dev

95 static int	lio_device_init(struct octeon_device *octeon_dev);
101 static int lio_setup_nic_devices(struct octeon_device *octeon_dev);
428 lio_device_init(struct octeon_device *octeon_dev) in lio_device_init() argument
437 bus = pci_get_bus(octeon_dev->device); in lio_device_init()
438 dev = pci_get_slot(octeon_dev->device); in lio_device_init()
439 function = pci_get_function(octeon_dev->device); in lio_device_init()
441 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_BEGIN_STATE); in lio_device_init()
444 if (pci_enable_busmaster(octeon_dev->device)) { in lio_device_init()
445 lio_dev_err(octeon_dev, "pci_enable_device failed\n"); in lio_device_init()
449 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_PCI_ENABLE_DONE); in lio_device_init()
452 if (lio_chip_specific_setup(octeon_dev)) { in lio_device_init()
453 lio_dev_err(octeon_dev, "Chip specific setup failed\n"); in lio_device_init()
457 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_PCI_MAP_DONE); in lio_device_init()
464 lio_register_device(octeon_dev, bus, dev, function, true); in lio_device_init()
467 octeon_dev->app_mode = LIO_DRV_INVALID_APP; in lio_device_init()
469 if (!lio_cn23xx_pf_fw_loaded(octeon_dev) && !fw_type_is_none()) { in lio_device_init()
472 if (octeon_dev->fn_list.soft_reset(octeon_dev)) in lio_device_init()
476 if (!lio_cn23xx_pf_fw_loaded(octeon_dev)) in lio_device_init()
488 if (lio_init_dispatch_list(octeon_dev)) in lio_device_init()
491 lio_register_dispatch_fn(octeon_dev, LIO_OPCODE_NIC, in lio_device_init()
493 lio_core_drv_init, octeon_dev); in lio_device_init()
494 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_DISPATCH_INIT_DONE); in lio_device_init()
496 ret = octeon_dev->fn_list.setup_device_regs(octeon_dev); in lio_device_init()
498 lio_dev_err(octeon_dev, in lio_device_init()
504 if (lio_setup_sc_buffer_pool(octeon_dev)) { in lio_device_init()
505 lio_dev_err(octeon_dev, "sc buffer pool allocation failed\n"); in lio_device_init()
509 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
512 if (lio_allocate_ioq_vector(octeon_dev)) { in lio_device_init()
513 lio_dev_err(octeon_dev, in lio_device_init()
518 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
522 octeon_dev->instr_queue[i] = in lio_device_init()
525 if (octeon_dev->instr_queue[i] == NULL) in lio_device_init()
530 if (lio_setup_instr_queue0(octeon_dev)) { in lio_device_init()
531 lio_dev_err(octeon_dev, in lio_device_init()
536 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
544 if (lio_setup_response_list(octeon_dev)) { in lio_device_init()
545 lio_dev_err(octeon_dev, "Response list allocation failed\n"); in lio_device_init()
549 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_RESP_LIST_INIT_DONE); in lio_device_init()
552 octeon_dev->droq[i] = malloc(sizeof(*octeon_dev->droq[i]), in lio_device_init()
554 if (octeon_dev->droq[i] == NULL) in lio_device_init()
558 if (lio_setup_output_queue0(octeon_dev)) { in lio_device_init()
559 lio_dev_err(octeon_dev, "Output queue initialization failed\n"); in lio_device_init()
563 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_DROQ_INIT_DONE); in lio_device_init()
568 if (lio_setup_interrupt(octeon_dev, in lio_device_init()
569 octeon_dev->sriov_info.num_pf_rings)) in lio_device_init()
573 octeon_dev->fn_list.enable_interrupt(octeon_dev, OCTEON_ALL_INTR); in lio_device_init()
575 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_INTR_SET_DONE); in lio_device_init()
586 for (j = 0; j < octeon_dev->num_oqs; j++) in lio_device_init()
587 lio_write_csr32(octeon_dev, in lio_device_init()
588 octeon_dev->droq[j]->pkts_credit_reg, in lio_device_init()
589 octeon_dev->droq[j]->max_count); in lio_device_init()
592 ret = octeon_dev->fn_list.enable_io_queues(octeon_dev); in lio_device_init()
594 lio_dev_err(octeon_dev, "Failed to enable input/output queues"); in lio_device_init()
598 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_IO_QUEUES_DONE); in lio_device_init()
601 lio_dev_dbg(octeon_dev, "Waiting for DDR initialization...\n"); in lio_device_init()
603 lio_dev_info(octeon_dev, in lio_device_init()
620 ret = lio_wait_for_ddr_init(octeon_dev, &ddr_timeout); in lio_device_init()
622 lio_dev_err(octeon_dev, in lio_device_init()
628 if (lio_wait_for_bootloader(octeon_dev, 1100)) { in lio_device_init()
629 lio_dev_err(octeon_dev, "Board not responding\n"); in lio_device_init()
634 ret = lio_console_send_cmd(octeon_dev, bootcmd, 50); in lio_device_init()
636 lio_dev_dbg(octeon_dev, "Initializing consoles\n"); in lio_device_init()
637 ret = lio_init_consoles(octeon_dev); in lio_device_init()
639 lio_dev_err(octeon_dev, "Could not access board consoles\n"); in lio_device_init()
649 ret = lio_add_console(octeon_dev, 0, dbg_enb); in lio_device_init()
652 lio_dev_err(octeon_dev, "Could not access board console\n"); in lio_device_init()
659 octeon_dev->console[0].print = lio_dbg_console_print; in lio_device_init()
662 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
665 lio_dev_dbg(octeon_dev, "Loading firmware\n"); in lio_device_init()
667 ret = lio_load_firmware(octeon_dev); in lio_device_init()
669 lio_dev_err(octeon_dev, "Could not load firmware to board\n"); in lio_device_init()
674 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_HOST_OK); in lio_device_init()
1170 lio_tcp_lro_free(struct octeon_device *octeon_dev, if_t ifp) in lio_tcp_lro_free() argument
1177 for (i = 0; i < octeon_dev->num_oqs; i++) { in lio_tcp_lro_free()
1179 droq = octeon_dev->droq[q_no]; in lio_tcp_lro_free()
1188 lio_tcp_lro_init(struct octeon_device *octeon_dev, if_t ifp) in lio_tcp_lro_init() argument
1195 for (i = 0; i < octeon_dev->num_oqs; i++) { in lio_tcp_lro_init()
1197 droq = octeon_dev->droq[q_no]; in lio_tcp_lro_init()
1201 lio_dev_err(octeon_dev, "LRO Initialization failed ret %d\n", in lio_tcp_lro_init()
1212 lio_tcp_lro_free(octeon_dev, ifp); in lio_tcp_lro_init()
1218 lio_setup_nic_devices(struct octeon_device *octeon_dev) in lio_setup_nic_devices() argument
1236 lio_register_dispatch_fn(octeon_dev, LIO_OPCODE_NIC, in lio_setup_nic_devices()
1238 lio_link_info, octeon_dev); in lio_setup_nic_devices()
1240 for (i = 0; i < octeon_dev->ifcount; i++) { in lio_setup_nic_devices()
1244 sc = lio_alloc_soft_command(octeon_dev, data_size, resp_size, in lio_setup_nic_devices()
1258 num_iqueues = octeon_dev->sriov_info.num_pf_rings; in lio_setup_nic_devices()
1259 num_oqueues = octeon_dev->sriov_info.num_pf_rings; in lio_setup_nic_devices()
1260 base_queue = octeon_dev->sriov_info.pf_srn; in lio_setup_nic_devices()
1262 gmx_port_id = octeon_dev->pf_num; in lio_setup_nic_devices()
1263 ifidx_or_pfnum = octeon_dev->pf_num; in lio_setup_nic_devices()
1265 lio_dev_dbg(octeon_dev, "requesting config for interface %d, iqs %d, oqs %d\n", in lio_setup_nic_devices()
1268 ctx->octeon_id = lio_get_device_id(octeon_dev); in lio_setup_nic_devices()
1278 lio_prepare_soft_command(octeon_dev, sc, LIO_OPCODE_NIC, in lio_setup_nic_devices()
1286 retval = lio_send_soft_command(octeon_dev, sc); in lio_setup_nic_devices()
1288 lio_dev_err(octeon_dev, "iq/oq config failed status: %x\n", in lio_setup_nic_devices()
1298 lio_sleep_cond(octeon_dev, &ctx->cond); in lio_setup_nic_devices()
1302 lio_dev_err(octeon_dev, "iq/oq config failed\n"); in lio_setup_nic_devices()
1313 lio_dev_err(octeon_dev, in lio_setup_nic_devices()
1320 lio_dev_dbg(octeon_dev, in lio_setup_nic_devices()
1331 lio_dev_err(octeon_dev, "Lio allocation failed\n"); in lio_setup_nic_devices()
1343 props = &octeon_dev->props; in lio_setup_nic_devices()
1368 lio->oct_dev = octeon_dev; in lio_setup_nic_devices()
1371 lio_dev_dbg(octeon_dev, "if%d gmx: %d hw_addr: 0x%llx\n", i, in lio_setup_nic_devices()
1386 if (lio_setup_io_queues(octeon_dev, i, lio->linfo.num_txpciq, in lio_setup_nic_devices()
1388 lio_dev_err(octeon_dev, "I/O queues creation failed\n"); in lio_setup_nic_devices()
1394 lio->tx_qsize = lio_get_tx_qsize(octeon_dev, lio->txq); in lio_setup_nic_devices()
1395 lio->rx_qsize = lio_get_rx_qsize(octeon_dev, lio->rxq); in lio_setup_nic_devices()
1397 if (lio_setup_glists(octeon_dev, lio, num_iqueues)) { in lio_setup_nic_devices()
1398 lio_dev_err(octeon_dev, "Gather list allocation failed\n"); in lio_setup_nic_devices()
1402 if ((lio_hwlro == 0) && lio_tcp_lro_init(octeon_dev, ifp)) in lio_setup_nic_devices()
1420 lio_dev_dbg(octeon_dev, "Setup NIC ifidx:%d mac:%02x%02x%02x%02x%02x%02x\n", in lio_setup_nic_devices()
1443 lio_dev_dbg(octeon_dev, "NIC ifidx:%d Setup successful\n", i); in lio_setup_nic_devices()
1445 lio_free_soft_command(octeon_dev, sc); in lio_setup_nic_devices()
1466 lio_free_soft_command(octeon_dev, sc); in lio_setup_nic_devices()
1469 lio_dev_err(octeon_dev, "NIC ifidx:%d Setup failed\n", i); in lio_setup_nic_devices()
1470 lio_destroy_nic_device(octeon_dev, i); in lio_setup_nic_devices()