Lines Matching refs:octeon_dev
98 static int lio_device_init(struct octeon_device *octeon_dev);
104 static int lio_setup_nic_devices(struct octeon_device *octeon_dev);
434 lio_device_init(struct octeon_device *octeon_dev) in lio_device_init() argument
443 bus = pci_get_bus(octeon_dev->device); in lio_device_init()
444 dev = pci_get_slot(octeon_dev->device); in lio_device_init()
445 function = pci_get_function(octeon_dev->device); in lio_device_init()
447 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_BEGIN_STATE); in lio_device_init()
450 if (pci_enable_busmaster(octeon_dev->device)) { in lio_device_init()
451 lio_dev_err(octeon_dev, "pci_enable_device failed\n"); in lio_device_init()
455 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_PCI_ENABLE_DONE); in lio_device_init()
458 if (lio_chip_specific_setup(octeon_dev)) { in lio_device_init()
459 lio_dev_err(octeon_dev, "Chip specific setup failed\n"); in lio_device_init()
463 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_PCI_MAP_DONE); in lio_device_init()
470 lio_register_device(octeon_dev, bus, dev, function, true); in lio_device_init()
473 octeon_dev->app_mode = LIO_DRV_INVALID_APP; in lio_device_init()
475 if (!lio_cn23xx_pf_fw_loaded(octeon_dev) && !fw_type_is_none()) { in lio_device_init()
478 if (octeon_dev->fn_list.soft_reset(octeon_dev)) in lio_device_init()
482 if (!lio_cn23xx_pf_fw_loaded(octeon_dev)) in lio_device_init()
494 if (lio_init_dispatch_list(octeon_dev)) in lio_device_init()
497 lio_register_dispatch_fn(octeon_dev, LIO_OPCODE_NIC, in lio_device_init()
499 lio_core_drv_init, octeon_dev); in lio_device_init()
500 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_DISPATCH_INIT_DONE); in lio_device_init()
502 ret = octeon_dev->fn_list.setup_device_regs(octeon_dev); in lio_device_init()
504 lio_dev_err(octeon_dev, in lio_device_init()
510 if (lio_setup_sc_buffer_pool(octeon_dev)) { in lio_device_init()
511 lio_dev_err(octeon_dev, "sc buffer pool allocation failed\n"); in lio_device_init()
515 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
518 if (lio_allocate_ioq_vector(octeon_dev)) { in lio_device_init()
519 lio_dev_err(octeon_dev, in lio_device_init()
524 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
528 octeon_dev->instr_queue[i] = in lio_device_init()
531 if (octeon_dev->instr_queue[i] == NULL) in lio_device_init()
536 if (lio_setup_instr_queue0(octeon_dev)) { in lio_device_init()
537 lio_dev_err(octeon_dev, in lio_device_init()
542 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
550 if (lio_setup_response_list(octeon_dev)) { in lio_device_init()
551 lio_dev_err(octeon_dev, "Response list allocation failed\n"); in lio_device_init()
555 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_RESP_LIST_INIT_DONE); in lio_device_init()
558 octeon_dev->droq[i] = malloc(sizeof(*octeon_dev->droq[i]), in lio_device_init()
560 if (octeon_dev->droq[i] == NULL) in lio_device_init()
564 if (lio_setup_output_queue0(octeon_dev)) { in lio_device_init()
565 lio_dev_err(octeon_dev, "Output queue initialization failed\n"); in lio_device_init()
569 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_DROQ_INIT_DONE); in lio_device_init()
574 if (lio_setup_interrupt(octeon_dev, in lio_device_init()
575 octeon_dev->sriov_info.num_pf_rings)) in lio_device_init()
579 octeon_dev->fn_list.enable_interrupt(octeon_dev, OCTEON_ALL_INTR); in lio_device_init()
581 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_INTR_SET_DONE); in lio_device_init()
592 for (j = 0; j < octeon_dev->num_oqs; j++) in lio_device_init()
593 lio_write_csr32(octeon_dev, in lio_device_init()
594 octeon_dev->droq[j]->pkts_credit_reg, in lio_device_init()
595 octeon_dev->droq[j]->max_count); in lio_device_init()
598 ret = octeon_dev->fn_list.enable_io_queues(octeon_dev); in lio_device_init()
600 lio_dev_err(octeon_dev, "Failed to enable input/output queues"); in lio_device_init()
604 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_IO_QUEUES_DONE); in lio_device_init()
607 lio_dev_dbg(octeon_dev, "Waiting for DDR initialization...\n"); in lio_device_init()
609 lio_dev_info(octeon_dev, in lio_device_init()
626 ret = lio_wait_for_ddr_init(octeon_dev, &ddr_timeout); in lio_device_init()
628 lio_dev_err(octeon_dev, in lio_device_init()
634 if (lio_wait_for_bootloader(octeon_dev, 1100)) { in lio_device_init()
635 lio_dev_err(octeon_dev, "Board not responding\n"); in lio_device_init()
640 ret = lio_console_send_cmd(octeon_dev, bootcmd, 50); in lio_device_init()
642 lio_dev_dbg(octeon_dev, "Initializing consoles\n"); in lio_device_init()
643 ret = lio_init_consoles(octeon_dev); in lio_device_init()
645 lio_dev_err(octeon_dev, "Could not access board consoles\n"); in lio_device_init()
655 ret = lio_add_console(octeon_dev, 0, dbg_enb); in lio_device_init()
658 lio_dev_err(octeon_dev, "Could not access board console\n"); in lio_device_init()
665 octeon_dev->console[0].print = lio_dbg_console_print; in lio_device_init()
668 atomic_store_rel_int(&octeon_dev->status, in lio_device_init()
671 lio_dev_dbg(octeon_dev, "Loading firmware\n"); in lio_device_init()
673 ret = lio_load_firmware(octeon_dev); in lio_device_init()
675 lio_dev_err(octeon_dev, "Could not load firmware to board\n"); in lio_device_init()
680 atomic_store_rel_int(&octeon_dev->status, LIO_DEV_HOST_OK); in lio_device_init()
1177 lio_tcp_lro_free(struct octeon_device *octeon_dev, struct ifnet *ifp) in lio_tcp_lro_free() argument
1184 for (i = 0; i < octeon_dev->num_oqs; i++) { in lio_tcp_lro_free()
1186 droq = octeon_dev->droq[q_no]; in lio_tcp_lro_free()
1195 lio_tcp_lro_init(struct octeon_device *octeon_dev, struct ifnet *ifp) in lio_tcp_lro_init() argument
1202 for (i = 0; i < octeon_dev->num_oqs; i++) { in lio_tcp_lro_init()
1204 droq = octeon_dev->droq[q_no]; in lio_tcp_lro_init()
1208 lio_dev_err(octeon_dev, "LRO Initialization failed ret %d\n", in lio_tcp_lro_init()
1219 lio_tcp_lro_free(octeon_dev, ifp); in lio_tcp_lro_init()
1225 lio_setup_nic_devices(struct octeon_device *octeon_dev) in lio_setup_nic_devices() argument
1243 lio_register_dispatch_fn(octeon_dev, LIO_OPCODE_NIC, in lio_setup_nic_devices()
1245 lio_link_info, octeon_dev); in lio_setup_nic_devices()
1247 for (i = 0; i < octeon_dev->ifcount; i++) { in lio_setup_nic_devices()
1251 sc = lio_alloc_soft_command(octeon_dev, data_size, resp_size, in lio_setup_nic_devices()
1265 num_iqueues = octeon_dev->sriov_info.num_pf_rings; in lio_setup_nic_devices()
1266 num_oqueues = octeon_dev->sriov_info.num_pf_rings; in lio_setup_nic_devices()
1267 base_queue = octeon_dev->sriov_info.pf_srn; in lio_setup_nic_devices()
1269 gmx_port_id = octeon_dev->pf_num; in lio_setup_nic_devices()
1270 ifidx_or_pfnum = octeon_dev->pf_num; in lio_setup_nic_devices()
1272 lio_dev_dbg(octeon_dev, "requesting config for interface %d, iqs %d, oqs %d\n", in lio_setup_nic_devices()
1275 ctx->octeon_id = lio_get_device_id(octeon_dev); in lio_setup_nic_devices()
1285 lio_prepare_soft_command(octeon_dev, sc, LIO_OPCODE_NIC, in lio_setup_nic_devices()
1293 retval = lio_send_soft_command(octeon_dev, sc); in lio_setup_nic_devices()
1295 lio_dev_err(octeon_dev, "iq/oq config failed status: %x\n", in lio_setup_nic_devices()
1305 lio_sleep_cond(octeon_dev, &ctx->cond); in lio_setup_nic_devices()
1309 lio_dev_err(octeon_dev, "iq/oq config failed\n"); in lio_setup_nic_devices()
1320 lio_dev_err(octeon_dev, in lio_setup_nic_devices()
1327 lio_dev_dbg(octeon_dev, in lio_setup_nic_devices()
1336 lio_dev_err(octeon_dev, "Device allocation failed\n"); in lio_setup_nic_devices()
1343 lio_dev_err(octeon_dev, "Lio allocation failed\n"); in lio_setup_nic_devices()
1355 props = &octeon_dev->props; in lio_setup_nic_devices()
1380 lio->oct_dev = octeon_dev; in lio_setup_nic_devices()
1383 lio_dev_dbg(octeon_dev, "if%d gmx: %d hw_addr: 0x%llx\n", i, in lio_setup_nic_devices()
1400 if (lio_setup_io_queues(octeon_dev, i, lio->linfo.num_txpciq, in lio_setup_nic_devices()
1402 lio_dev_err(octeon_dev, "I/O queues creation failed\n"); in lio_setup_nic_devices()
1408 lio->tx_qsize = lio_get_tx_qsize(octeon_dev, lio->txq); in lio_setup_nic_devices()
1409 lio->rx_qsize = lio_get_rx_qsize(octeon_dev, lio->rxq); in lio_setup_nic_devices()
1411 if (lio_setup_glists(octeon_dev, lio, num_iqueues)) { in lio_setup_nic_devices()
1412 lio_dev_err(octeon_dev, "Gather list allocation failed\n"); in lio_setup_nic_devices()
1416 if ((lio_hwlro == 0) && lio_tcp_lro_init(octeon_dev, ifp)) in lio_setup_nic_devices()
1434 lio_dev_dbg(octeon_dev, "Setup NIC ifidx:%d mac:%02x%02x%02x%02x%02x%02x\n", in lio_setup_nic_devices()
1460 lio_dev_dbg(octeon_dev, "NIC ifidx:%d Setup successful\n", i); in lio_setup_nic_devices()
1462 lio_free_soft_command(octeon_dev, sc); in lio_setup_nic_devices()
1483 lio_free_soft_command(octeon_dev, sc); in lio_setup_nic_devices()
1486 lio_dev_err(octeon_dev, "NIC ifidx:%d Setup failed\n", i); in lio_setup_nic_devices()
1487 lio_destroy_nic_device(octeon_dev, i); in lio_setup_nic_devices()