summaryrefslogtreecommitdiff
path: root/wl1271/platforms/os/linux
diff options
context:
space:
mode:
Diffstat (limited to 'wl1271/platforms/os/linux')
-rw-r--r--wl1271/platforms/os/linux/inc/tracebuf.h2
-rw-r--r--wl1271/platforms/os/linux/inc/wbuf.h12
-rw-r--r--wl1271/platforms/os/linux/src/RxBuf.c3
-rw-r--r--wl1271/platforms/os/linux/src/osmemapi.c14
4 files changed, 17 insertions, 14 deletions
diff --git a/wl1271/platforms/os/linux/inc/tracebuf.h b/wl1271/platforms/os/linux/inc/tracebuf.h
index 249b7851..441ef1eb 100644
--- a/wl1271/platforms/os/linux/inc/tracebuf.h
+++ b/wl1271/platforms/os/linux/inc/tracebuf.h
@@ -40,7 +40,7 @@
#define TB_TRACE_H
-#define TB_MALLOC(size) kmalloc(size, GFP_ATOMIC);
+#define TB_MALLOC(size) kmalloc(size, GFP_KERNEL);
#define TB_FREE kfree
#define TB_PRINTF printk
#define TB_ID current->pid
diff --git a/wl1271/platforms/os/linux/inc/wbuf.h b/wl1271/platforms/os/linux/inc/wbuf.h
index 1dbeb1d7..4894cd65 100644
--- a/wl1271/platforms/os/linux/inc/wbuf.h
+++ b/wl1271/platforms/os/linux/inc/wbuf.h
@@ -108,9 +108,15 @@ typedef struct
*/
static inline WBUF *WbufAlloc (TI_HANDLE hOs, TI_UINT32 len)
{
- WBUF *pWbuf = alloc_skb (len + WSPI_PAD_BYTES, GFP_ATOMIC);
- WBUF_DATA (pWbuf) += WSPI_PAD_BYTES;
- return pWbuf;
+ gfp_t flags = (in_atomic()) ? GFP_ATOMIC : GFP_KERNEL;
+ WBUF *pWbuf = alloc_skb(len + WSPI_PAD_BYTES, flags);
+
+ if (!pWbuf)
+ {
+ return NULL;
+ }
+ WBUF_DATA (pWbuf) += WSPI_PAD_BYTES;
+ return pWbuf;
}
#define WbufFree(hOs, pWbuf) ( dev_kfree_skb((struct sk_buff *)pWbuf) )
diff --git a/wl1271/platforms/os/linux/src/RxBuf.c b/wl1271/platforms/os/linux/src/RxBuf.c
index 4a18acf3..bda7c10e 100644
--- a/wl1271/platforms/os/linux/src/RxBuf.c
+++ b/wl1271/platforms/os/linux/src/RxBuf.c
@@ -51,8 +51,9 @@ void *RxBufAlloc(TI_HANDLE hOs, TI_UINT32 len,PacketClassTag_e ePacketClassTag)
TI_UINT32 alloc_len = len + WSPI_PAD_BYTES + PAYLOAD_ALIGN_PAD_BYTES + RX_HEAD_LEN_ALIGNED;
struct sk_buff *skb;
rx_head_t *rx_head;
+ gfp_t flags = (in_atomic()) ? GFP_ATOMIC : GFP_KERNEL;
- skb = alloc_skb(alloc_len, GFP_ATOMIC);
+ skb = alloc_skb(alloc_len, flags);
if (!skb)
{
return NULL;
diff --git a/wl1271/platforms/os/linux/src/osmemapi.c b/wl1271/platforms/os/linux/src/osmemapi.c
index 85a77535..e71d3030 100644
--- a/wl1271/platforms/os/linux/src/osmemapi.c
+++ b/wl1271/platforms/os/linux/src/osmemapi.c
@@ -99,6 +99,7 @@ os_memoryAlloc(
{
struct os_mem_block *blk;
__u32 total_size = Size + sizeof(struct os_mem_block) + sizeof(__u32);
+ gfp_t flags = (in_atomic()) ? GFP_ATOMIC : GFP_KERNEL;
#ifdef TI_MEM_ALLOC_TRACE
os_printf("MTT:%s:%d ::os_memoryAlloc(0x%p, %lu) : %lu\n",__FUNCTION__, __LINE__,OsContext,Size,total_size);
@@ -115,14 +116,7 @@ os_memoryAlloc(
if (total_size < 2 * 4096)
#endif
{
- if (in_atomic())
- {
- blk = kmalloc(total_size, GFP_ATOMIC);
- }
- else
- {
- blk = kmalloc(total_size, GFP_KERNEL);
- }
+ blk = kmalloc(total_size, flags);
if (!blk)
{
printk("%s: NULL\n",__func__);
@@ -303,13 +297,15 @@ os_memoryAlloc4HwDma(
{
struct os_mem_block *blk;
__u32 total_size = Size + sizeof(struct os_mem_block) + sizeof(__u32);
+ gfp_t flags = (in_atomic()) ? GFP_ATOMIC : GFP_KERNEL;
+
/*
if the size is greater than 2 pages then we cant allocate the memory
through kmalloc so the function fails
*/
if (Size < 2 * OS_PAGE_SIZE)
{
- blk = kmalloc(total_size, GFP_ATOMIC|GFP_DMA);
+ blk = kmalloc(total_size, flags | GFP_DMA);
if (!blk) {
printk("%s: NULL\n",__func__);
return NULL;