brcm80211: util: move brcmu_pktfrombuf() function to brcmfmac
The function brcmu_pktfrombuf was only used in the brcmfmac source and has been moved there. It has been refactored to match its use. Reported-by: Johannes Berg <johannes@sipsolutions.net> Reviewed-by: Roland Vossen <rvossen@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
1433c59bcc
commit
20e5ca1639
|
@ -1222,6 +1222,28 @@ static void brcmf_sdbrcm_rxfail(struct brcmf_bus *bus, bool abort, bool rtx)
|
|||
bus->drvr->busstate = BRCMF_BUS_DOWN;
|
||||
}
|
||||
|
||||
/* copy a buffer into a pkt buffer chain */
|
||||
static uint brcmf_sdbrcm_glom_from_buf(struct brcmf_bus *bus, uint len)
|
||||
{
|
||||
uint n, ret = 0;
|
||||
struct sk_buff *p;
|
||||
u8 *buf;
|
||||
|
||||
p = bus->glom;
|
||||
buf = bus->dataptr;
|
||||
|
||||
/* copy the data */
|
||||
for (; p && len; p = p->next) {
|
||||
n = min_t(uint, p->len, len);
|
||||
memcpy(p->data, buf, n);
|
||||
buf += n;
|
||||
len -= n;
|
||||
ret += n;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static u8 brcmf_sdbrcm_rxglom(struct brcmf_bus *bus, u8 rxseq)
|
||||
{
|
||||
u16 dlen, totlen;
|
||||
|
@ -1354,8 +1376,7 @@ static u8 brcmf_sdbrcm_rxglom(struct brcmf_bus *bus, u8 rxseq)
|
|||
SDIO_FUNC_2,
|
||||
F2SYNC, bus->dataptr, dlen,
|
||||
NULL);
|
||||
sublen = (u16) brcmu_pktfrombuf(pfirst, 0, dlen,
|
||||
bus->dataptr);
|
||||
sublen = (u16) brcmf_sdbrcm_glom_from_buf(bus, dlen);
|
||||
if (sublen != dlen) {
|
||||
brcmf_dbg(ERROR, "FAILED TO COPY, dlen %d sublen %d\n",
|
||||
dlen, sublen);
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include <brcmu_utils.h>
|
||||
|
||||
MODULE_AUTHOR("Broadcom Corporation");
|
||||
|
@ -66,36 +67,6 @@ void brcmu_pkt_buf_free_skb(struct sk_buff *skb)
|
|||
EXPORT_SYMBOL(brcmu_pkt_buf_free_skb);
|
||||
|
||||
|
||||
/* copy a buffer into a pkt buffer chain */
|
||||
uint brcmu_pktfrombuf(struct sk_buff *p, uint offset, int len,
|
||||
unsigned char *buf)
|
||||
{
|
||||
uint n, ret = 0;
|
||||
|
||||
/* skip 'offset' bytes */
|
||||
for (; p && offset; p = p->next) {
|
||||
if (offset < (uint) (p->len))
|
||||
break;
|
||||
offset -= p->len;
|
||||
}
|
||||
|
||||
if (!p)
|
||||
return 0;
|
||||
|
||||
/* copy the data */
|
||||
for (; p && len; p = p->next) {
|
||||
n = min((uint) (p->len) - offset, (uint) len);
|
||||
memcpy(p->data + offset, buf, n);
|
||||
buf += n;
|
||||
len -= n;
|
||||
ret += n;
|
||||
offset = 0;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(brcmu_pktfrombuf);
|
||||
|
||||
/* return total length of buffer chain */
|
||||
uint brcmu_pkttotlen(struct sk_buff *p)
|
||||
{
|
||||
|
|
|
@ -173,8 +173,6 @@ extern void brcmu_pktq_flush(struct pktq *pq, bool dir,
|
|||
|
||||
/* externs */
|
||||
/* packet */
|
||||
extern uint brcmu_pktfrombuf(struct sk_buff *p,
|
||||
uint offset, int len, unsigned char *buf);
|
||||
extern uint brcmu_pkttotlen(struct sk_buff *p);
|
||||
|
||||
/* ip address */
|
||||
|
|
Loading…
Reference in New Issue