summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/sfc/efx.h
diff options
context:
space:
mode:
authorBen Hutchings2013-01-30 00:33:14 +0100
committerBen Hutchings2013-03-07 21:22:08 +0100
commitff734ef4bca05fd5cd51b83d2e2a9f008b64f9a3 (patch)
treec4e0095a62339ec8632b4d8262ce8043271b6094 /drivers/net/ethernet/sfc/efx.h
parentsfc: Make RX queue descriptor counts unsigned for consistency (diff)
downloadkernel-qcow2-linux-ff734ef4bca05fd5cd51b83d2e2a9f008b64f9a3.tar.gz
kernel-qcow2-linux-ff734ef4bca05fd5cd51b83d2e2a9f008b64f9a3.tar.xz
kernel-qcow2-linux-ff734ef4bca05fd5cd51b83d2e2a9f008b64f9a3.zip
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: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'drivers/net/ethernet/sfc/efx.h')
-rw-r--r--drivers/net/ethernet/sfc/efx.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/ethernet/sfc/efx.h b/drivers/net/ethernet/sfc/efx.h
index 64c555e493be..00e7077fa1d8 100644
--- a/drivers/net/ethernet/sfc/efx.h
+++ b/drivers/net/ethernet/sfc/efx.h
@@ -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