summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorArend van Spriel <arend@broadcom.com>2013-04-03 12:40:27 +0200
committerJohn W. Linville <linville@tuxdriver.com>2013-04-03 21:07:03 +0200
commita04278096c14922bf7c701afe5c0c648d427a14d (patch)
tree2352ae4022bf88fb2130d2578d291e93fdeb2d19 /drivers
parentbrcmfmac: correct success flag passed by brcmf_sdbrcm_txpkt() (diff)
downloadlinux-a04278096c14922bf7c701afe5c0c648d427a14d.tar.xz
linux-a04278096c14922bf7c701afe5c0c648d427a14d.zip
brcmfmac: minor optimization of brcmf_sdbrcm_txpkt() function
When taking care of packet alignment to 64-byte boundary padding may be added between SDPCM header and CDC data. It clear both SDPCM header space and padding space. Changed it to only clear padding space. In filling the SDPCM header it uses unaligned access to set SDPCM software header, but preceding code assures it is properly aligned. Signed-off-by: Arend van Spriel <arend@broadcom.com> Change-Id: Iad22f277f3496440ba4d2db771205714774570ac Reviewed-on: http://lb-bun-88.bun.broadcom.com:8080/76 Reviewed-by: Franky Lin <frankyl@broadcom.com> Reviewed-by: Piotr Haber <phaber@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Reviewed-by: Hante Meuleman <meuleman@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
index 535a5ebbed53..4fa19b9fd8d4 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
@@ -1813,8 +1813,7 @@ static int brcmf_sdbrcm_txpkt(struct brcmf_sdio *bus, struct sk_buff *pkt,
} else {
skb_push(pkt, pad);
frame = (u8 *) (pkt->data);
- /* precondition: pad + SDPCM_HDRLEN <= pkt->len */
- memset(frame, 0, pad + SDPCM_HDRLEN);
+ memset(frame + SDPCM_HDRLEN, 0, pad);
}
}
/* precondition: pad < BRCMF_SDALIGN */
@@ -1830,8 +1829,8 @@ static int brcmf_sdbrcm_txpkt(struct brcmf_sdio *bus, struct sk_buff *pkt,
(((pad +
SDPCM_HDRLEN) << SDPCM_DOFFSET_SHIFT) & SDPCM_DOFFSET_MASK);
- put_unaligned_le32(swheader, frame + SDPCM_FRAMETAG_LEN);
- put_unaligned_le32(0, frame + SDPCM_FRAMETAG_LEN + sizeof(swheader));
+ *(((__le32 *) frame) + 1) = cpu_to_le32(swheader);
+ *(((__le32 *) frame) + 2) = 0;
#ifdef DEBUG
tx_packets[pkt->priority]++;