diff options
author | Robert Jennings <rcj@linux.vnet.ibm.com> | 2008-07-23 14:34:52 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-07-25 01:44:44 -0400 |
commit | 1096d63d8e7d226630706e15648705d0187787e4 (patch) | |
tree | 0233951b529ee7b537d527e6d57c8e5d80d48ae7 /drivers/net/ibmveth.h | |
parent | ea866e6526b8a2ead92875732d41b26fdb470312 (diff) |
ibmveth: enable driver for CMO
Enable ibmveth for Cooperative Memory Overcommitment (CMO). For this driver
it means calculating a desired amount of IO memory based on the current MTU
and updating this value with the bus when MTU changes occur. Because DMA
mappings can fail, we have added a bounce buffer for temporary cases where
the driver can not map IO memory for the buffer pool.
The following changes are made to enable the driver for CMO:
* DMA mapping errors will not result in error messages if entitlement has
been exceeded and resources were not available.
* DMA mapping errors are handled gracefully, ibmveth_replenish_buffer_pool()
is corrected to check the return from dma_map_single and fail gracefully.
* The driver will have a get_desired_dma function defined to function
in a CMO environment.
* When the MTU is changed, the driver will update the device IO entitlement
Signed-off-by: Robert Jennings <rcj@linux.vnet.ibm.com>
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: Santiago Leon <santil@us.ibm.com>
Acked-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'drivers/net/ibmveth.h')
-rw-r--r-- | drivers/net/ibmveth.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/ibmveth.h b/drivers/net/ibmveth.h index 41f61cd18852..d28186948752 100644 --- a/drivers/net/ibmveth.h +++ b/drivers/net/ibmveth.h | |||
@@ -93,9 +93,12 @@ static inline long h_illan_attributes(unsigned long unit_address, | |||
93 | plpar_hcall_norets(H_CHANGE_LOGICAL_LAN_MAC, ua, mac) | 93 | plpar_hcall_norets(H_CHANGE_LOGICAL_LAN_MAC, ua, mac) |
94 | 94 | ||
95 | #define IbmVethNumBufferPools 5 | 95 | #define IbmVethNumBufferPools 5 |
96 | #define IBMVETH_IO_ENTITLEMENT_DEFAULT 4243456 /* MTU of 1500 needs 4.2Mb */ | ||
96 | #define IBMVETH_BUFF_OH 22 /* Overhead: 14 ethernet header + 8 opaque handle */ | 97 | #define IBMVETH_BUFF_OH 22 /* Overhead: 14 ethernet header + 8 opaque handle */ |
97 | #define IBMVETH_MAX_MTU 68 | 98 | #define IBMVETH_MAX_MTU 68 |
98 | #define IBMVETH_MAX_POOL_COUNT 4096 | 99 | #define IBMVETH_MAX_POOL_COUNT 4096 |
100 | #define IBMVETH_BUFF_LIST_SIZE 4096 | ||
101 | #define IBMVETH_FILT_LIST_SIZE 4096 | ||
99 | #define IBMVETH_MAX_BUF_SIZE (1024 * 128) | 102 | #define IBMVETH_MAX_BUF_SIZE (1024 * 128) |
100 | 103 | ||
101 | static int pool_size[] = { 512, 1024 * 2, 1024 * 16, 1024 * 32, 1024 * 64 }; | 104 | static int pool_size[] = { 512, 1024 * 2, 1024 * 16, 1024 * 32, 1024 * 64 }; |
@@ -143,6 +146,8 @@ struct ibmveth_adapter { | |||
143 | struct ibmveth_rx_q rx_queue; | 146 | struct ibmveth_rx_q rx_queue; |
144 | int pool_config; | 147 | int pool_config; |
145 | int rx_csum; | 148 | int rx_csum; |
149 | void *bounce_buffer; | ||
150 | dma_addr_t bounce_buffer_dma; | ||
146 | 151 | ||
147 | /* adapter specific stats */ | 152 | /* adapter specific stats */ |
148 | u64 replenish_task_cycles; | 153 | u64 replenish_task_cycles; |