Date: Wed, 27 Apr 2016 08:45:17 +0000 From: "sepherosa_gmail.com (Sepherosa Ziehau)" <phabric-noreply@FreeBSD.org> To: freebsd-net@freebsd.org Subject: [Differential] D6120: tcp/syncache: Set flowid and hash type properly for SYN|ACK Message-ID: <differential-rev-PHID-DREV-wo3rxa6lpqbmh4zlzhwf-req@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
--b1_3c36fcb12a942e73e7363a95e239b569 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: 8bit sepherosa_gmail.com created this revision. sepherosa_gmail.com added reviewers: network, adrian, rwatson, gnn, lstewart, glebius, delphij, mike-karels.net, jtl, hiren. sepherosa_gmail.com added a subscriber: freebsd-net-list. Herald added a reviewer: transport. REVISION DETAIL https://reviews.freebsd.org/D6120 AFFECTED FILES sys/netinet/tcp_syncache.c CHANGE DETAILS diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c --- a/sys/netinet/tcp_syncache.c +++ b/sys/netinet/tcp_syncache.c @@ -127,7 +127,8 @@ static void syncache_drop(struct syncache *, struct syncache_head *); static void syncache_free(struct syncache *); static void syncache_insert(struct syncache *, struct syncache_head *); -static int syncache_respond(struct syncache *, struct syncache_head *, int); +static int syncache_respond(struct syncache *, struct syncache_head *, int, + const struct mbuf *); static struct socket *syncache_socket(struct syncache *, struct socket *, struct mbuf *m); static void syncache_timeout(struct syncache *sc, struct syncache_head *sch, @@ -457,7 +458,7 @@ free(s, M_TCPLOG); } - syncache_respond(sc, sch, 1); + syncache_respond(sc, sch, 1, NULL); TCPSTAT_INC(tcps_sc_retransmitted); syncache_timeout(sc, sch, 0); } @@ -1307,7 +1308,7 @@ s, __func__); free(s, M_TCPLOG); } - if (syncache_respond(sc, sch, 1) == 0) { + if (syncache_respond(sc, sch, 1, m) == 0) { sc->sc_rxmits = 0; syncache_timeout(sc, sch, 1); TCPSTAT_INC(tcps_sndacks); @@ -1474,7 +1475,7 @@ /* * Do a standard 3-way handshake. */ - if (syncache_respond(sc, sch, 0) == 0) { + if (syncache_respond(sc, sch, 0, m) == 0) { if (V_tcp_syncookies && V_tcp_syncookiesonly && sc != &scs) syncache_free(sc); else if (sc != &scs) @@ -1505,7 +1506,8 @@ } static int -syncache_respond(struct syncache *sc, struct syncache_head *sch, int locked) +syncache_respond(struct syncache *sc, struct syncache_head *sch, int locked, + const struct mbuf *m0) { struct ip *ip = NULL; struct mbuf *m; @@ -1686,6 +1688,10 @@ M_SETFIB(m, sc->sc_inc.inc_fibnum); m->m_pkthdr.csum_data = offsetof(struct tcphdr, th_sum); + if (m0 != NULL && M_HASHTYPE_GET(m0) != M_HASHTYPE_NONE) { + m->m_pkthdr.flowid = m0->m_pkthdr.flowid; + M_HASHTYPE_SET(m, M_HASHTYPE_GET(m0)); + } #ifdef INET6 if (sc->sc_inc.inc_flags & INC_ISIPV6) { m->m_pkthdr.csum_flags = CSUM_TCP_IPV6; EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: sepherosa_gmail.com, network, transport, adrian, rwatson, gnn, lstewart, glebius, delphij, mike-karels.net, jtl, hiren Cc: freebsd-net-list --b1_3c36fcb12a942e73e7363a95e239b569 Content-Type: text/x-patch; charset=utf-8; name="D6120.15647.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D6120.15647.patch" ZGlmZiAtLWdpdCBhL3N5cy9uZXRpbmV0L3RjcF9zeW5jYWNoZS5jIGIvc3lzL25ldGluZXQvdGNw X3N5bmNhY2hlLmMKLS0tIGEvc3lzL25ldGluZXQvdGNwX3N5bmNhY2hlLmMKKysrIGIvc3lzL25l dGluZXQvdGNwX3N5bmNhY2hlLmMKQEAgLTEyNyw3ICsxMjcsOCBAQAogc3RhdGljIHZvaWQJIHN5 bmNhY2hlX2Ryb3Aoc3RydWN0IHN5bmNhY2hlICosIHN0cnVjdCBzeW5jYWNoZV9oZWFkICopOwog c3RhdGljIHZvaWQJIHN5bmNhY2hlX2ZyZWUoc3RydWN0IHN5bmNhY2hlICopOwogc3RhdGljIHZv aWQJIHN5bmNhY2hlX2luc2VydChzdHJ1Y3Qgc3luY2FjaGUgKiwgc3RydWN0IHN5bmNhY2hlX2hl YWQgKik7Ci1zdGF0aWMgaW50CSBzeW5jYWNoZV9yZXNwb25kKHN0cnVjdCBzeW5jYWNoZSAqLCBz dHJ1Y3Qgc3luY2FjaGVfaGVhZCAqLCBpbnQpOworc3RhdGljIGludAkgc3luY2FjaGVfcmVzcG9u ZChzdHJ1Y3Qgc3luY2FjaGUgKiwgc3RydWN0IHN5bmNhY2hlX2hlYWQgKiwgaW50LAorCQkgICAg Y29uc3Qgc3RydWN0IG1idWYgKik7CiBzdGF0aWMgc3RydWN0CSBzb2NrZXQgKnN5bmNhY2hlX3Nv Y2tldChzdHJ1Y3Qgc3luY2FjaGUgKiwgc3RydWN0IHNvY2tldCAqLAogCQkgICAgc3RydWN0IG1i dWYgKm0pOwogc3RhdGljIHZvaWQJIHN5bmNhY2hlX3RpbWVvdXQoc3RydWN0IHN5bmNhY2hlICpz Yywgc3RydWN0IHN5bmNhY2hlX2hlYWQgKnNjaCwKQEAgLTQ1Nyw3ICs0NTgsNyBAQAogCQkJZnJl ZShzLCBNX1RDUExPRyk7CiAJCX0KIAotCQlzeW5jYWNoZV9yZXNwb25kKHNjLCBzY2gsIDEpOwor CQlzeW5jYWNoZV9yZXNwb25kKHNjLCBzY2gsIDEsIE5VTEwpOwogCQlUQ1BTVEFUX0lOQyh0Y3Bz X3NjX3JldHJhbnNtaXR0ZWQpOwogCQlzeW5jYWNoZV90aW1lb3V0KHNjLCBzY2gsIDApOwogCX0K QEAgLTEzMDcsNyArMTMwOCw3IEBACiAJCQkgICAgcywgX19mdW5jX18pOwogCQkJZnJlZShzLCBN X1RDUExPRyk7CiAJCX0KLQkJaWYgKHN5bmNhY2hlX3Jlc3BvbmQoc2MsIHNjaCwgMSkgPT0gMCkg eworCQlpZiAoc3luY2FjaGVfcmVzcG9uZChzYywgc2NoLCAxLCBtKSA9PSAwKSB7CiAJCQlzYy0+ c2NfcnhtaXRzID0gMDsKIAkJCXN5bmNhY2hlX3RpbWVvdXQoc2MsIHNjaCwgMSk7CiAJCQlUQ1BT VEFUX0lOQyh0Y3BzX3NuZGFja3MpOwpAQCAtMTQ3NCw3ICsxNDc1LDcgQEAKIAkvKgogCSAqIERv IGEgc3RhbmRhcmQgMy13YXkgaGFuZHNoYWtlLgogCSAqLwotCWlmIChzeW5jYWNoZV9yZXNwb25k KHNjLCBzY2gsIDApID09IDApIHsKKwlpZiAoc3luY2FjaGVfcmVzcG9uZChzYywgc2NoLCAwLCBt KSA9PSAwKSB7CiAJCWlmIChWX3RjcF9zeW5jb29raWVzICYmIFZfdGNwX3N5bmNvb2tpZXNvbmx5 ICYmIHNjICE9ICZzY3MpCiAJCQlzeW5jYWNoZV9mcmVlKHNjKTsKIAkJZWxzZSBpZiAoc2MgIT0g JnNjcykKQEAgLTE1MDUsNyArMTUwNiw4IEBACiB9CiAKIHN0YXRpYyBpbnQKLXN5bmNhY2hlX3Jl c3BvbmQoc3RydWN0IHN5bmNhY2hlICpzYywgc3RydWN0IHN5bmNhY2hlX2hlYWQgKnNjaCwgaW50 IGxvY2tlZCkKK3N5bmNhY2hlX3Jlc3BvbmQoc3RydWN0IHN5bmNhY2hlICpzYywgc3RydWN0IHN5 bmNhY2hlX2hlYWQgKnNjaCwgaW50IGxvY2tlZCwKKyAgICBjb25zdCBzdHJ1Y3QgbWJ1ZiAqbTAp CiB7CiAJc3RydWN0IGlwICppcCA9IE5VTEw7CiAJc3RydWN0IG1idWYgKm07CkBAIC0xNjg2LDYg KzE2ODgsMTAgQEAKIAogCU1fU0VURklCKG0sIHNjLT5zY19pbmMuaW5jX2ZpYm51bSk7CiAJbS0+ bV9wa3RoZHIuY3N1bV9kYXRhID0gb2Zmc2V0b2Yoc3RydWN0IHRjcGhkciwgdGhfc3VtKTsKKwlp ZiAobTAgIT0gTlVMTCAmJiBNX0hBU0hUWVBFX0dFVChtMCkgIT0gTV9IQVNIVFlQRV9OT05FKSB7 CisJCW0tPm1fcGt0aGRyLmZsb3dpZCA9IG0wLT5tX3BrdGhkci5mbG93aWQ7CisJCU1fSEFTSFRZ UEVfU0VUKG0sIE1fSEFTSFRZUEVfR0VUKG0wKSk7CisJfQogI2lmZGVmIElORVQ2CiAJaWYgKHNj LT5zY19pbmMuaW5jX2ZsYWdzICYgSU5DX0lTSVBWNikgewogCQltLT5tX3BrdGhkci5jc3VtX2Zs YWdzID0gQ1NVTV9UQ1BfSVBWNjsKCg== --b1_3c36fcb12a942e73e7363a95e239b569--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?differential-rev-PHID-DREV-wo3rxa6lpqbmh4zlzhwf-req>