adm8211: remove masking of protected bit
PATCH 1/1 adm8211: remove masking of protected bit
Use the ieee80211_hdrlen helper to avoid byteshifting.
The masking of the protected bit made the two tests below never trigger.
Possibly a bugfix.
---
I'm not sure if this was intentional, please review. If it was intentional the two if-blocks should probably be deleted.
drivers/net/wireless/adm8211.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-)
drivers/net/wireless/adm8211.c +3 -5
@@ -1685,7 +1685,6 @@ static void adm8211_tx_raw(struct ieee80211_hw *dev, struct sk_buff *skb,static int adm8211_tx (struct ieee80211_hw *dev,struct sk_buff *skb) {struct adm8211_tx_hdr *txhdr; -u16 fc;size_t payload_len, hdrlen;int plcp, dur, len, plcp_signal, short_preamble;struct ieee80211_hdr *hdr;
@@ -1696,8 +1695,7 @@ static int adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb) plcp_signal = txrate->bitrate; hdr = (struct ieee80211_hdr *)skb->data; - fc =le16_to_cpu (hdr->frame_control) & ~IEEE80211_FCTL_PROTECTED ; - hdrlen =ieee80211_get_hdrlen (fc); + hdrlen =ieee80211_hdrlen (hdr->frame_control);memcpy (skb->cb, skb->data, hdrlen); hdr = (struct ieee80211_hdr *)skb->cb;skb_pull (skb, hdrlen);
@@ -1711,7 +1709,7 @@ static int adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb) txhdr->frame_control = hdr->frame_control; len = hdrlen + payload_len +FCS_LEN ; -if (fc &IEEE80211_FCTL_PROTECTED ) +if (ieee80211_has_protected (hdr->frame_control)) len +=8 ; txhdr->frag =cpu_to_le16 (0x0FFF );
@@ -1730,7 +1728,7 @@ static int adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb)if (info->flags &IEEE80211_TX_CTL_USE_RTS_CTS ) txhdr->header_control |=cpu_to_le16 (ADM8211_TXHDRCTL_ENABLE_RTS ); -if (fc &IEEE80211_FCTL_PROTECTED ) +if (ieee80211_has_protected (hdr->frame_control)) txhdr->header_control |=cpu_to_le16 (ADM8211_TXHDRCTL_ENABLE_WEP_ENGINE ); txhdr->retry_limit = info->control.retry_limit;
Signature · 1 line
1.5.6.290.gc4e15
Johannes Berg
maintainerQuoted 6 lines · Harvey Harrison
Use the
ieee80211_hdrlenhelper to avoid byteshifting.The masking of the protected bit made the two tests below never trigger.
I'm not sure if this was intentional, please review. If it was intentional the two if-blocks should probably be deleted.
It was intentional, I think I asked before, adm8211 doesn't support hw crypto. But I agree, those code blocks should be deleted since the driver shouldn't use that bit anyway to detect whether to do hw crypto or not.
johannes
Quoted 3 lines · On Thursday 19 June 2008 23:34:10 Harvey Harrison wrote:
I'm not sure if this was intentional, please review. If it was intentional the two if-blocks should probably be deleted.
This was intentional. The key configuration code for adm8211 was never hooked up so the hardware can't do encryption. You can remove the checks for the protected frame bit. Just leave the local fc variable in.
-Michael Wu
PATCH 1/1 adm8211: remove unnecessary protected bit mask/check
Removes now unused fc local var and uses the new ieee80211_hdrlen which directly uses the le16 frame control value.
--- drivers/net/wireless/adm8211.c | 9 +-------- 1 files changed, 1 insertions(+), 8 deletions(-)
drivers/net/wireless/adm8211.c +1 -8
@@ -1685,7 +1685,6 @@ static void adm8211_tx_raw(struct ieee80211_hw *dev, struct sk_buff *skb,static int adm8211_tx (struct ieee80211_hw *dev,struct sk_buff *skb) {struct adm8211_tx_hdr *txhdr; -u16 fc;size_t payload_len, hdrlen;int plcp, dur, len, plcp_signal, short_preamble;struct ieee80211_hdr *hdr;
@@ -1696,8 +1695,7 @@ static int adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb) plcp_signal = txrate->bitrate; hdr = (struct ieee80211_hdr *)skb->data; - fc =le16_to_cpu (hdr->frame_control) & ~IEEE80211_FCTL_PROTECTED ; - hdrlen =ieee80211_get_hdrlen (fc); + hdrlen =ieee80211_hdrlen (hdr->frame_control);memcpy (skb->cb, skb->data, hdrlen); hdr = (struct ieee80211_hdr *)skb->cb;skb_pull (skb, hdrlen);
@@ -1711,8 +1709,6 @@ static int adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb) txhdr->frame_control = hdr->frame_control; len = hdrlen + payload_len +FCS_LEN ; -if (fc &IEEE80211_FCTL_PROTECTED ) - len +=8 ; txhdr->frag =cpu_to_le16 (0x0FFF ); adm8211_calc_durations(&dur, &plcp, payload_len,
@@ -1730,9 +1726,6 @@ static int adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb)if (info->flags &IEEE80211_TX_CTL_USE_RTS_CTS ) txhdr->header_control |=cpu_to_le16 (ADM8211_TXHDRCTL_ENABLE_RTS ); -if (fc &IEEE80211_FCTL_PROTECTED ) - txhdr->header_control |=cpu_to_le16 (ADM8211_TXHDRCTL_ENABLE_WEP_ENGINE ); - txhdr->retry_limit = info->control.retry_limit;adm8211_tx_raw (dev, skb, plcp_signal, hdrlen);
Signature · 1 line
1.5.6.290.gc4e15