mirror of
https://github.com/torvalds/linux.git
synced 2024-12-23 03:11:46 +00:00
staging: brcm80211: relocate skb_get/free routines
Getting rid of os abstraction layer (ie. osl) is ongoing. Some routines which are still required have been moved to bcmutils module. Reviewed-by: Roland Vossen <rvossen@broadcom.com> Reviewed-by: Brett Rudley <brudley@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
235742ae4d
commit
371d72a177
@ -94,6 +94,11 @@ extern struct sk_buff *pktq_penq_head(struct pktq *pq, int prec,
|
||||
extern struct sk_buff *pktq_pdeq(struct pktq *pq, int prec);
|
||||
extern struct sk_buff *pktq_pdeq_tail(struct pktq *pq, int prec);
|
||||
|
||||
/* packet primitives */
|
||||
extern struct sk_buff *pkt_buf_get_skb(struct osl_info *osh, uint len);
|
||||
extern void pkt_buf_free_skb(struct osl_info *osh,
|
||||
struct sk_buff *skb, bool send);
|
||||
|
||||
/* Empty the queue at particular precedence level */
|
||||
#ifdef BRCM_FULLMAC
|
||||
extern void pktq_pflush(struct osl_info *osh, struct pktq *pq, int prec,
|
||||
|
@ -176,8 +176,5 @@ extern uint osl_pci_slot(struct osl_info *osh);
|
||||
} while (0)
|
||||
#endif /* IL_BIGENDIAN */
|
||||
|
||||
/* packet primitives */
|
||||
extern struct sk_buff *pkt_buf_get_skb(struct osl_info *osh, uint len);
|
||||
extern void pkt_buf_free_skb(struct osl_info *osh, struct sk_buff *skb, bool send);
|
||||
|
||||
#endif /* _osl_h_ */
|
||||
|
@ -30,6 +30,52 @@
|
||||
#include <proto/802.1d.h>
|
||||
#include <proto/802.11.h>
|
||||
|
||||
struct sk_buff *BCMFASTPATH pkt_buf_get_skb(struct osl_info *osh, uint len)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
|
||||
skb = dev_alloc_skb(len);
|
||||
if (skb) {
|
||||
skb_put(skb, len);
|
||||
skb->priority = 0;
|
||||
|
||||
osh->pktalloced++;
|
||||
}
|
||||
|
||||
return skb;
|
||||
}
|
||||
|
||||
/* Free the driver packet. Free the tag if present */
|
||||
void BCMFASTPATH pkt_buf_free_skb(struct osl_info *osh,
|
||||
struct sk_buff *skb, bool send)
|
||||
{
|
||||
struct sk_buff *nskb;
|
||||
int nest = 0;
|
||||
|
||||
ASSERT(skb);
|
||||
|
||||
/* perversion: we use skb->next to chain multi-skb packets */
|
||||
while (skb) {
|
||||
nskb = skb->next;
|
||||
skb->next = NULL;
|
||||
|
||||
if (skb->destructor)
|
||||
/* cannot kfree_skb() on hard IRQ (net/core/skbuff.c) if
|
||||
* destructor exists
|
||||
*/
|
||||
dev_kfree_skb_any(skb);
|
||||
else
|
||||
/* can free immediately (even in_irq()) if destructor
|
||||
* does not exist
|
||||
*/
|
||||
dev_kfree_skb(skb);
|
||||
|
||||
osh->pktalloced--;
|
||||
nest++;
|
||||
skb = nskb;
|
||||
}
|
||||
}
|
||||
|
||||
/* copy a buffer into a pkt buffer chain */
|
||||
uint pktfrombuf(struct osl_info *osh, struct sk_buff *p, uint offset, int len,
|
||||
unsigned char *buf)
|
||||
|
@ -78,51 +78,6 @@ void osl_detach(struct osl_info *osh)
|
||||
kfree(osh);
|
||||
}
|
||||
|
||||
struct sk_buff *BCMFASTPATH pkt_buf_get_skb(struct osl_info *osh, uint len)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
|
||||
skb = dev_alloc_skb(len);
|
||||
if (skb) {
|
||||
skb_put(skb, len);
|
||||
skb->priority = 0;
|
||||
|
||||
osh->pktalloced++;
|
||||
}
|
||||
|
||||
return skb;
|
||||
}
|
||||
|
||||
/* Free the driver packet. Free the tag if present */
|
||||
void BCMFASTPATH pkt_buf_free_skb(struct osl_info *osh, struct sk_buff *skb, bool send)
|
||||
{
|
||||
struct sk_buff *nskb;
|
||||
int nest = 0;
|
||||
|
||||
ASSERT(skb);
|
||||
|
||||
/* perversion: we use skb->next to chain multi-skb packets */
|
||||
while (skb) {
|
||||
nskb = skb->next;
|
||||
skb->next = NULL;
|
||||
|
||||
if (skb->destructor)
|
||||
/* cannot kfree_skb() on hard IRQ (net/core/skbuff.c) if
|
||||
* destructor exists
|
||||
*/
|
||||
dev_kfree_skb_any(skb);
|
||||
else
|
||||
/* can free immediately (even in_irq()) if destructor
|
||||
* does not exist
|
||||
*/
|
||||
dev_kfree_skb(skb);
|
||||
|
||||
osh->pktalloced--;
|
||||
nest++;
|
||||
skb = nskb;
|
||||
}
|
||||
}
|
||||
|
||||
/* return bus # for the pci device pointed by osh->pdev */
|
||||
uint osl_pci_bus(struct osl_info *osh)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user