diff options
author | Ming Lei <tom.leiming@gmail.com> | 2010-04-12 12:28:53 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-04-14 14:52:42 -0400 |
commit | f28a7b30cdaa936bdbdc0a2018241936fb56cae6 (patch) | |
tree | 5ab13f5102f61702c5684fac4c8a546bb1396284 /drivers/net | |
parent | 87d77c4ef132599eb3a6c49520719d39f7341efd (diff) |
ath9k-htc:respect usb buffer cacheline alignment in ath9k_hif_usb_alloc_rx_urbs
In ath9k_hif_usb_alloc_rx_urbs, ath9k-htc will pass skb->data into
usb hcd and usb hcd will do dma mapping and unmapping to the buffer
pointed by skb->data, so we should pass a cache-line aligned address.
This patch replace __dev_alloc_skb with alloc_skb to make skb->data
pointed to a cacheline aligned address simply since ath9k-htc does not
skb_push on the skb and pass it to mac80211, also use kfree_skb to free
the skbs allocated by alloc_skb(we can use kfree_skb safely in hardirq
context since skb->destructor is NULL always in the path).
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hif_usb.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c index e2117e7222e..178b11a8403 100644 --- a/drivers/net/wireless/ath/ath9k/hif_usb.c +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c | |||
@@ -467,7 +467,7 @@ resubmit: | |||
467 | 467 | ||
468 | return; | 468 | return; |
469 | free: | 469 | free: |
470 | dev_kfree_skb_any(skb); | 470 | kfree_skb(skb); |
471 | } | 471 | } |
472 | 472 | ||
473 | static void ath9k_hif_usb_reg_in_cb(struct urb *urb) | 473 | static void ath9k_hif_usb_reg_in_cb(struct urb *urb) |
@@ -625,7 +625,7 @@ static int ath9k_hif_usb_alloc_rx_urbs(struct hif_device_usb *hif_dev) | |||
625 | } | 625 | } |
626 | 626 | ||
627 | /* Allocate buffer */ | 627 | /* Allocate buffer */ |
628 | skb = __dev_alloc_skb(MAX_RX_BUF_SIZE, GFP_KERNEL); | 628 | skb = alloc_skb(MAX_RX_BUF_SIZE, GFP_KERNEL); |
629 | if (!skb) { | 629 | if (!skb) { |
630 | ret = -ENOMEM; | 630 | ret = -ENOMEM; |
631 | goto err_skb; | 631 | goto err_skb; |
@@ -657,7 +657,7 @@ static int ath9k_hif_usb_alloc_rx_urbs(struct hif_device_usb *hif_dev) | |||
657 | return 0; | 657 | return 0; |
658 | 658 | ||
659 | err_submit: | 659 | err_submit: |
660 | dev_kfree_skb_any(skb); | 660 | kfree_skb(skb); |
661 | err_skb: | 661 | err_skb: |
662 | usb_free_urb(urb); | 662 | usb_free_urb(urb); |
663 | err_urb: | 663 | err_urb: |