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

Commit f7f13b0b authored by Ben Hutchings's avatar Ben Hutchings Committed by Jeff Garzik
Browse files

sfc: Simplified efx_rx_calc_buffer_size() using get_order()



Merged it into its only caller, efx_init_channels().

Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent 91ad757c
Loading
Loading
Loading
Loading
+8 −21
Original line number Diff line number Diff line
@@ -317,26 +317,6 @@ static void efx_remove_eventq(struct efx_channel *channel)
 *
 *************************************************************************/

/* Setup per-NIC RX buffer parameters.
 * Calculate the rx buffer allocation parameters required to support
 * the current MTU, including padding for header alignment and overruns.
 */
static void efx_calc_rx_buffer_params(struct efx_nic *efx)
{
	unsigned int order, len;

	len = (max(EFX_PAGE_IP_ALIGN, NET_IP_ALIGN) +
	       EFX_MAX_FRAME_LEN(efx->net_dev->mtu) +
	       efx->type->rx_buffer_padding);

	/* Calculate page-order */
	for (order = 0; ((1u << order) * PAGE_SIZE) < len; ++order)
		;

	efx->rx_buffer_len = len;
	efx->rx_buffer_order = order;
}

static int efx_probe_channel(struct efx_channel *channel)
{
	struct efx_tx_queue *tx_queue;
@@ -387,7 +367,14 @@ static int efx_init_channels(struct efx_nic *efx)
	struct efx_channel *channel;
	int rc = 0;

	efx_calc_rx_buffer_params(efx);
	/* Calculate the rx buffer allocation parameters required to
	 * support the current MTU, including padding for header
	 * alignment and overruns.
	 */
	efx->rx_buffer_len = (max(EFX_PAGE_IP_ALIGN, NET_IP_ALIGN) +
			      EFX_MAX_FRAME_LEN(efx->net_dev->mtu) +
			      efx->type->rx_buffer_padding);
	efx->rx_buffer_order = get_order(efx->rx_buffer_len);

	/* Initialise the channels */
	efx_for_each_channel(channel, efx) {