aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/cxgbe/tom/t4_cpl_io.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/cxgbe/tom/t4_cpl_io.c')
-rw-r--r--sys/dev/cxgbe/tom/t4_cpl_io.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/sys/dev/cxgbe/tom/t4_cpl_io.c b/sys/dev/cxgbe/tom/t4_cpl_io.c
index 842e72bf8b2b..8547f21586e1 100644
--- a/sys/dev/cxgbe/tom/t4_cpl_io.c
+++ b/sys/dev/cxgbe/tom/t4_cpl_io.c
@@ -633,7 +633,7 @@ write_tx_sgl(void *dst, struct mbuf *start, struct mbuf *stop, int nsegs, int n)
* stalls). When drop is set this function MUST drop the bytes and wake up any
* writers.
*/
-void
+static void
t4_push_frames(struct adapter *sc, struct toepcb *toep, int drop)
{
struct mbuf *sndptr, *m, *sb_sndptr;
@@ -1393,6 +1393,7 @@ do_peer_close(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
case TCPS_FIN_WAIT_2:
restore_so_proto(so, inp->inp_vflag & INP_IPV6);
+ t4_pcb_detach(NULL, tp);
tcp_twstart(tp);
INP_UNLOCK_ASSERT(inp); /* safe, we have a ref on the inp */
NET_EPOCH_EXIT(et);
@@ -1454,6 +1455,7 @@ do_close_con_rpl(struct sge_iq *iq, const struct rss_header *rss,
switch (tp->t_state) {
case TCPS_CLOSING: /* see TCPS_FIN_WAIT_2 in do_peer_close too */
restore_so_proto(so, inp->inp_vflag & INP_IPV6);
+ t4_pcb_detach(NULL, tp);
tcp_twstart(tp);
release:
INP_UNLOCK_ASSERT(inp); /* safe, we have a ref on the inp */
@@ -2124,12 +2126,7 @@ alloc_aiotx_mbuf(struct kaiocb *job, int len)
if (npages < 0)
break;
- m = mb_alloc_ext_pgs(M_WAITOK, aiotx_free_pgs);
- if (m == NULL) {
- vm_page_unhold_pages(pgs, npages);
- break;
- }
-
+ m = mb_alloc_ext_pgs(M_WAITOK, aiotx_free_pgs, M_RDONLY);
m->m_epg_1st_off = pgoff;
m->m_epg_npgs = npages;
if (npages == 1) {