提交 c86a31f4 编写于 作者: M Michael Chan 提交者: David S. Miller

[BNX2]: Use CPU native page size

Use CPU native page size to determine various ring sizes. This allows
order-0 memory allocations on all systems.

Added check to limit the page size to 16K since that's the maximum rx
ring size that will be used. This will prevent using unnecessarily
large page sizes on some architectures with large page sizes.
[Suggested by David Miller]
Signed-off-by: NMichael Chan <mchan@broadcom.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 7a6400cd
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <asm/irq.h> #include <asm/irq.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <asm/byteorder.h> #include <asm/byteorder.h>
#include <asm/page.h>
#include <linux/time.h> #include <linux/time.h>
#include <linux/ethtool.h> #include <linux/ethtool.h>
#include <linux/mii.h> #include <linux/mii.h>
......
...@@ -3750,7 +3750,12 @@ struct l2_fhdr { ...@@ -3750,7 +3750,12 @@ struct l2_fhdr {
#define DMA_READ_CHANS 5 #define DMA_READ_CHANS 5
#define DMA_WRITE_CHANS 3 #define DMA_WRITE_CHANS 3
#define BCM_PAGE_BITS 12 /* Use CPU native page size up to 16K for the ring sizes. */
#if (PAGE_SHIFT > 14)
#define BCM_PAGE_BITS 14
#else
#define BCM_PAGE_BITS PAGE_SHIFT
#endif
#define BCM_PAGE_SIZE (1 << BCM_PAGE_BITS) #define BCM_PAGE_SIZE (1 << BCM_PAGE_BITS)
#define TX_DESC_CNT (BCM_PAGE_SIZE / sizeof(struct tx_bd)) #define TX_DESC_CNT (BCM_PAGE_SIZE / sizeof(struct tx_bd))
...@@ -3773,7 +3778,7 @@ struct l2_fhdr { ...@@ -3773,7 +3778,7 @@ struct l2_fhdr {
#define RX_RING_IDX(x) ((x) & bp->rx_max_ring_idx) #define RX_RING_IDX(x) ((x) & bp->rx_max_ring_idx)
#define RX_RING(x) (((x) & ~MAX_RX_DESC_CNT) >> 8) #define RX_RING(x) (((x) & ~MAX_RX_DESC_CNT) >> (BCM_PAGE_BITS - 4))
#define RX_IDX(x) ((x) & MAX_RX_DESC_CNT) #define RX_IDX(x) ((x) & MAX_RX_DESC_CNT)
/* Context size. */ /* Context size. */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册