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