rtlwifi: usb: remove extra skb copy on RX path
authorJussi Kivilinna <jussi.kivilinna@iki.fi>
Sun, 17 Mar 2013 09:59:18 +0000 (11:59 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 25 Mar 2013 20:42:22 +0000 (16:42 -0400)
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>
drivers/net/wireless/rtlwifi/usb.c

index 22f29d75947e6f575e3d9da3a474bcb9833ac5e2..8df5836cc99c44f3bb482b6b8dcb5c5a1a75a227 100644 (file)
@@ -513,22 +513,11 @@ static void _rtl_usb_rx_process_noagg(struct ieee80211_hw *hw,
                        if (unicast)
                                rtlpriv->link_info.num_rx_inperiod++;
                }
-               if (likely(rtl_action_proc(hw, skb, false))) {
-                       struct sk_buff *uskb = NULL;
-                       u8 *pdata;
-
-                       uskb = dev_alloc_skb(skb->len + 128);
-                       if (uskb) {     /* drop packet on allocation failure */
-                               memcpy(IEEE80211_SKB_RXCB(uskb), &rx_status,
-                                      sizeof(rx_status));
-                               pdata = (u8 *)skb_put(uskb, skb->len);
-                               memcpy(pdata, skb->data, skb->len);
-                               ieee80211_rx_irqsafe(hw, uskb);
-                       }
-                       dev_kfree_skb_any(skb);
-               } else {
+
+               if (likely(rtl_action_proc(hw, skb, false)))
+                       ieee80211_rx_irqsafe(hw, skb);
+               else
                        dev_kfree_skb_any(skb);
-               }
        }
 }