linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "John W. Linville" <linville@tuxdriver.com>
To: stable@kernel.org
Cc: linux-wireless@vger.kernel.org,
	Michael Wu <flamingice@sourmilk.net>,
	"John W. Linville" <linville@tuxdriver.com>
Subject: [PATCH] rtl8187: Fix more frag bit checking, rts duration calc
Date: Fri, 26 Oct 2007 17:04:38 -0400	[thread overview]
Message-ID: <11934326831563-git-send-email-linville@tuxdriver.com> (raw)
In-Reply-To: <11934326831029-git-send-email-linville@tuxdriver.com>

From: Michael Wu <flamingice@sourmilk.net>

The wrong pointer is passed to ieee80211_get_morefrag. Fix this.

While we're at it, reorder things so they look better and the rts duration
calculation is done with the right length.

Thanks to Christoph Hellwig for finding the ieee80211_get_morefrag issue.

Signed-off-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
---
 drivers/net/wireless/rtl8187_dev.c |   31 ++++++++++++++++---------------
 1 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/drivers/net/wireless/rtl8187_dev.c b/drivers/net/wireless/rtl8187_dev.c
index e61c6d5..66704b8 100644
--- a/drivers/net/wireless/rtl8187_dev.c
+++ b/drivers/net/wireless/rtl8187_dev.c
@@ -78,7 +78,8 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb,
 	struct rtl8187_tx_hdr *hdr;
 	struct rtl8187_tx_info *info;
 	struct urb *urb;
-	u32 tmp;
+	__le16 rts_dur = 0;
+	u32 flags;
 
 	urb = usb_alloc_urb(0, GFP_ATOMIC);
 	if (!urb) {
@@ -86,24 +87,24 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb,
 		return 0;
 	}
 
-	hdr = (struct rtl8187_tx_hdr *)skb_push(skb, sizeof(*hdr));
-	tmp = skb->len - sizeof(*hdr);
-	tmp |= RTL8187_TX_FLAG_NO_ENCRYPT;
-	tmp |= control->rts_cts_rate << 19;
-	tmp |= control->tx_rate << 24;
-	if (ieee80211_get_morefrag((struct ieee80211_hdr *)skb))
-		tmp |= RTL8187_TX_FLAG_MORE_FRAG;
+	flags = skb->len;
+	flags |= RTL8187_TX_FLAG_NO_ENCRYPT;
+	flags |= control->rts_cts_rate << 19;
+	flags |= control->tx_rate << 24;
+	if (ieee80211_get_morefrag((struct ieee80211_hdr *)skb->data))
+		flags |= RTL8187_TX_FLAG_MORE_FRAG;
 	if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS) {
-		tmp |= RTL8187_TX_FLAG_RTS;
-		hdr->rts_duration =
-			ieee80211_rts_duration(dev, skb->len, control);
+		flags |= RTL8187_TX_FLAG_RTS;
+		rts_dur = ieee80211_rts_duration(dev, skb->len, control);
 	}
 	if (control->flags & IEEE80211_TXCTL_USE_CTS_PROTECT)
-		tmp |= RTL8187_TX_FLAG_CTS;
-	hdr->flags = cpu_to_le32(tmp);
+		flags |= RTL8187_TX_FLAG_CTS;
+
+	hdr = (struct rtl8187_tx_hdr *)skb_push(skb, sizeof(*hdr));
+	hdr->flags = cpu_to_le32(flags);
 	hdr->len = 0;
-	tmp = control->retry_limit << 8;
-	hdr->retry = cpu_to_le32(tmp);
+	hdr->rts_duration = rts_dur;
+	hdr->retry = cpu_to_le32(control->retry_limit << 8);
 
 	info = (struct rtl8187_tx_info *)skb->cb;
 	info->control = kmemdup(control, sizeof(*control), GFP_ATOMIC);
-- 
1.5.2.4


  reply	other threads:[~2007-10-26 21:07 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-26 21:04 [PATCH] Add get_unaligned to ieee80211_get_radiotap_len John W. Linville
2007-10-26 21:04 ` [PATCH] Improve sanity checks on injected packets John W. Linville
2007-10-26 21:04   ` [PATCH] mac80211: filter locally-originated multicast frames John W. Linville
2007-10-26 21:04     ` [PATCH] libertas: fix endianness breakage John W. Linville
2007-10-26 21:04       ` [PATCH] libertas: more " John W. Linville
2007-10-26 21:04         ` [PATCH] ieee80211: fix TKIP QoS bug John W. Linville
2007-10-26 21:04           ` [PATCH] mac80211: reorder association debug output John W. Linville
2007-10-26 21:04             ` [PATCH] mac80211: store channel info in sta_bss_list John W. Linville
2007-10-26 21:04               ` [PATCH] mac80211: store SSID " John W. Linville
2007-10-26 21:04                 ` [PATCH] mac80211: honor IW_SCAN_THIS_ESSID in siwscan ioctl John W. Linville
2007-10-26 21:04                   ` [PATCH] mac80211: only honor IW_SCAN_THIS_ESSID in STA, IBSS, and AP modes John W. Linville
2007-10-26 21:04                     ` [PATCH] mac80211: make ieee802_11_parse_elems return void John W. Linville
2007-10-26 21:04                       ` [PATCH] zd1201: avoid null ptr access of skb->dev John W. Linville
2007-10-26 21:04                         ` [PATCH] ipw2100: send WEXT scan events John W. Linville
2007-10-26 21:04                           ` John W. Linville [this message]
2007-10-26 21:04                             ` [PATCH] zd1211rw, fix oops when ejecting install media John W. Linville
2007-10-28  7:29                   ` [PATCH] mac80211: honor IW_SCAN_THIS_ESSID in siwscan ioctl Michael Wu
2007-10-28  7:31                     ` Michael Wu
2007-10-26 21:10             ` [PATCH] mac80211: reorder association debug output Johannes Berg
2007-10-26 21:23               ` John W. Linville
2007-10-26 21:31                 ` [stable] " Greg KH
2007-10-26 21:44                 ` Johannes Berg
2007-10-27 12:50                   ` John W. Linville
2007-10-27 12:58                     ` Johannes Berg
2007-10-28  7:57                       ` Michael Wu
  -- strict thread matches above, loose matches on Subject: below --
2007-10-10 21:28 [PATCH] rtl8187: Fix more frag bit checking, rts duration calc Michael Wu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=11934326831563-git-send-email-linville@tuxdriver.com \
    --to=linville@tuxdriver.com \
    --cc=flamingice@sourmilk.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=stable@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).