Changeset View
Changeset View
Standalone View
Standalone View
sys/ofed/drivers/infiniband/ulp/sdp/sdp_bcopy.c
Show First 20 Lines • Show All 119 Lines • ▼ Show 20 Lines | #endif | ||||
mb->m_pkthdr.len >= ssk->xmit_size_goal / 4 || | mb->m_pkthdr.len >= ssk->xmit_size_goal / 4 || | ||||
(mb->m_flags & M_PUSH); | (mb->m_flags & M_PUSH); | ||||
if (send_now) { | if (send_now) { | ||||
unsigned long mseq = ring_head(ssk->tx_ring); | unsigned long mseq = ring_head(ssk->tx_ring); | ||||
ssk->nagle_last_unacked = mseq; | ssk->nagle_last_unacked = mseq; | ||||
} else { | } else { | ||||
if (!callout_pending(&ssk->nagle_timer)) { | if (!callout_pending(&ssk->nagle_timer)) { | ||||
callout_reset(&ssk->nagle_timer, SDP_NAGLE_TIMEOUT, | callout_reset_sbt_on_arg1(&ssk->nagle_timer, | ||||
sdp_nagle_timeout, ssk); | tick_sbt * SDP_NAGLE_TIMEOUT, 0, | ||||
sdp_nagle_timeout, ssk, sdp_nagle_timeout, -1, | |||||
C_HARDCLOCK); | |||||
sdp_dbg_data(ssk->socket, "Starting nagle timer\n"); | sdp_dbg_data(ssk->socket, "Starting nagle timer\n"); | ||||
} | } | ||||
} | } | ||||
sdp_dbg_data(ssk->socket, "send_now = %d last_unacked = %ld\n", | sdp_dbg_data(ssk->socket, "send_now = %d last_unacked = %ld\n", | ||||
send_now, ssk->nagle_last_unacked); | send_now, ssk->nagle_last_unacked); | ||||
return send_now; | return send_now; | ||||
} | } | ||||
Show All 15 Lines | sdp_nagle_timeout(void *data) | ||||
if (ssk->state == TCPS_CLOSED) | if (ssk->state == TCPS_CLOSED) | ||||
return; | return; | ||||
ssk->nagle_last_unacked = 0; | ssk->nagle_last_unacked = 0; | ||||
sdp_post_sends(ssk, M_NOWAIT); | sdp_post_sends(ssk, M_NOWAIT); | ||||
sowwakeup(ssk->socket); | sowwakeup(ssk->socket); | ||||
out: | out: | ||||
if (sk->so_snd.sb_sndptr) | if (sk->so_snd.sb_sndptr) | ||||
callout_reset(&ssk->nagle_timer, SDP_NAGLE_TIMEOUT, | callout_reset_sbt_on_arg1(&ssk->nagle_timer, | ||||
sdp_nagle_timeout, ssk); | tick_sbt * SDP_NAGLE_TIMEOUT, 0, | ||||
sdp_nagle_timeout, ssk, sdp_nagle_timeout, -1, | |||||
C_HARDCLOCK); | |||||
} | } | ||||
void | void | ||||
sdp_post_sends(struct sdp_sock *ssk, int wait) | sdp_post_sends(struct sdp_sock *ssk, int wait) | ||||
{ | { | ||||
struct mbuf *mb; | struct mbuf *mb; | ||||
int post_count = 0; | int post_count = 0; | ||||
struct socket *sk; | struct socket *sk; | ||||
▲ Show 20 Lines • Show All 79 Lines • ▼ Show 20 Lines | if (low) | ||||
sdp_arm_tx_cq(ssk); | sdp_arm_tx_cq(ssk); | ||||
if (sdp_xmit_poll(ssk, low)) | if (sdp_xmit_poll(ssk, low)) | ||||
goto again; | goto again; | ||||
} | } | ||||
return; | return; | ||||
allocfail: | allocfail: | ||||
ssk->nagle_last_unacked = -1; | ssk->nagle_last_unacked = -1; | ||||
callout_reset(&ssk->nagle_timer, 1, sdp_nagle_timeout, ssk); | callout_reset_sbt_on_arg1(&ssk->nagle_timer, tick_sbt * 1, 0, | ||||
sdp_nagle_timeout, ssk, sdp_nagle_timeout, -1, C_HARDCLOCK); | |||||
return; | return; | ||||
} | } |