mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-29 15:43:59 +08:00
staging: brcm80211: remove DHD_USE_STATIC_BUF
The DHD_USE_STATIC_BUF cannot be enabled in the build configuration, remove it. Signed-off-by: Mike Rapoport <mike.rapoport@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
6ddcfdcf91
commit
6a92fdf1b9
@ -1040,11 +1040,7 @@ sdioh_request_buffer(sdioh_info_t *sd, uint pio_dma, uint fix_inc, uint write,
|
||||
if (pkt == NULL) {
|
||||
sd_data(("%s: Creating new %s Packet, len=%d\n",
|
||||
__func__, write ? "TX" : "RX", buflen_u));
|
||||
#ifdef DHD_USE_STATIC_BUF
|
||||
mypkt = PKTGET_STATIC(sd->osh, buflen_u, write ? true : false);
|
||||
#else
|
||||
mypkt = PKTGET(sd->osh, buflen_u, write ? true : false);
|
||||
#endif /* DHD_USE_STATIC_BUF */
|
||||
if (!mypkt) {
|
||||
sd_err(("%s: PKTGET failed: len %d\n",
|
||||
__func__, buflen_u));
|
||||
@ -1062,11 +1058,7 @@ sdioh_request_buffer(sdioh_info_t *sd, uint pio_dma, uint fix_inc, uint write,
|
||||
if (!write)
|
||||
bcopy(PKTDATA(mypkt), buffer, buflen_u);
|
||||
|
||||
#ifdef DHD_USE_STATIC_BUF
|
||||
PKTFREE_STATIC(sd->osh, mypkt, write ? true : false);
|
||||
#else
|
||||
PKTFREE(sd->osh, mypkt, write ? true : false);
|
||||
#endif /* DHD_USE_STATIC_BUF */
|
||||
} else if (((u32) (PKTDATA(pkt)) & DMA_ALIGN_MASK) != 0) {
|
||||
/* Case 2: We have a packet, but it is unaligned. */
|
||||
|
||||
@ -1075,12 +1067,7 @@ sdioh_request_buffer(sdioh_info_t *sd, uint pio_dma, uint fix_inc, uint write,
|
||||
|
||||
sd_data(("%s: Creating aligned %s Packet, len=%d\n",
|
||||
__func__, write ? "TX" : "RX", PKTLEN(pkt)));
|
||||
#ifdef DHD_USE_STATIC_BUF
|
||||
mypkt = PKTGET_STATIC(sd->osh, PKTLEN(pkt),
|
||||
write ? true : false);
|
||||
#else
|
||||
mypkt = PKTGET(sd->osh, PKTLEN(pkt), write ? true : false);
|
||||
#endif /* DHD_USE_STATIC_BUF */
|
||||
if (!mypkt) {
|
||||
sd_err(("%s: PKTGET failed: len %d\n",
|
||||
__func__, PKTLEN(pkt)));
|
||||
@ -1098,11 +1085,7 @@ sdioh_request_buffer(sdioh_info_t *sd, uint pio_dma, uint fix_inc, uint write,
|
||||
if (!write)
|
||||
bcopy(PKTDATA(mypkt), PKTDATA(pkt), PKTLEN(mypkt));
|
||||
|
||||
#ifdef DHD_USE_STATIC_BUF
|
||||
PKTFREE_STATIC(sd->osh, mypkt, write ? true : false);
|
||||
#else
|
||||
PKTFREE(sd->osh, mypkt, write ? true : false);
|
||||
#endif /* DHD_USE_STATIC_BUF */
|
||||
} else { /* case 3: We have a packet and
|
||||
it is aligned. */
|
||||
sd_data(("%s: Aligned %s Packet, direct DMA\n",
|
||||
|
@ -73,9 +73,7 @@ enum dhd_prealloc_index {
|
||||
DHD_PREALLOC_DATABUF,
|
||||
DHD_PREALLOC_OSL_BUF
|
||||
};
|
||||
#ifdef DHD_USE_STATIC_BUF
|
||||
extern void *dhd_os_prealloc(int section, unsigned long size);
|
||||
#endif
|
||||
|
||||
/* Common structure for module and instance linkage */
|
||||
typedef struct dhd_pub {
|
||||
/* Linkage ponters */
|
||||
|
@ -406,20 +406,11 @@ int dhd_prot_attach(dhd_pub_t *dhd)
|
||||
{
|
||||
dhd_prot_t *cdc;
|
||||
|
||||
#ifndef DHD_USE_STATIC_BUF
|
||||
cdc = (dhd_prot_t *) MALLOC(dhd->osh, sizeof(dhd_prot_t));
|
||||
if (!cdc) {
|
||||
DHD_ERROR(("%s: kmalloc failed\n", __func__));
|
||||
goto fail;
|
||||
}
|
||||
#else
|
||||
cdc = (dhd_prot_t *) dhd_os_prealloc(DHD_PREALLOC_PROT,
|
||||
sizeof(dhd_prot_t));
|
||||
if (!cdc) {
|
||||
DHD_ERROR(("%s: kmalloc failed\n", __func__));
|
||||
goto fail;
|
||||
}
|
||||
#endif /* DHD_USE_STATIC_BUF */
|
||||
memset(cdc, 0, sizeof(dhd_prot_t));
|
||||
|
||||
/* ensure that the msg buf directly follows the cdc msg struct */
|
||||
@ -436,19 +427,15 @@ int dhd_prot_attach(dhd_pub_t *dhd)
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
#ifndef DHD_USE_STATIC_BUF
|
||||
if (cdc != NULL)
|
||||
MFREE(dhd->osh, cdc, sizeof(dhd_prot_t));
|
||||
#endif
|
||||
return BCME_NOMEM;
|
||||
}
|
||||
|
||||
/* ~NOTE~ What if another thread is waiting on the semaphore? Holding it? */
|
||||
void dhd_prot_detach(dhd_pub_t *dhd)
|
||||
{
|
||||
#ifndef DHD_USE_STATIC_BUF
|
||||
MFREE(dhd->osh, dhd->prot, sizeof(dhd_prot_t));
|
||||
#endif
|
||||
dhd->prot = NULL;
|
||||
}
|
||||
|
||||
|
@ -2678,27 +2678,6 @@ void dhd_os_sdtxunlock(dhd_pub_t *pub)
|
||||
dhd_os_sdunlock(pub);
|
||||
}
|
||||
|
||||
#ifdef DHD_USE_STATIC_BUF
|
||||
void *dhd_os_prealloc(int section, unsigned long size)
|
||||
{
|
||||
#if defined(CUSTOMER_HW2) && defined(CONFIG_WIFI_CONTROL_FUNC)
|
||||
void *alloc_ptr = NULL;
|
||||
if (wifi_control_data && wifi_control_data->mem_prealloc) {
|
||||
alloc_ptr = wifi_control_data->mem_prealloc(section, size);
|
||||
if (alloc_ptr) {
|
||||
DHD_INFO(("success alloc section %d\n", section));
|
||||
bzero(alloc_ptr, size);
|
||||
return alloc_ptr;
|
||||
}
|
||||
}
|
||||
|
||||
DHD_ERROR(("can't alloc section %d\n", section));
|
||||
return 0;
|
||||
#else
|
||||
return MALLOC(0, size);
|
||||
#endif /* #if defined(CUSTOMER_HW2) && defined(CONFIG_WIFI_CONTROL_FUNC) */
|
||||
}
|
||||
#endif /* DHD_USE_STATIC_BUF */
|
||||
#if defined(CONFIG_WIRELESS_EXT)
|
||||
struct iw_statistics *dhd_get_wireless_stats(struct net_device *dev)
|
||||
{
|
||||
|
@ -5382,7 +5382,6 @@ static bool dhdsdio_probe_malloc(dhd_bus_t *bus, osl_t *osh, void *sdh)
|
||||
{
|
||||
DHD_TRACE(("%s: Enter\n", __func__));
|
||||
|
||||
#ifndef DHD_USE_STATIC_BUF
|
||||
if (bus->dhd->maxctl) {
|
||||
bus->rxblen =
|
||||
roundup((bus->dhd->maxctl + SDPCM_HDRLEN),
|
||||
@ -5405,26 +5404,6 @@ static bool dhdsdio_probe_malloc(dhd_bus_t *bus, osl_t *osh, void *sdh)
|
||||
MFREE(osh, bus->rxbuf, bus->rxblen);
|
||||
goto fail;
|
||||
}
|
||||
#else
|
||||
if (bus->dhd->maxctl) {
|
||||
bus->rxblen =
|
||||
roundup((bus->dhd->maxctl + SDPCM_HDRLEN),
|
||||
ALIGNMENT) + DHD_SDALIGN;
|
||||
bus->rxbuf = dhd_os_prealloc(DHD_PREALLOC_RXBUF, bus->rxblen);
|
||||
if (!(bus->rxbuf)) {
|
||||
DHD_ERROR(("%s: MALLOC of %d-byte rxbuf failed\n",
|
||||
__func__, bus->rxblen));
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
/* Allocate buffer to receive glomed packet */
|
||||
bus->databuf = dhd_os_prealloc(DHD_PREALLOC_DATABUF, MAX_DATA_BUF);
|
||||
if (!(bus->databuf)) {
|
||||
DHD_ERROR(("%s: MALLOC of %d-byte databuf failed\n",
|
||||
__func__, MAX_DATA_BUF));
|
||||
goto fail;
|
||||
}
|
||||
#endif /* DHD_USE_STATIC_BUF */
|
||||
|
||||
/* Align the buffer */
|
||||
if ((uintptr) bus->databuf % DHD_SDALIGN)
|
||||
@ -5583,17 +5562,13 @@ static void dhdsdio_release_malloc(dhd_bus_t *bus, osl_t *osh)
|
||||
return;
|
||||
|
||||
if (bus->rxbuf) {
|
||||
#ifndef DHD_USE_STATIC_BUF
|
||||
MFREE(osh, bus->rxbuf, bus->rxblen);
|
||||
#endif
|
||||
bus->rxctl = bus->rxbuf = NULL;
|
||||
bus->rxlen = 0;
|
||||
}
|
||||
|
||||
if (bus->databuf) {
|
||||
#ifndef DHD_USE_STATIC_BUF
|
||||
MFREE(osh, bus->databuf, MAX_DATA_BUF);
|
||||
#endif
|
||||
bus->databuf = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -337,11 +337,6 @@ extern void *osl_pktget(osl_t *osh, uint len);
|
||||
extern void osl_pktfree(osl_t *osh, void *skb, bool send);
|
||||
|
||||
#ifdef BRCM_FULLMAC
|
||||
#ifdef DHD_USE_STATIC_BUF
|
||||
#define PKTGET_STATIC(osh, len, send) osl_pktget_static((osh), (len))
|
||||
#define PKTFREE_STATIC(osh, skb, send) \
|
||||
osl_pktfree_static((osh), (skb), (send))
|
||||
#endif
|
||||
extern void *osl_pktget_static(osl_t *osh, uint len);
|
||||
extern void osl_pktfree_static(osl_t *osh, void *skb, bool send);
|
||||
|
||||
|
@ -33,28 +33,6 @@
|
||||
#define OS_HANDLE_MAGIC 0x1234abcd /* Magic # to recognise osh */
|
||||
#define BCM_MEM_FILENAME_LEN 24 /* Mem. filename length */
|
||||
|
||||
#if defined(BRCM_FULLMAC) && defined(DHD_USE_STATIC_BUF)
|
||||
#define MAX_STATIC_BUF_NUM 16
|
||||
#define STATIC_BUF_SIZE (PAGE_SIZE*2)
|
||||
#define STATIC_BUF_TOTAL_LEN (MAX_STATIC_BUF_NUM*STATIC_BUF_SIZE)
|
||||
typedef struct bcm_static_buf {
|
||||
struct semaphore static_sem;
|
||||
unsigned char *buf_ptr;
|
||||
unsigned char buf_use[MAX_STATIC_BUF_NUM];
|
||||
} bcm_static_buf_t;
|
||||
|
||||
static bcm_static_buf_t *bcm_static_buf;
|
||||
|
||||
#define MAX_STATIC_PKT_NUM 8
|
||||
typedef struct bcm_static_pkt {
|
||||
struct sk_buff *skb_4k[MAX_STATIC_PKT_NUM];
|
||||
struct sk_buff *skb_8k[MAX_STATIC_PKT_NUM];
|
||||
struct semaphore osl_pkt_sem;
|
||||
unsigned char pkt_use[MAX_STATIC_PKT_NUM * 2];
|
||||
} bcm_static_pkt_t;
|
||||
static bcm_static_pkt_t *bcm_static_skb;
|
||||
#endif /* DHD_USE_STATIC_BUF */
|
||||
|
||||
struct osl_info {
|
||||
osl_pubinfo_t pub;
|
||||
uint magic;
|
||||
@ -174,39 +152,6 @@ osl_t *osl_attach(void *pdev, uint bustype, bool pkttag)
|
||||
break;
|
||||
}
|
||||
|
||||
#if defined(BRCM_FULLMAC) && defined(DHD_USE_STATIC_BUF)
|
||||
if (!bcm_static_buf) {
|
||||
bcm_static_buf = (bcm_static_buf_t *) dhd_os_prealloc(3,
|
||||
STATIC_BUF_SIZE + STATIC_BUF_TOTAL_LEN);
|
||||
if (!bcm_static_buf) {
|
||||
printk(KERN_ERR "can not alloc static buf!\n");
|
||||
} else
|
||||
printk(KERN_ERR "alloc static buf at %x!\n",
|
||||
(unsigned int)bcm_static_buf);
|
||||
|
||||
init_MUTEX(&bcm_static_buf->static_sem);
|
||||
|
||||
bcm_static_buf->buf_ptr =
|
||||
(unsigned char *)bcm_static_buf + STATIC_BUF_SIZE;
|
||||
|
||||
}
|
||||
|
||||
if (!bcm_static_skb) {
|
||||
int i;
|
||||
void *skb_buff_ptr = 0;
|
||||
bcm_static_skb =
|
||||
(bcm_static_pkt_t *) ((char *)bcm_static_buf + 2048);
|
||||
skb_buff_ptr = dhd_os_prealloc(4, 0);
|
||||
|
||||
bcopy(skb_buff_ptr, bcm_static_skb,
|
||||
sizeof(struct sk_buff *) * 16);
|
||||
for (i = 0; i < MAX_STATIC_PKT_NUM * 2; i++)
|
||||
bcm_static_skb->pkt_use[i] = 0;
|
||||
|
||||
init_MUTEX(&bcm_static_skb->osl_pkt_sem);
|
||||
}
|
||||
#endif /* defined(BRCM_FULLMAC) && defined(DHD_USE_STATIC_BUF) */
|
||||
|
||||
#if defined(BCMDBG) && !defined(BRCM_FULLMAC)
|
||||
if (pkttag) {
|
||||
struct sk_buff *skb;
|
||||
@ -221,13 +166,6 @@ void osl_detach(osl_t *osh)
|
||||
if (osh == NULL)
|
||||
return;
|
||||
|
||||
#if defined(BRCM_FULLMAC) && defined(DHD_USE_STATIC_BUF)
|
||||
if (bcm_static_buf)
|
||||
bcm_static_buf = 0;
|
||||
|
||||
if (bcm_static_skb)
|
||||
bcm_static_skb = 0;
|
||||
#endif
|
||||
ASSERT(osh->magic == OS_HANDLE_MAGIC);
|
||||
kfree(osh);
|
||||
}
|
||||
@ -282,73 +220,6 @@ void BCMFASTPATH osl_pktfree(osl_t *osh, void *p, bool send)
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(BRCM_FULLMAC) && defined(DHD_USE_STATIC_BUF)
|
||||
void *osl_pktget_static(osl_t *osh, uint len)
|
||||
{
|
||||
int i = 0;
|
||||
struct sk_buff *skb;
|
||||
|
||||
if (len > (PAGE_SIZE * 2)) {
|
||||
printk(KERN_ERR "Do we really need this big skb??\n");
|
||||
return osl_pktget(osh, len);
|
||||
}
|
||||
|
||||
down(&bcm_static_skb->osl_pkt_sem);
|
||||
if (len <= PAGE_SIZE) {
|
||||
for (i = 0; i < MAX_STATIC_PKT_NUM; i++) {
|
||||
if (bcm_static_skb->pkt_use[i] == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
if (i != MAX_STATIC_PKT_NUM) {
|
||||
bcm_static_skb->pkt_use[i] = 1;
|
||||
up(&bcm_static_skb->osl_pkt_sem);
|
||||
|
||||
skb = bcm_static_skb->skb_4k[i];
|
||||
skb->tail = skb->data + len;
|
||||
skb->len = len;
|
||||
|
||||
return skb;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_STATIC_PKT_NUM; i++) {
|
||||
if (bcm_static_skb->pkt_use[i + MAX_STATIC_PKT_NUM] == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
if (i != MAX_STATIC_PKT_NUM) {
|
||||
bcm_static_skb->pkt_use[i + MAX_STATIC_PKT_NUM] = 1;
|
||||
up(&bcm_static_skb->osl_pkt_sem);
|
||||
skb = bcm_static_skb->skb_8k[i];
|
||||
skb->tail = skb->data + len;
|
||||
skb->len = len;
|
||||
|
||||
return skb;
|
||||
}
|
||||
|
||||
up(&bcm_static_skb->osl_pkt_sem);
|
||||
printk(KERN_ERR "all static pkt in use!\n");
|
||||
return osl_pktget(osh, len);
|
||||
}
|
||||
|
||||
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]) {
|
||||
down(&bcm_static_skb->osl_pkt_sem);
|
||||
bcm_static_skb->pkt_use[i] = 0;
|
||||
up(&bcm_static_skb->osl_pkt_sem);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
return osl_pktfree(osh, p, send);
|
||||
}
|
||||
#endif /* defined(BRCM_FULLMAC) && defined(DHD_USE_STATIC_BUF) */
|
||||
|
||||
u32 osl_pci_read_config(osl_t *osh, uint offset, uint size)
|
||||
{
|
||||
uint val = 0;
|
||||
@ -422,35 +293,6 @@ void *osl_malloc(osl_t *osh, uint size)
|
||||
if (osh)
|
||||
ASSERT(osh->magic == OS_HANDLE_MAGIC);
|
||||
|
||||
#if defined(BRCM_FULLMAC) && defined(DHD_USE_STATIC_BUF)
|
||||
if (bcm_static_buf) {
|
||||
int i = 0;
|
||||
if ((size >= PAGE_SIZE) && (size <= STATIC_BUF_SIZE)) {
|
||||
down(&bcm_static_buf->static_sem);
|
||||
for (i = 0; i < MAX_STATIC_BUF_NUM; i++) {
|
||||
if (bcm_static_buf->buf_use[i] == 0)
|
||||
break;
|
||||
}
|
||||
if (i == MAX_STATIC_BUF_NUM) {
|
||||
up(&bcm_static_buf->static_sem);
|
||||
printk(KERN_ERR "all static buff in use!\n");
|
||||
goto original;
|
||||
}
|
||||
bcm_static_buf->buf_use[i] = 1;
|
||||
up(&bcm_static_buf->static_sem);
|
||||
|
||||
bzero(bcm_static_buf->buf_ptr + STATIC_BUF_SIZE * i,
|
||||
size);
|
||||
if (osh)
|
||||
osh->malloced += size;
|
||||
|
||||
return (void *)(bcm_static_buf->buf_ptr +
|
||||
STATIC_BUF_SIZE * i);
|
||||
}
|
||||
}
|
||||
original:
|
||||
#endif /* defined(BRCM_FULLMAC) && defined(DHD_USE_STATIC_BUF) */
|
||||
|
||||
addr = kmalloc(size, GFP_ATOMIC);
|
||||
if (addr == NULL) {
|
||||
if (osh)
|
||||
@ -465,28 +307,6 @@ void *osl_malloc(osl_t *osh, uint size)
|
||||
|
||||
void osl_mfree(osl_t *osh, void *addr, uint size)
|
||||
{
|
||||
#if defined(BRCM_FULLMAC) && defined(DHD_USE_STATIC_BUF)
|
||||
if (bcm_static_buf) {
|
||||
if ((addr > (void *)bcm_static_buf) && ((unsigned char *)addr
|
||||
<= ((unsigned char *)
|
||||
bcm_static_buf +
|
||||
STATIC_BUF_TOTAL_LEN))) {
|
||||
int buf_idx = 0;
|
||||
buf_idx =
|
||||
((unsigned char *)addr -
|
||||
bcm_static_buf->buf_ptr) / STATIC_BUF_SIZE;
|
||||
down(&bcm_static_buf->static_sem);
|
||||
bcm_static_buf->buf_use[buf_idx] = 0;
|
||||
up(&bcm_static_buf->static_sem);
|
||||
|
||||
if (osh) {
|
||||
ASSERT(osh->magic == OS_HANDLE_MAGIC);
|
||||
osh->malloced -= size;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif /* defined(BRCM_FULLMAC) && defined(DHD_USE_STATIC_BUF) */
|
||||
if (osh) {
|
||||
ASSERT(osh->magic == OS_HANDLE_MAGIC);
|
||||
osh->malloced -= size;
|
||||
|
Loading…
Reference in New Issue
Block a user