|
@@ -585,7 +585,7 @@ static void efx_start_datapath(struct efx_nic *efx)
|
|
EFX_MAX_FRAME_LEN(efx->net_dev->mtu) +
|
|
EFX_MAX_FRAME_LEN(efx->net_dev->mtu) +
|
|
efx->type->rx_buffer_padding);
|
|
efx->type->rx_buffer_padding);
|
|
rx_buf_len = (sizeof(struct efx_rx_page_state) +
|
|
rx_buf_len = (sizeof(struct efx_rx_page_state) +
|
|
- NET_IP_ALIGN + efx->rx_dma_len);
|
|
|
|
|
|
+ efx->rx_ip_align + efx->rx_dma_len);
|
|
if (rx_buf_len <= PAGE_SIZE) {
|
|
if (rx_buf_len <= PAGE_SIZE) {
|
|
efx->rx_scatter = efx->type->always_rx_scatter;
|
|
efx->rx_scatter = efx->type->always_rx_scatter;
|
|
efx->rx_buffer_order = 0;
|
|
efx->rx_buffer_order = 0;
|
|
@@ -2544,6 +2544,8 @@ static int efx_init_struct(struct efx_nic *efx,
|
|
|
|
|
|
efx->net_dev = net_dev;
|
|
efx->net_dev = net_dev;
|
|
efx->rx_prefix_size = efx->type->rx_prefix_size;
|
|
efx->rx_prefix_size = efx->type->rx_prefix_size;
|
|
|
|
+ efx->rx_ip_align =
|
|
|
|
+ NET_IP_ALIGN ? (efx->rx_prefix_size + NET_IP_ALIGN) % 4 : 0;
|
|
efx->rx_packet_hash_offset =
|
|
efx->rx_packet_hash_offset =
|
|
efx->type->rx_hash_offset - efx->type->rx_prefix_size;
|
|
efx->type->rx_hash_offset - efx->type->rx_prefix_size;
|
|
spin_lock_init(&efx->stats_lock);
|
|
spin_lock_init(&efx->stats_lock);
|