aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtlwifi
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@iki.fi>2013-03-17 05:59:18 -0400
committerJohn W. Linville <linville@tuxdriver.com>2013-03-25 16:42:22 -0400
commitd7d0f081c48951018133cac38c8c0796f37db727 (patch)
treea949ef9f9a2482efedc25745a2bff81eea2209a6 /drivers/net/wireless/rtlwifi
parent872de8ff04922e4ad95c5af39131ae9fbefe6ac5 (diff)
rtlwifi: usb: remove extra skb copy on RX path
RX path has extra copying of packets, that can be avoided. Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rtlwifi')
-rw-r--r--drivers/net/wireless/rtlwifi/usb.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c
index 22f29d75947e..8df5836cc99c 100644
--- a/drivers/net/wireless/rtlwifi/usb.c
+++ b/drivers/net/wireless/rtlwifi/usb.c
@@ -513,22 +513,11 @@ static void _rtl_usb_rx_process_noagg(struct ieee80211_hw *hw,
513 if (unicast) 513 if (unicast)
514 rtlpriv->link_info.num_rx_inperiod++; 514 rtlpriv->link_info.num_rx_inperiod++;
515 } 515 }
516 if (likely(rtl_action_proc(hw, skb, false))) { 516
517 struct sk_buff *uskb = NULL; 517 if (likely(rtl_action_proc(hw, skb, false)))
518 u8 *pdata; 518 ieee80211_rx_irqsafe(hw, skb);
519 519 else
520 uskb = dev_alloc_skb(skb->len + 128);
521 if (uskb) { /* drop packet on allocation failure */
522 memcpy(IEEE80211_SKB_RXCB(uskb), &rx_status,
523 sizeof(rx_status));
524 pdata = (u8 *)skb_put(uskb, skb->len);
525 memcpy(pdata, skb->data, skb->len);
526 ieee80211_rx_irqsafe(hw, uskb);
527 }
528 dev_kfree_skb_any(skb);
529 } else {
530 dev_kfree_skb_any(skb); 520 dev_kfree_skb_any(skb);
531 }
532 } 521 }
533} 522}
534 523