Lines Matching defs:sp

71 _async(isc_session_t *sp, pduq_t *pq)
75 iscsi_async(sp, pq);
77 pdu_free(sp->isc, pq);
81 _reject(isc_session_t *sp, pduq_t *pq)
93 opq = i_search_hld(sp, itt, 0);
95 iscsi_reject(sp, opq, pq);
103 sp->sid, ntohl(pq->pdu.ipdu.bhs.itt));
106 pdu_free(sp->isc, pq);
110 _r2t(isc_session_t *sp, pduq_t *pq)
115 opq = i_search_hld(sp, pq->pdu.ipdu.bhs.itt, 1);
117 iscsi_r2t(sp, opq, pq);
123 sp->sid, ntohl(pq->pdu.ipdu.bhs.itt),
126 pdu_free(sp->isc, pq);
130 _scsi_rsp(isc_session_t *sp, pduq_t *pq)
135 opq = i_search_hld(sp, pq->pdu.ipdu.bhs.itt, 0);
138 iscsi_done(sp, opq, pq);
139 i_acked_hld(sp, &pq->pdu);
143 sp->sid, ntohl(pq->pdu.ipdu.bhs.itt));
144 pdu_free(sp->isc, pq);
148 _read_data(isc_session_t *sp, pduq_t *pq)
153 opq = i_search_hld(sp, pq->pdu.ipdu.bhs.itt, 1);
155 if(scsi_decap(sp, opq, pq) != 1) {
156 i_remove_hld(sp, opq); // done
157 pdu_free(sp->isc, opq);
162 sp->sid, ntohl(pq->pdu.ipdu.bhs.itt));
163 pdu_free(sp->isc, pq);
170 _nop_out(isc_session_t *sp)
177 sdebug(4, "cws=%d", sp->cws);
178 if(sp->cws == 0) {
182 if((pq = pdu_alloc(sp->isc, M_NOWAIT)) == NULL)
187 nop_out->itt = htonl(sp->sn.itt);
191 if(isc_qout(sp, pq) != 0) {
193 pdu_free(sp->isc, pq);
199 _nop_in(isc_session_t *sp, pduq_t *pq)
214 xdebug("%d] dslen not zero", sp->sid);
232 (void)isc_qout(sp, pq); //XXX: should check return?
248 if(sp->flags & ISC_WAIT4PING) {
249 i_nqueue_rsp(sp, pq);
250 wakeup(&sp->rsp);
259 pdu_free(sp->isc, pq);
264 i_prepPDU(isc_session_t *sp, pduq_t *pq)
275 if(ISOK2DIG(sp->hdrDigest, pp))
291 if(ISOK2DIG(sp->dataDigest, pp))
297 if(sp->opt.maxBurstLength && (len > sp->opt.maxBurstLength)) {
299 sp->sid, len, sp->opt.maxBurstLength);
307 isc_qout(isc_session_t *sp, pduq_t *pq)
313 if(pq->len == 0 && (error = i_prepPDU(sp, pq)))
317 i_nqueue_isnd(sp, pq);
320 i_nqueue_wsnd(sp, pq);
322 i_nqueue_csnd(sp, pq);
326 mtx_lock(&sp->io_mtx);
327 sp->flags |= ISC_OQNOTEMPTY;
328 if(sp->flags & ISC_OWAITING)
329 wakeup(&sp->flags);
330 mtx_unlock(&sp->io_mtx);
338 ism_restart(isc_session_t *sp)
343 lastcmd = iscsi_requeue(sp);
345 if(lastcmd != sp->sn.cmd) {
346 sdebug(1, "resetting CmdSN to=%d (from %d)", lastcmd, sp->sn.cmd);
347 sp->sn.cmd = lastcmd;
350 mtx_lock(&sp->io_mtx);
351 if(sp->flags & ISC_OWAITING) {
352 wakeup(&sp->flags);
354 mtx_unlock(&sp->io_mtx);
356 sdebug(2, "restarted sn.cmd=0x%x lastcmd=0x%x", sp->sn.cmd, lastcmd);
360 ism_recv(isc_session_t *sp, pduq_t *pq)
371 if(sp->sn.expCmd != sn->cmd) {
377 bhs->opcode, ntohl(bhs->itt), statSN, sp->sn.maxCmd);
388 if(statSN > (sp->sn.stat + 1)) {
390 statSN, sp->sn.stat);
393 sp->sn.stat = statSN;
400 i_nqueue_rsp(sp, pq);
401 wakeup(&sp->rsp);
405 case ISCSI_NOP_IN: _nop_in(sp, pq); break;
406 case ISCSI_SCSI_RSP: _scsi_rsp(sp, pq); break;
407 case ISCSI_READ_DATA: _read_data(sp, pq); break;
408 case ISCSI_R2T: _r2t(sp, pq); break;
409 case ISCSI_REJECT: _reject(sp, pq); break;
410 case ISCSI_ASYNC: _async(sp, pq); break;
426 proc_out(isc_session_t *sp)
428 sn_t *sn = &sp->sn;
435 while(sp->flags & ISC_LINK_UP) {
450 if((pq = i_dqueue_snd(sp, which)) == NULL)
493 i_nqueue_hld(sp, pq);
495 error = isc_sendPDU(sp, pq);
497 pdu_free(sp->isc, pq);
501 i_remove_hld(sp, pq);
504 sp->flags &= ~ISC_LINK_UP;
508 i_rqueue_pdu(sp, pq);
515 XPT_DONE(sp, pq->ccb);
516 pdu_free(sp->isc, pq);
532 isc_session_t *sp = (isc_session_t *)vp;
537 sp->flags |= ISC_SM_RUNNING;
538 sdebug(3, "started sp->flags=%x", sp->flags);
540 if((sp->flags & ISC_HOLD) == 0) {
541 error = proc_out(sp);
546 mtx_lock(&sp->io_mtx);
547 if((sp->flags & ISC_LINK_UP) == 0) {
548 sdebug(3, "ISC_LINK_UP==0, sp->flags=%x ", sp->flags);
549 if(sp->soc != NULL)
550 sdebug(3, "so_state=%x", sp->soc->so_state);
551 wakeup(&sp->soc);
554 if(!(sp->flags & ISC_OQNOTEMPTY)) {
555 sp->flags |= ISC_OWAITING;
556 if(msleep(&sp->flags, &sp->io_mtx, PRIBIO, "isc_proc", hz*30) == EWOULDBLOCK) {
557 if(sp->flags & ISC_CON_RUNNING)
558 _nop_out(sp);
560 sp->flags &= ~ISC_OWAITING;
562 sp->flags &= ~ISC_OQNOTEMPTY;
563 mtx_unlock(&sp->io_mtx);
564 } while(sp->flags & ISC_SM_RUN);
566 sp->flags &= ~ISC_SM_RUNNING;
569 wakeup(&sp->soc);
570 wakeup(sp); // XXX: do we need this one?
573 destroy_dev(sp->dev);
576 debug(3, "terminated sp=%p sp->sid=%d", sp, sp->sid);
590 isc_session_t *sp;
595 sp = (isc_session_t *)arg1;
596 sbuf_printf(&sb, "targetname='%s'", sp->opt.targetName);
597 sbuf_printf(&sb, " targetaddress='%s'", sp->opt.targetAddress);
607 isc_session_t *sp;
612 sp = (isc_session_t *)arg1;
613 sc = sp->isc;
617 sbuf_printf(&sb, "recv=%d sent=%d", sp->stats.nrecv, sp->stats.nsent);
619 sp->flags, sc->npdu_alloc, sc->npdu_max);
621 sp->cws, sp->sn.cmd, sp->sn.expCmd, sp->sn.maxCmd, sp->sn.stat, sp->sn.itt);
628 isc_add_sysctls(isc_session_t *sp)
631 sdebug(6, "sid=%d %s", sp->sid, devtoname(sp->dev));
633 sysctl_ctx_init(&sp->clist);
634 sp->oid = SYSCTL_ADD_NODE(&sp->clist,
635 SYSCTL_CHILDREN(sp->isc->oid),
637 devtoname(sp->dev) + 5, // iscsi0
641 SYSCTL_ADD_PROC(&sp->clist,
642 SYSCTL_CHILDREN(sp->oid),
646 (void *)&sp->opt.targetName, 0,
649 SYSCTL_ADD_PROC(&sp->clist,
650 SYSCTL_CHILDREN(sp->oid),
654 (void *)&sp->opt.targetAddress, 0,
657 SYSCTL_ADD_PROC(&sp->clist,
658 SYSCTL_CHILDREN(sp->oid),
662 (void *)sp, 0,
665 SYSCTL_ADD_INT(&sp->clist,
666 SYSCTL_CHILDREN(sp->oid),
670 &sp->douio, 0, "enable uio on read");
674 ism_stop(isc_session_t *sp)
676 struct isc_softc *sc = sp->isc;
684 isc_stop_receiver(sp);
689 sp->flags &= ~ISC_SM_RUN;
690 while(n-- && (sp->flags & ISC_SM_RUNNING)) {
692 wakeup(&sp->flags);
693 tsleep(sp, PRIBIO, "-", 5*hz);
696 sp->flags &= ~ISC_FFPHASE;
698 iscsi_cleanup(sp);
700 (void)i_pdu_flush(sp);
702 ic_destroy(sp);
705 free_unr(sc->unit, sp->sid);
709 TAILQ_REMOVE(&sc->isc_sess, sp, sp_link);
714 destroy_dev(sp->dev);
717 mtx_destroy(&sp->rsp_mtx);
718 mtx_destroy(&sp->rsv_mtx);
719 mtx_destroy(&sp->hld_mtx);
720 mtx_destroy(&sp->snd_mtx);
721 mtx_destroy(&sp->io_mtx);
723 i_freeopt(&sp->opt);
725 if(sysctl_ctx_free(&sp->clist))
728 free(sp, M_ISCSI);
732 ism_start(isc_session_t *sp)
738 TAILQ_INIT(&sp->rsp);
739 TAILQ_INIT(&sp->rsv);
740 TAILQ_INIT(&sp->csnd);
741 TAILQ_INIT(&sp->isnd);
742 TAILQ_INIT(&sp->wsnd);
743 TAILQ_INIT(&sp->hld);
745 mtx_init(&sp->rsv_mtx, "iscsi-rsv", NULL, MTX_DEF);
746 mtx_init(&sp->rsp_mtx, "iscsi-rsp", NULL, MTX_DEF);
747 mtx_init(&sp->snd_mtx, "iscsi-snd", NULL, MTX_DEF);
748 mtx_init(&sp->hld_mtx, "iscsi-hld", NULL, MTX_DEF);
749 mtx_init(&sp->io_mtx, "iscsi-io", NULL, MTX_DEF);
751 isc_add_sysctls(sp);
753 sp->flags |= ISC_SM_RUN;
755 debug(4, "starting ism_proc: sp->sid=%d", sp->sid);
758 return kproc_create(ism_out, sp, &sp->stp, 0, 0, "isc_out %d", sp->sid);
760 return kthread_create(ism_out, sp, &sp->stp, 0, 0, "isc_out %d", sp->sid);