Lines Matching refs:ssk

113 sdp_destroy_cma(struct sdp_sock *ssk)  in sdp_destroy_cma()  argument
116 if (ssk->id == NULL) in sdp_destroy_cma()
118 rdma_destroy_id(ssk->id); in sdp_destroy_cma()
119 ssk->id = NULL; in sdp_destroy_cma()
123 sdp_pcbbind(struct sdp_sock *ssk, struct sockaddr *nam, struct ucred *cred) in sdp_pcbbind() argument
129 SDP_WLOCK_ASSERT(ssk); in sdp_pcbbind()
131 if (ssk->lport != 0 || ssk->laddr != INADDR_ANY) in sdp_pcbbind()
134 SDP_WUNLOCK(ssk); in sdp_pcbbind()
135 if (ssk->id == NULL) in sdp_pcbbind()
136 ssk->id = rdma_create_id(&init_net, sdp_cma_handler, ssk, RDMA_PS_SDP, IB_QPT_RC); in sdp_pcbbind()
137 if (ssk->id == NULL) { in sdp_pcbbind()
138 SDP_WLOCK(ssk); in sdp_pcbbind()
149 error = -rdma_bind_addr(ssk->id, nam); in sdp_pcbbind()
150 SDP_WLOCK(ssk); in sdp_pcbbind()
152 sin = (struct sockaddr_in *)&ssk->id->route.addr.src_addr; in sdp_pcbbind()
153 ssk->laddr = sin->sin_addr.s_addr; in sdp_pcbbind()
154 ssk->lport = sin->sin_port; in sdp_pcbbind()
156 sdp_destroy_cma(ssk); in sdp_pcbbind()
161 sdp_pcbfree(struct sdp_sock *ssk) in sdp_pcbfree() argument
164 KASSERT(ssk->socket == NULL, ("ssk %p socket still attached", ssk)); in sdp_pcbfree()
165 KASSERT((ssk->flags & SDP_DESTROY) == 0, in sdp_pcbfree()
166 ("ssk %p already destroyed", ssk)); in sdp_pcbfree()
168 sdp_dbg(ssk->socket, "Freeing pcb"); in sdp_pcbfree()
169 SDP_WLOCK_ASSERT(ssk); in sdp_pcbfree()
170 ssk->flags |= SDP_DESTROY; in sdp_pcbfree()
171 SDP_WUNLOCK(ssk); in sdp_pcbfree()
174 LIST_REMOVE(ssk, list); in sdp_pcbfree()
176 crfree(ssk->cred); in sdp_pcbfree()
177 ssk->qp_active = 0; in sdp_pcbfree()
178 if (ssk->qp) { in sdp_pcbfree()
179 ib_destroy_qp(ssk->qp); in sdp_pcbfree()
180 ssk->qp = NULL; in sdp_pcbfree()
182 sdp_tx_ring_destroy(ssk); in sdp_pcbfree()
183 sdp_rx_ring_destroy(ssk); in sdp_pcbfree()
184 sdp_destroy_cma(ssk); in sdp_pcbfree()
185 rw_destroy(&ssk->rx_ring.destroyed_lock); in sdp_pcbfree()
186 rw_destroy(&ssk->lock); in sdp_pcbfree()
187 uma_zfree(sdp_zone, ssk); in sdp_pcbfree()
193 struct sdp_sock *ssk = sdp_sk(so); in sdp_getsockaddr() local
195 SDP_RLOCK(ssk); in sdp_getsockaddr()
199 .sin_addr.s_addr = ssk->laddr, in sdp_getsockaddr()
200 .sin_port = ssk->lport, in sdp_getsockaddr()
202 SDP_RUNLOCK(ssk); in sdp_getsockaddr()
210 struct sdp_sock *ssk = sdp_sk(so); in sdp_getpeeraddr() local
212 SDP_RLOCK(ssk); in sdp_getpeeraddr()
216 .sin_addr.s_addr = ssk->faddr, in sdp_getpeeraddr()
217 .sin_port = ssk->fport, in sdp_getpeeraddr()
219 SDP_RUNLOCK(ssk); in sdp_getpeeraddr()
228 struct sdp_sock *ssk;
231 LIST_FOREACH(ssk, &sdp_list, list) {
232 SDP_WLOCK(ssk);
233 func(ssk, arg);
234 SDP_WUNLOCK(ssk);
241 sdp_output_reset(struct sdp_sock *ssk) in sdp_output_reset() argument
245 SDP_WLOCK_ASSERT(ssk); in sdp_output_reset()
246 if (ssk->id) { in sdp_output_reset()
247 id = ssk->id; in sdp_output_reset()
248 ssk->qp_active = 0; in sdp_output_reset()
249 SDP_WUNLOCK(ssk); in sdp_output_reset()
251 SDP_WLOCK(ssk); in sdp_output_reset()
253 ssk->state = TCPS_CLOSED; in sdp_output_reset()
261 sdp_closed(struct sdp_sock *ssk) in sdp_closed() argument
265 SDP_WLOCK_ASSERT(ssk); in sdp_closed()
267 ssk->flags |= SDP_DROPPED; in sdp_closed()
268 so = ssk->socket; in sdp_closed()
270 if (ssk->flags & SDP_SOCKREF) { in sdp_closed()
271 ssk->flags &= ~SDP_SOCKREF; in sdp_closed()
272 SDP_WUNLOCK(ssk); in sdp_closed()
276 return (ssk); in sdp_closed()
286 struct sdp_sock *ssk; in sdp_shutdown_task() local
288 ssk = data; in sdp_shutdown_task()
289 SDP_WLOCK(ssk); in sdp_shutdown_task()
294 if (ssk->flags & SDP_DESTROY) in sdp_shutdown_task()
296 ssk); in sdp_shutdown_task()
297 if (ssk->flags & SDP_DISCON) in sdp_shutdown_task()
298 sdp_output_reset(ssk); in sdp_shutdown_task()
300 ssk->flags &= ~(SDP_TIMEWAIT | SDP_DREQWAIT); in sdp_shutdown_task()
301 if ((ssk->flags & SDP_DROPPED) == 0 && in sdp_shutdown_task()
302 sdp_closed(ssk) == NULL) in sdp_shutdown_task()
304 if (ssk->socket == NULL) { in sdp_shutdown_task()
305 sdp_pcbfree(ssk); in sdp_shutdown_task()
308 SDP_WUNLOCK(ssk); in sdp_shutdown_task()
317 struct sdp_sock *ssk; in sdp_2msl_timeout() local
319 ssk = data; in sdp_2msl_timeout()
321 if (!callout_active(&ssk->keep2msl)) in sdp_2msl_timeout()
323 callout_deactivate(&ssk->keep2msl); in sdp_2msl_timeout()
325 if ((ssk->flags & SDP_TIMEWAIT) == 0) in sdp_2msl_timeout()
327 taskqueue_enqueue(taskqueue_thread, &ssk->shutdown_task); in sdp_2msl_timeout()
329 SDP_WUNLOCK(ssk); in sdp_2msl_timeout()
337 sdp_2msl_wait(struct sdp_sock *ssk) in sdp_2msl_wait() argument
340 SDP_WLOCK_ASSERT(ssk); in sdp_2msl_wait()
341 ssk->flags |= SDP_TIMEWAIT; in sdp_2msl_wait()
342 ssk->state = TCPS_TIME_WAIT; in sdp_2msl_wait()
343 soisdisconnected(ssk->socket); in sdp_2msl_wait()
344 callout_reset(&ssk->keep2msl, TCPTV_MSL, sdp_2msl_timeout, ssk); in sdp_2msl_wait()
353 struct sdp_sock *ssk; in sdp_dreq_timeout() local
355 ssk = data; in sdp_dreq_timeout()
357 if (!callout_active(&ssk->keep2msl)) in sdp_dreq_timeout()
360 if (callout_pending(&ssk->keep2msl)) in sdp_dreq_timeout()
362 callout_deactivate(&ssk->keep2msl); in sdp_dreq_timeout()
363 if (ssk->state != TCPS_FIN_WAIT_1 && ssk->state != TCPS_LAST_ACK) in sdp_dreq_timeout()
365 if ((ssk->flags & SDP_DREQWAIT) == 0) in sdp_dreq_timeout()
367 ssk->flags &= ~SDP_DREQWAIT; in sdp_dreq_timeout()
368 ssk->flags |= SDP_DISCON; in sdp_dreq_timeout()
369 sdp_2msl_wait(ssk); in sdp_dreq_timeout()
370 ssk->qp_active = 0; in sdp_dreq_timeout()
372 SDP_WUNLOCK(ssk); in sdp_dreq_timeout()
379 sdp_cancel_dreq_wait_timeout(struct sdp_sock *ssk) in sdp_cancel_dreq_wait_timeout() argument
381 sdp_dbg(ssk->socket, "cancelling dreq wait timeout\n"); in sdp_cancel_dreq_wait_timeout()
382 ssk->flags &= ~SDP_DREQWAIT; in sdp_cancel_dreq_wait_timeout()
383 sdp_2msl_wait(ssk); in sdp_cancel_dreq_wait_timeout()
389 struct sdp_sock *ssk = sdp_sk(sk); in sdp_init_sock() local
393 callout_init_rw(&ssk->keep2msl, &ssk->lock, CALLOUT_RETURNUNLOCKED); in sdp_init_sock()
394 TASK_INIT(&ssk->shutdown_task, 0, sdp_shutdown_task, ssk); in sdp_init_sock()
396 INIT_DELAYED_WORK(&ssk->srcavail_cancel_work, srcavail_cancel_timeout); in sdp_init_sock()
397 ssk->zcopy_thresh = -1; /* use global sdp_zcopy_thresh */ in sdp_init_sock()
398 ssk->tx_ring.rdma_inflight = NULL; in sdp_init_sock()
400 atomic_set(&ssk->mseq_ack, 0); in sdp_init_sock()
401 sdp_rx_ring_init(ssk); in sdp_init_sock()
402 ssk->tx_ring.buffer = NULL; in sdp_init_sock()
413 struct sdp_sock *ssk; in sdp_attach() local
416 ssk = sdp_sk(so); in sdp_attach()
417 KASSERT(ssk == NULL, ("sdp_attach: ssk already set on so %p", so)); in sdp_attach()
425 ssk = uma_zalloc(sdp_zone, M_NOWAIT | M_ZERO); in sdp_attach()
426 if (ssk == NULL) in sdp_attach()
428 rw_init(&ssk->lock, "sdpsock"); in sdp_attach()
429 ssk->socket = so; in sdp_attach()
430 ssk->cred = crhold(so->so_cred); in sdp_attach()
431 so->so_pcb = (caddr_t)ssk; in sdp_attach()
433 ssk->flags = 0; in sdp_attach()
434 ssk->qp_active = 0; in sdp_attach()
435 ssk->state = TCPS_CLOSED; in sdp_attach()
436 mbufq_init(&ssk->rxctlq, INT_MAX); in sdp_attach()
438 LIST_INSERT_HEAD(&sdp_list, ssk, list); in sdp_attach()
452 struct sdp_sock *ssk; in sdp_detach() local
454 ssk = sdp_sk(so); in sdp_detach()
455 SDP_WLOCK(ssk); in sdp_detach()
456 KASSERT(ssk->socket != NULL, ("sdp_detach: socket is NULL")); in sdp_detach()
457 ssk->socket->so_pcb = NULL; in sdp_detach()
458 ssk->socket = NULL; in sdp_detach()
459 if (ssk->flags & (SDP_TIMEWAIT | SDP_DREQWAIT)) in sdp_detach()
460 SDP_WUNLOCK(ssk); in sdp_detach()
461 else if (ssk->flags & SDP_DROPPED || ssk->state < TCPS_SYN_SENT) in sdp_detach()
462 sdp_pcbfree(ssk); in sdp_detach()
464 panic("sdp_detach: Unexpected state, ssk %p.\n", ssk); in sdp_detach()
474 struct sdp_sock *ssk; in sdp_bind() local
485 ssk = sdp_sk(so); in sdp_bind()
486 SDP_WLOCK(ssk); in sdp_bind()
487 if (ssk->flags & (SDP_TIMEWAIT | SDP_DROPPED)) { in sdp_bind()
491 error = sdp_pcbbind(ssk, nam, td->td_ucred); in sdp_bind()
493 SDP_WUNLOCK(ssk); in sdp_bind()
505 struct sdp_sock *ssk; in sdp_listen() local
507 ssk = sdp_sk(so); in sdp_listen()
508 SDP_WLOCK(ssk); in sdp_listen()
509 if (ssk->flags & (SDP_TIMEWAIT | SDP_DROPPED)) { in sdp_listen()
513 if (error == 0 && ssk->lport == 0) in sdp_listen()
514 error = sdp_pcbbind(ssk, (struct sockaddr *)0, td->td_ucred); in sdp_listen()
520 ssk->state = TCPS_LISTEN; in sdp_listen()
525 SDP_WUNLOCK(ssk); in sdp_listen()
527 error = -rdma_listen(ssk->id, backlog); in sdp_listen()
535 sdp_start_connect(struct sdp_sock *ssk, struct sockaddr *nam, struct thread *td) in sdp_start_connect() argument
541 so = ssk->socket; in sdp_start_connect()
543 SDP_WLOCK_ASSERT(ssk); in sdp_start_connect()
544 if (ssk->lport == 0) { in sdp_start_connect()
545 error = sdp_pcbbind(ssk, (struct sockaddr *)0, td->td_ucred); in sdp_start_connect()
552 src.sin_port = ssk->lport; in sdp_start_connect()
553 src.sin_addr.s_addr = ssk->laddr; in sdp_start_connect()
555 SDP_WUNLOCK(ssk); in sdp_start_connect()
556 error = -rdma_resolve_addr(ssk->id, (struct sockaddr *)&src, nam, in sdp_start_connect()
558 SDP_WLOCK(ssk); in sdp_start_connect()
560 ssk->state = TCPS_SYN_SENT; in sdp_start_connect()
572 struct sdp_sock *ssk; in sdp_connect() local
584 ssk = sdp_sk(so); in sdp_connect()
585 SDP_WLOCK(ssk); in sdp_connect()
586 if (ssk->flags & (SDP_TIMEWAIT | SDP_DROPPED)) in sdp_connect()
589 error = sdp_start_connect(ssk, nam, td); in sdp_connect()
590 SDP_WUNLOCK(ssk); in sdp_connect()
600 sdp_drop(struct sdp_sock *ssk, int errno) in sdp_drop() argument
604 SDP_WLOCK_ASSERT(ssk); in sdp_drop()
605 so = ssk->socket; in sdp_drop()
606 if (TCPS_HAVERCVDSYN(ssk->state)) in sdp_drop()
607 sdp_output_reset(ssk); in sdp_drop()
608 if (errno == ETIMEDOUT && ssk->softerror) in sdp_drop()
609 errno = ssk->softerror; in sdp_drop()
611 return (sdp_closed(ssk)); in sdp_drop()
625 sdp_usrclosed(struct sdp_sock *ssk) in sdp_usrclosed() argument
628 SDP_WLOCK_ASSERT(ssk); in sdp_usrclosed()
630 switch (ssk->state) { in sdp_usrclosed()
632 ssk->state = TCPS_CLOSED; in sdp_usrclosed()
633 SDP_WUNLOCK(ssk); in sdp_usrclosed()
634 sdp_destroy_cma(ssk); in sdp_usrclosed()
635 SDP_WLOCK(ssk); in sdp_usrclosed()
638 ssk = sdp_closed(ssk); in sdp_usrclosed()
643 KASSERT(ssk != NULL, in sdp_usrclosed()
650 ssk->flags |= SDP_NEEDFIN; in sdp_usrclosed()
654 ssk->flags |= SDP_NEEDFIN; in sdp_usrclosed()
655 ssk->state = TCPS_FIN_WAIT_1; in sdp_usrclosed()
659 ssk->state = TCPS_LAST_ACK; in sdp_usrclosed()
662 if (ssk->state >= TCPS_FIN_WAIT_2) { in sdp_usrclosed()
664 if (ssk->state == TCPS_FIN_WAIT_2) in sdp_usrclosed()
665 sdp_2msl_wait(ssk); in sdp_usrclosed()
667 soisdisconnected(ssk->socket); in sdp_usrclosed()
672 sdp_output_disconnect(struct sdp_sock *ssk) in sdp_output_disconnect() argument
675 SDP_WLOCK_ASSERT(ssk); in sdp_output_disconnect()
676 callout_reset(&ssk->keep2msl, SDP_FIN_WAIT_TIMEOUT, in sdp_output_disconnect()
677 sdp_dreq_timeout, ssk); in sdp_output_disconnect()
678 ssk->flags |= SDP_NEEDFIN | SDP_DREQWAIT; in sdp_output_disconnect()
679 sdp_post_sends(ssk, M_NOWAIT); in sdp_output_disconnect()
691 sdp_start_disconnect(struct sdp_sock *ssk) in sdp_start_disconnect() argument
696 so = ssk->socket; in sdp_start_disconnect()
697 SDP_WLOCK_ASSERT(ssk); in sdp_start_disconnect()
703 if (ssk->state < TCPS_ESTABLISHED) { in sdp_start_disconnect()
704 ssk = sdp_closed(ssk); in sdp_start_disconnect()
705 KASSERT(ssk != NULL, in sdp_start_disconnect()
708 ssk = sdp_drop(ssk, 0); in sdp_start_disconnect()
709 KASSERT(ssk != NULL, in sdp_start_disconnect()
715 sdp_usrclosed(ssk); in sdp_start_disconnect()
716 if (!(ssk->flags & SDP_DROPPED)) { in sdp_start_disconnect()
718 sdp_output_reset(ssk); in sdp_start_disconnect()
720 sdp_output_disconnect(ssk); in sdp_start_disconnect()
731 struct sdp_sock *ssk; in sdp_disconnect() local
734 ssk = sdp_sk(so); in sdp_disconnect()
735 SDP_WLOCK(ssk); in sdp_disconnect()
736 if (ssk->flags & (SDP_TIMEWAIT | SDP_DROPPED)) { in sdp_disconnect()
740 sdp_start_disconnect(ssk); in sdp_disconnect()
742 SDP_WUNLOCK(ssk); in sdp_disconnect()
763 struct sdp_sock *ssk = NULL; in sdp_accept() local
770 ssk = sdp_sk(so); in sdp_accept()
771 SDP_WLOCK(ssk); in sdp_accept()
772 if (ssk->flags & (SDP_TIMEWAIT | SDP_DROPPED)) in sdp_accept()
778 .sin_addr.s_addr = ssk->faddr, in sdp_accept()
779 .sin_port = ssk->fport, in sdp_accept()
781 SDP_WUNLOCK(ssk); in sdp_accept()
792 struct sdp_sock *ssk = sdp_sk(so); in sdp_shutdown() local
821 SDP_WLOCK(ssk); in sdp_shutdown()
822 if (ssk->flags & (SDP_TIMEWAIT | SDP_DROPPED)) { in sdp_shutdown()
823 SDP_WUNLOCK(ssk); in sdp_shutdown()
828 sdp_usrclosed(ssk); in sdp_shutdown()
829 if (!(ssk->flags & SDP_DROPPED)) in sdp_shutdown()
830 sdp_output_disconnect(ssk); in sdp_shutdown()
831 SDP_WUNLOCK(ssk); in sdp_shutdown()
839 sdp_append(struct sdp_sock *ssk, struct sockbuf *sb, struct mbuf *mb, int cnt) in sdp_append() argument
874 ssk->xmit_size_goal) { in sdp_append()
909 struct sdp_sock *ssk; in sdp_send() local
930 ssk = sdp_sk(so); in sdp_send()
947 SDP_WLOCK(ssk); in sdp_send()
948 if (ssk->flags & (SDP_TIMEWAIT | SDP_DROPPED)) { in sdp_send()
969 sdp_append(ssk, &so->so_snd, m, cnt); in sdp_send()
971 if (nam && ssk->state < TCPS_SYN_SENT) { in sdp_send()
975 error = sdp_start_connect(ssk, nam, td); in sdp_send()
985 sdp_usrclosed(ssk); in sdp_send()
986 if (!(ssk->flags & SDP_DROPPED)) in sdp_send()
987 sdp_output_disconnect(ssk); in sdp_send()
988 } else if (!(ssk->flags & SDP_DROPPED) && in sdp_send()
990 sdp_post_sends(ssk, M_NOWAIT); in sdp_send()
991 SDP_WUNLOCK(ssk); in sdp_send()
1010 sdp_append(ssk, &so->so_snd, m, cnt); in sdp_send()
1012 if (nam && ssk->state < TCPS_SYN_SENT) { in sdp_send()
1016 error = sdp_start_connect(ssk, nam, td); in sdp_send()
1020 sdp_post_sends(ssk, M_NOWAIT); in sdp_send()
1021 SDP_WUNLOCK(ssk); in sdp_send()
1025 SDP_WUNLOCK(ssk); in sdp_send()
1046 struct sdp_sock *ssk; in sdp_sosend() local
1084 ssk = sdp_sk(so); in sdp_sosend()
1111 if (atomic && resid > ssk->xmit_size_goal - SDP_HEAD_SIZE) { in sdp_sosend()
1143 ssk->xmit_size_goal - SDP_HEAD_SIZE); in sdp_sosend()
1225 struct sdp_sock *ssk; in sdp_sorecv() local
1244 ssk = sdp_sk(so); in sdp_sorecv()
1390 SDP_WLOCK(ssk); in sdp_sorecv()
1391 sdp_do_posts(ssk); in sdp_sorecv()
1392 SDP_WUNLOCK(ssk); in sdp_sorecv()
1417 struct sdp_sock *ssk; in sdp_abort() local
1419 ssk = sdp_sk(so); in sdp_abort()
1420 SDP_WLOCK(ssk); in sdp_abort()
1424 if (!(ssk->flags & SDP_TIMEWAIT) && in sdp_abort()
1425 !(ssk->flags & SDP_DROPPED)) in sdp_abort()
1426 sdp_drop(ssk, ECONNABORTED); in sdp_abort()
1427 KASSERT(ssk->flags & SDP_DROPPED, ("sdp_abort: %p not dropped 0x%X", in sdp_abort()
1428 ssk, ssk->flags)); in sdp_abort()
1429 SDP_WUNLOCK(ssk); in sdp_abort()
1438 struct sdp_sock *ssk; in sdp_close() local
1440 ssk = sdp_sk(so); in sdp_close()
1441 SDP_WLOCK(ssk); in sdp_close()
1445 if (!(ssk->flags & SDP_TIMEWAIT) && in sdp_close()
1446 !(ssk->flags & SDP_DROPPED)) in sdp_close()
1447 sdp_start_disconnect(ssk); in sdp_close()
1453 if (!(ssk->flags & SDP_DROPPED)) { in sdp_close()
1454 ssk->flags |= SDP_SOCKREF; in sdp_close()
1457 SDP_WUNLOCK(ssk); in sdp_close()
1467 struct sdp_sock *ssk; in sdp_rcvoob() local
1469 ssk = sdp_sk(so); in sdp_rcvoob()
1470 SDP_WLOCK(ssk); in sdp_rcvoob()
1471 if (!rx_ring_trylock(&ssk->rx_ring)) { in sdp_rcvoob()
1472 SDP_WUNLOCK(ssk); in sdp_rcvoob()
1475 if (ssk->flags & (SDP_TIMEWAIT | SDP_DROPPED)) { in sdp_rcvoob()
1482 ssk->oobflags & SDP_HADOOB) { in sdp_rcvoob()
1486 if ((ssk->oobflags & SDP_HAVEOOB) == 0) { in sdp_rcvoob()
1491 *mtod(m, caddr_t) = ssk->iobc; in sdp_rcvoob()
1493 ssk->oobflags ^= (SDP_HAVEOOB | SDP_HADOOB); in sdp_rcvoob()
1495 rx_ring_unlock(&ssk->rx_ring); in sdp_rcvoob()
1496 SDP_WUNLOCK(ssk); in sdp_rcvoob()
1501 sdp_urg(struct sdp_sock *ssk, struct mbuf *mb) in sdp_urg() argument
1506 so = ssk->socket; in sdp_urg()
1512 ssk->oobflags &= ~(SDP_HAVEOOB | SDP_HADOOB); in sdp_urg()
1515 ssk->iobc = *(mtod(m, char *) + m->m_len - 1); in sdp_urg()
1516 ssk->oobflags |= SDP_HAVEOOB; in sdp_urg()
1529 sdp_notify(struct sdp_sock *ssk, int error) in sdp_notify() argument
1532 SDP_WLOCK_ASSERT(ssk); in sdp_notify()
1534 if ((ssk->flags & SDP_TIMEWAIT) || in sdp_notify()
1535 (ssk->flags & SDP_DROPPED)) in sdp_notify()
1536 return (ssk); in sdp_notify()
1541 if (ssk->state == TCPS_ESTABLISHED && in sdp_notify()
1544 return (ssk); in sdp_notify()
1545 ssk->softerror = error; in sdp_notify()
1546 return sdp_drop(ssk, error); in sdp_notify()
1552 struct sdp_sock *ssk; in sdp_keepalive_timeout() local
1554 ssk = data; in sdp_keepalive_timeout()
1556 if (!callout_active(&ssk->keep2msl)) in sdp_keepalive_timeout()
1559 if (callout_pending(&ssk->keep2msl)) in sdp_keepalive_timeout()
1561 callout_deactivate(&ssk->keep2msl); in sdp_keepalive_timeout()
1562 if (ssk->flags & SDP_DROPPED || in sdp_keepalive_timeout()
1563 (ssk->socket->so_options & SO_KEEPALIVE) == 0) in sdp_keepalive_timeout()
1565 sdp_post_keepalive(ssk); in sdp_keepalive_timeout()
1566 callout_reset(&ssk->keep2msl, SDP_KEEPALIVE_TIME, in sdp_keepalive_timeout()
1567 sdp_keepalive_timeout, ssk); in sdp_keepalive_timeout()
1569 SDP_WUNLOCK(ssk); in sdp_keepalive_timeout()
1576 struct sdp_sock *ssk; in sdp_start_keepalive_timer() local
1578 ssk = sdp_sk(so); in sdp_start_keepalive_timer()
1579 if (!callout_pending(&ssk->keep2msl)) in sdp_start_keepalive_timer()
1580 callout_reset(&ssk->keep2msl, SDP_KEEPALIVE_TIME, in sdp_start_keepalive_timer()
1581 sdp_keepalive_timeout, ssk); in sdp_start_keepalive_timer()
1587 struct sdp_sock *ssk; in sdp_stop_keepalive_timer() local
1589 ssk = sdp_sk(so); in sdp_stop_keepalive_timer()
1590 callout_stop(&ssk->keep2msl); in sdp_stop_keepalive_timer()
1600 SDP_WLOCK(ssk); \
1601 if (ssk->flags & (SDP_TIMEWAIT | SDP_DROPPED)) { \
1602 SDP_WUNLOCK(ssk); \
1611 struct sdp_sock *ssk; in sdp_ctloutput() local
1614 ssk = sdp_sk(so); in sdp_ctloutput()
1616 SDP_WLOCK(ssk); in sdp_ctloutput()
1621 SDP_WUNLOCK(ssk); in sdp_ctloutput()
1626 SDP_WLOCK(ssk); in sdp_ctloutput()
1627 if (ssk->flags & (SDP_TIMEWAIT | SDP_DROPPED)) { in sdp_ctloutput()
1628 SDP_WUNLOCK(ssk); in sdp_ctloutput()
1636 SDP_WUNLOCK(ssk); in sdp_ctloutput()
1642 SDP_WLOCK_RECHECK(ssk); in sdp_ctloutput()
1645 ssk->flags |= opt; in sdp_ctloutput()
1647 ssk->flags &= ~opt; in sdp_ctloutput()
1648 sdp_do_posts(ssk); in sdp_ctloutput()
1649 SDP_WUNLOCK(ssk); in sdp_ctloutput()
1653 SDP_WUNLOCK(ssk); in sdp_ctloutput()
1662 optval = ssk->flags & SDP_NODELAY; in sdp_ctloutput()
1663 SDP_WUNLOCK(ssk); in sdp_ctloutput()
1667 SDP_WUNLOCK(ssk); in sdp_ctloutput()
1681 sdp_set_default_moderation(struct sdp_sock *ssk) in sdp_set_default_moderation() argument
1685 ib_modify_cq(ssk->rx_ring.cq, sdp_mod_count, sdp_mod_usec); in sdp_set_default_moderation()
1721 struct sdp_sock *ssk; in sdp_dev_rem() local
1724 LIST_FOREACH(ssk, &sdp_list, list) { in sdp_dev_rem()
1725 if (ssk->ib_device != device) in sdp_dev_rem()
1727 SDP_WLOCK(ssk); in sdp_dev_rem()
1728 if ((ssk->flags & SDP_DESTROY) == 0) in sdp_dev_rem()
1729 ssk = sdp_notify(ssk, ECONNRESET); in sdp_dev_rem()
1730 if (ssk) in sdp_dev_rem()
1731 SDP_WUNLOCK(ssk); in sdp_dev_rem()
1754 struct sdp_sock *ssk; in sdp_pcblist() local
1793 for (ssk = LIST_FIRST(&sdp_list), i = 0; in sdp_pcblist()
1794 ssk != NULL && i < n; ssk = LIST_NEXT(ssk, list)) { in sdp_pcblist()
1797 SDP_RLOCK(ssk); in sdp_pcblist()
1798 if (ssk->flags & SDP_TIMEWAIT) { in sdp_pcblist()
1799 if (ssk->cred != NULL) in sdp_pcblist()
1801 ssk->cred); in sdp_pcblist()
1804 } else if (ssk->socket) in sdp_pcblist()
1806 ssk->socket); in sdp_pcblist()
1818 memcpy(&xt.xt_inp.inp_laddr, &ssk->laddr, sizeof(ssk->laddr)); in sdp_pcblist()
1819 xt.xt_inp.inp_lport = ssk->lport; in sdp_pcblist()
1820 memcpy(&xt.xt_inp.inp_faddr, &ssk->faddr, sizeof(ssk->faddr)); in sdp_pcblist()
1821 xt.xt_inp.inp_fport = ssk->fport; in sdp_pcblist()
1822 xt.t_state = ssk->state; in sdp_pcblist()
1823 if (ssk->socket != NULL) in sdp_pcblist()
1824 sotoxsocket(ssk->socket, &xt.xt_inp.xi_socket); in sdp_pcblist()
1826 SDP_RUNLOCK(ssk); in sdp_pcblist()
1833 SDP_RUNLOCK(ssk); in sdp_pcblist()