void * BCMFASTPATH osl_pkt_frmnative(osl_t *osh, void *pkt) { struct sk_buff *nskb; if (osh->pub.pkttag) OSL_PKTTAG_CLEAR(pkt); for (nskb = (struct sk_buff *)pkt; nskb; nskb = nskb->next) { atomic_add(PKTISCHAINED(nskb) ? PKTCCNT(nskb) : 1, &osh->pktalloced); } return (void *)pkt; }
/* Convert a driver packet to native(OS) packet * In the process, packettag is zeroed out before sending up * IP code depends on skb->cb to be setup correctly with various options * In our case, that means it should be 0 */ struct sk_buff * BCMFASTPATH osl_pkt_tonative(osl_t *osh, void *pkt) { struct sk_buff *nskb; if (osh->pub.pkttag) OSL_PKTTAG_CLEAR(pkt); /* Decrement the packet counter */ for (nskb = (struct sk_buff *)pkt; nskb; nskb = nskb->next) { atomic_sub(PKTISCHAINED(nskb) ? PKTCCNT(nskb) : 1, &osh->pktalloced); } return (struct sk_buff *)pkt; }