gemini ethernet debug patch
diff --git a/drivers/net/ethernet/cortina/gemini.c b/drivers/net/ethernet/cortina/gemini.c
index 3a9a9cea..7ed52cb 100644
--- a/drivers/net/ethernet/cortina/gemini.c
+++ b/drivers/net/ethernet/cortina/gemini.c
@@ -20,6 +20,7 @@
 #include <linux/spinlock.h>
 #include <linux/slab.h>
 #include <linux/dma-mapping.h>
+#include <linux/dma-direct.h>
 #include <linux/cache.h>
 #include <linux/interrupt.h>
 #include <linux/reset.h>
@@ -40,6 +41,8 @@
 #include <linux/in.h>
 #include <linux/ip.h>
 #include <linux/ipv6.h>
+#include <net/gro.h>
+#include <asm/memory.h>
 
 #include "gemini.h"
 
@@ -725,6 +728,8 @@ gmac_get_queue_page(struct gemini_ethernet *geth,
 {
 	struct gmac_queue_page *gpage;
 	dma_addr_t mapping;
+	phys_addr_t phys;
+	void *virt;
 	int i;
 
 	/* Only look for even pages */
@@ -742,6 +747,26 @@ gmac_get_queue_page(struct gemini_ethernet *geth,
 			return gpage;
 	}
 
+	dev_err(geth->dev, "could not find page at %08x (%08x)\n",
+		(u32)mapping, (u32)addr);
+
+	for (i = 0; i < geth->num_freeq_pages; i++) {
+		gpage = &geth->freeq_pages[i];
+		if (i < 3 || i > geth->num_freeq_pages - 3)
+			dev_err(geth->dev, "actual page mapping %08x -> %08x\n",
+				(u32)gpage->mapping,
+				(u32)(gpage->mapping + PAGE_SIZE));
+		if (i == 3)
+			dev_err(geth->dev, "...\n");
+	}
+	phys = dma_to_phys(geth->dev, mapping);
+	virt = phys_to_virt(phys);
+	dev_err(geth->dev, "mapping %08x at phys %08x, virt %08x, pfn %08x\n",
+		(u32)mapping,
+		(u32)phys,
+		(u32)virt,
+		(u32)virt_to_pfn(virt));
+
 	return NULL;
 }
 
@@ -784,7 +809,7 @@ static void gmac_cleanup_rxq(struct net_device *netdev)
 		/* Freeq pointers are one page off */
 		gpage = gmac_get_queue_page(geth, port, mapping + PAGE_SIZE);
 		if (!gpage) {
-			dev_err(geth->dev, "could not find page\n");
+			// dev_err(geth->dev, "could not find page\n");
 			continue;
 		}
 		/* Release the RX queue reference to the page */