Commit ff734ef4 authored by Ben Hutchings's avatar Ben Hutchings
Browse files

sfc: Wrap __efx_rx_packet() with efx_rx_flush_packet()



The pipeline mechanism will need to change a bit for scattered
packets.  Add a wrapper to insulate efx_process_channel() from this.

Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
parent 9bc2fc9b
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -250,11 +250,7 @@ static int efx_process_channel(struct efx_channel *channel, int budget)
		struct efx_rx_queue *rx_queue =
			efx_channel_get_rx_queue(channel);

		/* Deliver last RX packet. */
		if (channel->rx_pkt) {
			__efx_rx_packet(channel, channel->rx_pkt);
			channel->rx_pkt = NULL;
		}
		efx_rx_flush_packet(channel);
		if (rx_queue->enabled)
			efx_fast_push_rx_descriptors(rx_queue);
	}
+7 −0
Original line number Diff line number Diff line
@@ -43,6 +43,13 @@ extern void __efx_rx_packet(struct efx_channel *channel,
			    struct efx_rx_buffer *rx_buf);
extern void efx_rx_packet(struct efx_rx_queue *rx_queue, unsigned int index,
			  unsigned int len, u16 flags);
static inline void efx_rx_flush_packet(struct efx_channel *channel)
{
	if (channel->rx_pkt) {
		__efx_rx_packet(channel, channel->rx_pkt);
		channel->rx_pkt = NULL;
	}
}
extern void efx_schedule_slow_fill(struct efx_rx_queue *rx_queue);

#define EFX_MAX_DMAQ_SIZE 4096UL
+1 −2
Original line number Diff line number Diff line
@@ -465,8 +465,7 @@ void efx_rx_packet(struct efx_rx_queue *rx_queue, unsigned int index,
	 */
	rx_buf->len = len - efx->type->rx_buffer_hash_size;
out:
	if (channel->rx_pkt)
		__efx_rx_packet(channel, channel->rx_pkt);
	efx_rx_flush_packet(channel);
	channel->rx_pkt = rx_buf;
}