void
osl_pktfree_static(osl_t *osh, void *p, bool send)
{
	int i;
	if (!bcm_static_skb) {
		osl_pktfree(osh, p, send);
		return;
	}

	down(&bcm_static_skb->osl_pkt_sem);
	for (i = 0; i < STATIC_PKT_MAX_NUM; i++) {
		if (p == bcm_static_skb->skb_4k[i]) {
			bcm_static_skb->pkt_use[i] = 0;
			up(&bcm_static_skb->osl_pkt_sem);
			return;
		}
	}

	for (i = 0; i < STATIC_PKT_MAX_NUM; i++) {
		if (p == bcm_static_skb->skb_8k[i]) {
			bcm_static_skb->pkt_use[i + STATIC_PKT_MAX_NUM] = 0;
			up(&bcm_static_skb->osl_pkt_sem);
			return;
		}
	}
#ifdef ENHANCED_STATIC_BUF
	if (p == bcm_static_skb->skb_16k) {
		bcm_static_skb->pkt_use[STATIC_PKT_MAX_NUM * 2] = 0;
		up(&bcm_static_skb->osl_pkt_sem);
		return;
	}
#endif
	up(&bcm_static_skb->osl_pkt_sem);
	osl_pktfree(osh, p, send);
}
Example #2
0
void
osl_pktfree_static(osl_t *osh, void *p, bool send)
{
	int i;

	if (!bcm_static_skb) {
		osl_pktfree(osh, p, send);
		return;
	}

	down(&bcm_static_skb->osl_pkt_sem);
	for (i = 0; i < STATIC_PKT_MAX_NUM; i++) {
		if (p == bcm_static_skb->skb_4k[i]) {
			bcm_static_skb->pkt_use[i] = 0;
			up(&bcm_static_skb->osl_pkt_sem);
			return;
		}
	}

	for (i = 0; i < STATIC_PKT_MAX_NUM; i++) {
		if (p == bcm_static_skb->skb_32k[i]) {
			bcm_static_skb->pkt_use[i + STATIC_PKT_MAX_NUM] = 0;
			up(&bcm_static_skb->osl_pkt_sem);
			return;
		}
	}
	up(&bcm_static_skb->osl_pkt_sem);

	osl_pktfree(osh, p, send);
	return;
}
Example #3
0
void
osl_pktfree_static(osl_t *osh, void *p, bool send)
{
	int i;

	for (i = 0; i < MAX_STATIC_PKT_NUM; i++)
	{
		if (p == bcm_static_skb->skb_4k[i])
		{
			down(&bcm_static_skb->osl_pkt_sem);
			bcm_static_skb->pkt_use[i] = 0;
			up(&bcm_static_skb->osl_pkt_sem);

			return;
		}
	}
	
	for (i = 0; i < MAX_STATIC_PKT_NUM; i++)
	{
		if (p == bcm_static_skb->skb_8k[i])
		{
			down(&bcm_static_skb->osl_pkt_sem);
			bcm_static_skb->pkt_use[i + MAX_STATIC_PKT_NUM] = 0;
			up(&bcm_static_skb->osl_pkt_sem);

			return;
		}
	}
	
	return osl_pktfree(osh, p, send);
}
Example #4
0
void
osl_pktfree_static(osl_t *osh, void *p, bool send)
{
	int i;

	for (i = 0; i < STATIC_PKT_MAX_NUM; i++) {
		if (p == bcm_static_skb->skb_4k[i]) {
			down(&bcm_static_skb->osl_pkt_sem);
			bcm_static_skb->pkt_use[i] = 0;
			up(&bcm_static_skb->osl_pkt_sem);
			return;
		}
	}

	for (i = 0; i < STATIC_PKT_MAX_NUM; i++) {
		if (p == bcm_static_skb->skb_8k[i]) {
			down(&bcm_static_skb->osl_pkt_sem);
			bcm_static_skb->pkt_use[i + STATIC_PKT_MAX_NUM] = 0;
			up(&bcm_static_skb->osl_pkt_sem);
			return;
		}
	}
#ifdef CUSTOMER_HW_SAMSUNG
	if (p == bcm_static_skb->skb_16k) {
		down(&bcm_static_skb->osl_pkt_sem);
		bcm_static_skb->pkt_use[STATIC_PKT_MAX_NUM * 2] = 0;
		up(&bcm_static_skb->osl_pkt_sem);
		return;
	}
#endif

	return osl_pktfree(osh, p, send);
}
void
osl_pktfree_static(osl_t *osh, void *p, bool send)
{
	int i;

	for (i = 0; i < MAX_STATIC_PKT_NUM; i++)
	{
		if (p == bcm_static_skb->skb_4k[i])
		{
			down(&bcm_static_skb->osl_pkt_sem);
			bcm_static_skb->pkt_use[i] = 0;
			up(&bcm_static_skb->osl_pkt_sem);

// LGE_CHANGE_S, 2011-0627, [[email protected]], modify static buffer size
			return;
		}

		if (p == bcm_static_skb->skb_12k[i])
		{
			down(&bcm_static_skb->osl_pkt_sem);
			bcm_static_skb->pkt_use[i+MAX_STATIC_PKT_NUM] = 0;
			up(&bcm_static_skb->osl_pkt_sem);
			
// LGE_CHANGE_E, 2011-0627, [[email protected]], modify static buffer size 

			return;
		}
	}
	return osl_pktfree(osh, p, send);
}
void
osl_pktfree_static(osl_t *osh, void *p, bool send)
{
	int i;

	for (i = 0; i < STATIC_PKT_MAX_NUM; i++) {
		if (p == bcm_static_skb->skb_4k[i]) {
			down(&bcm_static_skb->osl_pkt_sem);
			bcm_static_skb->pkt_use[i] = 0;
			up(&bcm_static_skb->osl_pkt_sem);
			return;
		}
	}

	for (i = 0; i < STATIC_PKT_MAX_NUM; i++) {
#ifdef CONFIG_COMMON_PATCH
		if (p == bcm_static_skb->skb_12k[i]) {
#else
		if (p == bcm_static_skb->skb_8k[i]) {
#endif
			down(&bcm_static_skb->osl_pkt_sem);
			bcm_static_skb->pkt_use[i + STATIC_PKT_MAX_NUM] = 0;
			up(&bcm_static_skb->osl_pkt_sem);
			return;
		}
	}

	return osl_pktfree(osh, p, send);
}
#endif 

uint32
osl_pci_read_config(osl_t *osh, uint offset, uint size)
{
	uint val = 0;
	uint retry = PCI_CFG_RETRY;

	ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));

	
	ASSERT(size == 4);

	do {
		pci_read_config_dword(osh->pdev, offset, &val);
		if (val != 0xffffffff)
			break;
	} while (retry--);


	return (val);
}
Example #7
0
void
osl_pktfree_static(osl_t *osh, void *p, bool send)
{
    int i;

    for (i = 0; i < MAX_STATIC_PKT_NUM*2; i++)
    {
        if (p == bcm_static_skb->skb_4k[i])
        {
            mutex_lock(&bcm_static_skb->osl_pkt_sem);
            bcm_static_skb->pkt_use[i] = 0;
            mutex_unlock(&bcm_static_skb->osl_pkt_sem);


            return;
        }
    }
    return osl_pktfree(osh, p, send);
}