* DPDK callback to change the MTU. * * @param dev * Pointer to Ethernet device structure. * @param in_mtu * New MTU. * * @return * 0 on success, a negative errno value otherwise and rte_errno is set. */
| 661 | * 0 on success, a negative errno value otherwise and rte_errno is set. |
| 662 | */ |
| 663 | int |
| 664 | mlx5_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) |
| 665 | { |
| 666 | struct mlx5_priv *priv = dev->data->dev_private; |
| 667 | uint16_t kern_mtu = 0; |
| 668 | int ret; |
| 669 | |
| 670 | ret = mlx5_get_mtu(dev, &kern_mtu); |
| 671 | if (ret) |
| 672 | return ret; |
| 673 | |
| 674 | if (kern_mtu == mtu) { |
| 675 | priv->mtu = mtu; |
| 676 | DRV_LOG(DEBUG, "port %u adapter MTU was already set to %u", |
| 677 | dev->data->port_id, mtu); |
| 678 | return 0; |
| 679 | } |
| 680 | |
| 681 | /* Set kernel interface MTU first. */ |
| 682 | ret = mlx5_set_mtu(dev, mtu); |
| 683 | if (ret) |
| 684 | return ret; |
| 685 | ret = mlx5_get_mtu(dev, &kern_mtu); |
| 686 | if (ret) |
| 687 | return ret; |
| 688 | if (kern_mtu == mtu) { |
| 689 | priv->mtu = mtu; |
| 690 | DRV_LOG(DEBUG, "port %u adapter MTU set to %u", |
| 691 | dev->data->port_id, mtu); |
| 692 | return 0; |
| 693 | } |
| 694 | rte_errno = EAGAIN; |
| 695 | return -rte_errno; |
| 696 | } |
| 697 | |
| 698 | /** |
| 699 | * Configure the RX function to use. |
no test coverage detected