Lines Matching defs:sp

85 isc_sendPDU(isc_session_t *sp, pduq_t *pq)
100 if(ISOK2DIG(sp->hdrDigest, pp)) {
101 pp->hdr_dig = sp->hdrDigest(&pp->ipdu, sizeof(union ipdu_u), 0);
105 pp->hdr_dig = sp->hdrDigest(&pp->ahs_addr, pp->ahs_len, pp->hdr_dig);
153 if(((pp->ds_len & 03) != 0) || ISOK2DIG(sp->dataDigest, pp)) {
160 if(ISOK2DIG(sp->dataDigest, pp))
163 if(ISOK2DIG(sp->dataDigest, pp)) {
164 pp->ds_dig = sp->dataDigest(pp->ds_addr, pp->ds_len, 0);
167 pp->ds_dig = sp->dataDigest(md->m_data, len, pp->ds_dig);
176 if((error = sosend(sp->soc, NULL, NULL, mh, 0, 0, sp->td)) != 0) {
180 sp->stats.nsent++;
181 getbintime(&sp->stats.t_sent);
186 isc_sendPDU(isc_session_t *sp, pduq_t *pq)
198 uio->uio_td = sp->td;
205 if(ISOK2DIG(sp->hdrDigest, pp))
206 pq->pdu.hdr_dig = sp->hdrDigest(&pp->ipdu, sizeof(union ipdu_u), 0);
212 if(ISOK2DIG(sp->hdrDigest, pp))
213 pp->hdr_dig = sp->hdrDigest(&pp->ahs_addr, pp->ahs_len, pp->hdr_dig);
215 if(ISOK2DIG(sp->hdrDigest, pp)) {
229 if(ISOK2DIG(sp->dataDigest, pp)) {
230 pp->ds_dig = sp->dataDigest(pp->ds, pp->ds_len, 0);
245 sdebug(5, "sp=%p sp->soc=%p uio=%p sp->td=%p",
246 sp, sp->soc, uio, sp->td);
249 error = sosend(sp->soc, NULL, uio, 0, 0, 0, sp->td);
282 sp->stats.nsent++;
283 getbintime(&sp->stats.t_sent);
317 so_getbhs(isc_session_t *sp)
319 bhs_t *bhs = &sp->bhs;
320 struct uio *uio = &sp->uio;
321 struct iovec *iov = &sp->iov;
337 error = soreceive(sp->soc, NULL, uio, 0, 0, &flags);
347 sp->soc->so_error, uio->uio_resid, iov->iov_len);
357 sp->soc->so_error, uio->uio_resid, iov->iov_len, sp->soc->so_state);
369 so_recv(isc_session_t *sp, pduq_t *pq)
371 sn_t *sn = &sp->sn;
398 if(ISOK2DIG(sp->hdrDigest, pp)) {
408 uio->uio_td = sp->td; // why ...
409 error = soreceive(sp->soc, NULL, uio, NULL, NULL, &flags);
422 if(ISOK2DIG(sp->hdrDigest, pp)) {
427 digest = sp->hdrDigest(bhs, sizeof(bhs_t), 0);
429 digest = sp->hdrDigest(pp->ahs_addr, pp->ahs_len, digest);
456 if((sp->opt.maxRecvDataSegmentLength > 0) && (len > sp->opt.maxRecvDataSegmentLength)) {
458 len, sp->opt.maxRecvDataSegmentLength);
461 len, sp->opt.targetAddress, sp->opt.targetName);
473 if(ISOK2DIG(sp->dataDigest, pp))
476 uio->uio_td = sp->td; // why ...
478 error = soreceive(sp->soc, NULL, uio, &pq->mp, NULL, &flags);
483 if(ISOK2DIG(sp->dataDigest, pp)) {
497 digest = sp->dataDigest(mtod(m, char *), cnt, digest);
530 i_acked_hld(sp, NULL);
532 sp->cws = sn->maxCmd - sn->expCmd + 1;
543 pdu_free(sp->isc, pq);
554 so_input(isc_session_t *sp)
563 error = so_getbhs(sp);
568 pq = pdu_alloc(sp->isc, M_NOWAIT);
571 pq = pdu_alloc(sp->isc, M_WAITOK); // OK to WAIT
573 pq->pdu.ipdu.bhs = sp->bhs;
575 error = so_recv(sp, pq);
582 sp->stats.nrecv++;
583 getbintime(&sp->stats.t_recv);
584 ism_recv(sp, pq);
598 isc_session_t *sp = (isc_session_t *)vp;
599 struct socket *so = sp->soc;
604 sp->flags |= ISC_CON_RUNNING;
606 while((sp->flags & (ISC_CON_RUN | ISC_LINK_UP)) == (ISC_CON_RUN | ISC_LINK_UP)) {
608 if(sp->soc == NULL || !(so->so_state & SS_ISCONNECTED)) {
609 debug(2, "sp->soc=%p", sp->soc);
612 error = so_input(sp);
614 mtx_lock(&sp->io_mtx);
615 if(sp->flags & ISC_OWAITING) {
616 wakeup(&sp->flags);
618 mtx_unlock(&sp->io_mtx);
625 tsleep(sp, PRIBIO, "isc_soc", 2*hz);
629 sp->flags, so->so_count, so->so_state, error, sp->proc);
630 if((sp->proc != NULL) && sp->signal) {
631 PROC_LOCK(sp->proc);
632 kern_psignal(sp->proc, sp->signal);
633 PROC_UNLOCK(sp->proc);
634 sp->flags |= ISC_SIGNALED;
635 sdebug(2, "pid=%d signaled(%d)", sp->proc->p_pid, sp->signal);
645 mtx_lock(&sp->io_mtx);
646 sp->flags &= ~(ISC_CON_RUNNING | ISC_LINK_UP);
647 wakeup(&sp->soc);
648 mtx_unlock(&sp->io_mtx);
659 isc_stop_receiver(isc_session_t *sp)
664 sdebug(3, "sp=%p sp->soc=%p", sp, sp? sp->soc: 0);
665 mtx_lock(&sp->io_mtx);
666 sp->flags &= ~ISC_LINK_UP;
667 msleep(&sp->soc, &sp->io_mtx, PRIBIO|PDROP, "isc_stpc", 5*hz);
669 soshutdown(sp->soc, SHUT_RD);
671 mtx_lock(&sp->io_mtx);
673 sp->flags &= ~ISC_CON_RUN;
675 while(n-- && (sp->flags & ISC_CON_RUNNING)) {
676 sdebug(3, "waiting n=%d... flags=%x", n, sp->flags);
677 msleep(&sp->soc, &sp->io_mtx, PRIBIO, "isc_stpc", 5*hz);
679 mtx_unlock(&sp->io_mtx);
681 if(sp->fp != NULL)
682 fdrop(sp->fp, sp->td);
683 fputsock(sp->soc);
684 sp->soc = NULL;
685 sp->fp = NULL;
691 isc_start_receiver(isc_session_t *sp)
695 sp->flags |= ISC_CON_RUN | ISC_LINK_UP;
701 (isc_in, sp, &sp->soc_proc, 0, 0, "isc_in %d", sp->sid);