Commit 5a433b3a authored by Harvey Harrison's avatar Harvey Harrison Committed by John W. Linville

mac80211: remove unnecessary byteshifts in frame control testing

Byteswap the constants rather than the frame_control member.
Signed-off-by: default avatarHarvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 88787d28
...@@ -552,16 +552,17 @@ enum ieee80211_back_parties { ...@@ -552,16 +552,17 @@ enum ieee80211_back_parties {
*/ */
static inline u8 *ieee80211_get_SA(struct ieee80211_hdr *hdr) static inline u8 *ieee80211_get_SA(struct ieee80211_hdr *hdr)
{ {
u8 *raw = (u8 *) hdr; __le16 fc = hdr->frame_control;
u8 tofrom = (*(raw+1)) & 3; /* get the TODS and FROMDS bits */ fc &= cpu_to_le16(IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS);
switch (tofrom) { switch (fc) {
case 2: case __constant_cpu_to_le16(IEEE80211_FCTL_FROMDS):
return hdr->addr3; return hdr->addr3;
case 3: case __constant_cpu_to_le16(IEEE80211_FCTL_TODS|IEEE80211_FCTL_FROMDS):
return hdr->addr4; return hdr->addr4;
default:
return hdr->addr2;
} }
return hdr->addr2;
} }
/** /**
...@@ -577,12 +578,13 @@ static inline u8 *ieee80211_get_SA(struct ieee80211_hdr *hdr) ...@@ -577,12 +578,13 @@ static inline u8 *ieee80211_get_SA(struct ieee80211_hdr *hdr)
*/ */
static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr) static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr)
{ {
u8 *raw = (u8 *) hdr; __le16 fc = hdr->frame_control;
u8 to_ds = (*(raw+1)) & 1; /* get the TODS bit */ fc &= cpu_to_le16(IEEE80211_FCTL_TODS);
if (to_ds) if (fc)
return hdr->addr3; return hdr->addr3;
return hdr->addr1; else
return hdr->addr1;
} }
/** /**
...@@ -595,8 +597,8 @@ static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr) ...@@ -595,8 +597,8 @@ static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr)
*/ */
static inline int ieee80211_get_morefrag(struct ieee80211_hdr *hdr) static inline int ieee80211_get_morefrag(struct ieee80211_hdr *hdr)
{ {
return (le16_to_cpu(hdr->frame_control) & __le16 fc = hdr->frame_control;
IEEE80211_FCTL_MOREFRAGS) != 0; return !!(fc & cpu_to_le16(IEEE80211_FCTL_MOREFRAGS));
} }
#endif /* IEEE80211_H */ #endif /* IEEE80211_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment