Lines Matching defs:pktinfo
105 #define UPDATE_STATS(stats, vstats, pktinfo, delta) { \
106 if ((pktinfo).isBroadcast) { \
109 } else if ((pktinfo).isMulticast) { \
113 ((pktinfo).pktLen)); \
2047 pktinfo_t pktinfo;
2074 if ((*ifp->interpreter)(macinfo, mp, &pktinfo, GLD_TX) != 0) {
2167 pktinfo.pktLen > ifp->hdr_size + (vtag == 0 ? 0 : VTAG_SIZE) +
2175 "max %d", pktinfo.pktLen,
2193 UPDATE_STATS(stats0, stats, pktinfo, 1);
2205 UPDATE_STATS(stats0, stats, pktinfo, 1);
2246 pktinfo_t pktinfo;
2306 * Run interpreter to populate media specific pktinfo fields.
2310 (void) (*ifp->interpreter_mdt)(macinfo, mp, NULL, &pktinfo,
2331 &pinfo, &pktinfo, GLD_MDT_TXPKT);
2333 totLen += pktinfo.pktLen;
2343 dl_pkt, &pktinfo);
2364 pktinfo.pktLen = totLen;
2365 UPDATE_STATS(vlan->gldv_stats, NULL, pktinfo, numpacks);
2408 &pinfo, &pktinfo, GLD_MDT_TXPKT);
2410 totLen += pktinfo.pktLen;
2414 pktinfo.pktLen = totLen;
2415 UPDATE_STATS(vlan->gldv_stats, NULL, pktinfo, mdtpacks);
2507 pktinfo_t pktinfo;
2517 if ((*ifp->interpreter)(macinfo, mp, &pktinfo, GLD_RXLOOP) != 0) {
2531 pktinfo.isTagged = (vtag != VLAN_VID_NONE);
2532 pktinfo.vid = GLD_VTAG_VID(vtag);
2533 pktinfo.cfi = GLD_VTAG_CFI(vtag);
2534 pktinfo.user_pri = GLD_VTAG_PRI(vtag);
2536 gld_sendup(macinfo, &pktinfo, mp, gld_paccept);
2547 pdesc_t *dl_pkt, pktinfo_t *pktinfo)
2558 (void) (*ifp->interpreter_mdt)(macinfo, mp, NULL, pktinfo,
2561 gld_sendup(macinfo, pktinfo, adjmp, gld_paccept);
2582 pktinfo_t pktinfo;
2633 err = (*ifp->interpreter)(macinfo, mp, &pktinfo, GLD_RXQUICK);
2635 BUMP(stats0, stats, glds_bytercv64, pktinfo.pktLen);
2657 switch (pktinfo.ethertype) {
2677 pktinfo.isForMe &&
2683 mp->b_rptr += pktinfo.macLen;
2691 if ((*ifp->interpreter)(macinfo, mp, &pktinfo, GLD_RX) != 0) {
2705 pktinfo.vid = vid;
2706 pktinfo.cfi = GLD_VTAG_CFI(vtag);
2708 if (pktinfo.cfi != VLAN_CFI_ETHER)
2711 pktinfo.user_pri = GLD_VTAG_PRI(vtag);
2712 pktinfo.isTagged = (vtag != VLAN_VID_NONE);
2717 (!pktinfo.isBroadcast && !pktinfo.isMulticast))) {
2721 gld_macaddr_sprintf(pbuf, pktinfo.shost,
2723 pktinfo.dhost, macinfo->gldm_addrlen));
2725 pktinfo.vid,
2726 pktinfo.user_pri);
2729 pktinfo.ethertype,
2730 pktinfo.pktLen,
2731 pktinfo.macLen,
2732 pktinfo.hdrLen,
2733 pktinfo.isMulticast ? "Y" : "N");
2737 gld_sendup(macinfo, &pktinfo, mp, gld_accept);
2757 gld_sendup_vlan(gld_vlan_t *vlan, pktinfo_t *pktinfo, mblk_t *mp,
2785 (!pktinfo->isBroadcast && !pktinfo->isMulticast)))
2798 if ((*acceptfunc)(gld, pktinfo)) {
2800 pktinfo->wasAccepted = 1; /* known protocol */
2842 gld_passon(gld, nmp, pktinfo, send);
2849 * gld_sendup (macinfo, pktinfo, mp, acceptfunc)
2854 gld_sendup(gld_mac_info_t *macinfo, pktinfo_t *pktinfo,
2872 ASSERT(pktinfo != NULL);
2884 if (pktinfo->vid != VLAN_VID_NONE) {
2887 vlann = gld_find_vlan(macinfo, pktinfo->vid);
2914 err = gld_sendup_vlan(vlan0, pktinfo, mp, acceptfunc, send,
2918 err = gld_sendup_vlan(vlann, pktinfo, mp, acceptfunc, send,
2925 gld_passon(fgld, mp, pktinfo, send);
2933 if (pktinfo->isBroadcast)
2935 else if (pktinfo->isMulticast)
2939 if (!pktinfo->wasAccepted)
2952 #define MATCH(stream, pktinfo) \
2953 ((((gld_vlan_t *)stream->gld_vlan)->gldv_id == pktinfo->vid) && \
2954 ((stream->gld_ethertype && stream->gld_sap == pktinfo->ethertype) || \
2955 (!stream->gld_ethertype && pktinfo->isLLC)))
2960 * are recorded in the pktinfo data structure. The streams stack info
2964 gld_accept(gld_t *gld, pktinfo_t *pktinfo)
2975 if ((!MATCH(gld, pktinfo) && !(gld->gld_flags & GLD_PROM_SAP) &&
2977 pktinfo->isTagged)))
2984 if (pktinfo->isLooped)
2991 if (pktinfo->isForMe || pktinfo->isBroadcast ||
2992 gld_mcmatch(gld, pktinfo))
3009 gld_mcmatch(gld_t *gld, pktinfo_t *pktinfo)
3014 if (!pktinfo->isMulticast)
3032 return (gld_multicast(pktinfo->dhost, gld));
3065 gld_paccept(gld_t *gld, pktinfo_t *pktinfo)
3076 (MATCH(gld, pktinfo) || gld->gld_flags & GLD_PROM_SAP ||
3078 pktinfo->isTagged)));
3083 gld_passon(gld_t *gld, mblk_t *mp, pktinfo_t *pktinfo,
3094 (void *)mp, (void *)pktinfo);
3097 (!pktinfo->isBroadcast && !pktinfo->isMulticast)))
3114 if ((pktinfo->isTagged && is_phys) || (pktinfo->user_pri != 0))
3125 if (is_phys && pktinfo->isTagged &&
3131 skiplen = pktinfo->macLen; /* skip mac header */
3133 skiplen += pktinfo->hdrLen; /* skip any extra */
3135 if (skiplen >= pktinfo->pktLen) {
3144 ASSERT(!(skiplen > pktinfo->pktLen));
3152 vtag = GLD_MAKE_VTAG(pktinfo->user_pri, pktinfo->cfi,
3153 is_phys ? pktinfo->vid : VLAN_VID_NONE);
3170 ASSERT(mp != NULL); /* because skiplen < pktinfo->pktLen */
3176 if (((gld->gld_flags & GLD_FAST) && !pktinfo->isMulticast &&
3177 !pktinfo->isBroadcast) || (gld->gld_flags & GLD_RAW)) {
3182 mp = gld_addudind(gld, mp, pktinfo, addtag);
3190 * gld_addudind(gld, mp, pktinfo)
3194 gld_addudind(gld_t *gld, mblk_t *mp, pktinfo_t *pktinfo, boolean_t tagged)
3206 (void *)mp, (void *)pktinfo);
3232 type = (gld->gld_ethertype) ? pktinfo->ethertype : 0;
3249 dludindp->dl_group_address = (pktinfo->isMulticast ||
3250 pktinfo->isBroadcast);
3254 mac_copy(pktinfo->dhost, nmp->b_wptr, macinfo->gldm_addrlen);
3263 mac_copy(pktinfo->shost, nmp->b_wptr, macinfo->gldm_addrlen);
3269 if (pktinfo->nosource)