Beispiel #1
0
/* Return a new packet. zero out pkttag */
void*
osl_pktget(osl_t *osh, uint len, bool send)
{
	struct sk_buff *skb;

	if ((skb = dev_alloc_skb(len))) {
		skb_put(skb, len);
		skb->priority = 0;

#ifdef BCMDBG_PKT
	pktlist_add(&(osh->pktlist), (void *) skb);
#endif  /* BCMDBG_PKT */

		osh->pub.pktalloced++;
	}

	return ((void*) skb);
}
Beispiel #2
0
void *
osl_pkt_frmnative(osl_t *osh, struct sk_buff *skb)
{
	struct sk_buff *nskb;

	if (osh->pub.pkttag)
		bzero((void*)skb->cb, OSL_PKTTAG_SZ);

	
	for (nskb = skb; nskb; nskb = nskb->next) {
#ifdef BCMDBG_PKT
		pktlist_add(&(osh->pktlist), (void *) nskb);
#endif  
		osh->pub.pktalloced++;
	}

	return (void *)skb;
}
Beispiel #3
0
void *
osl_pktdup(osl_t *osh, void *skb)
{
	void * p;

	if ((p = skb_clone((struct sk_buff*)skb, GFP_ATOMIC)) == NULL)
		return NULL;

	
	if (osh->pub.pkttag)
		bzero((void*)((struct sk_buff *)p)->cb, OSL_PKTTAG_SZ);

	
	osh->pub.pktalloced++;
#ifdef BCMDBG_PKT
	pktlist_add(&(osh->pktlist), (void *) p);
#endif  
	return (p);
}
Beispiel #4
0
/* Clone a packet.
 * The pkttag contents are NOT cloned.
 */
void *
osl_pktdup(osl_t *osh, void *skb)
{
	void * p;

	if ((p = skb_clone((struct sk_buff*)skb, GFP_ATOMIC)) == NULL)
		return NULL;

	/* skb_clone copies skb->cb.. we don't want that */
	if (osh->pub.pkttag)
		bzero((void*)((struct sk_buff *)p)->cb, OSL_PKTTAG_SZ);

	/* Increment the packet counter */
	osh->pub.pktalloced++;
#ifdef BCMDBG_PKT
	pktlist_add(&(osh->pktlist), (void *) p);
#endif  /* BCMDBG_PKT */
	return (p);
}
Beispiel #5
0
void
osl_pktlist_add(osl_t *osh, void *p)
{
	pktlist_add(&(osh->pktlist), p);
}