Lines Matching refs:nic_dev

232 static int hinic_xstats_calc_num(struct hinic_nic_dev *nic_dev)  in hinic_xstats_calc_num()  argument
234 if (HINIC_IS_VF(nic_dev->hwdev)) { in hinic_xstats_calc_num()
236 HINIC_RXQ_XSTATS_NUM * nic_dev->num_rq + in hinic_xstats_calc_num()
237 HINIC_TXQ_XSTATS_NUM * nic_dev->num_sq); in hinic_xstats_calc_num()
241 HINIC_RXQ_XSTATS_NUM * nic_dev->num_rq + in hinic_xstats_calc_num()
242 HINIC_TXQ_XSTATS_NUM * nic_dev->num_sq); in hinic_xstats_calc_num()
269 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_interrupt_handler() local
271 if (!rte_bit_relaxed_get32(HINIC_DEV_INTR_EN, &nic_dev->dev_status)) { in hinic_dev_interrupt_handler()
273 nic_dev->proc_dev_name, dev->data->port_id); in hinic_dev_interrupt_handler()
278 hinic_dev_handle_aeq_event(nic_dev->hwdev, param); in hinic_dev_interrupt_handler()
295 struct hinic_nic_dev *nic_dev; in hinic_dev_configure() local
299 nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_configure()
300 nic_io = nic_dev->hwdev->nic_io; in hinic_dev_configure()
302 nic_dev->num_sq = dev->data->nb_tx_queues; in hinic_dev_configure()
303 nic_dev->num_rq = dev->data->nb_rx_queues; in hinic_dev_configure()
309 nic_dev->num_qps = (nic_dev->num_sq > nic_dev->num_rq) ? in hinic_dev_configure()
310 nic_dev->num_sq : nic_dev->num_rq; in hinic_dev_configure()
311 nic_io->num_qps = nic_dev->num_qps; in hinic_dev_configure()
313 if (nic_dev->num_qps > nic_io->max_qps) { in hinic_dev_configure()
316 nic_dev->num_qps, nic_io->max_qps); in hinic_dev_configure()
335 nic_dev->mtu_size = in hinic_dev_configure()
355 hinic_free_fdir_filter(nic_dev); in hinic_dev_configure()
385 struct hinic_nic_dev *nic_dev; in hinic_rx_queue_setup() local
391 nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_rx_queue_setup()
392 hwdev = nic_dev->hwdev; in hinic_rx_queue_setup()
438 nic_dev->rxqs[queue_idx] = rxq; in hinic_rx_queue_setup()
463 rxq->nic_dev = nic_dev; in hinic_rx_queue_setup()
502 struct hinic_nic_dev *nic_dev; in hinic_reset_rx_queue() local
505 nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_reset_rx_queue()
507 for (q_id = 0; q_id < nic_dev->num_rq; q_id++) { in hinic_reset_rx_queue()
542 struct hinic_nic_dev *nic_dev; in hinic_tx_queue_setup() local
547 nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_tx_queue_setup()
548 hwdev = nic_dev->hwdev; in hinic_tx_queue_setup()
593 nic_dev->txqs[queue_idx] = txq; in hinic_tx_queue_setup()
607 txq->nic_dev = nic_dev; in hinic_tx_queue_setup()
614 txq->cos = nic_dev->default_cos; in hinic_tx_queue_setup()
641 struct hinic_nic_dev *nic_dev; in hinic_reset_tx_queue() local
648 nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_reset_tx_queue()
649 hwdev = nic_dev->hwdev; in hinic_reset_tx_queue()
652 for (q_id = 0; q_id < nic_dev->num_sq; q_id++) { in hinic_reset_tx_queue()
677 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_get_speed_capa() local
696 err = hinic_get_link_mode(nic_dev->hwdev, in hinic_get_speed_capa()
701 nic_dev->proc_dev_name, dev->data->port_id); in hinic_get_speed_capa()
728 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_infos_get() local
730 info->max_rx_queues = nic_dev->nic_cap.max_rqs; in hinic_dev_infos_get()
731 info->max_tx_queues = nic_dev->nic_cap.max_sqs; in hinic_dev_infos_get()
781 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_fw_version_get() local
785 err = hinic_get_mgmt_version(nic_dev->hwdev, fw_ver); in hinic_fw_version_get()
799 static int hinic_config_rx_mode(struct hinic_nic_dev *nic_dev, u32 rx_mode_ctrl) in hinic_config_rx_mode() argument
803 err = hinic_set_rx_mode(nic_dev->hwdev, rx_mode_ctrl); in hinic_config_rx_mode()
808 nic_dev->rx_mode_status = rx_mode_ctrl; in hinic_config_rx_mode()
815 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_rxtx_configure() local
826 err = hinic_config_rx_mode(nic_dev, HINIC_DEFAULT_RX_MODE); in hinic_rxtx_configure()
843 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_remove_rxtx_configure() local
845 (void)hinic_config_rx_mode(nic_dev, 0); in hinic_remove_rxtx_configure()
849 static int hinic_priv_get_dev_link_status(struct hinic_nic_dev *nic_dev, in hinic_priv_get_dev_link_status() argument
855 struct hinic_hwdev *nic_hwdev = nic_dev->hwdev; in hinic_priv_get_dev_link_status()
903 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_link_update() local
909 rc = hinic_priv_get_dev_link_status(nic_dev, &link); in hinic_link_update()
939 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_set_link_up() local
943 ret = hinic_set_port_enable(nic_dev->hwdev, true); in hinic_dev_set_link_up()
946 nic_dev->proc_dev_name, dev->data->port_id); in hinic_dev_set_link_up()
962 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_set_link_down() local
966 ret = hinic_set_port_enable(nic_dev->hwdev, false); in hinic_dev_set_link_down()
969 nic_dev->proc_dev_name, dev->data->port_id); in hinic_dev_set_link_down()
987 struct hinic_nic_dev *nic_dev; in hinic_dev_start() local
989 nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_start()
997 hinic_get_func_rx_buf_size(nic_dev); in hinic_dev_start()
1000 rc = hinic_init_qp_ctxts(nic_dev->hwdev); in hinic_dev_start()
1016 rc = hinic_set_port_mtu(nic_dev->hwdev, nic_dev->mtu_size); in hinic_dev_start()
1019 nic_dev->mtu_size, name); in hinic_dev_start()
1032 hinic_set_pf_status(nic_dev->hwdev->hwif, HINIC_PF_STATUS_ACTIVE_FLAG); in hinic_dev_start()
1035 rc = hinic_set_vport_enable(nic_dev->hwdev, true); in hinic_dev_start()
1042 rc = hinic_set_port_enable(nic_dev->hwdev, true); in hinic_dev_start()
1053 rte_bit_relaxed_set32(HINIC_DEV_START, &nic_dev->dev_status); in hinic_dev_start()
1058 (void)hinic_set_vport_enable(nic_dev->hwdev, false); in hinic_dev_start()
1061 hinic_set_pf_status(nic_dev->hwdev->hwif, HINIC_PF_STATUS_INIT); in hinic_dev_start()
1064 (void)hinic_flush_qp_res(nic_dev->hwdev); in hinic_dev_start()
1072 hinic_free_qp_ctxts(nic_dev->hwdev); in hinic_dev_start()
1090 struct hinic_nic_dev *nic_dev; in hinic_rx_queue_release() local
1096 nic_dev = rxq->nic_dev; in hinic_rx_queue_release()
1105 hinic_destroy_rq(nic_dev->hwdev, rxq->q_id); in hinic_rx_queue_release()
1107 nic_dev->rxqs[rxq->q_id] = NULL; in hinic_rx_queue_release()
1122 struct hinic_nic_dev *nic_dev; in hinic_tx_queue_release() local
1128 nic_dev = txq->nic_dev; in hinic_tx_queue_release()
1137 hinic_destroy_sq(nic_dev->hwdev, txq->q_id); in hinic_tx_queue_release()
1138 nic_dev->txqs[txq->q_id] = NULL; in hinic_tx_queue_release()
1144 static void hinic_free_all_rq(struct hinic_nic_dev *nic_dev) in hinic_free_all_rq() argument
1148 for (q_id = 0; q_id < nic_dev->num_rq; q_id++) in hinic_free_all_rq()
1149 hinic_destroy_rq(nic_dev->hwdev, q_id); in hinic_free_all_rq()
1152 static void hinic_free_all_sq(struct hinic_nic_dev *nic_dev) in hinic_free_all_sq() argument
1156 for (q_id = 0; q_id < nic_dev->num_sq; q_id++) in hinic_free_all_sq()
1157 hinic_destroy_sq(nic_dev->hwdev, q_id); in hinic_free_all_sq()
1171 struct hinic_nic_dev *nic_dev; in hinic_dev_stop() local
1174 nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_stop()
1181 &nic_dev->dev_status)) { in hinic_dev_stop()
1187 rc = hinic_set_port_enable(nic_dev->hwdev, false); in hinic_dev_stop()
1192 rc = hinic_set_vport_enable(nic_dev->hwdev, false); in hinic_dev_stop()
1202 rc = hinic_rx_tx_flush(nic_dev->hwdev); in hinic_dev_stop()
1211 hinic_free_qp_ctxts(nic_dev->hwdev); in hinic_dev_stop()
1224 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_disable_interrupt() local
1228 rte_bit_relaxed_clear32(HINIC_DEV_INTR_EN, &nic_dev->dev_status); in hinic_disable_interrupt()
1231 hinic_set_msix_state(nic_dev->hwdev, 0, HINIC_MSIX_DISABLE); in hinic_disable_interrupt()
1258 rte_bit_relaxed_clear32(HINIC_DEV_INIT, &nic_dev->dev_status); in hinic_disable_interrupt()
1261 static int hinic_set_dev_promiscuous(struct hinic_nic_dev *nic_dev, bool enable) in hinic_set_dev_promiscuous() argument
1266 err = hinic_mutex_lock(&nic_dev->rx_mode_mutex); in hinic_set_dev_promiscuous()
1270 rx_mode_ctrl = nic_dev->rx_mode_status; in hinic_set_dev_promiscuous()
1277 err = hinic_config_rx_mode(nic_dev, rx_mode_ctrl); in hinic_set_dev_promiscuous()
1279 (void)hinic_mutex_unlock(&nic_dev->rx_mode_mutex); in hinic_set_dev_promiscuous()
1301 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_stats_get() local
1308 err = hinic_get_vport_stats(nic_dev->hwdev, &vport_stats); in hinic_dev_stats_get()
1311 nic_dev->proc_dev_name); in hinic_dev_stats_get()
1318 q_num = (nic_dev->num_rq < RTE_ETHDEV_QUEUE_STAT_CNTRS) ? in hinic_dev_stats_get()
1319 nic_dev->num_rq : RTE_ETHDEV_QUEUE_STAT_CNTRS; in hinic_dev_stats_get()
1321 rxq = nic_dev->rxqs[i]; in hinic_dev_stats_get()
1333 q_num = (nic_dev->num_sq < RTE_ETHDEV_QUEUE_STAT_CNTRS) ? in hinic_dev_stats_get()
1334 nic_dev->num_sq : RTE_ETHDEV_QUEUE_STAT_CNTRS; in hinic_dev_stats_get()
1336 txq = nic_dev->txqs[i]; in hinic_dev_stats_get()
1378 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_stats_reset() local
1381 ret = hinic_clear_vport_stats(nic_dev->hwdev); in hinic_dev_stats_reset()
1385 for (qid = 0; qid < nic_dev->num_rq; qid++) { in hinic_dev_stats_reset()
1386 rxq = nic_dev->rxqs[qid]; in hinic_dev_stats_reset()
1390 for (qid = 0; qid < nic_dev->num_sq; qid++) { in hinic_dev_stats_reset()
1391 txq = nic_dev->txqs[qid]; in hinic_dev_stats_reset()
1406 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_xstats_reset() local
1413 if (hinic_func_type(nic_dev->hwdev) != TYPE_VF) { in hinic_dev_xstats_reset()
1414 ret = hinic_clear_phy_port_stats(nic_dev->hwdev); in hinic_dev_xstats_reset()
1449 struct hinic_nic_dev *nic_dev = in hinic_init_mac_addr() local
1455 rc = hinic_get_default_mac(nic_dev->hwdev, addr_bytes); in hinic_init_mac_addr()
1464 func_id = hinic_global_func_id(nic_dev->hwdev); in hinic_init_mac_addr()
1465 rc = hinic_set_mac(nic_dev->hwdev, in hinic_init_mac_addr()
1472 &nic_dev->default_addr); in hinic_init_mac_addr()
1477 static void hinic_delete_mc_addr_list(struct hinic_nic_dev *nic_dev) in hinic_delete_mc_addr_list() argument
1482 func_id = hinic_global_func_id(nic_dev->hwdev); in hinic_delete_mc_addr_list()
1485 if (rte_is_zero_ether_addr(&nic_dev->mc_list[i])) in hinic_delete_mc_addr_list()
1488 hinic_del_mac(nic_dev->hwdev, nic_dev->mc_list[i].addr_bytes, in hinic_delete_mc_addr_list()
1490 memset(&nic_dev->mc_list[i], 0, sizeof(struct rte_ether_addr)); in hinic_delete_mc_addr_list()
1506 struct hinic_nic_dev *nic_dev = in hinic_deinit_mac_addr() local
1512 func_id = hinic_global_func_id(nic_dev->hwdev); in hinic_deinit_mac_addr()
1518 rc = hinic_del_mac(nic_dev->hwdev, in hinic_deinit_mac_addr()
1530 hinic_delete_mc_addr_list(nic_dev); in hinic_deinit_mac_addr()
1532 rte_free(nic_dev->mc_list); in hinic_deinit_mac_addr()
1538 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_set_mtu() local
1551 ret = hinic_set_port_mtu(nic_dev->hwdev, mtu); in hinic_dev_set_mtu()
1567 nic_dev->mtu_size = mtu; in hinic_dev_set_mtu()
1572 static void hinic_store_vlan_filter(struct hinic_nic_dev *nic_dev, in hinic_store_vlan_filter() argument
1581 nic_dev->vfta[vid_idx] |= vid_bit; in hinic_store_vlan_filter()
1583 nic_dev->vfta[vid_idx] &= ~vid_bit; in hinic_store_vlan_filter()
1586 static bool hinic_find_vlan_filter(struct hinic_nic_dev *nic_dev, in hinic_find_vlan_filter() argument
1594 return (nic_dev->vfta[vid_idx] & vid_bit) ? TRUE : FALSE; in hinic_find_vlan_filter()
1610 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_vlan_filter_set() local
1617 func_id = hinic_global_func_id(nic_dev->hwdev); in hinic_vlan_filter_set()
1621 if (hinic_find_vlan_filter(nic_dev, vlan_id)) { in hinic_vlan_filter_set()
1623 vlan_id, nic_dev->proc_dev_name); in hinic_vlan_filter_set()
1627 err = hinic_add_remove_vlan(nic_dev->hwdev, vlan_id, in hinic_vlan_filter_set()
1631 if (!hinic_find_vlan_filter(nic_dev, vlan_id)) { in hinic_vlan_filter_set()
1633 vlan_id, nic_dev->proc_dev_name); in hinic_vlan_filter_set()
1637 err = hinic_add_remove_vlan(nic_dev->hwdev, vlan_id, in hinic_vlan_filter_set()
1647 hinic_store_vlan_filter(nic_dev, vlan_id, enable); in hinic_vlan_filter_set()
1650 enable ? "Add" : "Remove", vlan_id, nic_dev->proc_dev_name); in hinic_vlan_filter_set()
1664 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_vlan_offload_set() local
1673 err = hinic_config_vlan_filter(nic_dev->hwdev, on); in hinic_vlan_offload_set()
1677 nic_dev->proc_dev_name, dev->data->port_id); in hinic_vlan_offload_set()
1681 nic_dev->proc_dev_name, in hinic_vlan_offload_set()
1688 nic_dev->proc_dev_name, dev->data->port_id); in hinic_vlan_offload_set()
1695 err = hinic_set_rx_vlan_offload(nic_dev->hwdev, on); in hinic_vlan_offload_set()
1699 nic_dev->proc_dev_name, in hinic_vlan_offload_set()
1706 nic_dev->proc_dev_name, dev->data->port_id); in hinic_vlan_offload_set()
1714 struct hinic_nic_dev *nic_dev = in hinic_remove_all_vlanid() local
1719 func_id = hinic_global_func_id(nic_dev->hwdev); in hinic_remove_all_vlanid()
1722 if (!hinic_find_vlan_filter(nic_dev, i)) in hinic_remove_all_vlanid()
1725 (void)hinic_add_remove_vlan(nic_dev->hwdev, i, func_id, FALSE); in hinic_remove_all_vlanid()
1726 hinic_store_vlan_filter(nic_dev, i, false); in hinic_remove_all_vlanid()
1730 static int hinic_set_dev_allmulticast(struct hinic_nic_dev *nic_dev, in hinic_set_dev_allmulticast() argument
1736 err = hinic_mutex_lock(&nic_dev->rx_mode_mutex); in hinic_set_dev_allmulticast()
1740 rx_mode_ctrl = nic_dev->rx_mode_status; in hinic_set_dev_allmulticast()
1747 err = hinic_config_rx_mode(nic_dev, rx_mode_ctrl); in hinic_set_dev_allmulticast()
1749 (void)hinic_mutex_unlock(&nic_dev->rx_mode_mutex); in hinic_set_dev_allmulticast()
1767 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_allmulticast_enable() local
1769 ret = hinic_set_dev_allmulticast(nic_dev, true); in hinic_dev_allmulticast_enable()
1776 nic_dev->proc_dev_name, dev->data->port_id); in hinic_dev_allmulticast_enable()
1793 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_allmulticast_disable() local
1795 ret = hinic_set_dev_allmulticast(nic_dev, false); in hinic_dev_allmulticast_disable()
1802 nic_dev->proc_dev_name, dev->data->port_id); in hinic_dev_allmulticast_disable()
1819 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_promiscuous_enable() local
1822 nic_dev->proc_dev_name, dev->data->port_id, in hinic_dev_promiscuous_enable()
1825 rc = hinic_set_dev_promiscuous(nic_dev, true); in hinic_dev_promiscuous_enable()
1845 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_promiscuous_disable() local
1848 nic_dev->proc_dev_name, dev->data->port_id, in hinic_dev_promiscuous_disable()
1851 rc = hinic_set_dev_promiscuous(nic_dev, false); in hinic_dev_promiscuous_disable()
1861 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_flow_ctrl_get() local
1867 err = hinic_get_pause_info(nic_dev->hwdev, &nic_pause); in hinic_flow_ctrl_get()
1871 if (nic_dev->pause_set || !nic_pause.auto_neg) { in hinic_flow_ctrl_get()
1872 nic_pause.rx_pause = nic_dev->nic_pause.rx_pause; in hinic_flow_ctrl_get()
1873 nic_pause.tx_pause = nic_dev->nic_pause.tx_pause; in hinic_flow_ctrl_get()
1893 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_flow_ctrl_set() local
1911 err = hinic_set_pause_config(nic_dev->hwdev, nic_pause); in hinic_flow_ctrl_set()
1915 nic_dev->pause_set = true; in hinic_flow_ctrl_set()
1916 nic_dev->nic_pause.auto_neg = nic_pause.auto_neg; in hinic_flow_ctrl_set()
1917 nic_dev->nic_pause.rx_pause = nic_pause.rx_pause; in hinic_flow_ctrl_set()
1918 nic_dev->nic_pause.tx_pause = nic_pause.tx_pause; in hinic_flow_ctrl_set()
1942 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_rss_hash_update() local
1943 u8 tmpl_idx = nic_dev->rss_tmpl_idx; in hinic_rss_hash_update()
1950 if (!(nic_dev->flags & ETH_MQ_RX_RSS_FLAG)) { in hinic_rss_hash_update()
1963 err = hinic_rss_set_template_tbl(nic_dev->hwdev, tmpl_idx, in hinic_rss_hash_update()
1980 err = hinic_set_rss_type(nic_dev->hwdev, tmpl_idx, rss_type); in hinic_rss_hash_update()
1990 (void)hinic_rss_cfg(nic_dev->hwdev, 0, tmpl_idx, 0, prio_tc); in hinic_rss_hash_update()
2008 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_rss_conf_get() local
2009 u8 tmpl_idx = nic_dev->rss_tmpl_idx; in hinic_rss_conf_get()
2014 if (!(nic_dev->flags & ETH_MQ_RX_RSS_FLAG)) { in hinic_rss_conf_get()
2019 err = hinic_rss_get_template_tbl(nic_dev->hwdev, tmpl_idx, hashkey); in hinic_rss_conf_get()
2029 err = hinic_get_rss_type(nic_dev->hwdev, tmpl_idx, &rss_type); in hinic_rss_conf_get()
2065 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_rss_indirtbl_update() local
2066 u8 tmpl_idx = nic_dev->rss_tmpl_idx; in hinic_rss_indirtbl_update()
2073 if (!(nic_dev->flags & ETH_MQ_RX_RSS_FLAG)) in hinic_rss_indirtbl_update()
2081 err = hinic_rss_get_indir_tbl(nic_dev->hwdev, tmpl_idx, indirtbl); in hinic_rss_indirtbl_update()
2090 if (reta_conf[idx].reta[shift] >= nic_dev->num_rq) { in hinic_rss_indirtbl_update()
2093 reta_conf[idx].reta[shift], nic_dev->num_rq); in hinic_rss_indirtbl_update()
2101 err = hinic_rss_set_indir_tbl(nic_dev->hwdev, tmpl_idx, indirtbl); in hinic_rss_indirtbl_update()
2105 nic_dev->rss_indir_flag = true; in hinic_rss_indirtbl_update()
2111 (void)hinic_rss_cfg(nic_dev->hwdev, 0, tmpl_idx, 0, prio_tc); in hinic_rss_indirtbl_update()
2133 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_rss_indirtbl_query() local
2134 u8 tmpl_idx = nic_dev->rss_tmpl_idx; in hinic_rss_indirtbl_query()
2145 err = hinic_rss_get_indir_tbl(nic_dev->hwdev, tmpl_idx, indirtbl); in hinic_rss_indirtbl_query()
2183 struct hinic_nic_dev *nic_dev; in hinic_dev_xstats_get() local
2191 nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_xstats_get()
2192 count = hinic_xstats_calc_num(nic_dev); in hinic_dev_xstats_get()
2199 for (qid = 0; qid < nic_dev->num_rq; qid++) { in hinic_dev_xstats_get()
2200 rxq = nic_dev->rxqs[qid]; in hinic_dev_xstats_get()
2213 for (qid = 0; qid < nic_dev->num_sq; qid++) { in hinic_dev_xstats_get()
2214 txq = nic_dev->txqs[qid]; in hinic_dev_xstats_get()
2227 err = hinic_get_vport_stats(nic_dev->hwdev, &vport_stats); in hinic_dev_xstats_get()
2239 if (HINIC_IS_VF(nic_dev->hwdev)) in hinic_dev_xstats_get()
2243 err = hinic_get_phy_port_stats(nic_dev->hwdev, &port_stats); in hinic_dev_xstats_get()
2289 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_xstats_get_names() local
2294 return hinic_xstats_calc_num(nic_dev); in hinic_dev_xstats_get_names()
2297 for (q_num = 0; q_num < nic_dev->num_rq; q_num++) { in hinic_dev_xstats_get_names()
2308 for (q_num = 0; q_num < nic_dev->num_sq; q_num++) { in hinic_dev_xstats_get_names()
2326 if (HINIC_IS_VF(nic_dev->hwdev)) in hinic_dev_xstats_get_names()
2353 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_set_mac_addr() local
2357 func_id = hinic_global_func_id(nic_dev->hwdev); in hinic_set_mac_addr()
2358 err = hinic_update_mac(nic_dev->hwdev, nic_dev->default_addr.addr_bytes, in hinic_set_mac_addr()
2363 rte_ether_addr_copy(addr, &nic_dev->default_addr); in hinic_set_mac_addr()
2383 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_mac_addr_remove() local
2393 func_id = hinic_global_func_id(nic_dev->hwdev); in hinic_mac_addr_remove()
2394 ret = hinic_del_mac(nic_dev->hwdev, in hinic_mac_addr_remove()
2421 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_mac_addr_add() local
2445 func_id = hinic_global_func_id(nic_dev->hwdev); in hinic_mac_addr_add()
2446 ret = hinic_set_mac(nic_dev->hwdev, mac_addr->addr_bytes, 0, func_id); in hinic_mac_addr_add()
2470 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_set_mc_addr_list() local
2475 func_id = hinic_global_func_id(nic_dev->hwdev); in hinic_set_mc_addr_list()
2478 hinic_delete_mc_addr_list(nic_dev); in hinic_set_mc_addr_list()
2484 ret = hinic_set_mac(nic_dev->hwdev, mc_addr_set[i].addr_bytes, in hinic_set_mc_addr_list()
2488 hinic_delete_mc_addr_list(nic_dev); in hinic_set_mc_addr_list()
2492 rte_ether_addr_copy(&mc_addr_set[i], &nic_dev->mc_list[i]); in hinic_set_mc_addr_list()
2523 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_filter_ctrl() local
2524 int func_id = hinic_global_func_id(nic_dev->hwdev); in hinic_dev_filter_ctrl()
2543 static int hinic_set_default_pause_feature(struct hinic_nic_dev *nic_dev) in hinic_set_default_pause_feature() argument
2552 err = hinic_set_pause_config(nic_dev->hwdev, pause_config); in hinic_set_default_pause_feature()
2556 nic_dev->pause_set = true; in hinic_set_default_pause_feature()
2557 nic_dev->nic_pause.auto_neg = pause_config.auto_neg; in hinic_set_default_pause_feature()
2558 nic_dev->nic_pause.rx_pause = pause_config.rx_pause; in hinic_set_default_pause_feature()
2559 nic_dev->nic_pause.tx_pause = pause_config.tx_pause; in hinic_set_default_pause_feature()
2564 static int hinic_set_default_dcb_feature(struct hinic_nic_dev *nic_dev) in hinic_set_default_dcb_feature() argument
2577 return hinic_dcb_set_ets(nic_dev->hwdev, up_tc, pg_bw, in hinic_set_default_dcb_feature()
2603 static int hinic_init_default_cos(struct hinic_nic_dev *nic_dev) in hinic_init_default_cos() argument
2608 if (!HINIC_IS_VF(nic_dev->hwdev)) { in hinic_init_default_cos()
2609 err = hinic_pf_get_default_cos(nic_dev->hwdev, &cos_id); in hinic_init_default_cos()
2616 err = hinic_vf_get_default_cos(nic_dev->hwdev, &cos_id); in hinic_init_default_cos()
2624 nic_dev->default_cos = cos_id; in hinic_init_default_cos()
2626 PMD_DRV_LOG(INFO, "Default cos %d", nic_dev->default_cos); in hinic_init_default_cos()
2631 static int hinic_set_default_hw_feature(struct hinic_nic_dev *nic_dev) in hinic_set_default_hw_feature() argument
2635 err = hinic_init_default_cos(nic_dev); in hinic_set_default_hw_feature()
2639 if (hinic_func_type(nic_dev->hwdev) == TYPE_VF) in hinic_set_default_hw_feature()
2643 err = hinic_set_default_dcb_feature(nic_dev); in hinic_set_default_hw_feature()
2648 err = hinic_set_default_pause_feature(nic_dev); in hinic_set_default_hw_feature()
2652 err = hinic_reset_port_link_cfg(nic_dev->hwdev); in hinic_set_default_hw_feature()
2656 err = hinic_set_link_status_follow(nic_dev->hwdev, in hinic_set_default_hw_feature()
2663 return hinic_set_anti_attack(nic_dev->hwdev, true); in hinic_set_default_hw_feature()
2666 static int32_t hinic_card_workmode_check(struct hinic_nic_dev *nic_dev) in hinic_card_workmode_check() argument
2671 if (hinic_func_type(nic_dev->hwdev) == TYPE_VF) in hinic_card_workmode_check()
2674 rc = hinic_get_board_info(nic_dev->hwdev, &info); in hinic_card_workmode_check()
2682 static int hinic_copy_mempool_init(struct hinic_nic_dev *nic_dev) in hinic_copy_mempool_init() argument
2684 nic_dev->cpy_mpool = rte_mempool_lookup(nic_dev->proc_dev_name); in hinic_copy_mempool_init()
2685 if (nic_dev->cpy_mpool == NULL) { in hinic_copy_mempool_init()
2686 nic_dev->cpy_mpool = in hinic_copy_mempool_init()
2687 rte_pktmbuf_pool_create(nic_dev->proc_dev_name, in hinic_copy_mempool_init()
2692 if (!nic_dev->cpy_mpool) { in hinic_copy_mempool_init()
2694 rte_errno, nic_dev->proc_dev_name); in hinic_copy_mempool_init()
2702 static void hinic_copy_mempool_uninit(struct hinic_nic_dev *nic_dev) in hinic_copy_mempool_uninit() argument
2704 if (nic_dev->cpy_mpool != NULL) in hinic_copy_mempool_uninit()
2705 rte_mempool_free(nic_dev->cpy_mpool); in hinic_copy_mempool_uninit()
2708 static int hinic_init_sw_rxtxqs(struct hinic_nic_dev *nic_dev) in hinic_init_sw_rxtxqs() argument
2714 txq_size = nic_dev->nic_cap.max_sqs * sizeof(*nic_dev->txqs); in hinic_init_sw_rxtxqs()
2715 nic_dev->txqs = kzalloc_aligned(txq_size, GFP_KERNEL); in hinic_init_sw_rxtxqs()
2716 if (!nic_dev->txqs) { in hinic_init_sw_rxtxqs()
2722 rxq_size = nic_dev->nic_cap.max_rqs * sizeof(*nic_dev->rxqs); in hinic_init_sw_rxtxqs()
2723 nic_dev->rxqs = kzalloc_aligned(rxq_size, GFP_KERNEL); in hinic_init_sw_rxtxqs()
2724 if (!nic_dev->rxqs) { in hinic_init_sw_rxtxqs()
2726 kfree(nic_dev->txqs); in hinic_init_sw_rxtxqs()
2727 nic_dev->txqs = NULL; in hinic_init_sw_rxtxqs()
2736 static void hinic_deinit_sw_rxtxqs(struct hinic_nic_dev *nic_dev) in hinic_deinit_sw_rxtxqs() argument
2738 kfree(nic_dev->txqs); in hinic_deinit_sw_rxtxqs()
2739 nic_dev->txqs = NULL; in hinic_deinit_sw_rxtxqs()
2741 kfree(nic_dev->rxqs); in hinic_deinit_sw_rxtxqs()
2742 nic_dev->rxqs = NULL; in hinic_deinit_sw_rxtxqs()
2747 struct hinic_nic_dev *nic_dev = in hinic_nic_dev_create() local
2751 nic_dev->hwdev = rte_zmalloc("hinic_hwdev", sizeof(*nic_dev->hwdev), in hinic_nic_dev_create()
2753 if (!nic_dev->hwdev) { in hinic_nic_dev_create()
2758 nic_dev->hwdev->pcidev_hdl = RTE_ETH_DEV_TO_PCI(eth_dev); in hinic_nic_dev_create()
2761 rc = hinic_osdep_init(nic_dev->hwdev); in hinic_nic_dev_create()
2769 rc = hinic_hwif_res_init(nic_dev->hwdev); in hinic_nic_dev_create()
2777 rc = init_cfg_mgmt(nic_dev->hwdev); in hinic_nic_dev_create()
2785 rc = hinic_comm_aeqs_init(nic_dev->hwdev); in hinic_nic_dev_create()
2793 rc = hinic_comm_pf_to_mgmt_init(nic_dev->hwdev); in hinic_nic_dev_create()
2801 rc = hinic_comm_func_to_func_init(nic_dev->hwdev); in hinic_nic_dev_create()
2808 rc = hinic_card_workmode_check(nic_dev); in hinic_nic_dev_create()
2816 rc = hinic_l2nic_reset(nic_dev->hwdev); in hinic_nic_dev_create()
2824 (void)hinic_init_attr_table(nic_dev->hwdev); in hinic_nic_dev_create()
2827 rc = hinic_comm_cmdqs_init(nic_dev->hwdev); in hinic_nic_dev_create()
2835 rc = hinic_activate_hwdev_state(nic_dev->hwdev); in hinic_nic_dev_create()
2843 rc = hinic_init_capability(nic_dev->hwdev); in hinic_nic_dev_create()
2851 if (!hinic_support_nic(nic_dev->hwdev, &nic_dev->nic_cap)) { in hinic_nic_dev_create()
2859 rc = hinic_init_nicio(nic_dev->hwdev); in hinic_nic_dev_create()
2867 rc = hinic_init_sw_rxtxqs(nic_dev); in hinic_nic_dev_create()
2874 rc = hinic_copy_mempool_init(nic_dev); in hinic_nic_dev_create()
2882 rc = hinic_set_default_hw_feature(nic_dev); in hinic_nic_dev_create()
2892 hinic_copy_mempool_uninit(nic_dev); in hinic_nic_dev_create()
2895 hinic_deinit_sw_rxtxqs(nic_dev); in hinic_nic_dev_create()
2898 hinic_deinit_nicio(nic_dev->hwdev); in hinic_nic_dev_create()
2903 hinic_deactivate_hwdev_state(nic_dev->hwdev); in hinic_nic_dev_create()
2906 hinic_comm_cmdqs_free(nic_dev->hwdev); in hinic_nic_dev_create()
2911 hinic_comm_func_to_func_free(nic_dev->hwdev); in hinic_nic_dev_create()
2914 hinic_comm_pf_to_mgmt_free(nic_dev->hwdev); in hinic_nic_dev_create()
2917 hinic_comm_aeqs_free(nic_dev->hwdev); in hinic_nic_dev_create()
2920 free_cfg_mgmt(nic_dev->hwdev); in hinic_nic_dev_create()
2923 hinic_hwif_res_free(nic_dev->hwdev); in hinic_nic_dev_create()
2926 hinic_osdep_deinit(nic_dev->hwdev); in hinic_nic_dev_create()
2929 rte_free(nic_dev->hwdev); in hinic_nic_dev_create()
2930 nic_dev->hwdev = NULL; in hinic_nic_dev_create()
2937 struct hinic_nic_dev *nic_dev = in hinic_nic_dev_destroy() local
2940 (void)hinic_set_link_status_follow(nic_dev->hwdev, in hinic_nic_dev_destroy()
2942 hinic_copy_mempool_uninit(nic_dev); in hinic_nic_dev_destroy()
2943 hinic_deinit_sw_rxtxqs(nic_dev); in hinic_nic_dev_destroy()
2944 hinic_deinit_nicio(nic_dev->hwdev); in hinic_nic_dev_destroy()
2945 hinic_deactivate_hwdev_state(nic_dev->hwdev); in hinic_nic_dev_destroy()
2946 hinic_comm_cmdqs_free(nic_dev->hwdev); in hinic_nic_dev_destroy()
2947 hinic_comm_func_to_func_free(nic_dev->hwdev); in hinic_nic_dev_destroy()
2948 hinic_comm_pf_to_mgmt_free(nic_dev->hwdev); in hinic_nic_dev_destroy()
2949 hinic_comm_aeqs_free(nic_dev->hwdev); in hinic_nic_dev_destroy()
2950 free_cfg_mgmt(nic_dev->hwdev); in hinic_nic_dev_destroy()
2951 hinic_hwif_res_free(nic_dev->hwdev); in hinic_nic_dev_destroy()
2952 hinic_osdep_deinit(nic_dev->hwdev); in hinic_nic_dev_destroy()
2953 rte_free(nic_dev->hwdev); in hinic_nic_dev_destroy()
2954 nic_dev->hwdev = NULL; in hinic_nic_dev_destroy()
2965 struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); in hinic_dev_close() local
2972 &nic_dev->dev_status)) { in hinic_dev_close()
2988 hinic_free_all_rq(nic_dev); in hinic_dev_close()
2991 hinic_free_all_sq(nic_dev); in hinic_dev_close()
3001 hinic_mutex_destroy(&nic_dev->rx_mode_mutex); in hinic_dev_close()
3089 struct hinic_nic_dev *nic_dev; in hinic_func_init() local
3107 nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev); in hinic_func_init()
3108 memset(nic_dev, 0, sizeof(*nic_dev)); in hinic_func_init()
3110 snprintf(nic_dev->proc_dev_name, in hinic_func_init()
3111 sizeof(nic_dev->proc_dev_name), in hinic_func_init()
3128 nic_dev->mc_list = rte_zmalloc("hinic_mc", mac_size, 0); in hinic_func_init()
3129 if (!nic_dev->mc_list) { in hinic_func_init()
3144 if (HINIC_IS_VF(nic_dev->hwdev)) in hinic_func_init()
3173 rte_bit_relaxed_set32(HINIC_DEV_INTR_EN, &nic_dev->dev_status); in hinic_func_init()
3175 hinic_mutex_init(&nic_dev->rx_mode_mutex, NULL); in hinic_func_init()
3178 filter_info = &nic_dev->filter; in hinic_func_init()
3179 tcam_info = &nic_dev->tcam; in hinic_func_init()
3185 TAILQ_INIT(&nic_dev->filter_ntuple_list); in hinic_func_init()
3186 TAILQ_INIT(&nic_dev->filter_ethertype_list); in hinic_func_init()
3187 TAILQ_INIT(&nic_dev->filter_fdir_rule_list); in hinic_func_init()
3188 TAILQ_INIT(&nic_dev->hinic_flow_list); in hinic_func_init()
3190 rte_bit_relaxed_set32(HINIC_DEV_INIT, &nic_dev->dev_status); in hinic_func_init()
3209 rte_free(nic_dev->mc_list); in hinic_func_init()
3210 nic_dev->mc_list = NULL; in hinic_func_init()