aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Rose <gregory.v.rose@intel.com>2012-11-12 23:03:19 -0500
committerDavid S. Miller <davem@davemloft.net>2012-11-13 14:18:14 -0500
commit85624caff9decc8174f286e12e9d0038d9a6cced (patch)
treef68d6c91591df767eb03ef31c446be2f5f19500a
parent366c1099123a0084cda581bee632911822748c61 (diff)
ixgbevf: Reduce size of maximum rx buffer
There's no need to support up to 15k buffers since the HW is limited to 9.5k in SR-IOV mode. Instead, allocate buffers that fit and align inside of a 32K memory buffer. Signed-off-by: Greg Rose <gregory.v.rose@intel.com> Tested-by: Sibai Li <sibai.li@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/intel/ixgbevf/ixgbevf.h8
-rw-r--r--drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c18
2 files changed, 13 insertions, 13 deletions
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
index 9faaf543bbae..1211fa093437 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
@@ -101,10 +101,10 @@ struct ixgbevf_ring {
101 101
102/* Supported Rx Buffer Sizes */ 102/* Supported Rx Buffer Sizes */
103#define IXGBEVF_RXBUFFER_256 256 /* Used for packet split */ 103#define IXGBEVF_RXBUFFER_256 256 /* Used for packet split */
104#define IXGBEVF_RXBUFFER_3K 3072 104#define IXGBEVF_RXBUFFER_2K 2048
105#define IXGBEVF_RXBUFFER_7K 7168 105#define IXGBEVF_RXBUFFER_4K 4096
106#define IXGBEVF_RXBUFFER_15K 15360 106#define IXGBEVF_RXBUFFER_8K 8192
107#define IXGBEVF_MAX_RXBUFFER 16384 /* largest size for single descriptor */ 107#define IXGBEVF_RXBUFFER_10K 10240
108 108
109#define IXGBEVF_RX_HDR_SIZE IXGBEVF_RXBUFFER_256 109#define IXGBEVF_RX_HDR_SIZE IXGBEVF_RXBUFFER_256
110 110
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 00f9698e86ae..9d8815302363 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -1087,20 +1087,20 @@ static void ixgbevf_set_rx_buffer_len(struct ixgbevf_adapter *adapter)
1087 max_frame += VLAN_HLEN; 1087 max_frame += VLAN_HLEN;
1088 1088
1089 /* 1089 /*
1090 * Make best use of allocation by using all but 1K of a 1090 * Allocate buffer sizes that fit well into 32K and
1091 * power of 2 allocation that will be used for skb->head. 1091 * take into account max frame size of 9.5K
1092 */ 1092 */
1093 if ((hw->mac.type == ixgbe_mac_X540_vf) && 1093 if ((hw->mac.type == ixgbe_mac_X540_vf) &&
1094 (max_frame <= MAXIMUM_ETHERNET_VLAN_SIZE)) 1094 (max_frame <= MAXIMUM_ETHERNET_VLAN_SIZE))
1095 rx_buf_len = MAXIMUM_ETHERNET_VLAN_SIZE; 1095 rx_buf_len = MAXIMUM_ETHERNET_VLAN_SIZE;
1096 else if (max_frame <= IXGBEVF_RXBUFFER_3K) 1096 else if (max_frame <= IXGBEVF_RXBUFFER_2K)
1097 rx_buf_len = IXGBEVF_RXBUFFER_3K; 1097 rx_buf_len = IXGBEVF_RXBUFFER_2K;
1098 else if (max_frame <= IXGBEVF_RXBUFFER_7K) 1098 else if (max_frame <= IXGBEVF_RXBUFFER_4K)
1099 rx_buf_len = IXGBEVF_RXBUFFER_7K; 1099 rx_buf_len = IXGBEVF_RXBUFFER_4K;
1100 else if (max_frame <= IXGBEVF_RXBUFFER_15K) 1100 else if (max_frame <= IXGBEVF_RXBUFFER_8K)
1101 rx_buf_len = IXGBEVF_RXBUFFER_15K; 1101 rx_buf_len = IXGBEVF_RXBUFFER_8K;
1102 else 1102 else
1103 rx_buf_len = IXGBEVF_MAX_RXBUFFER; 1103 rx_buf_len = IXGBEVF_RXBUFFER_10K;
1104 1104
1105 for (i = 0; i < adapter->num_rx_queues; i++) 1105 for (i = 0; i < adapter->num_rx_queues; i++)
1106 adapter->rx_ring[i].rx_buf_len = rx_buf_len; 1106 adapter->rx_ring[i].rx_buf_len = rx_buf_len;