summaryrefslogtreecommitdiffstats
path: root/sys/dev/mlx5
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2016-09-23 08:24:41 +0000
committerhselasky <hselasky@FreeBSD.org>2016-09-23 08:24:41 +0000
commit77f0950ec9cc1ebc34452b0cf96a4b9d768e9f88 (patch)
tree893aeaa335e13ac909bc34e7889a75981a76bbd4 /sys/dev/mlx5
parent70914e84195095a8c8ace743ed82cb8b57f1c7a0 (diff)
downloadFreeBSD-src-77f0950ec9cc1ebc34452b0cf96a4b9d768e9f88.zip
FreeBSD-src-77f0950ec9cc1ebc34452b0cf96a4b9d768e9f88.tar.gz
MFC r305874:
mlx5en: Allow setting the software MTU size below 1500 bytes The hardware MTU size can't be set to a value less than 1500 bytes due to side-band management support. Allow setting the software MTU size below 1500 bytes, thus creating a mismatch between hardware and software MTU sizes. Sponsored by: Mellanox Technologies
Diffstat (limited to 'sys/dev/mlx5')
-rw-r--r--sys/dev/mlx5/mlx5_en/mlx5_en_main.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
index 28007f3..70a1af8 100644
--- a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
+++ b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
@@ -2173,7 +2173,6 @@ mlx5e_set_dev_port_mtu(struct ifnet *ifp, int sw_mtu)
int hw_mtu;
int err;
-
err = mlx5_set_port_mtu(mdev, MLX5E_SW2HW_MTU(sw_mtu));
if (err) {
if_printf(ifp, "%s: mlx5_set_port_mtu failed setting %d, err=%d\n",
@@ -2181,19 +2180,20 @@ mlx5e_set_dev_port_mtu(struct ifnet *ifp, int sw_mtu)
return (err);
}
err = mlx5_query_port_oper_mtu(mdev, &hw_mtu);
- if (!err) {
- ifp->if_mtu = MLX5E_HW2SW_MTU(hw_mtu);
-
- if (ifp->if_mtu != sw_mtu) {
- if_printf(ifp, "Port MTU %d is different than "
- "ifp mtu %d\n", sw_mtu, (int)ifp->if_mtu);
- }
- } else {
+ if (err) {
if_printf(ifp, "Query port MTU, after setting new "
"MTU value, failed\n");
- ifp->if_mtu = sw_mtu;
- }
- return (0);
+ } else if (MLX5E_HW2SW_MTU(hw_mtu) < sw_mtu) {
+ err = -E2BIG,
+ if_printf(ifp, "Port MTU %d is smaller than "
+ "ifp mtu %d\n", hw_mtu, sw_mtu);
+ } else if (MLX5E_HW2SW_MTU(hw_mtu) > sw_mtu) {
+ err = -EINVAL;
+ if_printf(ifp, "Port MTU %d is bigger than "
+ "ifp mtu %d\n", hw_mtu, sw_mtu);
+ }
+ ifp->if_mtu = sw_mtu;
+ return (err);
}
int
OpenPOWER on IntegriCloud