scsi_pkt(9S) 構造体に値が格納されたら、 scsi_transport(9F) を使用して、構造体をバスアダプタドライバに渡します。
if (scsi_transport(pkt) != TRAN_ACCEPT) { bp->b_resid = bp->b_bcount; bioerror(bp, EIO); biodone(bp); }
scsi_transport (9F) からのほかの戻り値は次のとおりです。
TRAN_BUSY – 指定されたターゲットのコマンドはすでに処理中です。
TRAN_BADPKT – パケット内の DMA カウントが大きすぎるか、ホストバスアダプタドライバが何らかの理由でこのパケットを拒否しました。
TRAN_FATAL_ERROR – ホストアダプタドライバはこのパケットを受け取ることができません。
scsi_transport(9F) が TRAN_ACCEPT を返す場合、パケットはホストバスアダプタドライバで管理されるものになっています。パケットは、コマンド完了ルーチンが呼び出されるまで、ターゲットドライバからアクセスしてはいけません。
パケット内に FLAG_NOINTR が設定されている場合、コマンドが完了するまで scsi_transport(9F) は復帰しません。コールバックは実行されません。