diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index a0f89a4..3563e44 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -823,16 +823,14 @@
 
 /* Assumes you've already done the endian to CPU conversion */
 static bool ath9k_rx_accept(struct ath_common *common,
-			    struct sk_buff *skb,
+			    struct ieee80211_hdr *hdr,
 			    struct ieee80211_rx_status *rxs,
 			    struct ath_rx_status *rx_stats,
 			    bool *decrypt_error)
 {
 	struct ath_hw *ah = common->ah;
-	struct ieee80211_hdr *hdr;
 	__le16 fc;
 
-	hdr = (struct ieee80211_hdr *) skb->data;
 	fc = hdr->frame_control;
 
 	if (!rx_stats->rs_datalen)
@@ -903,8 +901,7 @@
 static int ath9k_process_rate(struct ath_common *common,
 			      struct ieee80211_hw *hw,
 			      struct ath_rx_status *rx_stats,
-			      struct ieee80211_rx_status *rxs,
-			      struct sk_buff *skb)
+			      struct ieee80211_rx_status *rxs)
 {
 	struct ieee80211_supported_band *sband;
 	enum ieee80211_band band;
@@ -942,25 +939,21 @@
 	 */
 	ath_print(common, ATH_DBG_XMIT, "unsupported hw bitrate detected "
 		  "0x%02x using 1 Mbit\n", rx_stats->rs_rate);
-	if ((common->debug_mask & ATH_DBG_XMIT))
-		print_hex_dump_bytes("", DUMP_PREFIX_NONE, skb->data, skb->len);
 
 	return -EINVAL;
 }
 
 static void ath9k_process_rssi(struct ath_common *common,
 			       struct ieee80211_hw *hw,
-			       struct sk_buff *skb,
+			       struct ieee80211_hdr *hdr,
 			       struct ath_rx_status *rx_stats)
 {
 	struct ath_hw *ah = common->ah;
 	struct ieee80211_sta *sta;
-	struct ieee80211_hdr *hdr;
 	struct ath_node *an;
 	int last_rssi = ATH_RSSI_DUMMY_MARKER;
 	__le16 fc;
 
-	hdr = (struct ieee80211_hdr *)skb->data;
 	fc = hdr->frame_control;
 
 	rcu_read_lock();
@@ -999,7 +992,7 @@
  */
 static int ath9k_rx_skb_preprocess(struct ath_common *common,
 				   struct ieee80211_hw *hw,
-				   struct sk_buff *skb,
+				   struct ieee80211_hdr *hdr,
 				   struct ath_rx_status *rx_stats,
 				   struct ieee80211_rx_status *rx_status,
 				   bool *decrypt_error)
@@ -1012,12 +1005,12 @@
 	 * everything but the rate is checked here, the rate check is done
 	 * separately to avoid doing two lookups for a rate for each frame.
 	 */
-	if (!ath9k_rx_accept(common, skb, rx_status, rx_stats, decrypt_error))
+	if (!ath9k_rx_accept(common, hdr, rx_status, rx_stats, decrypt_error))
 		return -EINVAL;
 
-	ath9k_process_rssi(common, hw, skb, rx_stats);
+	ath9k_process_rssi(common, hw, hdr, rx_stats);
 
-	if (ath9k_process_rate(common, hw, rx_stats, rx_status, skb))
+	if (ath9k_process_rate(common, hw, rx_stats, rx_status))
 		return -EINVAL;
 
 	rx_status->mactime = ath9k_hw_extend_tsf(ah, rx_stats->rs_tstamp);
@@ -1142,7 +1135,7 @@
 		if (flush)
 			goto requeue;
 
-		retval = ath9k_rx_skb_preprocess(common, hw, skb, &rs,
+		retval = ath9k_rx_skb_preprocess(common, hw, hdr, &rs,
 						 rxs, &decrypt_error);
 		if (retval)
 			goto requeue;
