Commit 8b9db0d0 authored by David S. Miller's avatar David S. Miller
Browse files

rtl818x: Remove SKB list assumptions.



Eliminate the assumption that SKBs and SKB list heads can
be cast to eachother in SKB list handling code.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6effee68
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -499,7 +499,7 @@ static void rtl8187b_status_cb(struct urb *urb)
	if (cmd_type == 1) {
		unsigned int pkt_rc, seq_no;
		bool tok;
		struct sk_buff *skb;
		struct sk_buff *skb, *iter;
		struct ieee80211_hdr *ieee80211hdr;
		unsigned long flags;

@@ -508,8 +508,9 @@ static void rtl8187b_status_cb(struct urb *urb)
		seq_no = (val >> 16) & 0xFFF;

		spin_lock_irqsave(&priv->b_tx_status.queue.lock, flags);
		skb_queue_reverse_walk(&priv->b_tx_status.queue, skb) {
			ieee80211hdr = (struct ieee80211_hdr *)skb->data;
		skb = NULL;
		skb_queue_reverse_walk(&priv->b_tx_status.queue, iter) {
			ieee80211hdr = (struct ieee80211_hdr *)iter->data;

			/*
			 * While testing, it was discovered that the seq_no
@@ -522,10 +523,12 @@ static void rtl8187b_status_cb(struct urb *urb)
			 * it's unlikely we wrongly ack some sent data
			 */
			if ((le16_to_cpu(ieee80211hdr->seq_ctrl)
			    & 0xFFF) == seq_no)
			     & 0xFFF) == seq_no) {
				skb = iter;
				break;
			}
		if (skb != (struct sk_buff *) &priv->b_tx_status.queue) {
		}
		if (skb) {
			struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);

			__skb_unlink(skb, &priv->b_tx_status.queue);