From ffa2833f4c973c896905905ccc954b35e1e81568 Mon Sep 17 00:00:00 2001 From: Gertjan van Wingerde Date: Mon, 13 Dec 2010 12:33:12 +0100 Subject: [PATCH] --- yaml --- r: 225271 b: refs/heads/master c: a061a93b6eb8db8227b251666436da1e344771a0 h: refs/heads/master i: 225269: 61ebe87c8a07a870f7f17095d3ee8d7c8ab36038 225267: fa4e033ce3fa7ea8f832e06c1793fcc578328745 225263: 57312a9a60bac214681cdc6a43d122e8076c19a2 v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/rt2x00/rt2x00queue.c | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 2fb6e0fa3996..b7084b25c04b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d7bb5f845f437662296adbfeaab8fbfce1c32289 +refs/heads/master: a061a93b6eb8db8227b251666436da1e344771a0 diff --git a/trunk/drivers/net/wireless/rt2x00/rt2x00queue.c b/trunk/drivers/net/wireless/rt2x00/rt2x00queue.c index a3d79c7a21c6..35133d8558b5 100644 --- a/trunk/drivers/net/wireless/rt2x00/rt2x00queue.c +++ b/trunk/drivers/net/wireless/rt2x00/rt2x00queue.c @@ -199,15 +199,18 @@ void rt2x00queue_insert_l2pad(struct sk_buff *skb, unsigned int header_length) void rt2x00queue_remove_l2pad(struct sk_buff *skb, unsigned int header_length) { - unsigned int l2pad = L2PAD_SIZE(header_length); + /* + * L2 padding is only present if the skb contains more than just the + * IEEE 802.11 header. + */ + unsigned int l2pad = (skb->len > header_length) ? + L2PAD_SIZE(header_length) : 0; if (!l2pad) return; - memmove(skb->data + header_length, skb->data + header_length + l2pad, - skb->len - header_length - l2pad); - - skb_trim(skb, skb->len - l2pad); + memmove(skb->data + l2pad, skb->data, header_length); + skb_pull(skb, l2pad); } static void rt2x00queue_create_tx_descriptor_seq(struct queue_entry *entry,