Lines Matching refs:ppa

110  * structures ordered on the ppa id number (see sppp.h for details). All of
111 * the ppa structures created once per PPPIO_NEWPPA ioctl are threaded together
112 * in this list. There is exactly one ppa structure for a given PPP interface,
113 * and multiple sps streams (upper streams) may share a ppa by performing
194 * attached to the same ppa instance.
207 sppp_free_ppa(sppa_t *ppa)
211 ASSERT(ppa->ppa_refcnt == 1);
212 if (ppa->ppa_kstats != NULL) {
213 kstat_delete(ppa->ppa_kstats);
214 ppa->ppa_kstats = NULL;
216 mutex_destroy(&ppa->ppa_sta_lock);
217 mutex_destroy(&ppa->ppa_npmutex);
218 rw_destroy(&ppa->ppa_sib_lock);
221 if (*nextppa == ppa) {
222 *nextppa = ppa->ppa_nextppa;
227 kmem_free(ppa, sizeof (*ppa));
236 sppa_t *ppa;
246 * name plus the ppa number so that netstat
252 * contain the ppa to be sent upstream, as
253 * well as the actual ppa structure and its
256 ppa = (sppa_t *)kmem_zalloc(sizeof (sppa_t),
261 if (ppa == NULL || ksp == NULL) {
262 if (ppa != NULL) {
263 kmem_free(ppa, sizeof (sppa_t));
270 ppa->ppa_kstats = ksp; /* chain kstat structure */
271 ppa->ppa_ppa_id = ppa_id; /* record ppa id */
272 ppa->ppa_zoneid = zoneid; /* zone that owns this PPA */
273 ppa->ppa_mtu = PPP_MAXMTU; /* 65535-(PPP_HDRLEN+PPP_FCSLEN) */
274 ppa->ppa_mru = PPP_MAXMRU; /* 65000 */
276 mutex_init(&ppa->ppa_sta_lock, NULL, MUTEX_DRIVER, NULL);
277 mutex_init(&ppa->ppa_npmutex, NULL, MUTEX_DRIVER, NULL);
278 rw_init(&ppa->ppa_sib_lock, NULL, RW_DRIVER, NULL);
297 ksp->ks_private = (void *)ppa;
300 /* link to the next ppa and insert into global list */
307 ppa->ppa_nextppa = *availppa;
308 *availppa = ppa;
309 return (ppa);
327 sppa_t *ppa;
334 ppa = sps->sps_ppa;
335 if (ppa == NULL) {
342 ASSERT(ppa != NULL);
343 ASSERT(ppa->ppa_ctl == sps);
344 ppa->ppa_ctl = NULL;
348 * A given ppa structure has at most one lower stream pointed
352 ASSERT(ppa->ppa_lower_wq == NULL);
354 * Walk through all of sibling streams attached to this ppa,
355 * and remove all references to this ppa. We have exclusive
360 sib = ppa->ppa_streams;
362 ASSERT(ppa == sib->sps_ppa);
388 ASSERT(ppa->ppa_refcnt == cnt);
390 ASSERT(ppa->ppa_streams != NULL);
391 ASSERT(ppa->ppa_ctl != sps);
394 ppa->ppa_ip_cache = NULL;
397 ppa->ppa_ip6_cache = NULL;
401 if (mp != NULL && ppa->ppa_ctl != NULL &&
404 putnext(ppa->ppa_ctl->sps_rq, mp);
410 * same ppa, and remove this stream from the sibling
415 sib = ppa->ppa_streams;
417 ppa->ppa_streams = sps->sps_nextsib;
439 ASSERT(ppa->ppa_promicnt > 0);
440 ppa->ppa_promicnt--;
444 if (ppa->ppa_refcnt <= 1)
445 sppp_free_ppa(ppa);
447 ppa->ppa_refcnt--;
466 sppa_t *ppa;
479 ppa = sps->sps_ppa;
491 ASSERT(ppa != NULL);
498 * ppa, and try to find a stream with matching sap
501 rw_enter(&ppa->ppa_sib_lock, RW_WRITER);
502 for (nextsib = ppa->ppa_streams; nextsib != NULL;
509 rw_exit(&ppa->ppa_sib_lock);
518 rw_exit(&ppa->ppa_sib_lock);
522 if (ppa == NULL) {
526 } else if (!IS_PPA_TIMESTAMP(ppa)) {
531 mutex_enter(&ppa->ppa_sta_lock);
532 ppa->ppa_allocbfail++;
533 mutex_exit(&ppa->ppa_sta_lock);
549 pip->xmit_idle = (hrtime - ppa->ppa_lasttx) / 1000000000ul;
550 pip->recv_idle = (hrtime - ppa->ppa_lastrx) / 1000000000ul;
574 if (ppa == NULL) {
576 } else if ((ppa->ppa_lower_wq != NULL) &&
577 !IS_PPA_LASTMOD(ppa)) {
578 mutex_enter(&ppa->ppa_sta_lock);
585 mutex_exit(&ppa->ppa_sta_lock);
592 ppa->ppa_ioctlsfwd++;
600 mutex_exit(&ppa->ppa_sta_lock);
602 putnext(ppa->ppa_lower_wq, mp);
607 mutex_enter(&ppa->ppa_sta_lock);
608 ppa->ppa_allocbfail++;
609 mutex_exit(&ppa->ppa_sta_lock);
620 * ppa and return them to the caller.
622 mutex_enter(&ppa->ppa_sta_lock);
623 bcopy(&ppa->ppa_stats, psp, sizeof (*psp));
624 mutex_exit(&ppa->ppa_sta_lock);
630 if (ppa == NULL) {
632 } else if ((ppa->ppa_lower_wq != NULL) &&
633 !IS_PPA_LASTMOD(ppa)) {
634 mutex_enter(&ppa->ppa_sta_lock);
640 mutex_exit(&ppa->ppa_sta_lock);
647 ppa->ppa_ioctlsfwd++;
655 mutex_exit(&ppa->ppa_sta_lock);
657 putnext(ppa->ppa_lower_wq, mp);
662 mutex_enter(&ppa->ppa_sta_lock);
663 ppa->ppa_allocbfail++;
664 mutex_exit(&ppa->ppa_sta_lock);
703 sppa_t *ppa;
710 ppa = sps->sps_ppa;
716 ASSERT(ppa != NULL);
726 if ((ppa->ppa_lower_wq != NULL) &&
727 canputnext(ppa->ppa_lower_wq)) {
728 mutex_enter(&ppa->ppa_sta_lock);
729 ppa->ppa_mctlsfwd++;
730 mutex_exit(&ppa->ppa_sta_lock);
731 putnext(ppa->ppa_lower_wq, mp);
733 mutex_enter(&ppa->ppa_sta_lock);
734 ppa->ppa_mctlsfwderr++;
735 mutex_exit(&ppa->ppa_sta_lock);
788 } else if ((ppa == NULL) ||
789 (ppa->ppa_lower_wq == NULL)) {
792 mutex_enter(&ppa->ppa_sta_lock);
798 mutex_exit(&ppa->ppa_sta_lock);
805 ppa->ppa_ioctlsfwd++;
813 mutex_exit(&ppa->ppa_sta_lock);
815 putnext(ppa->ppa_lower_wq, mp);
856 sppa_t *ppa;
866 ppa = sps->sps_ppa;
867 if ((ppa == NULL) || (ppa->ppa_lower_wq == NULL)) {
873 mutex_enter(&ppa->ppa_sta_lock);
879 mutex_exit(&ppa->ppa_sta_lock);
884 ppa->ppa_ioctlsfwd++;
887 mutex_exit(&ppa->ppa_sta_lock);
888 putnext(ppa->ppa_lower_wq, mp);
907 sppa_t *ppa = sps->sps_ppa;
909 rw_enter(&ppa->ppa_sib_lock, RW_WRITER);
910 if (ppa->ppa_refcnt <= 1) {
911 rw_exit(&ppa->ppa_sib_lock);
912 sppp_free_ppa(ppa);
914 nextsib = ppa->ppa_streams;
916 ppa->ppa_streams = sps->sps_nextsib;
927 ppa->ppa_refcnt--;
937 ASSERT(ppa->ppa_promicnt > 0);
938 ppa->ppa_promicnt--;
940 rw_exit(&ppa->ppa_sib_lock);
951 sppa_t *ppa;
953 for (ppa = ppa_list; ppa != NULL; ppa = ppa->ppa_nextppa) {
954 if (ppa->ppa_ppa_id == ppa_id) {
955 break; /* found the ppa */
958 return (ppa);
975 sppa_t *ppa;
990 ppa = sps->sps_ppa;
1009 } else if (ppa == NULL) {
1014 mutex_enter(&ppa->ppa_sta_lock);
1015 ppa->ppa_allocbfail++;
1016 mutex_exit(&ppa->ppa_sta_lock);
1042 if (ppa != NULL) {
1046 ppa = sppp_find_ppa(ppa_id);
1053 if (ppa == NULL) {
1058 ppa->ppa_zoneid != crgetzoneid(iop->ioc_cr)) {
1072 * There are two ways to attach a stream to a ppa: one is
1080 sps->sps_ppa = ppa;
1083 * which belong to the same ppa as specified.
1085 rw_enter(&ppa->ppa_sib_lock, RW_WRITER);
1086 ppa->ppa_refcnt++;
1087 sps->sps_nextsib = ppa->ppa_streams;
1088 ppa->ppa_streams = sps;
1089 rw_exit(&ppa->ppa_sib_lock);
1111 mutex_enter(&ppa->ppa_npmutex);
1112 ppa->ppa_npflag |= (1 << npflagpos);
1113 mutex_exit(&ppa->ppa_npmutex);
1122 sppp_release_pkts(ppa, proto);
1152 if ((ppa == NULL) || (ppa->ppa_lower_wq == NULL)) {
1156 mutex_enter(&ppa->ppa_sta_lock);
1162 mutex_exit(&ppa->ppa_sta_lock);
1169 ppa->ppa_ioctlsfwd++;
1177 mutex_exit(&ppa->ppa_sta_lock);
1179 putnext(ppa->ppa_lower_wq, mp);
1187 * the ppa field is still valid. In the event that the control
1192 ASSERT(ppa != NULL);
1193 ASSERT(ppa->ppa_ctl != sps);
1208 ASSERT(ppa != NULL);
1209 ppa->ppa_flags |= PPA_LASTMOD;
1220 ASSERT(ppa != NULL);
1230 ppa->ppa_mru = (uint16_t)mru;
1232 * If there's something beneath this driver for the ppa, then
1236 if (!IS_PPA_LASTMOD(ppa) && (ppa->ppa_lower_wq != NULL)) {
1237 (void) putctl4(ppa->ppa_lower_wq, M_CTL, PPPCTL_MRU,
1250 ASSERT(ppa != NULL);
1257 ppa->ppa_mtu = (uint16_t)mtu;
1259 * If there's something beneath this driver for the ppa, then
1263 if (!IS_PPA_LASTMOD(ppa) && (ppa->ppa_lower_wq != NULL)) {
1264 (void) putctl4(ppa->ppa_lower_wq, M_CTL, PPPCTL_MTU,
1273 if (!IS_PPA_TIMESTAMP(ppa)) {
1275 ppa->ppa_lasttx = ppa->ppa_lastrx = hrtime;
1276 ppa->ppa_flags |= PPA_TIMESTAMP;
1307 sppa_t *ppa;
1316 ppa = sps->sps_ppa;
1322 } else if (ppa->ppa_lower_wq != NULL) {
1326 ASSERT(ppa->ppa_ctl != NULL);
1333 ppa->ppa_lower_wq = lwq;
1334 lwq->q_ptr = RD(lwq)->q_ptr = (caddr_t)ppa;
1342 for (nextsib = ppa->ppa_streams; nextsib != NULL;
1359 * linked below this driver (for this particular ppa). Only
1362 if (!IS_PPA_LASTMOD(ppa)) {
1364 ppa->ppa_ppa_id);
1365 (void) putctl4(lwq, M_CTL, PPPCTL_MRU, ppa->ppa_mru);
1366 (void) putctl4(lwq, M_CTL, PPPCTL_MTU, ppa->ppa_mtu);
1371 "/%d: I_LINK lwq=0x%p sps=0x%p flags=0x%b ppa=0x%p "
1373 (void *)ppa->ppa_lower_wq, (void *)sps,
1375 (void *)ppa, ppa->ppa_flags,
1382 ASSERT(ppa != NULL);
1383 lwq = ppa->ppa_lower_wq;
1390 "ppa=0x%p flags=0x%b\n", sps->sps_mn_id,
1392 SPS_FLAGS_STR, (void *)ppa, ppa->ppa_flags,
1397 * disassociate our ppa's lower_wq from the lower stream linked
1402 ppa->ppa_lower_wq = NULL;
1411 for (nextsib = ppa->ppa_streams; nextsib != NULL;
1433 (ppa != NULL) || (sps->sps_dlstate != DL_UNATTACHED)) {
1452 * Walk the global ppa list and determine the lowest
1458 for (ppa = ppa_list; ppa != NULL; ppa = ppa->ppa_nextppa) {
1460 if (ppa->ppa_ctl == NULL &&
1461 ppa->ppa_zoneid == zoneid)
1464 if (ppa_id < ppa->ppa_ppa_id)
1466 if (ppa_id == ppa->ppa_ppa_id)
1471 if (ppa == NULL) {
1476 ppa->ppa_flags = 0;
1478 ppa = sppp_create_ppa(ppa_id, zoneid);
1479 if (ppa == NULL) {
1485 sps->sps_ppa = ppa; /* chain the ppa structure */
1489 ppa->ppa_refcnt++; /* new PPA reference */
1490 ppa->ppa_ctl = sps; /* back ptr to upper stream */
1495 *(uint32_t *)nmp->b_wptr = ppa->ppa_ppa_id;
1501 "ppa=0x%p flags=0x%b\n", sps->sps_mn_id, ppa_id,
1503 (void *)ppa, ppa->ppa_flags,
1535 sppa_t *ppa;
1553 ppa = sps->sps_ppa;
1554 if (ppa == NULL) {
1565 if (msize > (ppa->ppa_mtu + PPP_HDRLEN)) {
1567 mutex_enter(&ppa->ppa_sta_lock);
1568 ppa->ppa_otoolongs++;
1569 mutex_exit(&ppa->ppa_sta_lock);
1578 mutex_enter(&ppa->ppa_sta_lock);
1579 ppa->ppa_orunts++;
1580 mutex_exit(&ppa->ppa_sta_lock);
1586 "ppa=0x%p flags=0x%b\n", sps->sps_mn_id, msize,
1588 (void *)ppa, ppa->ppa_flags, PPA_FLAGS_STR);
1597 rw_enter(&ppa->ppa_sib_lock, RW_READER);
1600 ASSERT(ppa->ppa_streams != NULL);
1601 sppp_dlprsendup(ppa->ppa_streams, mp, sps->sps_sap, B_TRUE);
1603 rw_exit(&ppa->ppa_sib_lock);
1609 if (!IS_SPS_CONTROL(sps) && IS_PPA_TIMESTAMP(ppa)) {
1610 ppa->ppa_lasttx = gethrtime();
1621 mutex_enter(&ppa->ppa_sta_lock);
1622 ppa->ppa_oqdropped++;
1623 mutex_exit(&ppa->ppa_sta_lock);
1655 sppa_t *ppa;
1665 ppa = sps->sps_ppa;
1671 } else if (ppa == NULL || ppa->ppa_ctl == NULL ||
1675 * a valid ppa, and its npmode must always be NPMODE_PASS.
1703 if (ppa->ppa_lower_wq == NULL) {
1704 ASSERT(ppa->ppa_ctl != NULL);
1705 ASSERT(ppa->ppa_ctl->sps_rq != NULL);
1711 mutex_enter(&ppa->ppa_sta_lock);
1712 ppa->ppa_allocbfail++;
1713 mutex_exit(&ppa->ppa_sta_lock);
1718 mutex_enter(&ppa->ppa_sta_lock);
1719 ppa->ppa_lsneedup++;
1720 mutex_exit(&ppa->ppa_sta_lock);
1728 putnext(ppa->ppa_ctl->sps_rq, mpnew);
1736 if (bcanputnext(ppa->ppa_lower_wq, mp->b_band)) {
1737 mutex_enter(&ppa->ppa_sta_lock);
1738 ppa->ppa_stats.p.ppp_opackets++;
1740 ppa->ppa_opkt_ctl++;
1742 ppa->ppa_stats.p.ppp_obytes += msize;
1743 mutex_exit(&ppa->ppa_sta_lock);
1744 return (ppa->ppa_lower_wq); /* don't queue it */
1763 sppa_t *ppa;
1767 ppa = (sppa_t *)q->q_ptr;
1768 ASSERT(ppa != NULL);
1770 rw_enter(&ppa->ppa_sib_lock, RW_READER);
1771 if ((nextsib = ppa->ppa_ctl) != NULL &&
1774 for (nextsib = ppa->ppa_streams; nextsib != NULL;
1780 rw_exit(&ppa->ppa_sib_lock);
1803 sppa_t *ppa;
1806 if ((ppa = q->q_ptr) == NULL) {
1811 sps = ppa->ppa_ctl;
1854 sppa_t *ppa;
1858 ppa = (sppa_t *)q->q_ptr;
1859 ctlsps = ppa->ppa_ctl;
1863 mutex_enter(&ppa->ppa_sta_lock);
1865 ppa->ppa_stats.p.ppp_ierrors++;
1866 ppa->ppa_ierr_low++;
1867 ppa->ppa_mctlsknown++;
1869 ppa->ppa_stats.p.ppp_oerrors++;
1870 ppa->ppa_oerr_low++;
1871 ppa->ppa_mctlsknown++;
1873 ppa->ppa_mctlsunknown++;
1875 mutex_exit(&ppa->ppa_sta_lock);
1890 rw_enter(&ppa->ppa_sib_lock, RW_READER);
1893 destsps = ppa->ppa_streams;
1901 rw_exit(&ppa->ppa_sib_lock);
1903 mutex_enter(&ppa->ppa_sta_lock);
1904 ppa->ppa_ioctlsfwderr++;
1905 mutex_exit(&ppa->ppa_sta_lock);
1909 mutex_enter(&ppa->ppa_sta_lock);
1910 ppa->ppa_ioctlsfwdok++;
1919 mutex_exit(&ppa->ppa_sta_lock);
1935 mutex_enter(&ppa->ppa_sta_lock);
1936 ppa->ppa_allocbfail++;
1937 mutex_exit(&ppa->ppa_sta_lock);
1940 mutex_enter(&ppa->ppa_sta_lock);
1941 ppa->ppa_lsdown++;
1942 mutex_exit(&ppa->ppa_sta_lock);
1961 mutex_enter(&ppa->ppa_sta_lock);
1962 ppa->ppa_iqdropped++;
1963 mutex_exit(&ppa->ppa_sta_lock);
1985 sppa_t *ppa;
1996 ppa = ctlsps->sps_ppa;
1997 ASSERT(ppa != NULL && ppa->ppa_ctl != NULL);
2000 mutex_enter(&ppa->ppa_sta_lock);
2001 ppa->ppa_stats.p.ppp_ibytes += len;
2002 mutex_exit(&ppa->ppa_sta_lock);
2010 mutex_enter(&ppa->ppa_sta_lock);
2011 ppa->ppa_irunts++;
2012 mutex_exit(&ppa->ppa_sta_lock);
2015 } else if (len > (ppa->ppa_mru + PPP_HDRLEN)) {
2017 mutex_enter(&ppa->ppa_sta_lock);
2018 ppa->ppa_itoolongs++;
2019 mutex_exit(&ppa->ppa_sta_lock);
2031 mutex_enter(&ppa->ppa_sta_lock);
2032 ppa->ppa_allocbfail++;
2033 mutex_exit(&ppa->ppa_sta_lock);
2044 mutex_enter(&ppa->ppa_npmutex);
2045 if (npflagpos != 0 && (ppa->ppa_npflag & (1 << npflagpos))) {
2050 if (ppa->ppa_holdpkts[npflagpos] > 3 ||
2054 ppa->ppa_holdpkts[npflagpos]++;
2055 mutex_exit(&ppa->ppa_npmutex);
2058 mutex_exit(&ppa->ppa_npmutex);
2066 mutex_enter(&ppa->ppa_sta_lock);
2067 ppa->ppa_ipkt_ctl++;
2068 mutex_exit(&ppa->ppa_sta_lock);
2073 "flags=0x%b ppa=0x%p flags=0x%b\n",
2076 (void *)ppa, ppa->ppa_flags,
2081 mutex_enter(&ppa->ppa_sta_lock);
2082 ppa->ppa_iqdropped++;
2083 mutex_exit(&ppa->ppa_sta_lock);
2092 "ppa=0x%p flags=0x%b\n", destsps->sps_mn_id, len,
2094 SPS_FLAGS_STR, (void *)ppa, ppa->ppa_flags,
2114 mutex_enter(&ppa->ppa_sta_lock);
2115 ppa->ppa_allocbfail++;
2116 mutex_exit(&ppa->ppa_sta_lock);
2122 mutex_enter(&ppa->ppa_sta_lock);
2123 ppa->ppa_iqdropped++;
2124 mutex_exit(&ppa->ppa_sta_lock);
2148 sppa_t *ppa;
2155 ppa = ctlsps->sps_ppa;
2156 ASSERT(ppa != NULL);
2183 mutex_enter(&ppa->ppa_sta_lock);
2184 ppa->ppa_stats.p.ppp_ipackets++;
2185 mutex_exit(&ppa->ppa_sta_lock);
2195 * stream cache for this ppa for PPP_IP (0x0021) or PPP_IPV6 (0x0057)
2201 destsps = ppa->ppa_ip_cache;
2203 destsps = ppa->ppa_ip6_cache;
2216 if (destsps != NULL && IS_PPA_TIMESTAMP(ppa)) {
2217 ppa->ppa_lastrx = gethrtime();
2225 rw_enter(&ppa->ppa_sib_lock, RW_READER);
2226 is_promisc = ppa->ppa_promicnt;
2228 ASSERT(ppa->ppa_streams != NULL);
2229 sppp_dlprsendup(ppa->ppa_streams, mp, proto, B_TRUE);
2231 rw_exit(&ppa->ppa_sib_lock);
2239 * Update per-ppa kstat interface statistics.
2244 register sppa_t *ppa;
2252 ppa = (sppa_t *)ksp->ks_private;
2253 ASSERT(ppa != NULL);
2256 sp = &ppa->ppa_stats.p;
2258 mutex_enter(&ppa->ppa_sta_lock);
2259 pppkp->allocbfail.value.ui32 = ppa->ppa_allocbfail;
2260 pppkp->mctlsfwd.value.ui32 = ppa->ppa_mctlsfwd;
2261 pppkp->mctlsfwderr.value.ui32 = ppa->ppa_mctlsfwderr;
2265 pppkp->ierrors_lower.value.ui32 = ppa->ppa_ierr_low;
2266 pppkp->ioctlsfwd.value.ui32 = ppa->ppa_ioctlsfwd;
2267 pppkp->ioctlsfwdok.value.ui32 = ppa->ppa_ioctlsfwdok;
2268 pppkp->ioctlsfwderr.value.ui32 = ppa->ppa_ioctlsfwderr;
2271 pppkp->ipackets_ctl.value.ui32 = ppa->ppa_ipkt_ctl;
2272 pppkp->iqdropped.value.ui32 = ppa->ppa_iqdropped;
2273 pppkp->irunts.value.ui32 = ppa->ppa_irunts;
2274 pppkp->itoolongs.value.ui32 = ppa->ppa_itoolongs;
2275 pppkp->lsneedup.value.ui32 = ppa->ppa_lsneedup;
2276 pppkp->lsdown.value.ui32 = ppa->ppa_lsdown;
2277 pppkp->mctlsknown.value.ui32 = ppa->ppa_mctlsknown;
2278 pppkp->mctlsunknown.value.ui32 = ppa->ppa_mctlsunknown;
2282 pppkp->oerrors_lower.value.ui32 = ppa->ppa_oerr_low;
2285 pppkp->opackets_ctl.value.ui32 = ppa->ppa_opkt_ctl;
2286 pppkp->oqdropped.value.ui32 = ppa->ppa_oqdropped;
2287 pppkp->otoolongs.value.ui32 = ppa->ppa_otoolongs;
2288 pppkp->orunts.value.ui32 = ppa->ppa_orunts;
2289 mutex_exit(&ppa->ppa_sta_lock);
2301 sppp_release_pkts(sppa_t *ppa, uint16_t proto)
2310 ASSERT(ppa != NULL);
2312 if (npflagpos == 0 || (ppa->ppa_npflag & (1 << npflagpos)) == 0)
2315 mutex_enter(&ppa->ppa_npmutex);
2316 ppa->ppa_npflag &= ~(1 << npflagpos);
2317 count = ppa->ppa_holdpkts[npflagpos];
2318 ppa->ppa_holdpkts[npflagpos] = 0;
2319 mutex_exit(&ppa->ppa_npmutex);
2321 q = ppa->ppa_ctl->sps_rq;
2335 destsps = ppa->ppa_ip_cache;
2337 destsps = ppa->ppa_ip6_cache;
2349 mutex_enter(&ppa->ppa_sta_lock);
2350 ppa->ppa_allocbfail++;
2351 mutex_exit(&ppa->ppa_sta_lock);
2360 mutex_enter(&ppa->ppa_sta_lock);
2361 ppa->ppa_iqdropped++;
2362 mutex_exit(&ppa->ppa_sta_lock);