Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85624caf authored by Greg Rose's avatar Greg Rose Committed by David S. Miller
Browse files

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: default avatarGreg Rose <gregory.v.rose@intel.com>
Tested-by: default avatarSibai Li <sibai.li@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 366c1099
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -101,10 +101,10 @@ struct ixgbevf_ring {

/* Supported Rx Buffer Sizes */
#define IXGBEVF_RXBUFFER_256   256    /* Used for packet split */
#define IXGBEVF_RXBUFFER_3K    3072
#define IXGBEVF_RXBUFFER_7K    7168
#define IXGBEVF_RXBUFFER_15K   15360
#define IXGBEVF_MAX_RXBUFFER   16384  /* largest size for single descriptor */
#define IXGBEVF_RXBUFFER_2K    2048
#define IXGBEVF_RXBUFFER_4K    4096
#define IXGBEVF_RXBUFFER_8K    8192
#define IXGBEVF_RXBUFFER_10K   10240

#define IXGBEVF_RX_HDR_SIZE IXGBEVF_RXBUFFER_256

+9 −9
Original line number Diff line number Diff line
@@ -1087,20 +1087,20 @@ static void ixgbevf_set_rx_buffer_len(struct ixgbevf_adapter *adapter)
	max_frame += VLAN_HLEN;

	/*
	 * Make best use of allocation by using all but 1K of a
	 * power of 2 allocation that will be used for skb->head.
	 * Allocate buffer sizes that fit well into 32K and
	 * take into account max frame size of 9.5K
	 */
	if ((hw->mac.type == ixgbe_mac_X540_vf) &&
	    (max_frame <= MAXIMUM_ETHERNET_VLAN_SIZE))
		rx_buf_len = MAXIMUM_ETHERNET_VLAN_SIZE;
	else if (max_frame <= IXGBEVF_RXBUFFER_3K)
		rx_buf_len = IXGBEVF_RXBUFFER_3K;
	else if (max_frame <= IXGBEVF_RXBUFFER_7K)
		rx_buf_len = IXGBEVF_RXBUFFER_7K;
	else if (max_frame <= IXGBEVF_RXBUFFER_15K)
		rx_buf_len = IXGBEVF_RXBUFFER_15K;
	else if (max_frame <= IXGBEVF_RXBUFFER_2K)
		rx_buf_len = IXGBEVF_RXBUFFER_2K;
	else if (max_frame <= IXGBEVF_RXBUFFER_4K)
		rx_buf_len = IXGBEVF_RXBUFFER_4K;
	else if (max_frame <= IXGBEVF_RXBUFFER_8K)
		rx_buf_len = IXGBEVF_RXBUFFER_8K;
	else
		rx_buf_len = IXGBEVF_MAX_RXBUFFER;
		rx_buf_len = IXGBEVF_RXBUFFER_10K;

	for (i = 0; i < adapter->num_rx_queues; i++)
		adapter->rx_ring[i].rx_buf_len = rx_buf_len;