Lines Matching refs:octeon_dev

97 static int	lio_device_init(struct octeon_device *octeon_dev);
103 static int lio_setup_nic_devices(struct octeon_device *octeon_dev);
430 lio_device_init(struct octeon_device *octeon_dev) in lio_device_init() argument
439 bus = pci_get_bus(octeon_dev->device); in lio_device_init()
440 dev = pci_get_slot(octeon_dev->device); in lio_device_init()
441 function = pci_get_function(octeon_dev->device); in lio_device_init()
443 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_BEGIN_STATE); in lio_device_init()
446 if (pci_enable_busmaster(octeon_dev->device)) { in lio_device_init()
447 lio_dev_err(octeon_dev, "pci_enable_device failed\n"); in lio_device_init()
451 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_PCI_ENABLE_DONE); in lio_device_init()
454 if (lio_chip_specific_setup(octeon_dev)) { in lio_device_init()
455 lio_dev_err(octeon_dev, "Chip specific setup failed\n"); in lio_device_init()
459 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_PCI_MAP_DONE); in lio_device_init()
466 lio_register_device(octeon_dev, bus, dev, function, true); in lio_device_init()
469 octeon_dev->app_mode = LIO_DRV_INVALID_APP; in lio_device_init()
471 if (!lio_cn23xx_pf_fw_loaded(octeon_dev) && !fw_type_is_none()) { in lio_device_init()
474 if (octeon_dev->fn_list.soft_reset(octeon_dev)) in lio_device_init()
478 if (!lio_cn23xx_pf_fw_loaded(octeon_dev)) in lio_device_init()
490 if (lio_init_dispatch_list(octeon_dev)) in lio_device_init()
493 lio_register_dispatch_fn(octeon_dev, LIO_OPCODE_NIC, in lio_device_init()
495 lio_core_drv_init, octeon_dev); in lio_device_init()
496 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_DISPATCH_INIT_DONE); in lio_device_init()
498 ret = octeon_dev->fn_list.setup_device_regs(octeon_dev); in lio_device_init()
500 lio_dev_err(octeon_dev, in lio_device_init()
506 if (lio_setup_sc_buffer_pool(octeon_dev)) { in lio_device_init()
507 lio_dev_err(octeon_dev, "sc buffer pool allocation failed\n"); in lio_device_init()
511 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
514 if (lio_allocate_ioq_vector(octeon_dev)) { in lio_device_init()
515 lio_dev_err(octeon_dev, in lio_device_init()
520 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
524 octeon_dev->instr_queue[i] = in lio_device_init()
527 if (octeon_dev->instr_queue[i] == NULL) in lio_device_init()
532 if (lio_setup_instr_queue0(octeon_dev)) { in lio_device_init()
533 lio_dev_err(octeon_dev, in lio_device_init()
538 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
546 if (lio_setup_response_list(octeon_dev)) { in lio_device_init()
547 lio_dev_err(octeon_dev, "Response list allocation failed\n"); in lio_device_init()
551 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_RESP_LIST_INIT_DONE); in lio_device_init()
554 octeon_dev->droq[i] = malloc(sizeof(*octeon_dev->droq[i]), in lio_device_init()
556 if (octeon_dev->droq[i] == NULL) in lio_device_init()
560 if (lio_setup_output_queue0(octeon_dev)) { in lio_device_init()
561 lio_dev_err(octeon_dev, "Output queue initialization failed\n"); in lio_device_init()
565 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_DROQ_INIT_DONE); in lio_device_init()
570 if (lio_setup_interrupt(octeon_dev, in lio_device_init()
571 octeon_dev->sriov_info.num_pf_rings)) in lio_device_init()
575 octeon_dev->fn_list.enable_interrupt(octeon_dev, OCTEON_ALL_INTR); in lio_device_init()
577 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_INTR_SET_DONE); in lio_device_init()
588 for (j = 0; j < octeon_dev->num_oqs; j++) in lio_device_init()
589 lio_write_csr32(octeon_dev, in lio_device_init()
590 octeon_dev->droq[j]->pkts_credit_reg, in lio_device_init()
591 octeon_dev->droq[j]->max_count); in lio_device_init()
594 ret = octeon_dev->fn_list.enable_io_queues(octeon_dev); in lio_device_init()
596 lio_dev_err(octeon_dev, "Failed to enable input/output queues"); in lio_device_init()
600 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_IO_QUEUES_DONE); in lio_device_init()
603 lio_dev_dbg(octeon_dev, "Waiting for DDR initialization...\n"); in lio_device_init()
605 lio_dev_info(octeon_dev, in lio_device_init()
622 ret = lio_wait_for_ddr_init(octeon_dev, &ddr_timeout); in lio_device_init()
624 lio_dev_err(octeon_dev, in lio_device_init()
630 if (lio_wait_for_bootloader(octeon_dev, 1100)) { in lio_device_init()
631 lio_dev_err(octeon_dev, "Board not responding\n"); in lio_device_init()
636 ret = lio_console_send_cmd(octeon_dev, bootcmd, 50); in lio_device_init()
638 lio_dev_dbg(octeon_dev, "Initializing consoles\n"); in lio_device_init()
639 ret = lio_init_consoles(octeon_dev); in lio_device_init()
641 lio_dev_err(octeon_dev, "Could not access board consoles\n"); in lio_device_init()
651 ret = lio_add_console(octeon_dev, 0, dbg_enb); in lio_device_init()
654 lio_dev_err(octeon_dev, "Could not access board console\n"); in lio_device_init()
661 octeon_dev->console[0].print = lio_dbg_console_print; in lio_device_init()
664 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
667 lio_dev_dbg(octeon_dev, "Loading firmware\n"); in lio_device_init()
669 ret = lio_load_firmware(octeon_dev); in lio_device_init()
671 lio_dev_err(octeon_dev, "Could not load firmware to board\n"); in lio_device_init()
676 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_HOST_OK); in lio_device_init()
1172 lio_tcp_lro_free(struct octeon_device *octeon_dev, if_t ifp) in lio_tcp_lro_free() argument
1179 for (i = 0; i < octeon_dev->num_oqs; i++) { in lio_tcp_lro_free()
1181 droq = octeon_dev->droq[q_no]; in lio_tcp_lro_free()
1190 lio_tcp_lro_init(struct octeon_device *octeon_dev, if_t ifp) in lio_tcp_lro_init() argument
1197 for (i = 0; i < octeon_dev->num_oqs; i++) { in lio_tcp_lro_init()
1199 droq = octeon_dev->droq[q_no]; in lio_tcp_lro_init()
1203 lio_dev_err(octeon_dev, "LRO Initialization failed ret %d\n", in lio_tcp_lro_init()
1214 lio_tcp_lro_free(octeon_dev, ifp); in lio_tcp_lro_init()
1220 lio_setup_nic_devices(struct octeon_device *octeon_dev) in lio_setup_nic_devices() argument
1238 lio_register_dispatch_fn(octeon_dev, LIO_OPCODE_NIC, in lio_setup_nic_devices()
1240 lio_link_info, octeon_dev); in lio_setup_nic_devices()
1242 for (i = 0; i < octeon_dev->ifcount; i++) { in lio_setup_nic_devices()
1246 sc = lio_alloc_soft_command(octeon_dev, data_size, resp_size, in lio_setup_nic_devices()
1260 num_iqueues = octeon_dev->sriov_info.num_pf_rings; in lio_setup_nic_devices()
1261 num_oqueues = octeon_dev->sriov_info.num_pf_rings; in lio_setup_nic_devices()
1262 base_queue = octeon_dev->sriov_info.pf_srn; in lio_setup_nic_devices()
1264 gmx_port_id = octeon_dev->pf_num; in lio_setup_nic_devices()
1265 ifidx_or_pfnum = octeon_dev->pf_num; in lio_setup_nic_devices()
1267 lio_dev_dbg(octeon_dev, "requesting config for interface %d, iqs %d, oqs %d\n", in lio_setup_nic_devices()
1270 ctx->octeon_id = lio_get_device_id(octeon_dev); in lio_setup_nic_devices()
1280 lio_prepare_soft_command(octeon_dev, sc, LIO_OPCODE_NIC, in lio_setup_nic_devices()
1288 retval = lio_send_soft_command(octeon_dev, sc); in lio_setup_nic_devices()
1290 lio_dev_err(octeon_dev, "iq/oq config failed status: %x\n", in lio_setup_nic_devices()
1300 lio_sleep_cond(octeon_dev, &ctx->cond); in lio_setup_nic_devices()
1304 lio_dev_err(octeon_dev, "iq/oq config failed\n"); in lio_setup_nic_devices()
1315 lio_dev_err(octeon_dev, in lio_setup_nic_devices()
1322 lio_dev_dbg(octeon_dev, in lio_setup_nic_devices()
1333 lio_dev_err(octeon_dev, "Lio allocation failed\n"); in lio_setup_nic_devices()
1345 props = &octeon_dev->props; in lio_setup_nic_devices()
1370 lio->oct_dev = octeon_dev; in lio_setup_nic_devices()
1373 lio_dev_dbg(octeon_dev, "if%d gmx: %d hw_addr: 0x%llx\n", i, in lio_setup_nic_devices()
1390 if (lio_setup_io_queues(octeon_dev, i, lio->linfo.num_txpciq, in lio_setup_nic_devices()
1392 lio_dev_err(octeon_dev, "I/O queues creation failed\n"); in lio_setup_nic_devices()
1398 lio->tx_qsize = lio_get_tx_qsize(octeon_dev, lio->txq); in lio_setup_nic_devices()
1399 lio->rx_qsize = lio_get_rx_qsize(octeon_dev, lio->rxq); in lio_setup_nic_devices()
1401 if (lio_setup_glists(octeon_dev, lio, num_iqueues)) { in lio_setup_nic_devices()
1402 lio_dev_err(octeon_dev, "Gather list allocation failed\n"); in lio_setup_nic_devices()
1406 if ((lio_hwlro == 0) && lio_tcp_lro_init(octeon_dev, ifp)) in lio_setup_nic_devices()
1424 lio_dev_dbg(octeon_dev, "Setup NIC ifidx:%d mac:%02x%02x%02x%02x%02x%02x\n", in lio_setup_nic_devices()
1450 lio_dev_dbg(octeon_dev, "NIC ifidx:%d Setup successful\n", i); in lio_setup_nic_devices()
1452 lio_free_soft_command(octeon_dev, sc); in lio_setup_nic_devices()
1473 lio_free_soft_command(octeon_dev, sc); in lio_setup_nic_devices()
1476 lio_dev_err(octeon_dev, "NIC ifidx:%d Setup failed\n", i); in lio_setup_nic_devices()
1477 lio_destroy_nic_device(octeon_dev, i); in lio_setup_nic_devices()