diff options
author | Greg Rose <gregory.v.rose@intel.com> | 2012-11-12 23:03:19 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-11-13 14:18:14 -0500 |
commit | 85624caff9decc8174f286e12e9d0038d9a6cced (patch) | |
tree | f68d6c91591df767eb03ef31c446be2f5f19500a | |
parent | 366c1099123a0084cda581bee632911822748c61 (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.h | 8 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 18 |
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; |