diff options
| author | Tony Lindgren <tony@atomide.com> | 2012-11-13 13:25:38 -0800 | 
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2012-11-13 13:25:38 -0800 | 
| commit | 89ab216b33ba9405880fd3d89531305a931bc70f (patch) | |
| tree | 8f6428ce51ecaed6f6e1379c036dbe341eb71e34 /net/wireless/util.c | |
| parent | c9d501e5cb0238910337213e12a09127221c35d8 (diff) | |
| parent | 46bf4a562207c5ebd24e1dde5e5ee326cd3d6b91 (diff) | |
| download | olio-linux-3.10-89ab216b33ba9405880fd3d89531305a931bc70f.tar.xz olio-linux-3.10-89ab216b33ba9405880fd3d89531305a931bc70f.zip  | |
Merge branch 'omap-for-v3.8/pm' into omap-for-v3.8/clock
Diffstat (limited to 'net/wireless/util.c')
| -rw-r--r-- | net/wireless/util.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/net/wireless/util.c b/net/wireless/util.c index ef35f4ef2aa..2762e832998 100644 --- a/net/wireless/util.c +++ b/net/wireless/util.c @@ -309,23 +309,21 @@ unsigned int ieee80211_get_hdrlen_from_skb(const struct sk_buff *skb)  }  EXPORT_SYMBOL(ieee80211_get_hdrlen_from_skb); -static int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr) +unsigned int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr)  {  	int ae = meshhdr->flags & MESH_FLAGS_AE; -	/* 7.1.3.5a.2 */ +	/* 802.11-2012, 8.2.4.7.3 */  	switch (ae) { +	default:  	case 0:  		return 6;  	case MESH_FLAGS_AE_A4:  		return 12;  	case MESH_FLAGS_AE_A5_A6:  		return 18; -	case (MESH_FLAGS_AE_A4 | MESH_FLAGS_AE_A5_A6): -		return 24; -	default: -		return 6;  	}  } +EXPORT_SYMBOL(ieee80211_get_mesh_hdrlen);  int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr,  			   enum nl80211_iftype iftype) @@ -373,6 +371,8 @@ int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr,  			/* make sure meshdr->flags is on the linear part */  			if (!pskb_may_pull(skb, hdrlen + 1))  				return -1; +			if (meshdr->flags & MESH_FLAGS_AE_A4) +				return -1;  			if (meshdr->flags & MESH_FLAGS_AE_A5_A6) {  				skb_copy_bits(skb, hdrlen +  					offsetof(struct ieee80211s_hdr, eaddr1), @@ -397,6 +397,8 @@ int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr,  			/* make sure meshdr->flags is on the linear part */  			if (!pskb_may_pull(skb, hdrlen + 1))  				return -1; +			if (meshdr->flags & MESH_FLAGS_AE_A5_A6) +				return -1;  			if (meshdr->flags & MESH_FLAGS_AE_A4)  				skb_copy_bits(skb, hdrlen +  					offsetof(struct ieee80211s_hdr, eaddr1),  |