Lines Matching defs:xnb_unit_pvt

191 } xnb_unit_pvt;
346 bzero(xnb_unit_pvt.gnttab, sizeof(xnb_unit_pvt.gnttab));
348 xnb_unit_pvt.txs = malloc(PAGE_SIZE, M_XENNETBACK, M_WAITOK|M_ZERO);
349 if (xnb_unit_pvt.txs != NULL) {
350 SHARED_RING_INIT(xnb_unit_pvt.txs);
351 BACK_RING_INIT(&xnb_unit_pvt.txb, xnb_unit_pvt.txs, PAGE_SIZE);
352 FRONT_RING_INIT(&xnb_unit_pvt.txf, xnb_unit_pvt.txs, PAGE_SIZE);
357 xnb_unit_pvt.ifp = if_alloc(IFT_ETHER);
358 if (xnb_unit_pvt.ifp == NULL) {
362 xnb_unit_pvt.rxs = malloc(PAGE_SIZE, M_XENNETBACK, M_WAITOK|M_ZERO);
363 if (xnb_unit_pvt.rxs != NULL) {
364 SHARED_RING_INIT(xnb_unit_pvt.rxs);
365 BACK_RING_INIT(&xnb_unit_pvt.rxb, xnb_unit_pvt.rxs, PAGE_SIZE);
366 FRONT_RING_INIT(&xnb_unit_pvt.rxf, xnb_unit_pvt.rxs, PAGE_SIZE);
377 if (xnb_unit_pvt.txs != NULL) {
378 free(xnb_unit_pvt.txs, M_XENNETBACK);
380 if (xnb_unit_pvt.rxs != NULL) {
381 free(xnb_unit_pvt.rxs, M_XENNETBACK);
383 if (xnb_unit_pvt.ifp != NULL) {
384 if_free(xnb_unit_pvt.ifp);
397 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
398 xnb_unit_pvt.txb.req_cons);
412 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
413 xnb_unit_pvt.txf.req_prod_pvt);
417 xnb_unit_pvt.txf.req_prod_pvt++;
419 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
421 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
422 xnb_unit_pvt.txb.req_cons);
442 RING_IDX start_idx = xnb_unit_pvt.txf.req_prod_pvt;
444 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
445 xnb_unit_pvt.txf.req_prod_pvt);
448 xnb_unit_pvt.txf.req_prod_pvt++;
450 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
451 xnb_unit_pvt.txf.req_prod_pvt);
454 xnb_unit_pvt.txf.req_prod_pvt++;
456 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
458 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
459 xnb_unit_pvt.txb.req_cons);
479 RING_IDX start_idx = xnb_unit_pvt.txf.req_prod_pvt;
481 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
482 xnb_unit_pvt.txf.req_prod_pvt);
485 xnb_unit_pvt.txf.req_prod_pvt++;
487 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
488 xnb_unit_pvt.txf.req_prod_pvt);
491 xnb_unit_pvt.txf.req_prod_pvt++;
493 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
494 xnb_unit_pvt.txf.req_prod_pvt);
497 xnb_unit_pvt.txf.req_prod_pvt++;
499 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
501 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
502 xnb_unit_pvt.txb.req_cons);
511 XNB_ASSERT(RING_GET_REQUEST(&xnb_unit_pvt.txb, pkt.cdr + 1) == req);
524 RING_IDX start_idx = xnb_unit_pvt.txf.req_prod_pvt;
526 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
527 xnb_unit_pvt.txf.req_prod_pvt);
530 xnb_unit_pvt.txf.req_prod_pvt++;
532 ext = (struct netif_extra_info*) RING_GET_REQUEST(&xnb_unit_pvt.txf,
533 xnb_unit_pvt.txf.req_prod_pvt);
539 xnb_unit_pvt.txf.req_prod_pvt++;
541 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
542 xnb_unit_pvt.txf.req_prod_pvt);
545 xnb_unit_pvt.txf.req_prod_pvt++;
547 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
549 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
550 xnb_unit_pvt.txb.req_cons);
563 XNB_ASSERT(RING_GET_REQUEST(&xnb_unit_pvt.txb, pkt.cdr) == req);
577 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
578 xnb_unit_pvt.txf.req_prod_pvt);
581 xnb_unit_pvt.txf.req_prod_pvt++;
583 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
585 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
586 xnb_unit_pvt.txb.req_cons);
607 rsize = RING_SIZE(&xnb_unit_pvt.txf);
608 xnb_unit_pvt.txf.req_prod_pvt = rsize - 2;
609 xnb_unit_pvt.txf.rsp_cons = rsize - 2;
610 xnb_unit_pvt.txs->req_prod = rsize - 2;
611 xnb_unit_pvt.txs->req_event = rsize - 1;
612 xnb_unit_pvt.txs->rsp_prod = rsize - 2;
613 xnb_unit_pvt.txs->rsp_event = rsize - 1;
614 xnb_unit_pvt.txb.rsp_prod_pvt = rsize - 2;
615 xnb_unit_pvt.txb.req_cons = rsize - 2;
617 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
618 xnb_unit_pvt.txf.req_prod_pvt);
621 xnb_unit_pvt.txf.req_prod_pvt++;
623 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
624 xnb_unit_pvt.txf.req_prod_pvt);
627 xnb_unit_pvt.txf.req_prod_pvt++;
629 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
630 xnb_unit_pvt.txf.req_prod_pvt);
633 xnb_unit_pvt.txf.req_prod_pvt++;
635 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
637 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
638 xnb_unit_pvt.txb.req_cons);
642 XNB_ASSERT(RING_GET_REQUEST(&xnb_unit_pvt.txb, pkt.cdr + 1) == req);
654 netif_tx_back_ring_t txb_backup = xnb_unit_pvt.txb;
655 netif_tx_sring_t txs_backup = *xnb_unit_pvt.txs;
659 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
660 xnb_unit_pvt.txb.req_cons);
661 xnb_txpkt2rsp(&pkt, &xnb_unit_pvt.txb, 0);
663 memcmp(&txb_backup, &xnb_unit_pvt.txb, sizeof(txb_backup)) == 0);
665 memcmp(&txs_backup, xnb_unit_pvt.txs, sizeof(txs_backup)) == 0);
679 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
680 xnb_unit_pvt.txf.req_prod_pvt);
683 xnb_unit_pvt.txf.req_prod_pvt++;
685 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
687 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
688 xnb_unit_pvt.txb.req_cons);
689 xnb_unit_pvt.txb.req_cons += num_consumed;
691 xnb_txpkt2rsp(&pkt, &xnb_unit_pvt.txb, 0);
692 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.txb, xnb_unit_pvt.txf.rsp_cons);
695 xnb_unit_pvt.txb.rsp_prod_pvt == xnb_unit_pvt.txs->req_prod);
712 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
713 xnb_unit_pvt.txf.req_prod_pvt);
717 xnb_unit_pvt.txf.req_prod_pvt++;
719 ext = (netif_extra_info_t*) RING_GET_REQUEST(&xnb_unit_pvt.txf,
720 xnb_unit_pvt.txf.req_prod_pvt);
723 xnb_unit_pvt.txf.req_prod_pvt++;
725 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
727 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
728 xnb_unit_pvt.txb.req_cons);
729 xnb_unit_pvt.txb.req_cons += num_consumed;
731 xnb_txpkt2rsp(&pkt, &xnb_unit_pvt.txb, 0);
734 xnb_unit_pvt.txb.rsp_prod_pvt == xnb_unit_pvt.txs->req_prod);
736 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.txb, xnb_unit_pvt.txf.rsp_cons);
740 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.txb,
741 xnb_unit_pvt.txf.rsp_cons + 1);
757 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
758 xnb_unit_pvt.txf.req_prod_pvt);
762 xnb_unit_pvt.txf.req_prod_pvt++;
764 ext = (netif_extra_info_t*) RING_GET_REQUEST(&xnb_unit_pvt.txf,
765 xnb_unit_pvt.txf.req_prod_pvt);
768 xnb_unit_pvt.txf.req_prod_pvt++;
770 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
771 xnb_unit_pvt.txf.req_prod_pvt);
775 xnb_unit_pvt.txf.req_prod_pvt++;
777 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
778 xnb_unit_pvt.txf.req_prod_pvt);
782 xnb_unit_pvt.txf.req_prod_pvt++;
784 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
786 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
787 xnb_unit_pvt.txb.req_cons);
788 xnb_unit_pvt.txb.req_cons += num_consumed;
790 xnb_txpkt2rsp(&pkt, &xnb_unit_pvt.txb, 0);
793 xnb_unit_pvt.txb.rsp_prod_pvt == xnb_unit_pvt.txs->req_prod);
795 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.txb, xnb_unit_pvt.txf.rsp_cons);
797 RING_GET_REQUEST(&xnb_unit_pvt.txf, 0)->id);
800 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.txb,
801 xnb_unit_pvt.txf.rsp_cons + 1);
804 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.txb,
805 xnb_unit_pvt.txf.rsp_cons + 2);
807 RING_GET_REQUEST(&xnb_unit_pvt.txf, 2)->id);
810 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.txb,
811 xnb_unit_pvt.txf.rsp_cons + 3);
813 RING_GET_REQUEST(&xnb_unit_pvt.txf, 3)->id);
832 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
833 xnb_unit_pvt.txf.req_prod_pvt);
837 xnb_unit_pvt.txf.req_prod_pvt++;
839 ext = (netif_extra_info_t*) RING_GET_REQUEST(&xnb_unit_pvt.txf,
840 xnb_unit_pvt.txf.req_prod_pvt);
843 xnb_unit_pvt.txf.req_prod_pvt++;
845 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
847 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
848 xnb_unit_pvt.txb.req_cons);
849 xnb_unit_pvt.txb.req_cons += num_consumed;
852 xnb_txpkt2rsp(&pkt, &xnb_unit_pvt.txb, 0);
855 xnb_unit_pvt.txb.rsp_prod_pvt == xnb_unit_pvt.txs->req_prod);
857 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.txb, xnb_unit_pvt.txf.rsp_cons);
861 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.txb,
862 xnb_unit_pvt.txf.rsp_cons + 1);
877 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
878 xnb_unit_pvt.txf.req_prod_pvt);
881 xnb_unit_pvt.txf.req_prod_pvt++;
883 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
885 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
886 xnb_unit_pvt.txb.req_cons);
887 xnb_unit_pvt.txb.req_cons += num_consumed;
889 xnb_txpkt2rsp(&pkt, &xnb_unit_pvt.txb, 1);
890 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.txb, xnb_unit_pvt.txf.rsp_cons);
893 xnb_unit_pvt.txb.rsp_prod_pvt == xnb_unit_pvt.txs->req_prod);
914 rsize = RING_SIZE(&xnb_unit_pvt.txf);
915 xnb_unit_pvt.txf.req_prod_pvt = rsize - 2;
916 xnb_unit_pvt.txf.rsp_cons = rsize - 2;
917 xnb_unit_pvt.txs->req_prod = rsize - 2;
918 xnb_unit_pvt.txs->req_event = rsize - 1;
919 xnb_unit_pvt.txs->rsp_prod = rsize - 2;
920 xnb_unit_pvt.txs->rsp_event = rsize - 1;
921 xnb_unit_pvt.txb.rsp_prod_pvt = rsize - 2;
922 xnb_unit_pvt.txb.req_cons = rsize - 2;
924 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
925 xnb_unit_pvt.txf.req_prod_pvt);
929 xnb_unit_pvt.txf.req_prod_pvt++;
931 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
932 xnb_unit_pvt.txf.req_prod_pvt);
936 xnb_unit_pvt.txf.req_prod_pvt++;
938 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
939 xnb_unit_pvt.txf.req_prod_pvt);
943 xnb_unit_pvt.txf.req_prod_pvt++;
945 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
947 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
948 xnb_unit_pvt.txb.req_cons);
950 xnb_txpkt2rsp(&pkt, &xnb_unit_pvt.txb, 0);
953 xnb_unit_pvt.txb.rsp_prod_pvt == xnb_unit_pvt.txs->req_prod);
954 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.txb,
955 xnb_unit_pvt.txf.rsp_cons + 2);
973 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
974 xnb_unit_pvt.txf.req_prod_pvt);
977 xnb_unit_pvt.txf.req_prod_pvt++;
979 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
981 return xnb_ring2pkt(pkt, &xnb_unit_pvt.txb,
982 xnb_unit_pvt.txb.req_cons);
997 num_consumed = xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb,
998 xnb_unit_pvt.txb.req_cons);
1000 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1016 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1033 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1054 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1071 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1090 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1111 xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb, xnb_unit_pvt.txb.req_cons);
1113 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1114 n_entries = xnb_txpkt2gnttab(&pkt, pMbuf, xnb_unit_pvt.gnttab,
1115 &xnb_unit_pvt.txb, DOMID_FIRST_RESERVED);
1132 struct netif_tx_request *req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
1133 xnb_unit_pvt.txf.req_prod_pvt);
1138 xnb_unit_pvt.txf.req_prod_pvt++;
1140 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
1142 xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb, xnb_unit_pvt.txb.req_cons);
1144 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1145 n_entries = xnb_txpkt2gnttab(&pkt, pMbuf, xnb_unit_pvt.gnttab,
1146 &xnb_unit_pvt.txb, DOMID_FIRST_RESERVED);
1148 XNB_ASSERT(xnb_unit_pvt.gnttab[0].len == size);
1150 XNB_ASSERT(xnb_unit_pvt.gnttab[0].flags & GNTCOPY_source_gref);
1151 XNB_ASSERT(xnb_unit_pvt.gnttab[0].source.offset == req->offset);
1152 XNB_ASSERT(xnb_unit_pvt.gnttab[0].source.domid == DOMID_SELF);
1153 XNB_ASSERT(xnb_unit_pvt.gnttab[0].dest.offset == virt_to_offset(
1155 XNB_ASSERT(xnb_unit_pvt.gnttab[0].dest.u.gmfn ==
1157 XNB_ASSERT(xnb_unit_pvt.gnttab[0].dest.domid == DOMID_FIRST_RESERVED);
1172 struct netif_tx_request *req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
1173 xnb_unit_pvt.txf.req_prod_pvt);
1178 xnb_unit_pvt.txf.req_prod_pvt++;
1180 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
1181 xnb_unit_pvt.txf.req_prod_pvt);
1186 xnb_unit_pvt.txf.req_prod_pvt++;
1188 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
1190 xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb, xnb_unit_pvt.txb.req_cons);
1192 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1193 n_entries = xnb_txpkt2gnttab(&pkt, pMbuf, xnb_unit_pvt.gnttab,
1194 &xnb_unit_pvt.txb, DOMID_FIRST_RESERVED);
1197 XNB_ASSERT(xnb_unit_pvt.gnttab[0].len == 1400);
1198 XNB_ASSERT(xnb_unit_pvt.gnttab[0].dest.offset == virt_to_offset(
1201 XNB_ASSERT(xnb_unit_pvt.gnttab[1].len == 500);
1202 XNB_ASSERT(xnb_unit_pvt.gnttab[1].dest.offset == virt_to_offset(
1218 struct netif_tx_request *req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
1219 xnb_unit_pvt.txf.req_prod_pvt);
1224 xnb_unit_pvt.txf.req_prod_pvt++;
1226 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
1227 xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb, xnb_unit_pvt.txb.req_cons);
1229 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1230 n_entries = xnb_txpkt2gnttab(&pkt, pMbuf, xnb_unit_pvt.gnttab,
1231 &xnb_unit_pvt.txb, DOMID_FIRST_RESERVED);
1236 XNB_ASSERT(xnb_unit_pvt.gnttab[0].len == MCLBYTES);
1238 xnb_unit_pvt.gnttab[0].dest.offset == virt_to_offset(
1240 XNB_ASSERT(xnb_unit_pvt.gnttab[0].source.offset == 0);
1242 XNB_ASSERT(xnb_unit_pvt.gnttab[1].len == MCLBYTES);
1244 xnb_unit_pvt.gnttab[1].dest.offset == virt_to_offset(
1246 XNB_ASSERT(xnb_unit_pvt.gnttab[1].source.offset == MCLBYTES);
1248 XNB_ASSERT(xnb_unit_pvt.gnttab[2].len == 1);
1250 xnb_unit_pvt.gnttab[2].dest.offset == virt_to_offset(
1252 XNB_ASSERT(xnb_unit_pvt.gnttab[2].source.offset == 2 *
1257 XNB_ASSERT(xnb_unit_pvt.gnttab[0].len == 2 * MCLBYTES);
1259 xnb_unit_pvt.gnttab[0].dest.offset == virt_to_offset(
1261 XNB_ASSERT(xnb_unit_pvt.gnttab[0].source.offset == 0);
1263 XNB_ASSERT(xnb_unit_pvt.gnttab[1].len == 1);
1265 xnb_unit_pvt.gnttab[1].dest.offset == virt_to_offset(
1268 xnb_unit_pvt.gnttab[1].source.offset == 2 * MCLBYTES);
1290 struct netif_tx_request *req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
1291 xnb_unit_pvt.txf.req_prod_pvt);
1296 xnb_unit_pvt.txf.req_prod_pvt++;
1298 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
1300 xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb, xnb_unit_pvt.txb.req_cons);
1302 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1303 n_entries = xnb_txpkt2gnttab(&pkt, pMbuf, xnb_unit_pvt.gnttab,
1304 &xnb_unit_pvt.txb, DOMID_FIRST_RESERVED);
1307 xnb_unit_pvt.gnttab[0].status = GNTST_okay;
1309 xnb_update_mbufc(pMbuf, xnb_unit_pvt.gnttab, n_entries);
1326 struct netif_tx_request *req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
1327 xnb_unit_pvt.txf.req_prod_pvt);
1332 xnb_unit_pvt.txf.req_prod_pvt++;
1334 req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
1335 xnb_unit_pvt.txf.req_prod_pvt);
1340 xnb_unit_pvt.txf.req_prod_pvt++;
1342 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
1344 xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb, xnb_unit_pvt.txb.req_cons);
1346 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1347 n_entries = xnb_txpkt2gnttab(&pkt, pMbuf, xnb_unit_pvt.gnttab,
1348 &xnb_unit_pvt.txb, DOMID_FIRST_RESERVED);
1351 xnb_unit_pvt.gnttab[0].status = GNTST_okay;
1352 xnb_unit_pvt.gnttab[1].status = GNTST_okay;
1354 xnb_update_mbufc(pMbuf, xnb_unit_pvt.gnttab, n_entries);
1374 struct netif_tx_request *req = RING_GET_REQUEST(&xnb_unit_pvt.txf,
1375 xnb_unit_pvt.txf.req_prod_pvt);
1380 xnb_unit_pvt.txf.req_prod_pvt++;
1382 RING_PUSH_REQUESTS(&xnb_unit_pvt.txf);
1383 xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb, xnb_unit_pvt.txb.req_cons);
1385 pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp);
1386 n_entries = xnb_txpkt2gnttab(&pkt, pMbuf, xnb_unit_pvt.gnttab,
1387 &xnb_unit_pvt.txb, DOMID_FIRST_RESERVED);
1391 xnb_unit_pvt.gnttab[0].status = GNTST_okay;
1393 xnb_update_mbufc(pMbuf, xnb_unit_pvt.gnttab, n_entries);
1656 nr_entries = xnb_rxpkt2gnttab(&pkt, mbuf, xnb_unit_pvt.gnttab,
1657 &xnb_unit_pvt.rxb, DOMID_FIRST_RESERVED);
1681 req = RING_GET_REQUEST(&xnb_unit_pvt.rxf,
1682 xnb_unit_pvt.txf.req_prod_pvt);
1685 nr_entries = xnb_rxpkt2gnttab(&pkt, mbuf, xnb_unit_pvt.gnttab,
1686 &xnb_unit_pvt.rxb, DOMID_FIRST_RESERVED);
1689 XNB_ASSERT(xnb_unit_pvt.gnttab[0].len == size);
1691 XNB_ASSERT(xnb_unit_pvt.gnttab[0].flags & GNTCOPY_dest_gref);
1692 XNB_ASSERT(xnb_unit_pvt.gnttab[0].dest.offset == 0);
1693 XNB_ASSERT(xnb_unit_pvt.gnttab[0].source.domid == DOMID_SELF);
1694 XNB_ASSERT(xnb_unit_pvt.gnttab[0].source.offset == virt_to_offset(
1696 XNB_ASSERT(xnb_unit_pvt.gnttab[0].source.u.gmfn ==
1698 XNB_ASSERT(xnb_unit_pvt.gnttab[0].dest.domid == DOMID_FIRST_RESERVED);
1727 req = RING_GET_REQUEST(&xnb_unit_pvt.rxf,
1728 xnb_unit_pvt.txf.req_prod_pvt);
1734 nr_entries = xnb_rxpkt2gnttab(&pkt, mbuf, xnb_unit_pvt.gnttab,
1735 &xnb_unit_pvt.rxb, DOMID_FIRST_RESERVED);
1739 int end_offset = xnb_unit_pvt.gnttab[i].len +
1740 xnb_unit_pvt.gnttab[i].dest.offset;
1742 total_granted_size += xnb_unit_pvt.gnttab[i].len;
1757 netif_rx_back_ring_t rxb_backup = xnb_unit_pvt.rxb;
1758 netif_rx_sring_t rxs_backup = *xnb_unit_pvt.rxs;
1764 nr_entries = xnb_rxpkt2gnttab(&pkt, mbuf, xnb_unit_pvt.gnttab,
1765 &xnb_unit_pvt.rxb, DOMID_FIRST_RESERVED);
1767 nr_reqs = xnb_rxpkt2rsp(&pkt, xnb_unit_pvt.gnttab, nr_entries,
1768 &xnb_unit_pvt.rxb);
1771 memcmp(&rxb_backup, &xnb_unit_pvt.rxb, sizeof(rxb_backup)) == 0);
1773 memcmp(&rxs_backup, xnb_unit_pvt.rxs, sizeof(rxs_backup)) == 0);
1799 req = RING_GET_REQUEST(&xnb_unit_pvt.rxf, start);
1801 xnb_unit_pvt.rxb.req_cons = start;
1802 xnb_unit_pvt.rxb.rsp_prod_pvt = start;
1803 xnb_unit_pvt.rxs->req_prod = start + 1;
1804 xnb_unit_pvt.rxs->rsp_prod = start;
1806 nr_entries = xnb_rxpkt2gnttab(&pkt, mbuf, xnb_unit_pvt.gnttab,
1807 &xnb_unit_pvt.rxb, DOMID_FIRST_RESERVED);
1809 nr_reqs = xnb_rxpkt2rsp(&pkt, xnb_unit_pvt.gnttab, nr_entries,
1810 &xnb_unit_pvt.rxb);
1813 XNB_ASSERT(xnb_unit_pvt.rxb.rsp_prod_pvt == start + 1);
1814 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.rxb, start);
1855 req = RING_GET_REQUEST(&xnb_unit_pvt.rxf, start);
1858 req = RING_GET_REQUEST(&xnb_unit_pvt.rxf, start + 1);
1861 xnb_unit_pvt.rxb.req_cons = start;
1862 xnb_unit_pvt.rxb.rsp_prod_pvt = start;
1863 xnb_unit_pvt.rxs->req_prod = start + 2;
1864 xnb_unit_pvt.rxs->rsp_prod = start;
1866 nr_entries = xnb_rxpkt2gnttab(&pkt, mbufc, xnb_unit_pvt.gnttab,
1867 &xnb_unit_pvt.rxb, DOMID_FIRST_RESERVED);
1869 nr_reqs = xnb_rxpkt2rsp(&pkt, xnb_unit_pvt.gnttab, nr_entries,
1870 &xnb_unit_pvt.rxb);
1873 XNB_ASSERT(xnb_unit_pvt.rxb.rsp_prod_pvt == start + 2);
1874 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.rxb, start);
1883 RING_GET_RESPONSE(&xnb_unit_pvt.rxb, start + 1);
1925 req = RING_GET_REQUEST(&xnb_unit_pvt.rxf, start);
1928 req = RING_GET_REQUEST(&xnb_unit_pvt.rxf, start + 1);
1931 xnb_unit_pvt.rxb.req_cons = start;
1932 xnb_unit_pvt.rxb.rsp_prod_pvt = start;
1933 xnb_unit_pvt.rxs->req_prod = start + 2;
1934 xnb_unit_pvt.rxs->rsp_prod = start;
1936 nr_entries = xnb_rxpkt2gnttab(&pkt, mbuf, xnb_unit_pvt.gnttab,
1937 &xnb_unit_pvt.rxb, DOMID_FIRST_RESERVED);
1939 nr_reqs = xnb_rxpkt2rsp(&pkt, xnb_unit_pvt.gnttab, nr_entries,
1940 &xnb_unit_pvt.rxb);
1943 XNB_ASSERT(xnb_unit_pvt.rxb.rsp_prod_pvt == start + 2);
1944 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.rxb, start);
1951 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.rxb, start + 1);
1991 req = RING_GET_REQUEST(&xnb_unit_pvt.rxf, start);
1994 xnb_unit_pvt.rxb.req_cons = start;
1995 xnb_unit_pvt.rxb.rsp_prod_pvt = start;
1996 xnb_unit_pvt.rxs->req_prod = start + 1;
1997 xnb_unit_pvt.rxs->rsp_prod = start;
1999 nr_entries = xnb_rxpkt2gnttab(&pkt, mbufc, xnb_unit_pvt.gnttab,
2000 &xnb_unit_pvt.rxb, DOMID_FIRST_RESERVED);
2002 nr_reqs = xnb_rxpkt2rsp(&pkt, xnb_unit_pvt.gnttab, nr_entries,
2003 &xnb_unit_pvt.rxb);
2007 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.rxb, start);
2043 req = RING_GET_REQUEST(&xnb_unit_pvt.rxf, start);
2046 xnb_unit_pvt.rxb.req_cons = start;
2047 xnb_unit_pvt.rxb.rsp_prod_pvt = start;
2048 xnb_unit_pvt.rxs->req_prod = start + 1;
2049 xnb_unit_pvt.rxs->rsp_prod = start;
2050 req = RING_GET_REQUEST(&xnb_unit_pvt.rxf, start + 1);
2054 nr_entries = xnb_rxpkt2gnttab(&pkt, mbuf, xnb_unit_pvt.gnttab,
2055 &xnb_unit_pvt.rxb, DOMID_FIRST_RESERVED);
2057 xnb_unit_pvt.gnttab[2].status = GNTST_general_error;
2059 nr_reqs = xnb_rxpkt2rsp(&pkt, xnb_unit_pvt.gnttab, nr_entries,
2060 &xnb_unit_pvt.rxb);
2063 XNB_ASSERT(xnb_unit_pvt.rxb.rsp_prod_pvt == start + 1);
2064 rsp = RING_GET_RESPONSE(&xnb_unit_pvt.rxb, start);
2067 req = RING_GET_REQUEST(&xnb_unit_pvt.rxf, start + 1);