[PATCH 3/3] staging: brcm80211: replaced PKTSETLEN macro by native __skb_trim call

Arend van Spriel arend at broadcom.com
Wed Nov 17 14:39:44 UTC 2010


>From 37825730d6b61462211908e7bc287a153525aecf Mon Sep 17 00:00:00 2001
From: Arend van Spriel <arend at broadcom.com>
Date: Sun, 14 Nov 2010 14:08:56 +0100
Subject: [PATCH 3/3] staging: brcm80211: replaced PKTSETLEN macro by native __skb_trim call

- removed PKTSETLEN macro.
- removed unused PKT... macros.

Reviewed-by: Henry Ptasinski <henryp at broadcom.com>
Reviewed-by: Brett Rudley <brudley at broadcom.com>
Signed-off-by: Arend van Spriel <arend at broadcom.com>
---
drivers/staging/brcm80211/brcmfmac/dhd_sdio.c |    8 ++++----
drivers/staging/brcm80211/include/linux_osl.h |    4 +---
drivers/staging/brcm80211/sys/wlc_mac80211.c  |    2 +-
drivers/staging/brcm80211/util/hnddma.c       |    4 ++--
4 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c b/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c
index c822505..a7c02db 100644
--- a/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c
+++ b/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c
@@ -358,23 +358,23 @@ extern void bcmsdh_enable_hw_oob_intr(void *sdh, bool enable);
#error OOB_INTR_ONLY is NOT working with SDIO_ISR_THREAD
#endif	/* defined(OOB_INTR_ONLY) && defined(SDIO_ISR_THREAD) */
#define PKTALIGN(osh, p, len, align)					 	do {								 		uint datalign;						 		datalign = (unsigned long)PKTDATA((p));			 		datalign = roundup(datalign, (align)) - datalign;	 		ASSERT(datalign < (align));				 		ASSERT(PKTLEN((p)) >= ((len) + datalign));	 		if (datalign)						 			skb_pull((p), datalign);			-		PKTSETLEN((p), (len));				+		__skb_trim((p), (len));				 	} while (0)

/* Limit on rounding up frames */
static const uint max_roundup = 512;

/* Try doing readahead */
static bool dhd_readahead;

/* To check if there's window offered */
#define DATAOK(bus)  	(((u8)(bus->tx_max - bus->tx_seq) != 0) && @@ -3512,23 +3512,23 @@ static u8 dhdsdio_rxglom(dhd_bus_t *bus, u8 rxseq)
if (rxseq != seq) {
DHD_GLOM(("%s: rx_seq %d, expected %dn",
__func__, seq, rxseq));
bus->rx_badseq++;
rxseq = seq;
}
#ifdef DHD_DEBUG
if (DHD_BYTES_ON() && DHD_DATA_ON())
prhex("Rx Subframe Data", dptr, dlen);
#endif

-			PKTSETLEN(pfirst, sublen);
+			__skb_trim(pfirst, sublen);
skb_pull(pfirst, doff);

if (PKTLEN(pfirst) == 0) {
PKTFREE(bus->dhd->osh, pfirst, false);
if (plast) {
PKTSETNEXT(plast, pnext);
} else {
ASSERT(save_pfirst == pfirst);
save_pfirst = pnext;
}
continue;
@@ -4142,36 +4142,36 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished)
deliver:
/* Save superframe descriptor and allocate packet frame */
if (chan == SDPCM_GLOM_CHANNEL) {
if (SDPCM_GLOMDESC(&bus->rxhdr[SDPCM_FRAMETAG_LEN])) {
DHD_GLOM(("%s: glom descriptor, %d bytes:n",
__func__, len));
#ifdef DHD_DEBUG
if (DHD_GLOM_ON()) {
prhex("Glom Data", PKTDATA(pkt), len);
}
#endif
-				PKTSETLEN(pkt, len);
+				__skb_trim(pkt, len);
ASSERT(doff == SDPCM_HDRLEN);
skb_pull(pkt, SDPCM_HDRLEN);
bus->glomd = pkt;
} else {
DHD_ERROR(("%s: glom superframe w/o "
"descriptor!n", __func__));
dhdsdio_rxfail(bus, false, false);
}
continue;
}

/* Fill in packet len and prio, deliver upward */
-		PKTSETLEN(pkt, len);
+		__skb_trim(pkt, len);
skb_pull(pkt, doff);

#ifdef SDTEST
/* Test channel packets are processed separately */
if (chan == SDPCM_TEST_CHANNEL) {
dhdsdio_testrcv(bus, pkt, seq);
continue;
}
#endif				/* SDTEST */

