Lines Matching refs:dev
28 mlx5_txq_stop(struct rte_eth_dev *dev) in mlx5_txq_stop() argument
30 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_txq_stop()
34 mlx5_txq_release(dev, i); in mlx5_txq_stop()
47 mlx5_txq_start(struct rte_eth_dev *dev) in mlx5_txq_start() argument
49 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_txq_start()
54 struct mlx5_txq_ctrl *txq_ctrl = mlx5_txq_get(dev, i); in mlx5_txq_start()
67 "memory resources.", dev->data->port_id, in mlx5_txq_start()
72 ret = priv->obj_ops.txq_obj_new(dev, i); in mlx5_txq_start()
87 dev->data->port_id, i); in mlx5_txq_start()
93 dev->data->port_id, i, (void *)&txq_ctrl->obj); in mlx5_txq_start()
100 mlx5_txq_release(dev, i); in mlx5_txq_start()
113 mlx5_rxq_stop(struct rte_eth_dev *dev) in mlx5_rxq_stop() argument
115 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_rxq_stop()
119 mlx5_rxq_release(dev, i); in mlx5_rxq_stop()
132 mlx5_rxq_start(struct rte_eth_dev *dev) in mlx5_rxq_start() argument
134 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_rxq_start()
139 if (mlx5_mprq_alloc_mp(dev)) { in mlx5_rxq_start()
144 dev->data->port_id, priv->sh->device_attr.max_qp_wr); in mlx5_rxq_start()
146 dev->data->port_id, priv->sh->device_attr.max_sge); in mlx5_rxq_start()
148 struct mlx5_rxq_ctrl *rxq_ctrl = mlx5_rxq_get(dev, i); in mlx5_rxq_start()
155 mlx5_mr_update_mp(dev, &rxq_ctrl->rxq.mr_ctrl, in mlx5_rxq_start()
162 (dev, &rxq_ctrl->rxq.mr_ctrl, in mlx5_rxq_start()
176 dev->data->port_id, (*priv->rxqs)[i]->idx); in mlx5_rxq_start()
180 ret = priv->obj_ops.rxq_obj_new(dev, i); in mlx5_rxq_start()
186 dev->data->port_id, i, (void *)&rxq_ctrl->obj); in mlx5_rxq_start()
193 mlx5_rxq_release(dev, i); in mlx5_rxq_start()
211 mlx5_hairpin_auto_bind(struct rte_eth_dev *dev) in mlx5_hairpin_auto_bind() argument
213 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_hairpin_auto_bind()
223 uint16_t self_port = dev->data->port_id; in mlx5_hairpin_auto_bind()
226 txq_ctrl = mlx5_txq_get(dev, i); in mlx5_hairpin_auto_bind()
230 mlx5_txq_release(dev, i); in mlx5_hairpin_auto_bind()
236 mlx5_txq_release(dev, i); in mlx5_hairpin_auto_bind()
240 mlx5_txq_release(dev, i); in mlx5_hairpin_auto_bind()
245 txq_ctrl = mlx5_txq_get(dev, i); in mlx5_hairpin_auto_bind()
249 mlx5_txq_release(dev, i); in mlx5_hairpin_auto_bind()
258 dev->data->port_id, i); in mlx5_hairpin_auto_bind()
259 mlx5_txq_release(dev, i); in mlx5_hairpin_auto_bind()
263 rxq_ctrl = mlx5_rxq_get(dev, in mlx5_hairpin_auto_bind()
266 mlx5_txq_release(dev, i); in mlx5_hairpin_auto_bind()
269 dev->data->port_id, in mlx5_hairpin_auto_bind()
277 "Rx queue %d", dev->data->port_id, in mlx5_hairpin_auto_bind()
285 dev->data->port_id, in mlx5_hairpin_auto_bind()
306 mlx5_txq_release(dev, i); in mlx5_hairpin_auto_bind()
307 mlx5_rxq_release(dev, txq_ctrl->hairpin_conf.peers[0].queue); in mlx5_hairpin_auto_bind()
311 mlx5_txq_release(dev, i); in mlx5_hairpin_auto_bind()
312 mlx5_rxq_release(dev, txq_ctrl->hairpin_conf.peers[0].queue); in mlx5_hairpin_auto_bind()
334 mlx5_hairpin_queue_peer_update(struct rte_eth_dev *dev, uint16_t peer_queue, in mlx5_hairpin_queue_peer_update() argument
339 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_hairpin_queue_peer_update()
342 if (dev->data->dev_started == 0) { in mlx5_hairpin_queue_peer_update()
345 dev->data->port_id); in mlx5_hairpin_queue_peer_update()
356 txq_ctrl = mlx5_txq_get(dev, peer_queue); in mlx5_hairpin_queue_peer_update()
360 dev->data->port_id, peer_queue); in mlx5_hairpin_queue_peer_update()
366 dev->data->port_id, peer_queue); in mlx5_hairpin_queue_peer_update()
367 mlx5_txq_release(dev, peer_queue); in mlx5_hairpin_queue_peer_update()
373 dev->data->port_id, peer_queue); in mlx5_hairpin_queue_peer_update()
374 mlx5_txq_release(dev, peer_queue); in mlx5_hairpin_queue_peer_update()
383 mlx5_txq_release(dev, peer_queue); in mlx5_hairpin_queue_peer_update()
387 rxq_ctrl = mlx5_rxq_get(dev, peer_queue); in mlx5_hairpin_queue_peer_update()
391 dev->data->port_id, peer_queue); in mlx5_hairpin_queue_peer_update()
397 dev->data->port_id, peer_queue); in mlx5_hairpin_queue_peer_update()
398 mlx5_rxq_release(dev, peer_queue); in mlx5_hairpin_queue_peer_update()
404 dev->data->port_id, peer_queue); in mlx5_hairpin_queue_peer_update()
405 mlx5_rxq_release(dev, peer_queue); in mlx5_hairpin_queue_peer_update()
413 mlx5_rxq_release(dev, peer_queue); in mlx5_hairpin_queue_peer_update()
436 mlx5_hairpin_queue_peer_bind(struct rte_eth_dev *dev, uint16_t cur_queue, in mlx5_hairpin_queue_peer_bind() argument
449 dev->data->port_id, cur_queue, peer_info->peer_q); in mlx5_hairpin_queue_peer_bind()
456 txq_ctrl = mlx5_txq_get(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
460 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
466 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
467 mlx5_txq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
473 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
474 mlx5_txq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
479 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
480 mlx5_txq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
491 " mismatch", dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
492 mlx5_txq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
499 " mismatch", dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
500 mlx5_txq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
510 mlx5_txq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
515 rxq_ctrl = mlx5_rxq_get(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
519 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
525 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
526 mlx5_rxq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
532 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
533 mlx5_rxq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
538 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
539 mlx5_rxq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
546 " mismatch", dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
547 mlx5_rxq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
554 " mismatch", dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_bind()
555 mlx5_rxq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
565 mlx5_rxq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_bind()
586 mlx5_hairpin_queue_peer_unbind(struct rte_eth_dev *dev, uint16_t cur_queue, in mlx5_hairpin_queue_peer_unbind() argument
595 txq_ctrl = mlx5_txq_get(dev, cur_queue); in mlx5_hairpin_queue_peer_unbind()
599 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_unbind()
605 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_unbind()
606 mlx5_txq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_unbind()
612 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_unbind()
613 mlx5_txq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_unbind()
619 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_unbind()
620 mlx5_txq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_unbind()
628 mlx5_txq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_unbind()
633 rxq_ctrl = mlx5_rxq_get(dev, cur_queue); in mlx5_hairpin_queue_peer_unbind()
637 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_unbind()
643 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_unbind()
644 mlx5_rxq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_unbind()
649 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_unbind()
650 mlx5_rxq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_unbind()
656 dev->data->port_id, cur_queue); in mlx5_hairpin_queue_peer_unbind()
657 mlx5_rxq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_unbind()
665 mlx5_rxq_release(dev, cur_queue); in mlx5_hairpin_queue_peer_unbind()
683 mlx5_hairpin_bind_single_port(struct rte_eth_dev *dev, uint16_t rx_port) in mlx5_hairpin_bind_single_port() argument
685 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_hairpin_bind_single_port()
709 txq_ctrl = mlx5_txq_get(dev, i); in mlx5_hairpin_bind_single_port()
713 mlx5_txq_release(dev, i); in mlx5_hairpin_bind_single_port()
736 mlx5_txq_release(dev, i); in mlx5_hairpin_bind_single_port()
742 mlx5_txq_release(dev, i); in mlx5_hairpin_bind_single_port()
749 txq_ctrl = mlx5_txq_get(dev, i); in mlx5_hairpin_bind_single_port()
753 mlx5_txq_release(dev, i); in mlx5_hairpin_bind_single_port()
757 mlx5_txq_release(dev, i); in mlx5_hairpin_bind_single_port()
768 mlx5_txq_release(dev, i); in mlx5_hairpin_bind_single_port()
772 ret = mlx5_hairpin_queue_peer_bind(dev, i, &peer, 1); in mlx5_hairpin_bind_single_port()
774 mlx5_txq_release(dev, i); in mlx5_hairpin_bind_single_port()
790 mlx5_txq_release(dev, i); in mlx5_hairpin_bind_single_port()
793 mlx5_txq_release(dev, i); in mlx5_hairpin_bind_single_port()
803 txq_ctrl = mlx5_txq_get(dev, i); in mlx5_hairpin_bind_single_port()
808 mlx5_hairpin_queue_peer_unbind(dev, i, 1); in mlx5_hairpin_bind_single_port()
809 mlx5_txq_release(dev, i); in mlx5_hairpin_bind_single_port()
828 mlx5_hairpin_unbind_single_port(struct rte_eth_dev *dev, uint16_t rx_port) in mlx5_hairpin_unbind_single_port() argument
830 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_hairpin_unbind_single_port()
844 txq_ctrl = mlx5_txq_get(dev, i); in mlx5_hairpin_unbind_single_port()
848 mlx5_txq_release(dev, i); in mlx5_hairpin_unbind_single_port()
852 mlx5_txq_release(dev, i); in mlx5_hairpin_unbind_single_port()
861 mlx5_txq_release(dev, i); in mlx5_hairpin_unbind_single_port()
868 mlx5_txq_release(dev, i); in mlx5_hairpin_unbind_single_port()
875 ret = mlx5_hairpin_queue_peer_unbind(dev, i, 1); in mlx5_hairpin_unbind_single_port()
890 mlx5_hairpin_bind(struct rte_eth_dev *dev, uint16_t rx_port) in mlx5_hairpin_bind() argument
894 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_hairpin_bind()
904 ret = mlx5_hairpin_bind_single_port(dev, p); in mlx5_hairpin_bind()
910 return mlx5_hairpin_bind_single_port(dev, rx_port); in mlx5_hairpin_bind()
915 mlx5_hairpin_unbind_single_port(dev, pp); in mlx5_hairpin_bind()
924 mlx5_hairpin_unbind(struct rte_eth_dev *dev, uint16_t rx_port) in mlx5_hairpin_unbind() argument
928 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_hairpin_unbind()
932 ret = mlx5_hairpin_unbind_single_port(dev, p); in mlx5_hairpin_unbind()
937 ret = mlx5_hairpin_unbind_single_port(dev, rx_port); in mlx5_hairpin_unbind()
964 mlx5_hairpin_get_peer_ports(struct rte_eth_dev *dev, uint16_t *peer_ports, in mlx5_hairpin_get_peer_ports() argument
967 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_hairpin_get_peer_ports()
977 txq_ctrl = mlx5_txq_get(dev, i); in mlx5_hairpin_get_peer_ports()
981 mlx5_txq_release(dev, i); in mlx5_hairpin_get_peer_ports()
987 mlx5_txq_release(dev, i); in mlx5_hairpin_get_peer_ports()
994 mlx5_txq_release(dev, i); in mlx5_hairpin_get_peer_ports()
998 rxq_ctrl = mlx5_rxq_get(dev, i); in mlx5_hairpin_get_peer_ports()
1002 mlx5_rxq_release(dev, i); in mlx5_hairpin_get_peer_ports()
1008 mlx5_rxq_release(dev, i); in mlx5_hairpin_get_peer_ports()
1015 mlx5_rxq_release(dev, i); in mlx5_hairpin_get_peer_ports()
1042 mlx5_dev_start(struct rte_eth_dev *dev) in mlx5_dev_start() argument
1044 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_dev_start()
1048 DRV_LOG(DEBUG, "port %u starting device", dev->data->port_id); in mlx5_dev_start()
1055 if (dev->data->nb_rx_queues > 0) { in mlx5_dev_start()
1056 ret = mlx5_dev_configure_rss_reta(dev); in mlx5_dev_start()
1059 dev->data->port_id, strerror(rte_errno)); in mlx5_dev_start()
1063 ret = mlx5_txpp_start(dev); in mlx5_dev_start()
1066 dev->data->port_id, strerror(rte_errno)); in mlx5_dev_start()
1069 ret = mlx5_txq_start(dev); in mlx5_dev_start()
1072 dev->data->port_id, strerror(rte_errno)); in mlx5_dev_start()
1075 ret = mlx5_rxq_start(dev); in mlx5_dev_start()
1078 dev->data->port_id, strerror(rte_errno)); in mlx5_dev_start()
1085 ret = mlx5_hairpin_auto_bind(dev); in mlx5_dev_start()
1088 dev->data->port_id, strerror(rte_errno)); in mlx5_dev_start()
1092 dev->data->dev_started = 1; in mlx5_dev_start()
1093 ret = mlx5_rx_intr_vec_enable(dev); in mlx5_dev_start()
1096 dev->data->port_id); in mlx5_dev_start()
1099 mlx5_os_stats_init(dev); in mlx5_dev_start()
1100 ret = mlx5_traffic_enable(dev); in mlx5_dev_start()
1103 dev->data->port_id); in mlx5_dev_start()
1107 mlx5_flow_rxq_dynf_metadata_set(dev); in mlx5_dev_start()
1109 mlx5_rxq_timestamp_set(dev); in mlx5_dev_start()
1111 mlx5_txq_dynf_timestamp_set(dev); in mlx5_dev_start()
1117 ret = mlx5_flow_start_default(dev); in mlx5_dev_start()
1120 dev->data->port_id, strerror(rte_errno)); in mlx5_dev_start()
1124 dev->tx_pkt_burst = mlx5_select_tx_function(dev); in mlx5_dev_start()
1125 dev->rx_pkt_burst = mlx5_select_rx_function(dev); in mlx5_dev_start()
1127 mlx5_mp_os_req_start_rxtx(dev); in mlx5_dev_start()
1130 (uint32_t)dev->data->port_id; in mlx5_dev_start()
1133 dev->data->port_id); in mlx5_dev_start()
1134 dev->data->dev_conf.intr_conf.lsc = 0; in mlx5_dev_start()
1135 dev->data->dev_conf.intr_conf.rmv = 0; in mlx5_dev_start()
1139 (uint32_t)dev->data->port_id; in mlx5_dev_start()
1144 dev->data->dev_started = 0; in mlx5_dev_start()
1145 mlx5_flow_stop_default(dev); in mlx5_dev_start()
1146 mlx5_traffic_disable(dev); in mlx5_dev_start()
1147 mlx5_txq_stop(dev); in mlx5_dev_start()
1148 mlx5_rxq_stop(dev); in mlx5_dev_start()
1149 mlx5_txpp_stop(dev); /* Stop last. */ in mlx5_dev_start()
1163 mlx5_dev_stop(struct rte_eth_dev *dev) in mlx5_dev_stop() argument
1165 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_dev_stop()
1167 dev->data->dev_started = 0; in mlx5_dev_stop()
1169 dev->rx_pkt_burst = removed_rx_burst; in mlx5_dev_stop()
1170 dev->tx_pkt_burst = removed_tx_burst; in mlx5_dev_stop()
1173 mlx5_mp_os_req_stop_rxtx(dev); in mlx5_dev_stop()
1175 DRV_LOG(DEBUG, "port %u stopping device", dev->data->port_id); in mlx5_dev_stop()
1176 mlx5_flow_stop_default(dev); in mlx5_dev_stop()
1178 mlx5_traffic_disable(dev); in mlx5_dev_stop()
1180 mlx5_flow_list_flush(dev, &priv->flows, true); in mlx5_dev_stop()
1181 mlx5_rx_intr_vec_disable(dev); in mlx5_dev_stop()
1184 mlx5_txq_stop(dev); in mlx5_dev_stop()
1185 mlx5_rxq_stop(dev); in mlx5_dev_stop()
1186 mlx5_txpp_stop(dev); in mlx5_dev_stop()
1203 mlx5_traffic_enable(struct rte_eth_dev *dev) in mlx5_traffic_enable() argument
1205 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_traffic_enable()
1235 struct mlx5_txq_ctrl *txq_ctrl = mlx5_txq_get(dev, i); in mlx5_traffic_enable()
1243 ret = mlx5_ctrl_flow_source_queue(dev, i); in mlx5_traffic_enable()
1245 mlx5_txq_release(dev, i); in mlx5_traffic_enable()
1249 mlx5_txq_release(dev, i); in mlx5_traffic_enable()
1252 if (mlx5_flow_create_esw_table_zero_flow(dev)) in mlx5_traffic_enable()
1257 " supported.", dev->data->port_id); in mlx5_traffic_enable()
1260 ret = mlx5_flow_lacp_miss(dev); in mlx5_traffic_enable()
1263 "forward LACP to kernel.", dev->data->port_id); in mlx5_traffic_enable()
1266 , dev->data->port_id); in mlx5_traffic_enable()
1270 if (dev->data->promiscuous) { in mlx5_traffic_enable()
1277 ret = mlx5_ctrl_flow(dev, &promisc, &promisc); in mlx5_traffic_enable()
1281 if (dev->data->all_multicast) { in mlx5_traffic_enable()
1288 ret = mlx5_ctrl_flow(dev, &multicast, &multicast); in mlx5_traffic_enable()
1302 ret = mlx5_ctrl_flow_vlan(dev, &bcast, &bcast, in mlx5_traffic_enable()
1306 ret = mlx5_ctrl_flow_vlan(dev, &ipv6_multi_spec, in mlx5_traffic_enable()
1313 ret = mlx5_ctrl_flow(dev, &bcast, &bcast); in mlx5_traffic_enable()
1316 ret = mlx5_ctrl_flow(dev, &ipv6_multi_spec, in mlx5_traffic_enable()
1324 struct rte_ether_addr *mac = &dev->data->mac_addrs[i]; in mlx5_traffic_enable()
1340 ret = mlx5_ctrl_flow_vlan(dev, &unicast, in mlx5_traffic_enable()
1348 ret = mlx5_ctrl_flow(dev, &unicast, &unicast_mask); in mlx5_traffic_enable()
1356 mlx5_flow_list_flush(dev, &priv->ctrl_flows, false); in mlx5_traffic_enable()
1369 mlx5_traffic_disable(struct rte_eth_dev *dev) in mlx5_traffic_disable() argument
1371 struct mlx5_priv *priv = dev->data->dev_private; in mlx5_traffic_disable()
1373 mlx5_flow_list_flush(dev, &priv->ctrl_flows, false); in mlx5_traffic_disable()
1386 mlx5_traffic_restart(struct rte_eth_dev *dev) in mlx5_traffic_restart() argument
1388 if (dev->data->dev_started) { in mlx5_traffic_restart()
1389 mlx5_traffic_disable(dev); in mlx5_traffic_restart()
1390 return mlx5_traffic_enable(dev); in mlx5_traffic_restart()