aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/skge.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 4fc9333f0740..deca5066a447 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -727,7 +727,7 @@ static struct ethtool_ops skge_ethtool_ops = {
727 * Allocate ring elements and chain them together 727 * Allocate ring elements and chain them together
728 * One-to-one association of board descriptors with ring elements 728 * One-to-one association of board descriptors with ring elements
729 */ 729 */
730static int skge_ring_alloc(struct skge_ring *ring, void *vaddr, u64 base) 730static int skge_ring_alloc(struct skge_ring *ring, void *vaddr, u32 base)
731{ 731{
732 struct skge_tx_desc *d; 732 struct skge_tx_desc *d;
733 struct skge_element *e; 733 struct skge_element *e;
@@ -2168,6 +2168,14 @@ static int skge_up(struct net_device *dev)
2168 if (!skge->mem) 2168 if (!skge->mem)
2169 return -ENOMEM; 2169 return -ENOMEM;
2170 2170
2171 BUG_ON(skge->dma & 7);
2172
2173 if ((u64)skge->dma >> 32 != ((u64) skge->dma + skge->mem_size) >> 32) {
2174 printk(KERN_ERR PFX "pci_alloc_consistent region crosses 4G boundary\n");
2175 err = -EINVAL;
2176 goto free_pci_mem;
2177 }
2178
2171 memset(skge->mem, 0, skge->mem_size); 2179 memset(skge->mem, 0, skge->mem_size);
2172 2180
2173 if ((err = skge_ring_alloc(&skge->rx_ring, skge->mem, skge->dma))) 2181 if ((err = skge_ring_alloc(&skge->rx_ring, skge->mem, skge->dma)))