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
437 uint16_t pf_mtu = lio_dev->linfo.link.s.mtu; in lio_dev_mtu_set()
444 if (!lio_dev->intf_open) { in lio_dev_mtu_set()
445 lio_dev_err(lio_dev, "Port %d down, can't set MTU\n", in lio_dev_mtu_set()
446 lio_dev->port_id); in lio_dev_mtu_set()
454 lio_dev_err(lio_dev, "VF MTU should be >= %d and <= %d\n", in lio_dev_mtu_set()
462 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_mtu_set()
474 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_mtu_set()
475 lio_dev_err(lio_dev, "Failed to send command to change MTU\n"); in lio_dev_mtu_set()
479 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_mtu_set()
480 lio_dev_err(lio_dev, "Command to change MTU timed out\n"); in lio_dev_mtu_set()
502 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rss_reta_update() local
503 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_rss_reta_update()
509 if (!lio_dev->intf_open) { in lio_dev_rss_reta_update()
510 lio_dev_err(lio_dev, "Port %d down, can't update reta\n", in lio_dev_rss_reta_update()
511 lio_dev->port_id); in lio_dev_rss_reta_update()
516 lio_dev_err(lio_dev, in lio_dev_rss_reta_update()
525 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_rss_reta_update()
557 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_rss_reta_update()
558 lio_dev_err(lio_dev, "Failed to set rss hash\n"); in lio_dev_rss_reta_update()
562 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_rss_reta_update()
563 lio_dev_err(lio_dev, "Set rss hash timed out\n"); in lio_dev_rss_reta_update()
575 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rss_reta_query() local
576 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_rss_reta_query()
580 lio_dev_err(lio_dev, in lio_dev_rss_reta_query()
602 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rss_hash_conf_get() local
603 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_rss_hash_conf_get()
608 lio_dev_info(lio_dev, "RSS disabled in nic\n"); in lio_dev_rss_hash_conf_get()
640 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rss_hash_update() local
641 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_rss_hash_update()
646 if (!lio_dev->intf_open) { in lio_dev_rss_hash_update()
647 lio_dev_err(lio_dev, "Port %d down, can't update hash\n", in lio_dev_rss_hash_update()
648 lio_dev->port_id); in lio_dev_rss_hash_update()
655 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_rss_hash_update()
745 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_rss_hash_update()
746 lio_dev_err(lio_dev, "Failed to set rss hash\n"); in lio_dev_rss_hash_update()
750 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_rss_hash_update()
751 lio_dev_err(lio_dev, "Set rss hash timed out\n"); in lio_dev_rss_hash_update()
774 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_udp_tunnel_add() local
782 lio_dev_err(lio_dev, "Unsupported tunnel type\n"); in lio_dev_udp_tunnel_add()
789 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_udp_tunnel_add()
802 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_udp_tunnel_add()
803 lio_dev_err(lio_dev, "Failed to send VXLAN_PORT_ADD command\n"); in lio_dev_udp_tunnel_add()
807 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_udp_tunnel_add()
808 lio_dev_err(lio_dev, "VXLAN_PORT_ADD command timed out\n"); in lio_dev_udp_tunnel_add()
831 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_udp_tunnel_del() local
839 lio_dev_err(lio_dev, "Unsupported tunnel type\n"); in lio_dev_udp_tunnel_del()
846 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_udp_tunnel_del()
859 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_udp_tunnel_del()
860 lio_dev_err(lio_dev, "Failed to send VXLAN_PORT_DEL command\n"); in lio_dev_udp_tunnel_del()
864 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_udp_tunnel_del()
865 lio_dev_err(lio_dev, "VXLAN_PORT_DEL command timed out\n"); in lio_dev_udp_tunnel_del()
875 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_vlan_filter_set() local
879 if (lio_dev->linfo.vlan_is_admin_assigned) in lio_dev_vlan_filter_set()
885 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_dev_vlan_filter_set()
898 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_dev_vlan_filter_set()
899 lio_dev_err(lio_dev, "Failed to %s VLAN port\n", in lio_dev_vlan_filter_set()
904 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_dev_vlan_filter_set()
905 lio_dev_err(lio_dev, "Command to %s VLAN port timed out\n", in lio_dev_vlan_filter_set()
931 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_link_update() local
942 if (lio_dev->linfo.link.s.link_up == 0) { in lio_dev_link_update()
949 switch (lio_dev->linfo.link.s.speed) { in lio_dev_link_update()
975 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_change_dev_flag() local
982 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_change_dev_flag()
992 ctrl_pkt.ncmd.s.param1 = lio_dev->ifflags; in lio_change_dev_flag()
995 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_change_dev_flag()
996 lio_dev_err(lio_dev, "Failed to send change flag message\n"); in lio_change_dev_flag()
1000 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_change_dev_flag()
1001 lio_dev_err(lio_dev, "Change dev flag command timed out\n"); in lio_change_dev_flag()
1011 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_promiscuous_enable() local
1013 if (strcmp(lio_dev->firmware_version, LIO_VF_TRUST_MIN_VERSION) < 0) { in lio_dev_promiscuous_enable()
1014 lio_dev_err(lio_dev, "Require firmware version >= %s\n", in lio_dev_promiscuous_enable()
1019 if (!lio_dev->intf_open) { in lio_dev_promiscuous_enable()
1020 lio_dev_err(lio_dev, "Port %d down, can't enable promiscuous\n", in lio_dev_promiscuous_enable()
1021 lio_dev->port_id); in lio_dev_promiscuous_enable()
1025 lio_dev->ifflags |= LIO_IFFLAG_PROMISC; in lio_dev_promiscuous_enable()
1032 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_promiscuous_disable() local
1034 if (strcmp(lio_dev->firmware_version, LIO_VF_TRUST_MIN_VERSION) < 0) { in lio_dev_promiscuous_disable()
1035 lio_dev_err(lio_dev, "Require firmware version >= %s\n", in lio_dev_promiscuous_disable()
1040 if (!lio_dev->intf_open) { in lio_dev_promiscuous_disable()
1041 lio_dev_err(lio_dev, "Port %d down, can't disable promiscuous\n", in lio_dev_promiscuous_disable()
1042 lio_dev->port_id); in lio_dev_promiscuous_disable()
1046 lio_dev->ifflags &= ~LIO_IFFLAG_PROMISC; in lio_dev_promiscuous_disable()
1053 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_allmulticast_enable() local
1055 if (!lio_dev->intf_open) { in lio_dev_allmulticast_enable()
1056 lio_dev_err(lio_dev, "Port %d down, can't enable multicast\n", in lio_dev_allmulticast_enable()
1057 lio_dev->port_id); in lio_dev_allmulticast_enable()
1061 lio_dev->ifflags |= LIO_IFFLAG_ALLMULTI; in lio_dev_allmulticast_enable()
1068 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_allmulticast_disable() local
1070 if (!lio_dev->intf_open) { in lio_dev_allmulticast_disable()
1071 lio_dev_err(lio_dev, "Port %d down, can't disable multicast\n", in lio_dev_allmulticast_disable()
1072 lio_dev->port_id); in lio_dev_allmulticast_disable()
1076 lio_dev->ifflags &= ~LIO_IFFLAG_ALLMULTI; in lio_dev_allmulticast_disable()
1083 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rss_configure() local
1084 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_rss_configure()
1122 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_mq_rx_configure() local
1123 struct lio_rss_ctx *rss_state = &lio_dev->rss_state; in lio_dev_mq_rx_configure()
1169 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_rx_queue_setup() local
1174 if (q_no >= lio_dev->nb_rx_queues) { in lio_dev_rx_queue_setup()
1175 lio_dev_err(lio_dev, "Invalid rx queue number %u\n", q_no); in lio_dev_rx_queue_setup()
1179 lio_dev_dbg(lio_dev, "setting up rx queue %u\n", q_no); in lio_dev_rx_queue_setup()
1181 fw_mapped_oq = lio_dev->linfo.rxpciq[q_no].s.q_no; in lio_dev_rx_queue_setup()
1192 if (lio_setup_droq(lio_dev, fw_mapped_oq, num_rx_descs, buf_size, mp, in lio_dev_rx_queue_setup()
1194 lio_dev_err(lio_dev, "droq allocation failed\n"); in lio_dev_rx_queue_setup()
1198 eth_dev->data->rx_queues[q_no] = lio_dev->droq[fw_mapped_oq]; in lio_dev_rx_queue_setup()
1221 lio_delete_droq_queue(droq->lio_dev, oq_no); in lio_dev_rx_queue_release()
1252 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_tx_queue_setup() local
1253 int fw_mapped_iq = lio_dev->linfo.txpciq[q_no].s.q_no; in lio_dev_tx_queue_setup()
1256 if (q_no >= lio_dev->nb_tx_queues) { in lio_dev_tx_queue_setup()
1257 lio_dev_err(lio_dev, "Invalid tx queue number %u\n", q_no); in lio_dev_tx_queue_setup()
1261 lio_dev_dbg(lio_dev, "setting up tx queue %u\n", q_no); in lio_dev_tx_queue_setup()
1269 retval = lio_setup_iq(lio_dev, q_no, lio_dev->linfo.txpciq[q_no], in lio_dev_tx_queue_setup()
1270 num_tx_descs, lio_dev, socket_id); in lio_dev_tx_queue_setup()
1273 lio_dev_err(lio_dev, "Runtime IQ(TxQ) creation failed.\n"); in lio_dev_tx_queue_setup()
1277 retval = lio_setup_sglists(lio_dev, q_no, fw_mapped_iq, in lio_dev_tx_queue_setup()
1278 lio_dev->instr_queue[fw_mapped_iq]->nb_desc, in lio_dev_tx_queue_setup()
1282 lio_delete_instruction_queue(lio_dev, fw_mapped_iq); in lio_dev_tx_queue_setup()
1286 eth_dev->data->tx_queues[q_no] = lio_dev->instr_queue[fw_mapped_iq]; in lio_dev_tx_queue_setup()
1313 lio_delete_instruction_queue(tq->lio_dev, fw_mapped_iq_no); in lio_dev_tx_queue_release()
1323 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_get_link_status() local
1330 if (!lio_dev->intf_open) in lio_dev_get_link_status()
1334 sc = lio_alloc_soft_command(lio_dev, 0, resp_size, 0); in lio_dev_get_link_status()
1339 lio_prepare_soft_command(lio_dev, sc, LIO_OPCODE, in lio_dev_get_link_status()
1345 if (lio_send_soft_command(lio_dev, sc) == LIO_IQ_SEND_FAILED) in lio_dev_get_link_status()
1349 lio_flush_iq(lio_dev, lio_dev->instr_queue[sc->iq_no]); in lio_dev_get_link_status()
1360 if (lio_dev->linfo.link.link_status64 != ls->link_status64) { in lio_dev_get_link_status()
1362 lio_dev_info(lio_dev, "Lowered VF MTU to %d as PF MTU dropped\n", in lio_dev_get_link_status()
1366 lio_dev->linfo.link.link_status64 = ls->link_status64; in lio_dev_get_link_status()
1384 struct lio_device *lio_dev = in lio_sync_link_state_check() local
1387 if (lio_dev->port_configured) in lio_sync_link_state_check()
1393 if (lio_dev->intf_open) in lio_sync_link_state_check()
1403 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_start() local
1407 lio_dev_info(lio_dev, "Starting port %d\n", eth_dev->data->port_id); in lio_dev_start()
1409 if (lio_dev->fn_list.enable_io_queues(lio_dev)) in lio_dev_start()
1416 lio_dev->intf_open = 1; in lio_dev_start()
1425 lio_dev->linfo.link.link_status64 = 0; in lio_dev_start()
1432 lio_dev_err(lio_dev, in lio_dev_start()
1437 while ((lio_dev->linfo.link.link_status64 == 0) && (--timeout)) in lio_dev_start()
1440 if (lio_dev->linfo.link.link_status64 == 0) { in lio_dev_start()
1461 lio_dev->intf_open = 0; in lio_dev_start()
1471 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_stop() local
1473 lio_dev_info(lio_dev, "Stopping port %d\n", eth_dev->data->port_id); in lio_dev_stop()
1475 lio_dev->intf_open = 0; in lio_dev_stop()
1483 lio_wait_for_instr_fetch(lio_dev); in lio_dev_stop()
1486 lio_dev->linfo.link.link_status64 = 0; in lio_dev_stop()
1494 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_set_link_up() local
1496 if (!lio_dev->intf_open) { in lio_dev_set_link_up()
1497 lio_dev_info(lio_dev, "Port is stopped, Start the port first\n"); in lio_dev_set_link_up()
1501 if (lio_dev->linfo.link.s.link_up) { in lio_dev_set_link_up()
1502 lio_dev_info(lio_dev, "Link is already UP\n"); in lio_dev_set_link_up()
1507 lio_dev_err(lio_dev, "Unable to set Link UP\n"); in lio_dev_set_link_up()
1511 lio_dev->linfo.link.s.link_up = 1; in lio_dev_set_link_up()
1520 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_set_link_down() local
1522 if (!lio_dev->intf_open) { in lio_dev_set_link_down()
1523 lio_dev_info(lio_dev, "Port is stopped, Start the port first\n"); in lio_dev_set_link_down()
1527 if (!lio_dev->linfo.link.s.link_up) { in lio_dev_set_link_down()
1528 lio_dev_info(lio_dev, "Link is already DOWN\n"); in lio_dev_set_link_down()
1532 lio_dev->linfo.link.s.link_up = 0; in lio_dev_set_link_down()
1536 lio_dev->linfo.link.s.link_up = 1; in lio_dev_set_link_down()
1538 lio_dev_err(lio_dev, "Unable to set Link Down\n"); in lio_dev_set_link_down()
1559 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_close() local
1565 lio_dev_info(lio_dev, "closing port %d\n", eth_dev->data->port_id); in lio_dev_close()
1567 if (lio_dev->intf_open) in lio_dev_close()
1571 lio_dev->fn_list.setup_device_regs(lio_dev); in lio_dev_close()
1573 if (lio_dev->pci_dev->kdrv == RTE_PCI_KDRV_IGB_UIO) { in lio_dev_close()
1574 cn23xx_vf_ask_pf_to_do_flr(lio_dev); in lio_dev_close()
1579 lio_dev->fn_list.free_mbox(lio_dev); in lio_dev_close()
1582 rte_free(lio_dev->glist_head); in lio_dev_close()
1583 rte_free(lio_dev->glist_lock); in lio_dev_close()
1584 lio_dev->glist_head = NULL; in lio_dev_close()
1585 lio_dev->glist_lock = NULL; in lio_dev_close()
1587 lio_dev->port_configured = 0; in lio_dev_close()
1601 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_enable_hw_tunnel_rx_checksum() local
1608 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_enable_hw_tunnel_rx_checksum()
1620 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_enable_hw_tunnel_rx_checksum()
1621 lio_dev_err(lio_dev, "Failed to send TNL_RX_CSUM command\n"); in lio_enable_hw_tunnel_rx_checksum()
1625 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) in lio_enable_hw_tunnel_rx_checksum()
1626 lio_dev_err(lio_dev, "TNL_RX_CSUM command timed out\n"); in lio_enable_hw_tunnel_rx_checksum()
1635 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_enable_hw_tunnel_tx_checksum() local
1642 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_enable_hw_tunnel_tx_checksum()
1654 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_enable_hw_tunnel_tx_checksum()
1655 lio_dev_err(lio_dev, "Failed to send TNL_TX_CSUM command\n"); in lio_enable_hw_tunnel_tx_checksum()
1659 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) in lio_enable_hw_tunnel_tx_checksum()
1660 lio_dev_err(lio_dev, "TNL_TX_CSUM command timed out\n"); in lio_enable_hw_tunnel_tx_checksum()
1667 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_send_queue_count_update() local
1671 if (strcmp(lio_dev->firmware_version, LIO_Q_RECONF_MIN_VERSION) < 0) { in lio_send_queue_count_update()
1672 lio_dev_err(lio_dev, "Require firmware version >= %s\n", in lio_send_queue_count_update()
1680 lio_flush_iq(lio_dev, lio_dev->instr_queue[0]); in lio_send_queue_count_update()
1693 if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) { in lio_send_queue_count_update()
1694 lio_dev_err(lio_dev, "Failed to send queue count control command\n"); in lio_send_queue_count_update()
1698 if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) { in lio_send_queue_count_update()
1699 lio_dev_err(lio_dev, "Queue count control command timed out\n"); in lio_send_queue_count_update()
1709 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_reconf_queues() local
1712 if (lio_dev->nb_rx_queues != num_rxq || in lio_reconf_queues()
1713 lio_dev->nb_tx_queues != num_txq) { in lio_reconf_queues()
1716 lio_dev->nb_rx_queues = num_rxq; in lio_reconf_queues()
1717 lio_dev->nb_tx_queues = num_txq; in lio_reconf_queues()
1720 if (lio_dev->intf_open) { in lio_reconf_queues()
1727 if (lio_dev->fn_list.setup_device_regs(lio_dev)) { in lio_reconf_queues()
1728 lio_dev_err(lio_dev, "Failed to configure device registers\n"); in lio_reconf_queues()
1738 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_dev_configure() local
1756 if (lio_dev->port_configured) in lio_dev_configure()
1761 lio_dev->nb_rx_queues = eth_dev->data->nb_rx_queues; in lio_dev_configure()
1762 lio_dev->nb_tx_queues = eth_dev->data->nb_tx_queues; in lio_dev_configure()
1765 lio_dev->max_rx_queues = eth_dev->data->nb_rx_queues; in lio_dev_configure()
1766 lio_dev->max_tx_queues = eth_dev->data->nb_tx_queues; in lio_dev_configure()
1769 sc = lio_alloc_soft_command(lio_dev, 0, resp_size, 0); in lio_dev_configure()
1779 if_cfg.s.num_iqueues = lio_dev->nb_tx_queues; in lio_dev_configure()
1780 if_cfg.s.num_oqueues = lio_dev->nb_rx_queues; in lio_dev_configure()
1783 if_cfg.s.gmx_port_id = lio_dev->pf_num; in lio_dev_configure()
1785 lio_prepare_soft_command(lio_dev, sc, LIO_OPCODE, in lio_dev_configure()
1792 retval = lio_send_soft_command(lio_dev, sc); in lio_dev_configure()
1794 lio_dev_err(lio_dev, "iq/oq config failed status: %x\n", in lio_dev_configure()
1804 lio_flush_iq(lio_dev, lio_dev->instr_queue[sc->iq_no]); in lio_dev_configure()
1805 lio_process_ordered_list(lio_dev); in lio_dev_configure()
1811 lio_dev_err(lio_dev, "iq/oq config failed\n"); in lio_dev_configure()
1815 strlcpy(lio_dev->firmware_version, in lio_dev_configure()
1825 lio_dev_err(lio_dev, in lio_dev_configure()
1832 lio_dev_dbg(lio_dev, in lio_dev_configure()
1839 lio_dev->linfo.num_rxpciq = num_oqueues; in lio_dev_configure()
1840 lio_dev->linfo.num_txpciq = num_iqueues; in lio_dev_configure()
1843 lio_dev->linfo.rxpciq[i].rxpciq64 = in lio_dev_configure()
1845 lio_dev_dbg(lio_dev, "index %d OQ %d\n", in lio_dev_configure()
1846 i, lio_dev->linfo.rxpciq[i].s.q_no); in lio_dev_configure()
1850 lio_dev->linfo.txpciq[i].txpciq64 = in lio_dev_configure()
1852 lio_dev_dbg(lio_dev, "index %d IQ %d\n", in lio_dev_configure()
1853 i, lio_dev->linfo.txpciq[i].s.q_no); in lio_dev_configure()
1856 lio_dev->linfo.hw_addr = resp->cfg_info.linfo.hw_addr; in lio_dev_configure()
1857 lio_dev->linfo.gmxport = resp->cfg_info.linfo.gmxport; in lio_dev_configure()
1858 lio_dev->linfo.link.link_status64 = in lio_dev_configure()
1862 lio_swap_8B_data(&lio_dev->linfo.hw_addr, 1); in lio_dev_configure()
1864 mac[i] = *((uint8_t *)(((uint8_t *)&lio_dev->linfo.hw_addr) + in lio_dev_configure()
1875 lio_dev->glist_lock = in lio_dev_configure()
1876 rte_zmalloc(NULL, sizeof(*lio_dev->glist_lock) * num_iqueues, 0); in lio_dev_configure()
1877 if (lio_dev->glist_lock == NULL) in lio_dev_configure()
1880 lio_dev->glist_head = in lio_dev_configure()
1881 rte_zmalloc(NULL, sizeof(*lio_dev->glist_head) * num_iqueues, in lio_dev_configure()
1883 if (lio_dev->glist_head == NULL) { in lio_dev_configure()
1884 rte_free(lio_dev->glist_lock); in lio_dev_configure()
1885 lio_dev->glist_lock = NULL; in lio_dev_configure()
1891 lio_dev->port_configured = 1; in lio_dev_configure()
1896 lio_dev->fn_list.setup_device_regs(lio_dev); in lio_dev_configure()
1899 lio_free_instr_queue0(lio_dev); in lio_dev_configure()
1904 lio_dev_err(lio_dev, "Failed retval %d\n", retval); in lio_dev_configure()
1906 lio_free_instr_queue0(lio_dev); in lio_dev_configure()
1945 lio_check_pf_hs_response(void *lio_dev) in lio_check_pf_hs_response() argument
1947 struct lio_device *dev = lio_dev; in lio_check_pf_hs_response()
1955 rte_eal_alarm_set(1, lio_check_pf_hs_response, lio_dev); in lio_check_pf_hs_response()
1963 lio_chip_specific_setup(struct lio_device *lio_dev) in lio_chip_specific_setup() argument
1965 struct rte_pci_device *pdev = lio_dev->pci_dev; in lio_chip_specific_setup()
1972 lio_dev->chip_id = LIO_CN23XX_VF_VID; in lio_chip_specific_setup()
1973 ret = cn23xx_vf_setup_device(lio_dev); in lio_chip_specific_setup()
1978 lio_dev_err(lio_dev, "Unsupported Chip\n"); in lio_chip_specific_setup()
1982 lio_dev_info(lio_dev, "DEVICE : %s\n", s); in lio_chip_specific_setup()
1988 lio_first_time_init(struct lio_device *lio_dev, in lio_first_time_init() argument
1996 lio_dev->pci_dev = pdev; in lio_first_time_init()
1999 if (lio_chip_specific_setup(lio_dev)) { in lio_first_time_init()
2000 lio_dev_err(lio_dev, "Chip specific setup failed\n"); in lio_first_time_init()
2005 if (lio_setup_sc_buffer_pool(lio_dev)) { in lio_first_time_init()
2006 lio_dev_err(lio_dev, "sc buffer pool allocation failed\n"); in lio_first_time_init()
2013 lio_setup_response_list(lio_dev); in lio_first_time_init()
2015 if (lio_dev->fn_list.setup_mbox(lio_dev)) { in lio_first_time_init()
2016 lio_dev_err(lio_dev, "Mailbox setup failed\n"); in lio_first_time_init()
2021 lio_check_pf_hs_response((void *)lio_dev); in lio_first_time_init()
2024 if (cn23xx_pfvf_handshake(lio_dev)) in lio_first_time_init()
2029 cn23xx_vf_ask_pf_to_do_flr(lio_dev); in lio_first_time_init()
2034 if (lio_dev->fn_list.setup_device_regs(lio_dev)) { in lio_first_time_init()
2035 lio_dev_err(lio_dev, "Failed to configure device registers\n"); in lio_first_time_init()
2039 if (lio_setup_instr_queue0(lio_dev)) { in lio_first_time_init()
2040 lio_dev_err(lio_dev, "Failed to setup instruction queue 0\n"); in lio_first_time_init()
2044 dpdk_queues = (int)lio_dev->sriov_info.rings_per_vf; in lio_first_time_init()
2046 lio_dev->max_tx_queues = dpdk_queues; in lio_first_time_init()
2047 lio_dev->max_rx_queues = dpdk_queues; in lio_first_time_init()
2050 if (lio_dev->fn_list.enable_io_queues(lio_dev)) in lio_first_time_init()
2056 lio_free_sc_buffer_pool(lio_dev); in lio_first_time_init()
2057 if (lio_dev->mbox[0]) in lio_first_time_init()
2058 lio_dev->fn_list.free_mbox(lio_dev); in lio_first_time_init()
2059 if (lio_dev->instr_queue[0]) in lio_first_time_init()
2060 lio_free_instr_queue0(lio_dev); in lio_first_time_init()
2068 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_eth_dev_uninit() local
2076 lio_free_sc_buffer_pool(lio_dev); in lio_eth_dev_uninit()
2085 struct lio_device *lio_dev = LIO_DEV(eth_dev); in lio_eth_dev_init() local
2100 lio_dev->hw_addr = pdev->mem_resource[0].addr; in lio_eth_dev_init()
2106 lio_dev->eth_dev = eth_dev; in lio_eth_dev_init()
2108 snprintf(lio_dev->dev_string, sizeof(lio_dev->dev_string), in lio_eth_dev_init()
2112 lio_dev->port_id = eth_dev->data->port_id; in lio_eth_dev_init()
2114 if (lio_first_time_init(lio_dev, pdev)) { in lio_eth_dev_init()
2115 lio_dev_err(lio_dev, "Device init failed\n"); in lio_eth_dev_init()
2122 lio_dev_err(lio_dev, in lio_eth_dev_init()
2130 rte_atomic64_set(&lio_dev->status, LIO_DEV_RUNNING); in lio_eth_dev_init()
2133 lio_dev->port_configured = 0; in lio_eth_dev_init()
2135 lio_dev->ifflags |= LIO_IFFLAG_UNICAST; in lio_eth_dev_init()