When encapsulating 802.3 frames into the 802.11 ones,
8-byte SNAP header added to save ethtype. SNAP is part of
the frame body, thus should be counted in MSDU. So,
MTU = MSDU - SNAP

Signed-off-by: Vladimir Kondratiev <[email protected]>
---
 drivers/net/wireless/ath/wil6210/main.c    | 2 +-
 drivers/net/wireless/ath/wil6210/wil6210.h | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/wil6210/main.c 
b/drivers/net/wireless/ath/wil6210/main.c
index 0af51fc..71ebbc1 100644
--- a/drivers/net/wireless/ath/wil6210/main.c
+++ b/drivers/net/wireless/ath/wil6210/main.c
@@ -53,7 +53,7 @@ static int mtu_max_set(const char *val, const struct 
kernel_param *kp)
        if (ret)
                return ret;
 
-       if (mtu_max < 68 || mtu_max > IEEE80211_MAX_DATA_LEN_DMG)
+       if (mtu_max < 68 || mtu_max > WIL_MAX_ETH_MTU)
                ret = -EINVAL;
 
        return ret;
diff --git a/drivers/net/wireless/ath/wil6210/wil6210.h 
b/drivers/net/wireless/ath/wil6210/wil6210.h
index bedb9ed..81309dc 100644
--- a/drivers/net/wireless/ath/wil6210/wil6210.h
+++ b/drivers/net/wireless/ath/wil6210/wil6210.h
@@ -77,6 +77,10 @@ static inline u32 wil_mtu2macbuf(u32 mtu)
        return ALIGN(mtu + WIL_MAX_MPDU_OVERHEAD, 8);
 }
 
+/* MTU for Ethernet need to take into account 8-byte SNAP header
+ * to be added when encapsulating Ethernet frame into 802.11
+ */
+#define WIL_MAX_ETH_MTU                (IEEE80211_MAX_DATA_LEN_DMG - 8)
 /* Max supported by wil6210 value for interrupt threshold is 5sec. */
 #define WIL6210_ITR_TRSH_MAX (5000000)
 #define WIL6210_ITR_TRSH_DEFAULT       (300) /* usec */
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to