mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 17:11:33 +00:00
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>
This commit is contained in:
parent
366c109912
commit
85624caff9
@ -101,10 +101,10 @@ struct ixgbevf_ring {
|
|||||||
|
|
||||||
/* Supported Rx Buffer Sizes */
|
/* Supported Rx Buffer Sizes */
|
||||||
#define IXGBEVF_RXBUFFER_256 256 /* Used for packet split */
|
#define IXGBEVF_RXBUFFER_256 256 /* Used for packet split */
|
||||||
#define IXGBEVF_RXBUFFER_3K 3072
|
#define IXGBEVF_RXBUFFER_2K 2048
|
||||||
#define IXGBEVF_RXBUFFER_7K 7168
|
#define IXGBEVF_RXBUFFER_4K 4096
|
||||||
#define IXGBEVF_RXBUFFER_15K 15360
|
#define IXGBEVF_RXBUFFER_8K 8192
|
||||||
#define IXGBEVF_MAX_RXBUFFER 16384 /* largest size for single descriptor */
|
#define IXGBEVF_RXBUFFER_10K 10240
|
||||||
|
|
||||||
#define IXGBEVF_RX_HDR_SIZE IXGBEVF_RXBUFFER_256
|
#define IXGBEVF_RX_HDR_SIZE IXGBEVF_RXBUFFER_256
|
||||||
|
|
||||||
|
@ -1087,20 +1087,20 @@ static void ixgbevf_set_rx_buffer_len(struct ixgbevf_adapter *adapter)
|
|||||||
max_frame += VLAN_HLEN;
|
max_frame += VLAN_HLEN;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make best use of allocation by using all but 1K of a
|
* Allocate buffer sizes that fit well into 32K and
|
||||||
* power of 2 allocation that will be used for skb->head.
|
* take into account max frame size of 9.5K
|
||||||
*/
|
*/
|
||||||
if ((hw->mac.type == ixgbe_mac_X540_vf) &&
|
if ((hw->mac.type == ixgbe_mac_X540_vf) &&
|
||||||
(max_frame <= MAXIMUM_ETHERNET_VLAN_SIZE))
|
(max_frame <= MAXIMUM_ETHERNET_VLAN_SIZE))
|
||||||
rx_buf_len = MAXIMUM_ETHERNET_VLAN_SIZE;
|
rx_buf_len = MAXIMUM_ETHERNET_VLAN_SIZE;
|
||||||
else if (max_frame <= IXGBEVF_RXBUFFER_3K)
|
else if (max_frame <= IXGBEVF_RXBUFFER_2K)
|
||||||
rx_buf_len = IXGBEVF_RXBUFFER_3K;
|
rx_buf_len = IXGBEVF_RXBUFFER_2K;
|
||||||
else if (max_frame <= IXGBEVF_RXBUFFER_7K)
|
else if (max_frame <= IXGBEVF_RXBUFFER_4K)
|
||||||
rx_buf_len = IXGBEVF_RXBUFFER_7K;
|
rx_buf_len = IXGBEVF_RXBUFFER_4K;
|
||||||
else if (max_frame <= IXGBEVF_RXBUFFER_15K)
|
else if (max_frame <= IXGBEVF_RXBUFFER_8K)
|
||||||
rx_buf_len = IXGBEVF_RXBUFFER_15K;
|
rx_buf_len = IXGBEVF_RXBUFFER_8K;
|
||||||
else
|
else
|
||||||
rx_buf_len = IXGBEVF_MAX_RXBUFFER;
|
rx_buf_len = IXGBEVF_RXBUFFER_10K;
|
||||||
|
|
||||||
for (i = 0; i < adapter->num_rx_queues; i++)
|
for (i = 0; i < adapter->num_rx_queues; i++)
|
||||||
adapter->rx_ring[i].rx_buf_len = rx_buf_len;
|
adapter->rx_ring[i].rx_buf_len = rx_buf_len;
|
||||||
|
Loading…
Reference in New Issue
Block a user