diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2013-03-17 05:59:18 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-03-25 16:42:22 -0400 |
commit | d7d0f081c48951018133cac38c8c0796f37db727 (patch) | |
tree | a949ef9f9a2482efedc25745a2bff81eea2209a6 /drivers/net/wireless/rtlwifi | |
parent | 872de8ff04922e4ad95c5af39131ae9fbefe6ac5 (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.c | 19 |
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 | ||