mac80211: Fix MAX MTU Calculation
A message that is not in the archive (sent off-list or not yet received): 201212201236.qBKCakFZ011657@chaitanya-desktop
RFC 1/1 mac80211: Fix MAX MTU Calculation
Fix the MTU calculation, we should check for data_len+ mesh hdr len and shouldn't include any header lengths.
ToDo: Get the MAX_DATA_LEN based on driver's AMSDU capability.
---
net/mac80211/iface.c | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-)
net/mac80211/iface.c +16 -1
@@ -214,8 +214,23 @@ static int ieee80211_change_mtu(struct net_device *dev, int new_mtu)/* FIX: what would be proper limits for MTU? * This interface uses 802.3 frames. */ +/* Fixed: MTU needn't worry about headers*/ + +/* 802.11-2012: 8.2.3: The maximum frame body size is determined by +1. The maximum MSDU size (2304 octets), +2. plus the length of the Mesh Control field (6, 12, or 18 octets) +if present, +3. the maximum unencrypted MMPDU size excluding the MAC header and +FCS (2304 octets) or +4. the maximum A- MSDU size (3839 or 7935 octets), +plus any overhead from security encapsulation. +Note1: IEEE80211_MAX_DATA_LEN doesnt include any headers (2304), +so it can be used directly+ Mesh HDR Len +Note2: In Other places (like skb_alloc) its handled properly. +*/ +if (new_mtu <256 || - new_mtu >IEEE80211_MAX_DATA_LEN -24 -6 - meshhdrlen) { + new_mtu >IEEE80211_MAX_DATA_LEN + meshhdrlen) {return -EINVAL ; }
Johannes Berg
maintainerQuoted 25 lines · Chaitanya
Fix the MTU calculation, we should check for data_len+ mesh hdr len and shouldn't include any header lengths.
ToDo: Get the
MAX_DATA_LENbased on driver's AMSDU capability.Signed-off-by T Krishna Chaitanya <[email protected]>---
net/mac80211/iface.c | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-)net/mac80211/iface.c +5
-0@@ -214,8 +214,23 @@ static int ieee80211_change_mtu(struct net_device *dev, int new_mtu)/* FIX: what would be proper limits for MTU? * This interface uses 802.3 frames. */ +/* Fixed: MTU needn't worry about headers*/ + +/* 802.11-2012: 8.2.3: The maximum frame body size is determined by +1. The maximum MSDU size (2304 octets), +2. plus the length of the Mesh Control field (6, 12, or 18 octets)
net/mac80211/iface.c static int ieee80211_change_mtu(struct net_device *dev, int new_mtu) · line 231
Quoted 10 lines
net/mac80211/iface.c +10
-0+if present, +3. the maximum unencrypted MMPDU size excluding the MAC header and +FCS (2304 octets) or +4. the maximum A- MSDU size (3839 or 7935 octets), +plus any overhead from security encapsulation. +Note1: IEEE80211_MAX_DATA_LEN doesnt include any headers (2304), +so it can be used directly+ Mesh HDR Len +Note2: In Other places (like skb_alloc) its handled properly. +*/ +
ok so the comment style is wrong, you shouldn't list changelog-type things in comments ("Fixed: ...") etc.
I also don't understand why we should add the mesh length? It seems that this is really just the maximum MSDU size, i.e. 2304 octets.
johannes
Quoted 39 lines · Johannes Berg
Quoted 25 lines · Chaitanya
Fix the MTU calculation, we should check for data_len+ mesh hdr len and shouldn't include any header lengths.
ToDo: Get the
MAX_DATA_LENbased on driver's AMSDU capability.Signed-off-by T Krishna Chaitanya <[email protected]>---
net/mac80211/iface.c | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-)net/mac80211/iface.c +5
-0@@ -214,8 +214,23 @@ static int ieee80211_change_mtu(struct net_device *dev, int new_mtu)/* FIX: what would be proper limits for MTU? * This interface uses 802.3 frames. */ +/* Fixed: MTU needn't worry about headers*/ + +/* 802.11-2012: 8.2.3: The maximum frame body size is determined by +1. The maximum MSDU size (2304 octets), +2. plus the length of the Mesh Control field (6, 12, or 18 octets) net/mac80211/iface.c static int ieee80211_change_mtu(struct net_device *dev, int new_mtu) · line 231
Quoted 10 lines
net/mac80211/iface.c +10
-0+if present, +3. the maximum unencrypted MMPDU size excluding the MAC header and +FCS (2304 octets) or +4. the maximum A- MSDU size (3839 or 7935 octets), +plus any overhead from security encapsulation. +Note1: IEEE80211_MAX_DATA_LEN doesnt include any headers (2304), +so it can be used directly+ Mesh HDR Len +Note2: In Other places (like skb_alloc) its handled properly. +*/ +ok so the comment style is wrong, you shouldn't list changelog-type things in comments ("Fixed: ...") etc.
Quoted 5 lines
I also don't understand why we should add the mesh length? It seems that this is really just the maximum MSDU size, i.e. 2304 octets.
johannes
Ok, will change the comments. So shall i remove the comments for FIX as well (or) should i retain them?
As for WLAN is concerned the mesh
header is part of data (MSDU) hence the standard says the MSDU can be Maximum of 2304 + Any Mesh Control Field. (#2 above).