浏览代码

ibmveth: change rx buffer default allocation for CMO

This patch enables 64k rx buffer pools by default.  If Cooperative
Memory Overcommitment (CMO) is enabled, the number of 64k buffers
is reduced to save memory.

Cc: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Thomas Falcon 10 年之前
父节点
当前提交
cd7c7ec368
共有 2 个文件被更改,包括 5 次插入1 次删除
  1. 3 0
      drivers/net/ethernet/ibm/ibmveth.c
  2. 2 1
      drivers/net/ethernet/ibm/ibmveth.h

+ 3 - 0
drivers/net/ethernet/ibm/ibmveth.c

@@ -1424,6 +1424,9 @@ static int ibmveth_probe(struct vio_dev *dev, const struct vio_device_id *id)
 
 
 	memcpy(netdev->dev_addr, mac_addr_p, ETH_ALEN);
 	memcpy(netdev->dev_addr, mac_addr_p, ETH_ALEN);
 
 
+	if (firmware_has_feature(FW_FEATURE_CMO))
+		memcpy(pool_count, pool_count_cmo, sizeof(pool_count));
+
 	for (i = 0; i < IBMVETH_NUM_BUFF_POOLS; i++) {
 	for (i = 0; i < IBMVETH_NUM_BUFF_POOLS; i++) {
 		struct kobject *kobj = &adapter->rx_buff_pool[i].kobj;
 		struct kobject *kobj = &adapter->rx_buff_pool[i].kobj;
 		int error;
 		int error;

+ 2 - 1
drivers/net/ethernet/ibm/ibmveth.h

@@ -104,7 +104,8 @@ static inline long h_illan_attributes(unsigned long unit_address,
 
 
 static int pool_size[] = { 512, 1024 * 2, 1024 * 16, 1024 * 32, 1024 * 64 };
 static int pool_size[] = { 512, 1024 * 2, 1024 * 16, 1024 * 32, 1024 * 64 };
 static int pool_count[] = { 256, 512, 256, 256, 256 };
 static int pool_count[] = { 256, 512, 256, 256, 256 };
-static int pool_active[] = { 1, 1, 0, 0, 0};
+static int pool_count_cmo[] = { 256, 512, 256, 256, 64 };
+static int pool_active[] = { 1, 1, 0, 0, 1};
 
 
 #define IBM_VETH_INVALID_MAP ((u16)0xffff)
 #define IBM_VETH_INVALID_MAP ((u16)0xffff)