Lines Matching refs:pdi

483 		pdescinfo_t *pdi, n_pdi;
497 pdi = &(pd->pd_pdi);
504 ASSERT(pdi->flags & PDESC_HAS_REF);
505 if (pdi->flags & PDESC_HBUF_REF) {
510 n_pdi.hdr_base = REL_OFF(pdi->hdr_base, base, n_base);
511 n_pdi.hdr_rptr = REL_OFF(pdi->hdr_rptr, base, n_base);
512 n_pdi.hdr_wptr = REL_OFF(pdi->hdr_wptr, base, n_base);
513 n_pdi.hdr_lim = REL_OFF(pdi->hdr_lim, base, n_base);
516 if (pdi->flags & PDESC_PBUF_REF) {
518 n_pdi.pld_cnt = pdi->pld_cnt;
520 for (i = 0; i < pdi->pld_cnt; i++) {
521 idx = pdi->pld_ary[i].pld_pbuf_idx;
536 REL_OFF(pdi->pld_ary[i].pld_rptr,
539 REL_OFF(pdi->pld_ary[i].pld_wptr,
634 #define HBUF_REF_VALID(mmd, pdi) \
635 ((mmd)->mmd_hbuf != NULL && (pdi)->hdr_rptr != NULL && \
636 (pdi)->hdr_wptr != NULL && (pdi)->hdr_base != NULL && \
637 (pdi)->hdr_lim != NULL && (pdi)->hdr_lim >= (pdi)->hdr_base && \
638 (pdi)->hdr_wptr >= (pdi)->hdr_rptr && \
639 (pdi)->hdr_base <= (pdi)->hdr_rptr && \
640 (pdi)->hdr_lim >= (pdi)->hdr_wptr && \
641 (pdi)->hdr_base >= (mmd)->mmd_hbuf->b_rptr && \
643 (pdi->hdr_base - (mmd)->mmd_hbuf->b_rptr), \
644 PDESC_HDRSIZE(pdi)))
650 pbuf_ref_valid(multidata_t *mmd, pdescinfo_t *pdi)
657 if (pdi->pld_cnt == 0 || pdi->pld_cnt > mmd->mmd_pbuf_cnt) {
662 pa = &pdi->pld_ary[0];
663 while (valid && i < pdi->pld_cnt) {
670 PDESC_PLD_SPAN_SIZE(pdi, i)));
674 "pbuf_ref_valid: pdi 0x%p pld out of bound; "
678 "(valid 0x%p-0x%p len %d)\n", (void *)pdi,
679 i, pdi->pld_cnt, idx, mmd->mmd_pbuf_cnt,
682 (int)PDESC_PLD_SPAN_SIZE(pdi, i),
701 mmd_addpdesc(multidata_t *mmd, pdescinfo_t *pdi, int *err, int kmflags)
705 ASSERT(pdi != NULL);
706 ASSERT(pdi->flags & PDESC_HAS_REF);
710 (((pdi->flags & PDESC_HBUF_REF) && !HBUF_REF_VALID(mmd, pdi)) ||
711 ((pdi->flags & PDESC_PBUF_REF) && !pbuf_ref_valid(mmd, pdi)))) {
717 return (mmd_addpdesc_int(mmd, pdi, err, kmflags));
725 mmd_addpdesc_int(multidata_t *mmd, pdescinfo_t *pdi, int *err, int kmflags)
730 ASSERT(pdi->flags & PDESC_HAS_REF);
731 ASSERT(!(pdi->flags & PDESC_HBUF_REF) || HBUF_REF_VALID(mmd, pdi));
732 ASSERT(!(pdi->flags & PDESC_PBUF_REF) || pbuf_ref_valid(mmd, pdi));
773 PDI_COPY(pdi, &(pd->pd_pdi));
908 mmd_getpdesc(multidata_t *mmd, pdesc_t *pd, pdescinfo_t *pdi, uint_t forw,
950 if (pd != NULL && pdi != NULL)
951 PDI_COPY(&(pd->pd_pdi), pdi);
962 mmd_getfirstpdesc(multidata_t *mmd, pdescinfo_t *pdi)
964 return (mmd_getpdesc(mmd, NULL, pdi, 1, B_FALSE));
971 mmd_getlastpdesc(multidata_t *mmd, pdescinfo_t *pdi)
973 return (mmd_getpdesc(mmd, NULL, pdi, 0, B_FALSE));
980 mmd_getnextpdesc(pdesc_t *pd, pdescinfo_t *pdi)
982 return (mmd_getpdesc(pd->pd_slab->pds_mmd, pd, pdi, 1, B_FALSE));
989 mmd_getprevpdesc(pdesc_t *pd, pdescinfo_t *pdi)
991 return (mmd_getpdesc(pd->pd_slab->pds_mmd, pd, pdi, 0, B_FALSE));
995 * Check to see if pdi stretches over c_pdi; used to ensure that a packet
1000 pdi_in_range(pdescinfo_t *pdi, pdescinfo_t *c_pdi)
1003 struct pld_ary_s *pa = &pdi->pld_ary[0];
1006 if (pdi->hdr_base < c_pdi->hdr_base || pdi->hdr_lim > c_pdi->hdr_lim)
1016 if (pdi->pld_cnt < c_pdi->pld_cnt)
1033 mmd_adjpdesc(pdesc_t *pd, pdescinfo_t *pdi)
1039 ASSERT(pdi != NULL);
1050 if (!(pdi->flags & PDESC_HAS_REF))
1055 (((pdi->flags & PDESC_HBUF_REF) && !HBUF_REF_VALID(mmd, pdi)) ||
1056 ((pdi->flags & PDESC_PBUF_REF) && !pbuf_ref_valid(mmd, pdi))))
1061 if (!pdi_in_range(pdi, c_pdi))
1065 PDI_COPY(pdi, c_pdi);
1080 pdescinfo_t *pdi;
1096 pdi = &(pd->pd_pdi);
1097 if (pdi->flags & PDESC_HBUF_REF)
1098 h_size = PDESC_HDRL(pdi);
1099 if (pdi->flags & PDESC_PBUF_REF) {
1100 for (i = 0; i < pdi->pld_cnt; i++)
1101 p_size += PDESC_PLD_SPAN_SIZE(pdi, i);
1112 if ((pdi->flags & PDESC_HBUF_REF) && h_size > 0) {
1113 bcopy(pdi->hdr_rptr, mp->b_wptr, h_size);
1118 if ((pdi->flags & PDESC_PBUF_REF) && p_size > 0) {
1119 for (i = 0; i < pdi->pld_cnt; i++) {
1120 len = PDESC_PLD_SPAN_SIZE(pdi, i);
1122 bcopy(pdi->pld_ary[i].pld_rptr,
1140 pdescinfo_t *pdi;
1153 pdi = &(pd->pd_pdi);
1156 if ((pdi->flags & PDESC_HBUF_REF)) {
1159 nmp->b_rptr = pdi->hdr_rptr;
1160 nmp->b_wptr = pdi->hdr_wptr;
1164 if (pdi->flags & PDESC_PBUF_REF) {
1167 struct pld_ary_s *pa = &pdi->pld_ary[0];
1170 for (i = 0; i < pdi->pld_cnt; i++, pa++) {
1174 if (PDESC_PLD_SPAN_SIZE(pdi, i) == 0)
1245 mmd_getpdescinfo(pdesc_t *pd, pdescinfo_t *pdi)
1251 ASSERT(pdi != NULL);
1258 PDI_COPY(&(pd->pd_pdi), pdi);
1560 pdescinfo_t *pdi;
1584 pdi = &pd->pd_pdi;
1590 if (pdi->flags & PDESC_REM_DEFER)
1593 if (pdi->flags & PDESC_HBUF_REF)
1594 *pinuse += PDESC_HDRL(pdi);
1596 if (pdi->flags & PDESC_PBUF_REF) {
1597 for (i = 0; i < pdi->pld_cnt; i++)
1598 *pinuse += PDESC_PLDL(pdi, i);