--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -183,6 +183,10 @@ struct sk_buff *__alloc_skb(unsigned int
 		goto out;
 	prefetchw(skb);
 
+#ifdef CONFIG_ARCH_IXP4XX 
+	gfp_mask |= GFP_DMA;
+#endif
+
 	size = SKB_DATA_ALIGN(size);
 	data = kmalloc_node_track_caller(size + sizeof(struct skb_shared_info),
 			gfp_mask, node);