diff mbox

[net-next] sfc: check MTU against minimum threshold

Message ID 09fc2c3f-744b-41e5-5801-96fa80cd6ad5@solarflare.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Bert Kenward Sept. 6, 2016, 4:50 p.m. UTC
Reported-by: Ma Yuying <yuma@redhat.com>
Suggested-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Bert Kenward <bkenward@solarflare.com>
---
 drivers/net/ethernet/sfc/efx.c        | 12 +++++++++++-
 drivers/net/ethernet/sfc/net_driver.h |  3 +++
 2 files changed, 14 insertions(+), 1 deletion(-)

Comments

Jarod Wilson Sept. 6, 2016, 9:31 p.m. UTC | #1
On Tue, Sep 06, 2016 at 05:50:00PM +0100, Bert Kenward wrote:
> Reported-by: Ma Yuying <yuma@redhat.com>
> Suggested-by: Jarod Wilson <jarod@redhat.com>
> Signed-off-by: Bert Kenward <bkenward@solarflare.com>

Works for me, until we can get some dialog going about possible
centralization (or not) of MTU checking, so we don't have this slightly
crazy proliferation of *_MIN_MTU anymore. :)

Reviewed-by: Jarod Wilson <jarod@redhat.com>
David Miller Sept. 6, 2016, 11:54 p.m. UTC | #2
From: Bert Kenward <bkenward@solarflare.com>
Date: Tue, 6 Sep 2016 17:50:00 +0100

> Reported-by: Ma Yuying <yuma@redhat.com>
> Suggested-by: Jarod Wilson <jarod@redhat.com>
> Signed-off-by: Bert Kenward <bkenward@solarflare.com>

Applied.
diff mbox

Patch

diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
index f3826ae..3cf3557 100644
--- a/drivers/net/ethernet/sfc/efx.c
+++ b/drivers/net/ethernet/sfc/efx.c
@@ -2263,8 +2263,18 @@  static int efx_change_mtu(struct net_device *net_dev, int new_mtu)
 	rc = efx_check_disabled(efx);
 	if (rc)
 		return rc;
-	if (new_mtu > EFX_MAX_MTU)
+	if (new_mtu > EFX_MAX_MTU) {
+		netif_err(efx, drv, efx->net_dev,
+			  "Requested MTU of %d too big (max: %d)\n",
+			  new_mtu, EFX_MAX_MTU);
 		return -EINVAL;
+	}
+	if (new_mtu < EFX_MIN_MTU) {
+		netif_err(efx, drv, efx->net_dev,
+			  "Requested MTU of %d too small (min: %d)\n",
+			  new_mtu, EFX_MIN_MTU);
+		return -EINVAL;
+	}
 
 	netif_dbg(efx, drv, efx->net_dev, "changing MTU to %d\n", new_mtu);
 
diff --git a/drivers/net/ethernet/sfc/net_driver.h b/drivers/net/ethernet/sfc/net_driver.h
index 0a2504b..99d8c82 100644
--- a/drivers/net/ethernet/sfc/net_driver.h
+++ b/drivers/net/ethernet/sfc/net_driver.h
@@ -76,6 +76,9 @@ 
 /* Maximum possible MTU the driver supports */
 #define EFX_MAX_MTU (9 * 1024)
 
+/* Minimum MTU, from RFC791 (IP) */
+#define EFX_MIN_MTU 68
+
 /* Size of an RX scatter buffer.  Small enough to pack 2 into a 4K page,
  * and should be a multiple of the cache line size.
  */