--- a/ath/if_ath.c
+++ b/ath/if_ath.c
@@ -2388,7 +2388,9 @@ ath_intr(int irq, void *dev_id, struct p
 		if (status & (HAL_INT_RX | HAL_INT_RXPHY)) {
 			ath_uapsd_processtriggers(sc, hw_tsf);
 			sc->sc_isr &= ~HAL_INT_RX;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)
+			if (napi_schedule_prep(&sc->sc_napi))
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
 			if (netif_rx_schedule_prep(dev, &sc->sc_napi))
 #else
 			if (netif_rx_schedule_prep(dev))
@@ -2396,7 +2398,9 @@ ath_intr(int irq, void *dev_id, struct p
 			{
 				sc->sc_imask &= ~HAL_INT_RX;
 				ath_hal_intrset(ah, sc->sc_imask);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)
+				__napi_schedule(&sc->sc_napi);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
 				__netif_rx_schedule(dev, &sc->sc_napi);
 #else
 				__netif_rx_schedule(dev);
@@ -7135,7 +7139,9 @@ rx_next:
 		local_irq_restore(flags);
 	}
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)
+	napi_complete(napi);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
 	netif_rx_complete(dev, napi);
 #else
 	netif_rx_complete(dev);