Commit 004f23b9 authored by Divy Le Ray's avatar Divy Le Ray Committed by Jeff Garzik
Browse files

cxgb3 - remove duplicate tests in lro



The generic lro code checks TCP flags/options.
Remove duplicate tests done in the driver.

Signed-off-by: default avatarDivy Le Ray <divy@chelsio.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent b7372492
Loading
Loading
Loading
Loading
+0 −35
Original line number Diff line number Diff line
@@ -1937,38 +1937,6 @@ static inline int lro_frame_ok(const struct cpl_rx_pkt *p)
		eh->h_proto == htons(ETH_P_IP) && ih->ihl == (sizeof(*ih) >> 2);
}

#define TCP_FLAG_MASK (TCP_FLAG_CWR | TCP_FLAG_ECE | TCP_FLAG_URG |\
                       TCP_FLAG_ACK | TCP_FLAG_PSH | TCP_FLAG_RST |\
		                       TCP_FLAG_SYN | TCP_FLAG_FIN)
#define TSTAMP_WORD ((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) |\
                     (TCPOPT_TIMESTAMP << 8) | TCPOLEN_TIMESTAMP)

/**
 *	lro_segment_ok - check if a TCP segment is eligible for LRO
 *	@tcph: the TCP header of the packet
 *
 *	Returns true if a TCP packet is eligible for LRO.  This requires that
 *	the packet have only the ACK flag set and no TCP options besides
 *	time stamps.
 */
static inline int lro_segment_ok(const struct tcphdr *tcph)
{
	int optlen;

	if (unlikely((tcp_flag_word(tcph) & TCP_FLAG_MASK) != TCP_FLAG_ACK))
		return 0;

	optlen = (tcph->doff << 2) - sizeof(*tcph);
	if (optlen) {
		const u32 *opt = (const u32 *)(tcph + 1);

		if (optlen != TCPOLEN_TSTAMP_ALIGNED ||
		    *opt != htonl(TSTAMP_WORD) || !opt[2])
			return 0;
	}
	return 1;
}

static int t3_get_lro_header(void **eh,  void **iph, void **tcph,
			     u64 *hdr_flags, void *priv)
{
@@ -1981,9 +1949,6 @@ static int t3_get_lro_header(void **eh, void **iph, void **tcph,
	*iph = (struct iphdr *)((struct ethhdr *)*eh + 1);
	*tcph = (struct tcphdr *)((struct iphdr *)*iph + 1);

	 if (!lro_segment_ok(*tcph))
		return -1;

	*hdr_flags = LRO_IPV4 | LRO_TCP;
	return 0;
}