Page MenuHomeFreeBSD

D24348.id70620.diff
No OneTemporary

D24348.id70620.diff

Index: head/sys/dev/cxgbe/tom/t4_connect.c
===================================================================
--- head/sys/dev/cxgbe/tom/t4_connect.c
+++ head/sys/dev/cxgbe/tom/t4_connect.c
@@ -101,6 +101,8 @@
make_established(toep, be32toh(cpl->snd_isn) - 1,
be32toh(cpl->rcv_isn) - 1, cpl->tcp_opt);
+ inp->inp_flowtype = M_HASHTYPE_OPAQUE;
+ inp->inp_flowid = tid;
if (ulp_mode(toep) == ULP_MODE_TLS)
tls_establish(toep);
Index: head/sys/dev/cxgbe/tom/t4_listen.c
===================================================================
--- head/sys/dev/cxgbe/tom/t4_listen.c
+++ head/sys/dev/cxgbe/tom/t4_listen.c
@@ -946,9 +946,7 @@
{
struct adapter *sc = tod->tod_softc;
struct synq_entry *synqe = arg;
-#ifdef INVARIANTS
struct inpcb *inp = sotoinpcb(so);
-#endif
struct toepcb *toep = synqe->toep;
NET_EPOCH_ASSERT(); /* prevents bad race with accept() */
@@ -962,6 +960,9 @@
toep->flags |= TPF_CPL_PENDING;
update_tid(sc, synqe->tid, toep);
synqe->flags |= TPF_SYNQE_EXPANDED;
+ inp->inp_flowtype = (inp->inp_vflag & INP_IPV6) ?
+ M_HASHTYPE_RSS_TCP_IPV6 : M_HASHTYPE_RSS_TCP_IPV4;
+ inp->inp_flowid = synqe->rss_hash;
}
static void
@@ -1299,6 +1300,8 @@
NET_EPOCH_EXIT(et);
REJECT_PASS_ACCEPT_REQ(true);
}
+ MPASS(rss->hash_type == RSS_HASH_TCP);
+ synqe->rss_hash = be32toh(rss->hash_val);
atomic_store_int(&synqe->ok_to_respond, 0);
init_conn_params(vi, &settings, &inc, so, &cpl->tcpopt, e->idx,
Index: head/sys/dev/cxgbe/tom/t4_tom.h
===================================================================
--- head/sys/dev/cxgbe/tom/t4_tom.h
+++ head/sys/dev/cxgbe/tom/t4_tom.h
@@ -242,6 +242,7 @@
uint32_t iss;
uint32_t irs;
uint32_t ts;
+ uint32_t rss_hash;
__be16 tcp_opt; /* from cpl_pass_establish */
struct toepcb *toep;

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 19, 6:45 AM (2 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23891641
Default Alt Text
D24348.id70620.diff (1 KB)

Event Timeline