Merge "qcacld-3.0: Not to be hard to make high order page" into android-msm-bluecross-4.9
diff --git a/qdf/linux/src/qdf_nbuf.c b/qdf/linux/src/qdf_nbuf.c
index ba35f66..3f1edf3 100644
--- a/qdf/linux/src/qdf_nbuf.c
+++ b/qdf/linux/src/qdf_nbuf.c
@@ -295,8 +295,15 @@
 	if (align)
 		size += (align - 1);
 
-	if (in_interrupt() || irqs_disabled() || in_atomic())
-		flags = GFP_ATOMIC;
+	if (in_interrupt() || irqs_disabled() || in_atomic()) {
+		/*
+		 * Observed that kcompactd burns out CPU to make order-3 page.
+		 *__netdev_alloc_skb has 4k page fallback option just in case of
+		 * failing high order page allocation so we don't need to be
+		 * hard. Make kcompactd rest in piece.
+		 */
+		flags = GFP_ATOMIC & ~__GFP_KSWAPD_RECLAIM;
+	}
 
 	skb = __netdev_alloc_skb(NULL, size, flags);