if (PKTLEN(pkt) == 0) {
diff --git a/drivers/staging/brcm80211/include/linux_osl.h b/drivers/staging/brcm80211/include/linux_osl.h
index 379c35a..377517e 100644
--- a/drivers/staging/brcm80211/include/linux_osl.h
+++ b/drivers/staging/brcm80211/include/linux_osl.h
@@ -273,26 +273,24 @@ extern void osl_dma_unmap(osl_t *osh, uint pa, uint size, int direction);

/* packet primitives */
#define	PKTGET(osh, len, send)		osl_pktget((osh), (len))
#define	PKTFREE(osh, skb, send)		osl_pktfree((osh), (skb), (send))
#define	PKTDATA(skb)		(((struct sk_buff *)(skb))->data)
#define	PKTLEN(skb)		(((struct sk_buff *)(skb))->len)
#define PKTHEADROOM(skb)		(PKTDATA(skb)-(((struct sk_buff *)(skb))->head))
#define PKTTAILROOM(skb) ((((struct sk_buff *)(skb))->end)-(((struct sk_buff *)(skb))->tail))
#define	PKTNEXT(skb)		(((struct sk_buff *)(skb))->next)
#define	PKTSETNEXT(skb, x)	 	(((struct sk_buff *)(skb))->next = (struct sk_buff *)(x))
-#define	PKTSETLEN(skb, len)	__skb_trim((struct sk_buff *)(skb), (len))
#define PKTALLOCED(osh)		(((osl_pubinfo_t *)(osh))->pktalloced)
-#define PKTSETPOOL(osh, skb, x, y)	do {} while (0)
-#define PKTPOOL(osh, skb)		false
+
extern void *osl_pktget(osl_t *osh, uint len);
extern void osl_pktfree(osl_t *osh, void *skb, bool send);

#ifdef BRCM_FULLMAC
extern void *osl_pktget_static(osl_t *osh, uint len);
extern void osl_pktfree_static(osl_t *osh, void *skb, bool send);

static inline void *
osl_pkt_frmnative(osl_pubinfo_t *osh, struct sk_buff *skb)
{
struct sk_buff *nskb;
diff --git a/drivers/staging/brcm80211/sys/wlc_mac80211.c b/drivers/staging/brcm80211/sys/wlc_mac80211.c
index e161ccb..16d9f9f 100644
--- a/drivers/staging/brcm80211/sys/wlc_mac80211.c
+++ b/drivers/staging/brcm80211/sys/wlc_mac80211.c
@@ -7155,23 +7155,23 @@ wlc_recvctl(wlc_info_t *wlc, osl_t *osh, d11rxhdr_t *rxh, void *p)
* Cache plcp for first MPDU of AMPD and use chacched version for INTERMEDIATE.
* Test for INTERMEDIATE  like so:
* if (!(plcp[0] | plcp[1] | plcp[2]))
*/

memset(&rx_status, 0, sizeof(rx_status));
prep_mac80211_status(wlc, rxh, p, &rx_status);

/* mac header+body length, exclude CRC and plcp header */
len_mpdu = PKTLEN(p) - D11_PHY_HDR_LEN - DOT11_FCS_LEN;
skb_pull(p, D11_PHY_HDR_LEN);
-	PKTSETLEN(p, len_mpdu);
+	__skb_trim(p, len_mpdu);

ASSERT(!PKTNEXT(p));
ASSERT(!PKTLINK(p));

ASSERT(IS_ALIGNED((unsigned long)skb->data, 2));

memcpy(IEEE80211_SKB_RXCB(p), &rx_status, sizeof(rx_status));
ieee80211_rx_irqsafe(wlc->pub->ieee_hw, p);

WLCNTINCR(wlc->pub->_cnt->ieee_rx);
PKTUNALLOC(osh);
diff --git a/drivers/staging/brcm80211/util/hnddma.c b/drivers/staging/brcm80211/util/hnddma.c
index 38bc6d7..8fe476e 100644
--- a/drivers/staging/brcm80211/util/hnddma.c
+++ b/drivers/staging/brcm80211/util/hnddma.c
@@ -995,32 +995,32 @@ static void *BCMFASTPATH _dma_rx(dma_info_t *di)
#if defined(__mips__)
if (!len) {
while (!(len = *(u16 *) OSL_UNCACHED(PKTDATA(head))))
udelay(1);

*(u16 *) PKTDATA(head) = htol16((u16) len);
}
#endif				/* defined(__mips__) */

/* set actual length */
pkt_len = min((di->rxoffset + len), di->rxbufsize);
-	PKTSETLEN(head, pkt_len);
+	__skb_trim(head, pkt_len);
resid = len - (di->rxbufsize - di->rxoffset);

/* check for single or multi-buffer rx */
if (resid > 0) {
tail = head;
while ((resid > 0) && (p = _dma_getnextrxp(di, false))) {
PKTSETNEXT(tail, p);
pkt_len = min(resid, (int)di->rxbufsize);
-			PKTSETLEN(p, pkt_len);
+			__skb_trim(p, pkt_len);

tail = p;
resid -= di->rxbufsize;
}

#ifdef BCMDBG
if (resid > 0) {
uint cur;
ASSERT(p == NULL);
cur = (DMA64_ENAB(di) && DMA64_MODE(di)) ?
B2I(((R_REG(di->osh, &di->d64rxregs->status0) &
--
1.7.1





More information about the devel mailing list