Lines Matching refs:lio_dev
41 lio_wait_for_ctrl_cmd(struct lio_device *lio_dev, in lio_wait_for_ctrl_cmd() argument
47 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_wait_for_ctrl_cmd()
62 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_send_rx_ctrl_cmd() local
69 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_send_rx_ctrl_cmd()
81 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_send_rx_ctrl_cmd()
82 lio_dev_err(lio_dev, "Failed to send RX Control message\n"); in lio_send_rx_ctrl_cmd()
86 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_send_rx_ctrl_cmd()
87 lio_dev_err(lio_dev, "RX Control command timed out\n"); in lio_send_rx_ctrl_cmd()
144 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_xstats_get() local
153 if (!lio_dev->intf_open) { in lio_dev_xstats_get()
154 lio_dev_err(lio_dev, "Port %d down\n", in lio_dev_xstats_get()
155 lio_dev->port_id); in lio_dev_xstats_get()
163 sc = lio_alloc_soft_command(lio_dev, 0, resp_size, 0); in lio_dev_xstats_get()
168 lio_prepare_soft_command(lio_dev, sc, LIO_OPCODE, in lio_dev_xstats_get()
174 retval = lio_send_soft_command(lio_dev, sc); in lio_dev_xstats_get()
176 lio_dev_err(lio_dev, "failed to get port stats from firmware. status: %x\n", in lio_dev_xstats_get()
182 lio_flush_iq(lio_dev, lio_dev->instr_queue[sc->iq_no]); in lio_dev_xstats_get()
183 lio_process_ordered_list(lio_dev); in lio_dev_xstats_get()
189 lio_dev_err(lio_dev, "failed to get port stats from firmware\n"); in lio_dev_xstats_get()
220 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_xstats_get_names() local
223 if (!lio_dev->intf_open) { in lio_dev_xstats_get_names()
224 lio_dev_err(lio_dev, "Port %d down\n", in lio_dev_xstats_get_names()
225 lio_dev->port_id); in lio_dev_xstats_get_names()
246 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_xstats_reset() local
251 if (!lio_dev->intf_open) { in lio_dev_xstats_reset()
252 lio_dev_err(lio_dev, "Port %d down\n", in lio_dev_xstats_reset()
253 lio_dev->port_id); in lio_dev_xstats_reset()
260 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_xstats_reset()
271 ret = lio_send_ctrl_pkt(lio_dev, &ctrl_pkt); in lio_dev_xstats_reset()
273 lio_dev_err(lio_dev, "Failed to send clear stats command\n"); in lio_dev_xstats_reset()
277 ret = lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd); in lio_dev_xstats_reset()
279 lio_dev_err(lio_dev, "Clear stats command timed out\n"); in lio_dev_xstats_reset()
293 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_stats_get() local
304 iq_no = lio_dev->linfo.txpciq[i].s.q_no; in lio_dev_stats_get()
305 txq = lio_dev->instr_queue[iq_no]; in lio_dev_stats_get()
323 oq_no = lio_dev->linfo.rxpciq[i].s.q_no; in lio_dev_stats_get()
324 droq = lio_dev->droq[oq_no]; in lio_dev_stats_get()
344 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_stats_reset() local
352 iq_no = lio_dev->linfo.txpciq[i].s.q_no; in lio_dev_stats_reset()
353 txq = lio_dev->instr_queue[iq_no]; in lio_dev_stats_reset()
361 oq_no = lio_dev->linfo.rxpciq[i].s.q_no; in lio_dev_stats_reset()
362 droq = lio_dev->droq[oq_no]; in lio_dev_stats_reset()
376 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_info_get() local
396 lio_dev_err(lio_dev, in lio_dev_info_get()
401 devinfo->max_rx_queues = lio_dev->max_rx_queues; in lio_dev_info_get()
402 devinfo->max_tx_queues = lio_dev->max_tx_queues; in lio_dev_info_get()
436 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_mtu_set() local
442 if (!lio_dev->intf_open) { in lio_dev_mtu_set()
443 lio_dev_err(lio_dev, "Port %d down, can't set MTU\n", in lio_dev_mtu_set()
444 lio_dev->port_id); in lio_dev_mtu_set()
451 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_mtu_set()
463 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_mtu_set()
464 lio_dev_err(lio_dev, "Failed to send command to change MTU\n"); in lio_dev_mtu_set()
468 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_mtu_set()
469 lio_dev_err(lio_dev, "Command to change MTU timed out\n"); in lio_dev_mtu_set()
481 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rss_reta_update() local
482 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_rss_reta_update()
488 if (!lio_dev->intf_open) { in lio_dev_rss_reta_update()
489 lio_dev_err(lio_dev, "Port %d down, can't update reta\n", in lio_dev_rss_reta_update()
490 lio_dev->port_id); in lio_dev_rss_reta_update()
495 lio_dev_err(lio_dev, in lio_dev_rss_reta_update()
504 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_rss_reta_update()
536 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_rss_reta_update()
537 lio_dev_err(lio_dev, "Failed to set rss hash\n"); in lio_dev_rss_reta_update()
541 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_rss_reta_update()
542 lio_dev_err(lio_dev, "Set rss hash timed out\n"); in lio_dev_rss_reta_update()
554 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rss_reta_query() local
555 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_rss_reta_query()
559 lio_dev_err(lio_dev, in lio_dev_rss_reta_query()
581 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rss_hash_conf_get() local
582 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_rss_hash_conf_get()
587 lio_dev_info(lio_dev, "RSS disabled in nic\n"); in lio_dev_rss_hash_conf_get()
619 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rss_hash_update() local
620 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_rss_hash_update()
625 if (!lio_dev->intf_open) { in lio_dev_rss_hash_update()
626 lio_dev_err(lio_dev, "Port %d down, can't update hash\n", in lio_dev_rss_hash_update()
627 lio_dev->port_id); in lio_dev_rss_hash_update()
634 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_rss_hash_update()
724 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_rss_hash_update()
725 lio_dev_err(lio_dev, "Failed to set rss hash\n"); in lio_dev_rss_hash_update()
729 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_rss_hash_update()
730 lio_dev_err(lio_dev, "Set rss hash timed out\n"); in lio_dev_rss_hash_update()
753 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_udp_tunnel_add() local
761 lio_dev_err(lio_dev, "Unsupported tunnel type\n"); in lio_dev_udp_tunnel_add()
768 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_udp_tunnel_add()
781 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_udp_tunnel_add()
782 lio_dev_err(lio_dev, "Failed to send VXLAN_PORT_ADD command\n"); in lio_dev_udp_tunnel_add()
786 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_udp_tunnel_add()
787 lio_dev_err(lio_dev, "VXLAN_PORT_ADD command timed out\n"); in lio_dev_udp_tunnel_add()
810 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_udp_tunnel_del() local
818 lio_dev_err(lio_dev, "Unsupported tunnel type\n"); in lio_dev_udp_tunnel_del()
825 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_udp_tunnel_del()
838 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_udp_tunnel_del()
839 lio_dev_err(lio_dev, "Failed to send VXLAN_PORT_DEL command\n"); in lio_dev_udp_tunnel_del()
843 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_udp_tunnel_del()
844 lio_dev_err(lio_dev, "VXLAN_PORT_DEL command timed out\n"); in lio_dev_udp_tunnel_del()
854 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_vlan_filter_set() local
858 if (lio_dev->linfo.vlan_is_admin_assigned) in lio_dev_vlan_filter_set()
864 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_vlan_filter_set()
877 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_vlan_filter_set()
878 lio_dev_err(lio_dev, "Failed to %s VLAN port\n", in lio_dev_vlan_filter_set()
883 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_vlan_filter_set()
884 lio_dev_err(lio_dev, "Command to %s VLAN port timed out\n", in lio_dev_vlan_filter_set()
910 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_link_update() local
921 if (lio_dev->linfo.link.s.link_up == 0) { in lio_dev_link_update()
928 switch (lio_dev->linfo.link.s.speed) { in lio_dev_link_update()
954 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_change_dev_flag() local
961 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_change_dev_flag()
971 ctrl_pkt.ncmd.s.param1 = lio_dev->ifflags; in lio_change_dev_flag()
974 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_change_dev_flag()
975 lio_dev_err(lio_dev, "Failed to send change flag message\n"); in lio_change_dev_flag()
979 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_change_dev_flag()
980 lio_dev_err(lio_dev, "Change dev flag command timed out\n"); in lio_change_dev_flag()
990 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_promiscuous_enable() local
992 if (strcmp(lio_dev->firmware_version, LIO_VF_TRUST_MIN_VERSION) < 0) { in lio_dev_promiscuous_enable()
993 lio_dev_err(lio_dev, "Require firmware version >= %s\n", in lio_dev_promiscuous_enable()
998 if (!lio_dev->intf_open) { in lio_dev_promiscuous_enable()
999 lio_dev_err(lio_dev, "Port %d down, can't enable promiscuous\n", in lio_dev_promiscuous_enable()
1000 lio_dev->port_id); in lio_dev_promiscuous_enable()
1004 lio_dev->ifflags |= LIO_IFFLAG_PROMISC; in lio_dev_promiscuous_enable()
1011 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_promiscuous_disable() local
1013 if (strcmp(lio_dev->firmware_version, LIO_VF_TRUST_MIN_VERSION) < 0) { in lio_dev_promiscuous_disable()
1014 lio_dev_err(lio_dev, "Require firmware version >= %s\n", in lio_dev_promiscuous_disable()
1019 if (!lio_dev->intf_open) { in lio_dev_promiscuous_disable()
1020 lio_dev_err(lio_dev, "Port %d down, can't disable promiscuous\n", in lio_dev_promiscuous_disable()
1021 lio_dev->port_id); in lio_dev_promiscuous_disable()
1025 lio_dev->ifflags &= ~LIO_IFFLAG_PROMISC; in lio_dev_promiscuous_disable()
1032 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_allmulticast_enable() local
1034 if (!lio_dev->intf_open) { in lio_dev_allmulticast_enable()
1035 lio_dev_err(lio_dev, "Port %d down, can't enable multicast\n", in lio_dev_allmulticast_enable()
1036 lio_dev->port_id); in lio_dev_allmulticast_enable()
1040 lio_dev->ifflags |= LIO_IFFLAG_ALLMULTI; in lio_dev_allmulticast_enable()
1047 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_allmulticast_disable() local
1049 if (!lio_dev->intf_open) { in lio_dev_allmulticast_disable()
1050 lio_dev_err(lio_dev, "Port %d down, can't disable multicast\n", in lio_dev_allmulticast_disable()
1051 lio_dev->port_id); in lio_dev_allmulticast_disable()
1055 lio_dev->ifflags &= ~LIO_IFFLAG_ALLMULTI; in lio_dev_allmulticast_disable()
1062 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rss_configure() local
1063 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_rss_configure()
1101 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_mq_rx_configure() local
1102 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_mq_rx_configure()
1148 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rx_queue_setup() local
1153 if (q_no >= lio_dev->nb_rx_queues) { in lio_dev_rx_queue_setup()
1154 lio_dev_err(lio_dev, "Invalid rx queue number %u\n", q_no); in lio_dev_rx_queue_setup()
1158 lio_dev_dbg(lio_dev, "setting up rx queue %u\n", q_no); in lio_dev_rx_queue_setup()
1160 fw_mapped_oq = lio_dev->linfo.rxpciq[q_no].s.q_no; in lio_dev_rx_queue_setup()
1171 if (lio_setup_droq(lio_dev, fw_mapped_oq, num_rx_descs, buf_size, mp, in lio_dev_rx_queue_setup()
1173 lio_dev_err(lio_dev, "droq allocation failed\n"); in lio_dev_rx_queue_setup()
1177 eth_dev->data->rx_queues[q_no] = lio_dev->droq[fw_mapped_oq]; in lio_dev_rx_queue_setup()
1202 lio_delete_droq_queue(droq->lio_dev, oq_no); in lio_dev_rx_queue_release()
1233 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_tx_queue_setup() local
1234 int fw_mapped_iq = lio_dev->linfo.txpciq[q_no].s.q_no; in lio_dev_tx_queue_setup()
1237 if (q_no >= lio_dev->nb_tx_queues) { in lio_dev_tx_queue_setup()
1238 lio_dev_err(lio_dev, "Invalid tx queue number %u\n", q_no); in lio_dev_tx_queue_setup()
1242 lio_dev_dbg(lio_dev, "setting up tx queue %u\n", q_no); in lio_dev_tx_queue_setup()
1250 retval = lio_setup_iq(lio_dev, q_no, lio_dev->linfo.txpciq[q_no], in lio_dev_tx_queue_setup()
1251 num_tx_descs, lio_dev, socket_id); in lio_dev_tx_queue_setup()
1254 lio_dev_err(lio_dev, "Runtime IQ(TxQ) creation failed.\n"); in lio_dev_tx_queue_setup()
1258 retval = lio_setup_sglists(lio_dev, q_no, fw_mapped_iq, in lio_dev_tx_queue_setup()
1259 lio_dev->instr_queue[fw_mapped_iq]->nb_desc, in lio_dev_tx_queue_setup()
1263 lio_delete_instruction_queue(lio_dev, fw_mapped_iq); in lio_dev_tx_queue_setup()
1267 eth_dev->data->tx_queues[q_no] = lio_dev->instr_queue[fw_mapped_iq]; in lio_dev_tx_queue_setup()
1296 lio_delete_instruction_queue(tq->lio_dev, fw_mapped_iq_no); in lio_dev_tx_queue_release()
1306 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_get_link_status() local
1313 if (!lio_dev->intf_open) in lio_dev_get_link_status()
1317 sc = lio_alloc_soft_command(lio_dev, 0, resp_size, 0); in lio_dev_get_link_status()
1322 lio_prepare_soft_command(lio_dev, sc, LIO_OPCODE, in lio_dev_get_link_status()
1328 if (lio_send_soft_command(lio_dev, sc) == LIO_IQ_SEND_FAILED) in lio_dev_get_link_status()
1332 lio_flush_iq(lio_dev, lio_dev->instr_queue[sc->iq_no]); in lio_dev_get_link_status()
1343 if (lio_dev->linfo.link.link_status64 != ls->link_status64) { in lio_dev_get_link_status()
1345 lio_dev_info(lio_dev, "Lowered VF MTU to %d as PF MTU dropped\n", in lio_dev_get_link_status()
1349 lio_dev->linfo.link.link_status64 = ls->link_status64; in lio_dev_get_link_status()
1367 struct lio_device *lio_dev = in lio_sync_link_state_check() local
1370 if (lio_dev->port_configured) in lio_sync_link_state_check()
1376 if (lio_dev->intf_open) in lio_sync_link_state_check()
1384 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_start() local
1388 lio_dev_info(lio_dev, "Starting port %d\n", eth_dev->data->port_id); in lio_dev_start()
1390 if (lio_dev->fn_list.enable_io_queues(lio_dev)) in lio_dev_start()
1397 lio_dev->intf_open = 1; in lio_dev_start()
1406 lio_dev->linfo.link.link_status64 = 0; in lio_dev_start()
1413 lio_dev_err(lio_dev, in lio_dev_start()
1418 while ((lio_dev->linfo.link.link_status64 == 0) && (--timeout)) in lio_dev_start()
1421 if (lio_dev->linfo.link.link_status64 == 0) { in lio_dev_start()
1436 lio_dev->intf_open = 0; in lio_dev_start()
1446 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_stop() local
1448 lio_dev_info(lio_dev, "Stopping port %d\n", eth_dev->data->port_id); in lio_dev_stop()
1450 lio_dev->intf_open = 0; in lio_dev_stop()
1458 lio_wait_for_instr_fetch(lio_dev); in lio_dev_stop()
1461 lio_dev->linfo.link.link_status64 = 0; in lio_dev_stop()
1469 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_set_link_up() local
1471 if (!lio_dev->intf_open) { in lio_dev_set_link_up()
1472 lio_dev_info(lio_dev, "Port is stopped, Start the port first\n"); in lio_dev_set_link_up()
1476 if (lio_dev->linfo.link.s.link_up) { in lio_dev_set_link_up()
1477 lio_dev_info(lio_dev, "Link is already UP\n"); in lio_dev_set_link_up()
1482 lio_dev_err(lio_dev, "Unable to set Link UP\n"); in lio_dev_set_link_up()
1486 lio_dev->linfo.link.s.link_up = 1; in lio_dev_set_link_up()
1495 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_set_link_down() local
1497 if (!lio_dev->intf_open) { in lio_dev_set_link_down()
1498 lio_dev_info(lio_dev, "Port is stopped, Start the port first\n"); in lio_dev_set_link_down()
1502 if (!lio_dev->linfo.link.s.link_up) { in lio_dev_set_link_down()
1503 lio_dev_info(lio_dev, "Link is already DOWN\n"); in lio_dev_set_link_down()
1507 lio_dev->linfo.link.s.link_up = 0; in lio_dev_set_link_down()
1511 lio_dev->linfo.link.s.link_up = 1; in lio_dev_set_link_down()
1513 lio_dev_err(lio_dev, "Unable to set Link Down\n"); in lio_dev_set_link_down()
1534 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_close() local
1540 lio_dev_info(lio_dev, "closing port %d\n", eth_dev->data->port_id); in lio_dev_close()
1542 if (lio_dev->intf_open) in lio_dev_close()
1546 lio_dev->fn_list.setup_device_regs(lio_dev); in lio_dev_close()
1548 if (lio_dev->pci_dev->kdrv == RTE_PCI_KDRV_IGB_UIO) { in lio_dev_close()
1549 cn23xx_vf_ask_pf_to_do_flr(lio_dev); in lio_dev_close()
1554 lio_dev->fn_list.free_mbox(lio_dev); in lio_dev_close()
1557 rte_free(lio_dev->glist_head); in lio_dev_close()
1558 rte_free(lio_dev->glist_lock); in lio_dev_close()
1559 lio_dev->glist_head = NULL; in lio_dev_close()
1560 lio_dev->glist_lock = NULL; in lio_dev_close()
1562 lio_dev->port_configured = 0; in lio_dev_close()
1576 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_enable_hw_tunnel_rx_checksum() local
1583 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_enable_hw_tunnel_rx_checksum()
1595 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_enable_hw_tunnel_rx_checksum()
1596 lio_dev_err(lio_dev, "Failed to send TNL_RX_CSUM command\n"); in lio_enable_hw_tunnel_rx_checksum()
1600 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) in lio_enable_hw_tunnel_rx_checksum()
1601 lio_dev_err(lio_dev, "TNL_RX_CSUM command timed out\n"); in lio_enable_hw_tunnel_rx_checksum()
1610 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_enable_hw_tunnel_tx_checksum() local
1617 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_enable_hw_tunnel_tx_checksum()
1629 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_enable_hw_tunnel_tx_checksum()
1630 lio_dev_err(lio_dev, "Failed to send TNL_TX_CSUM command\n"); in lio_enable_hw_tunnel_tx_checksum()
1634 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) in lio_enable_hw_tunnel_tx_checksum()
1635 lio_dev_err(lio_dev, "TNL_TX_CSUM command timed out\n"); in lio_enable_hw_tunnel_tx_checksum()
1642 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_send_queue_count_update() local
1646 if (strcmp(lio_dev->firmware_version, LIO_Q_RECONF_MIN_VERSION) < 0) { in lio_send_queue_count_update()
1647 lio_dev_err(lio_dev, "Require firmware version >= %s\n", in lio_send_queue_count_update()
1655 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_send_queue_count_update()
1668 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_send_queue_count_update()
1669 lio_dev_err(lio_dev, "Failed to send queue count control command\n"); in lio_send_queue_count_update()
1673 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_send_queue_count_update()
1674 lio_dev_err(lio_dev, "Queue count control command timed out\n"); in lio_send_queue_count_update()
1684 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_reconf_queues() local
1687 if (lio_dev->nb_rx_queues != num_rxq || in lio_reconf_queues()
1688 lio_dev->nb_tx_queues != num_txq) { in lio_reconf_queues()
1691 lio_dev->nb_rx_queues = num_rxq; in lio_reconf_queues()
1692 lio_dev->nb_tx_queues = num_txq; in lio_reconf_queues()
1695 if (lio_dev->intf_open) { in lio_reconf_queues()
1702 if (lio_dev->fn_list.setup_device_regs(lio_dev)) { in lio_reconf_queues()
1703 lio_dev_err(lio_dev, "Failed to configure device registers\n"); in lio_reconf_queues()
1713 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_configure() local
1731 if (lio_dev->port_configured) in lio_dev_configure()
1736 lio_dev->nb_rx_queues = eth_dev->data->nb_rx_queues; in lio_dev_configure()
1737 lio_dev->nb_tx_queues = eth_dev->data->nb_tx_queues; in lio_dev_configure()
1740 lio_dev->max_rx_queues = eth_dev->data->nb_rx_queues; in lio_dev_configure()
1741 lio_dev->max_tx_queues = eth_dev->data->nb_tx_queues; in lio_dev_configure()
1744 sc = lio_alloc_soft_command(lio_dev, 0, resp_size, 0); in lio_dev_configure()
1754 if_cfg.s.num_iqueues = lio_dev->nb_tx_queues; in lio_dev_configure()
1755 if_cfg.s.num_oqueues = lio_dev->nb_rx_queues; in lio_dev_configure()
1758 if_cfg.s.gmx_port_id = lio_dev->pf_num; in lio_dev_configure()
1760 lio_prepare_soft_command(lio_dev, sc, LIO_OPCODE, in lio_dev_configure()
1767 retval = lio_send_soft_command(lio_dev, sc); in lio_dev_configure()
1769 lio_dev_err(lio_dev, "iq/oq config failed status: %x\n", in lio_dev_configure()
1779 lio_flush_iq(lio_dev, lio_dev->instr_queue[sc->iq_no]); in lio_dev_configure()
1780 lio_process_ordered_list(lio_dev); in lio_dev_configure()
1786 lio_dev_err(lio_dev, "iq/oq config failed\n"); in lio_dev_configure()
1790 strlcpy(lio_dev->firmware_version, in lio_dev_configure()
1800 lio_dev_err(lio_dev, in lio_dev_configure()
1807 lio_dev_dbg(lio_dev, in lio_dev_configure()
1814 lio_dev->linfo.num_rxpciq = num_oqueues; in lio_dev_configure()
1815 lio_dev->linfo.num_txpciq = num_iqueues; in lio_dev_configure()
1818 lio_dev->linfo.rxpciq[i].rxpciq64 = in lio_dev_configure()
1820 lio_dev_dbg(lio_dev, "index %d OQ %d\n", in lio_dev_configure()
1821 i, lio_dev->linfo.rxpciq[i].s.q_no); in lio_dev_configure()
1825 lio_dev->linfo.txpciq[i].txpciq64 = in lio_dev_configure()
1827 lio_dev_dbg(lio_dev, "index %d IQ %d\n", in lio_dev_configure()
1828 i, lio_dev->linfo.txpciq[i].s.q_no); in lio_dev_configure()
1831 lio_dev->linfo.hw_addr = resp->cfg_info.linfo.hw_addr; in lio_dev_configure()
1832 lio_dev->linfo.gmxport = resp->cfg_info.linfo.gmxport; in lio_dev_configure()
1833 lio_dev->linfo.link.link_status64 = in lio_dev_configure()
1837 lio_swap_8B_data(&lio_dev->linfo.hw_addr, 1); in lio_dev_configure()
1839 mac[i] = *((uint8_t *)(((uint8_t *)&lio_dev->linfo.hw_addr) + in lio_dev_configure()
1850 lio_dev->glist_lock = in lio_dev_configure()
1851 rte_zmalloc(NULL, sizeof(*lio_dev->glist_lock) * num_iqueues, 0); in lio_dev_configure()
1852 if (lio_dev->glist_lock == NULL) in lio_dev_configure()
1855 lio_dev->glist_head = in lio_dev_configure()
1856 rte_zmalloc(NULL, sizeof(*lio_dev->glist_head) * num_iqueues, in lio_dev_configure()
1858 if (lio_dev->glist_head == NULL) { in lio_dev_configure()
1859 rte_free(lio_dev->glist_lock); in lio_dev_configure()
1860 lio_dev->glist_lock = NULL; in lio_dev_configure()
1866 lio_dev->port_configured = 1; in lio_dev_configure()
1871 lio_dev->fn_list.setup_device_regs(lio_dev); in lio_dev_configure()
1874 lio_free_instr_queue0(lio_dev); in lio_dev_configure()
1879 lio_dev_err(lio_dev, "Failed retval %d\n", retval); in lio_dev_configure()
1881 lio_free_instr_queue0(lio_dev); in lio_dev_configure()
1920 lio_check_pf_hs_response(void *lio_dev) in lio_check_pf_hs_response() argument
1922 struct lio_device *dev = lio_dev; in lio_check_pf_hs_response()
1930 rte_eal_alarm_set(1, lio_check_pf_hs_response, lio_dev); in lio_check_pf_hs_response()
1938 lio_chip_specific_setup(struct lio_device *lio_dev) in lio_chip_specific_setup() argument
1940 struct rte_pci_device *pdev = lio_dev->pci_dev; in lio_chip_specific_setup()
1947 lio_dev->chip_id = LIO_CN23XX_VF_VID; in lio_chip_specific_setup()
1948 ret = cn23xx_vf_setup_device(lio_dev); in lio_chip_specific_setup()
1953 lio_dev_err(lio_dev, "Unsupported Chip\n"); in lio_chip_specific_setup()
1957 lio_dev_info(lio_dev, "DEVICE : %s\n", s); in lio_chip_specific_setup()
1963 lio_first_time_init(struct lio_device *lio_dev, in lio_first_time_init() argument
1971 lio_dev->pci_dev = pdev; in lio_first_time_init()
1974 if (lio_chip_specific_setup(lio_dev)) { in lio_first_time_init()
1975 lio_dev_err(lio_dev, "Chip specific setup failed\n"); in lio_first_time_init()
1980 if (lio_setup_sc_buffer_pool(lio_dev)) { in lio_first_time_init()
1981 lio_dev_err(lio_dev, "sc buffer pool allocation failed\n"); in lio_first_time_init()
1988 lio_setup_response_list(lio_dev); in lio_first_time_init()
1990 if (lio_dev->fn_list.setup_mbox(lio_dev)) { in lio_first_time_init()
1991 lio_dev_err(lio_dev, "Mailbox setup failed\n"); in lio_first_time_init()
1996 lio_check_pf_hs_response((void *)lio_dev); in lio_first_time_init()
1999 if (cn23xx_pfvf_handshake(lio_dev)) in lio_first_time_init()
2004 cn23xx_vf_ask_pf_to_do_flr(lio_dev); in lio_first_time_init()
2009 if (lio_dev->fn_list.setup_device_regs(lio_dev)) { in lio_first_time_init()
2010 lio_dev_err(lio_dev, "Failed to configure device registers\n"); in lio_first_time_init()
2014 if (lio_setup_instr_queue0(lio_dev)) { in lio_first_time_init()
2015 lio_dev_err(lio_dev, "Failed to setup instruction queue 0\n"); in lio_first_time_init()
2019 dpdk_queues = (int)lio_dev->sriov_info.rings_per_vf; in lio_first_time_init()
2021 lio_dev->max_tx_queues = dpdk_queues; in lio_first_time_init()
2022 lio_dev->max_rx_queues = dpdk_queues; in lio_first_time_init()
2025 if (lio_dev->fn_list.enable_io_queues(lio_dev)) in lio_first_time_init()
2031 lio_free_sc_buffer_pool(lio_dev); in lio_first_time_init()
2032 if (lio_dev->mbox[0]) in lio_first_time_init()
2033 lio_dev->fn_list.free_mbox(lio_dev); in lio_first_time_init()
2034 if (lio_dev->instr_queue[0]) in lio_first_time_init()
2035 lio_free_instr_queue0(lio_dev); in lio_first_time_init()
2043 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_eth_dev_uninit() local
2051 lio_free_sc_buffer_pool(lio_dev); in lio_eth_dev_uninit()
2060 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_eth_dev_init() local
2074 lio_dev->hw_addr = pdev->mem_resource[0].addr; in lio_eth_dev_init()
2080 lio_dev->eth_dev = eth_dev; in lio_eth_dev_init()
2082 snprintf(lio_dev->dev_string, sizeof(lio_dev->dev_string), in lio_eth_dev_init()
2086 lio_dev->port_id = eth_dev->data->port_id; in lio_eth_dev_init()
2088 if (lio_first_time_init(lio_dev, pdev)) { in lio_eth_dev_init()
2089 lio_dev_err(lio_dev, "Device init failed\n"); in lio_eth_dev_init()
2096 lio_dev_err(lio_dev, in lio_eth_dev_init()
2104 rte_atomic64_set(&lio_dev->status, LIO_DEV_RUNNING); in lio_eth_dev_init()
2107 lio_dev->port_configured = 0; in lio_eth_dev_init()
2109 lio_dev->ifflags |= LIO_IFFLAG_UNICAST; in lio_eth_dev_init()