Page MenuHomeFreeBSD

D25085.1787476167.diff
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

D25085.1787476167.diff

Index: sys/netinet/tcp_lro.c
===================================================================
--- sys/netinet/tcp_lro.c
+++ sys/netinet/tcp_lro.c
@@ -378,11 +378,14 @@
#ifdef INET6
static int
-tcp_lro_rx_ipv6(struct lro_ctrl *lc, struct mbuf *m, struct ip6_hdr *ip6,
- struct tcphdr **th)
+tcp_lro_rx_ipv6(struct lro_ctrl *lc, struct lro_entry *le, struct mbuf *m,
+ struct ip6_hdr *ip6, struct tcphdr **th)
{
- /* XXX-BZ we should check the flow-label. */
+ if (le) {
+ if (ip6->ip6_flow != le->le_ip6->ip6_flow)
+ return (TCP_LRO_CANNOT);
+ }
/* XXX-BZ We do not yet support ext. hdrs. */
if (ip6->ip6_nxt != IPPROTO_TCP)
@@ -597,7 +600,7 @@
#ifdef INET6
case ETHERTYPE_IPV6:
l3hdr = ip6 = (struct ip6_hdr *)(eh + 1);
- error = tcp_lro_rx_ipv6(lc, m, ip6, &th);
+ error = tcp_lro_rx_ipv6(lc, le, m, ip6, &th);
le->le_ip6 = ip6;
le->source_ip6 = ip6->ip6_src;
le->dest_ip6 = ip6->ip6_dst;
@@ -1173,7 +1176,7 @@
}
CURVNET_RESTORE();
l3hdr = ip6 = (struct ip6_hdr *)(eh + 1);
- error = tcp_lro_rx_ipv6(lc, m, ip6, &th);
+ error = tcp_lro_rx_ipv6(lc, NULL, m, ip6, &th);
if (error != 0)
return (error);
tcp_data_len = ntohs(ip6->ip6_plen);

File Metadata

Mime Type
text/plain
Expires
Sun, Aug 23, 9:09 AM (6 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29456050
Default Alt Text
D25085.1787476167.diff (1 KB)

Event Timeline