summaryrefslogtreecommitdiffstats
path: root/sys/dev/cxgbe/tom/t4_connect.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/cxgbe/tom/t4_connect.c')
-rw-r--r--sys/dev/cxgbe/tom/t4_connect.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/dev/cxgbe/tom/t4_connect.c b/sys/dev/cxgbe/tom/t4_connect.c
index bc59171..b48a971 100644
--- a/sys/dev/cxgbe/tom/t4_connect.c
+++ b/sys/dev/cxgbe/tom/t4_connect.c
@@ -247,10 +247,14 @@ calc_opt2a(struct socket *so)
opt2 |= F_RX_COALESCE_VALID | V_RX_COALESCE(M_RX_COALESCE);
opt2 |= F_RSS_QUEUE_VALID | V_RSS_QUEUE(toep->ofld_rxq->iq.abs_id);
+#ifdef USE_DDP_RX_FLOW_CONTROL
+ if (toep->ulp_mode == ULP_MODE_TCPDDP)
+ opt2 |= F_RX_FC_VALID | F_RX_FC_DDP;
+#endif
+
return (htobe32(opt2));
}
-
void
t4_init_connect_cpl_handlers(struct adapter *sc)
{
@@ -320,7 +324,10 @@ t4_connect(struct toedev *tod, struct socket *so, struct rtentry *rt,
toep->tid = atid;
toep->l2te = e;
- toep->ulp_mode = ULP_MODE_NONE;
+ if (sc->tt.ddp && (so->so_options & SO_NO_DDP) == 0)
+ set_tcpddp_ulp_mode(toep);
+ else
+ toep->ulp_mode = ULP_MODE_NONE;
SOCKBUF_LOCK(&so->so_rcv);
/* opt0 rcv_bufsiz initially, assumes its normal meaning later */
toep->rx_credits = min(select_rcv_wnd(so) >> 10, M_RCV_BUFSIZ);
OpenPOWER on IntegriCloud