summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2011-06-13 16:42:13 -0700
committerColin Cross <ccross@android.com>2011-06-15 17:20:52 -0700
commit63a3dfafbc50a3a671cb63294bb4695e9d3c885c (patch)
tree976e7d060e9cf9b6629d4fb809be214eac91b328
parent1154e25e0fac10248051ab8bf6f2f73772b1b1f3 (diff)
net: wireless: bcmdhd: Allocate skb with GFP_KERNEL flag if possible
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
-rw-r--r--drivers/net/wireless/bcmdhd/linux_osl.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/net/wireless/bcmdhd/linux_osl.c b/drivers/net/wireless/bcmdhd/linux_osl.c
index 14b9aa19233..bfbfc88342a 100644
--- a/drivers/net/wireless/bcmdhd/linux_osl.c
+++ b/drivers/net/wireless/bcmdhd/linux_osl.c
@@ -246,6 +246,13 @@ osl_detach(osl_t *osh)
kfree(osh);
}
+struct sk_buff *osl_alloc_skb(unsigned int len)
+{
+ gfp_t flags = (in_atomic()) ? GFP_ATOMIC : GFP_KERNEL;
+
+ return __dev_alloc_skb(len, flags);
+}
+
#ifdef CTFPOOL
void *
@@ -266,7 +273,7 @@ osl_ctfpool_add(osl_t *osh)
}
- skb = dev_alloc_skb(osh->ctfpool->obj_size);
+ skb = osl_alloc_skb(osh->ctfpool->obj_size);
if (skb == NULL) {
printf("%s: skb alloc of len %d failed\n", __FUNCTION__,
osh->ctfpool->obj_size);
@@ -426,7 +433,7 @@ osl_pktfastget(osl_t *osh, uint len)
return skb;
}
-#endif
+#endif
void * BCMFASTPATH
@@ -435,16 +442,14 @@ osl_pktget(osl_t *osh, uint len)
struct sk_buff *skb;
#ifdef CTFPOOL
-
skb = osl_pktfastget(osh, len);
- if ((skb != NULL) || ((skb = dev_alloc_skb(len)) != NULL)) {
-#else
- if ((skb = dev_alloc_skb(len))) {
-#endif
+ if ((skb != NULL) || ((skb = osl_alloc_skb(len)) != NULL)) {
+#else
+ if ((skb = osl_alloc_skb(len))) {
+#endif
skb_put(skb, len);
skb->priority = 0;
-
osh->pub.pktalloced++;
}