Lines Matching refs:rcbp

140 	struct atp_rcb   *rcbp;
237 for (rcbp = atp->atp_rcb.head; rcbp; rcbp = rcbp->rc_list.next) {
238 if (rcbp->rc_tid == UAS_VALUE_NTOH(athp->tid) &&
239 rcbp->rc_socket.node == ddp->dst_node &&
240 rcbp->rc_socket.net == NET_VALUE(ddp->dst_net) &&
241 rcbp->rc_socket.socket == ddp->dst_socket)
248 if ((rcbp && rcbp->rc_state != RCB_NOTIFIED) ||
249 (rcbp == NULL && athp->xo)) {
254 if (rcbp == NULL) { /* a response for an ALO transaction */
255 if ((rcbp = atp_rcb_alloc(atp)) == NULL) {
260 rcbp->rc_ioctl = 0;
261 rcbp->rc_socket.socket = ddp->dst_socket;
262 rcbp->rc_socket.node = ddp->dst_node;
263 rcbp->rc_socket.net = NET_VALUE(ddp->dst_net);
264 rcbp->rc_tid = UAS_VALUE_NTOH(athp->tid);
265 rcbp->rc_bitmap = 0xff;
266 rcbp->rc_xo = 0;
267 rcbp->rc_state = RCB_SENDING;
268 ATP_Q_APPEND(atp->atp_rcb, rcbp, rc_list);
271 if ((i = atp_unpack_bdsp(atp, m2, rcbp, xcnt, FALSE))) {
272 if ( !rcbp->rc_xo)
273 atp_rcb_free(rcbp);
277 atp_send_replies(atp, rcbp);
296 if ((rcbp = atp->atp_attached.head)) {
300 gbuf_cont(m) = rcbp->rc_ioctl;
301 rcbp->rc_ioctl = NULL;
302 if (rcbp->rc_xo) {
303 ATP_Q_REMOVE(atp->atp_attached, rcbp, rc_list);
304 rcbp->rc_state = RCB_NOTIFIED;
305 ATP_Q_APPEND(atp->atp_rcb, rcbp, rc_list);
307 /* detach rcbp from attached queue,
310 atp_rcb_free(rcbp);
436 void atp_send_replies(atp, rcbp)
438 register struct atp_rcb *rcbp;
456 if (rcbp->rc_queue != atp)
458 if (rcbp->rc_not_sent_bitmap == 0)
465 cnt = rcbp->rc_pktcnt;
468 if (rcbp->rc_snd[i]) {
480 m = rcbp->rc_xmt;
492 if (rcbp->rc_snd[i] == 0) {
535 rcbp->rc_snd[i] = 0;
536 rcbp->rc_not_sent_bitmap &= ~atp_mask[i];
537 if (rcbp->rc_not_sent_bitmap == 0)
554 if (rcbp->rc_queue != atp)
556 rcbp->rc_rep_waiting = 0;
568 if (rcbp->rc_xo && rcbp->rc_state != RCB_RELEASED) {
570 if (rcbp->rc_timestamp == 0) {
571 rcbp->rc_timestamp = timenow.tv_sec;
572 if (rcbp->rc_timestamp == 0)
573 rcbp->rc_timestamp = 1;
574 ATP_Q_APPEND(atp_need_rel, rcbp, rc_tlist);
576 rcbp->rc_state = RCB_RESPONSE_FULL;
578 atp_rcb_free(rcbp);
656 atp_unpack_bdsp(atp, m, rcbp, cnt, wait)
659 register struct atp_rcb *rcbp;
697 rcbp->rc_xmt = m;
698 rcbp->rc_pktcnt = cnt;
699 rcbp->rc_state = RCB_SENDING;
700 rcbp->rc_not_sent_bitmap = 0;
707 rcbp->rc_pktcnt = 1;
808 if (rcbp->rc_xo) {
810 if (rcbp->rc_timestamp == 0) {
811 if ((rcbp->rc_timestamp = timenow.tv_sec) == 0)
812 rcbp->rc_timestamp = 1;
813 ATP_Q_APPEND(atp_need_rel, rcbp, rc_tlist);
904 register struct atp_rcb *rcbp;
906 if ((rcbp = atp->atp_attached.head) != 0) {
907 gbuf_cont(mioc) = rcbp->rc_ioctl;
908 rcbp->rc_ioctl = NULL;
909 if (rcbp->rc_xo) {
910 ATP_Q_REMOVE(atp->atp_attached, rcbp, rc_list);
911 rcbp->rc_state = RCB_NOTIFIED;
912 ATP_Q_APPEND(atp->atp_rcb, rcbp, rc_list);
914 atp_rcb_free(rcbp);
1236 register struct atp_rcb *rcbp;
1251 for (rcbp = atp->atp_rcb.head; rcbp; rcbp = rcbp->rc_list.next) {
1252 if ( (rcbp->rc_tid == UAS_VALUE_NTOH(athp->tid)) &&
1253 (rcbp->rc_socket.node == ddp->dst_node) &&
1254 (rcbp->rc_socket.net == NET_VALUE(ddp->dst_net)) &&
1255 (rcbp->rc_socket.socket == ddp->dst_socket) )
1262 if ((rcbp && (rcbp->rc_state != RCB_NOTIFIED)) ||
1263 (rcbp == NULL && athp->xo) ) {
1268 if (rcbp == NULL) { /* a response is being sent for an ALO transaction */
1269 if ((rcbp = atp_rcb_alloc(atp)) == NULL) {
1273 rcbp->rc_ioctl = 0;
1274 rcbp->rc_socket.socket = ddp->dst_socket;
1275 rcbp->rc_socket.node = ddp->dst_node;
1276 rcbp->rc_socket.net = NET_VALUE(ddp->dst_net);
1277 rcbp->rc_tid = UAS_VALUE_NTOH(athp->tid);
1278 rcbp->rc_bitmap = 0xff;
1279 rcbp->rc_xo = 0;
1280 rcbp->rc_state = RCB_RESPONSE_FULL;
1281 ATP_Q_APPEND(atp->atp_rcb, rcbp, rc_list);
1284 temp_net = NET_VALUE_NOSWAP(rcbp->rc_local_net);
1286 ddp->src_node = rcbp->rc_local_node;
1290 s = atp_unpack_bdsp(atp, m, rcbp, xcnt, wait);
1292 atp_send_replies(atp, rcbp);
1749 register struct atp_rcb *rcbp;
1771 if ((rcbp = atp->atp_attached.head) != NULL) {
1775 m_head = rcbp->rc_ioctl;
1776 rcbp->rc_ioctl = NULL;
1778 if (rcbp->rc_xo) {
1779 ATP_Q_REMOVE(atp->atp_attached, rcbp, rc_list);
1780 rcbp->rc_state = RCB_NOTIFIED;
1781 ATP_Q_APPEND(atp->atp_rcb, rcbp, rc_list);
1783 /* detach rcbp from attached queue,
1786 atp_rcb_free(rcbp);
1887 struct atp_rcb *rcbp;
1900 for (rcbp = atp->atp_rcb.head; rcbp; rcbp = rcbp->rc_list.next) {
1901 if ( (rcbp->rc_tid == UAS_VALUE_NTOH(athp->tid)) &&
1902 (rcbp->rc_socket.node == ddp->src_node) &&
1903 (rcbp->rc_socket.net == NET_VALUE(ddp->src_net)) &&
1904 (rcbp->rc_socket.socket == ddp->src_socket) )
1911 if (rcbp)
1912 atp_rcb_free(rcbp);