Patchwork [net-next,7/9] sfc: Do not pass non-TCP packets into GRO code

mail settings
Submitter Ben Hutchings
Date June 24, 2013, 8:14 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/253961/
State Accepted
Delegated to: David Miller
Headers show


Ben Hutchings - June 24, 2013, 8:14 p.m.
GRO can handle non-TCP packets and pass them up without coalescing,
but it has to do some extra work to parse the packet which we can
bypass using the hardware parse result.  (This condition yields a
false negative for TCP/IPv6 packets received by Falcon, but its
performance is already poor in that case due to lack of checksum

Signed-off-by: Ben Hutchings <>
 drivers/net/ethernet/sfc/rx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


diff --git a/drivers/net/ethernet/sfc/rx.c b/drivers/net/ethernet/sfc/rx.c
index 6efff3d..5c45118 100644
--- a/drivers/net/ethernet/sfc/rx.c
+++ b/drivers/net/ethernet/sfc/rx.c
@@ -629,7 +629,7 @@  void __efx_rx_packet(struct efx_channel *channel)
 	if (unlikely(!(efx->net_dev->features & NETIF_F_RXCSUM)))
 		rx_buf->flags &= ~EFX_RX_PKT_CSUMMED;
-	if (!channel->type->receive_skb)
+	if ((rx_buf->flags & EFX_RX_PKT_TCP) && !channel->type->receive_skb)
 		efx_rx_packet_gro(channel, rx_buf, channel->rx_pkt_n_frags, eh);
 		efx_rx_deliver(channel, eh, rx_buf, channel->rx_pkt_n_frags);