diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/skge.c | 10 |
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 | */ |
730 | static int skge_ring_alloc(struct skge_ring *ring, void *vaddr, u64 base) | 730 | static 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))) |