Folks, I mangled the "Reply-to" field in previous email (missing closing angle bracket): Reply-to: Grant@xxxxxxxxxx, "Grundler <grundler"@chromium.org Please correct. Fortunately, grant@xxxxxxxxxx will just bounce and not annoy someone else. apologies, grant On Wed, May 4, 2011 at 9:59 AM, Grant Grundler <grundler@xxxxxxxxxxxx> wrote: > misc coding style cleanups to dhd_sdio/sdmmc > > o replace PKTFREE2 macro with static dhdsdio_pktfree2() > o drop "delta" local var > o drop GSPI_PR55150_BAILOUT > o reformat some of the comments (white space changes) > o drop dhd_bcmsdh_recv_buf wrapper and directly call bcmsdh_recv_buf > > Signed-off-by: Grant Grundler <grundler@xxxxxxxxxxxx> > > --- > Compile tested only. I don't expect any functional changes here. > Rebased on top of Arend's "May 3rd" patch set: > Â Âhttp://driverdev.linuxdriverproject.org/pipermail/devel/2011-May/015631.html > > > diff --git a/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c b/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c > index 05f50d3..25fbd9c 100644 > --- a/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c > +++ b/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c > @@ -1013,17 +1013,16 @@ sdioh_request_packet(sdioh_info_t *sd, uint fix_inc, uint write, uint func, > > Â/* > Â* This function takes a buffer or packet, and fixes everything up > - * so that in the > - * end, a DMA-able packet is created. > + * so that in the end, a DMA-able packet is created. > Â* > Â* A buffer does not have an associated packet pointer, > Â* and may or may not be aligned. > Â* A packet may consist of a single packet, or a packet chain. > - * If it is a packet chain, > - * then all the packets in the chain must be properly aligned. > - * If the packet data is not > - * aligned, then there may only be one packet, and in this case, > - * it is copied to a new > + * If it is a packet chain, then all the packets in the chain > + * must be properly aligned. > + * > + * If the packet data is not aligned, then there may only be > + * one packet, and in this case, Âit is copied to a new > Â* aligned packet. > Â* > Â*/ > diff --git a/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c b/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c > index 0c248aa..4bfd8d8 100644 > --- a/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c > +++ b/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c > @@ -135,12 +135,6 @@ > Â/* Flags for SDH calls */ > Â#define F2SYNC (SDIO_REQ_4BYTE | SDIO_REQ_FIXED) > > -/* Packet free applicable unconditionally for sdio and sdspi. ÂConditional if > - * bufpool was present for gspi bus. > - */ > -#define PKTFREE2() Â Â Â Â Â Â if ((bus->bus != SPI_BUS) || bus->usebufpool) \ > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â pkt_buf_free_skb(pkt); > - > Â/* > Â* Conversion of 802.1D priority to precedence level > Â*/ > @@ -436,8 +430,6 @@ do { \ > > Â#define HOSTINTMASK Â Â Â Â Â Â(I_HMB_SW_MASK | I_CHIPACTIVE) > > -#define GSPI_PR55150_BAILOUT > - > Â#ifdef SDTEST > Âstatic void dhdsdio_testrcv(dhd_bus_t *bus, void *pkt, uint seq); > Âstatic void dhdsdio_sdtest_set(dhd_bus_t *bus, bool start); > @@ -462,10 +454,6 @@ static void dhdsdio_release_dongle(dhd_bus_t *bus); > Âstatic uint process_nvram_vars(char *varbuf, uint len); > > Âstatic void dhd_dongle_setmemsize(struct dhd_bus *bus, int mem_size); > -static int dhd_bcmsdh_recv_buf(dhd_bus_t *bus, u32 addr, uint fn, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âuint flags, u8 *buf, uint nbytes, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âstruct sk_buff *pkt, bcmsdh_cmplt_fn_t complete, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âvoid *handle); > Âstatic int dhd_bcmsdh_send_buf(dhd_bus_t *bus, u32 addr, uint fn, > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â uint flags, u8 *buf, uint nbytes, > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â struct sk_buff *pkt, bcmsdh_cmplt_fn_t complete, > @@ -486,6 +474,17 @@ static void dhdsdio_sdiod_drive_strength_init(struct dhd_bus *bus, > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âu32 drivestrength); > Âstatic void dhdsdio_chip_detach(struct dhd_bus *bus); > > +/* Packet free applicable unconditionally for sdio and sdspi. > + * Conditional if bufpool was present for gspi bus. > + */ > +static void dhdsdio_pktfree2(dhd_bus_t *bus, struct sk_buff *pkt) > +{ > + Â Â Â dhd_os_sdlock_rxq(bus->dhd); > + Â Â Â if ((bus->bus != SPI_BUS) || bus->usebufpool) > + Â Â Â Â Â Â Â pkt_buf_free_skb(pkt); > + Â Â Â dhd_os_sdunlock_rxq(bus->dhd); > +} > + > Âstatic void dhd_dongle_setmemsize(struct dhd_bus *bus, int mem_size) > Â{ > Â Â Â Âs32 min_size = DONGLE_MIN_MEMSIZE; > @@ -3100,10 +3099,9 @@ dhdsdio_read_control(dhd_bus_t *bus, u8 *hdr, uint len, uint doff) > Â Â Â Â} > > Â Â Â Â/* Read remainder of frame body into the rxctl buffer */ > - Â Â Â sdret = > - Â Â Â Â Â dhd_bcmsdh_recv_buf(bus, bcmsdh_cur_sbwad(sdh), SDIO_FUNC_2, F2SYNC, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â (bus->rxctl + firstread), rdlen, NULL, NULL, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â NULL); > + Â Â Â sdret = bcmsdh_recv_buf(bus, bcmsdh_cur_sbwad(sdh), SDIO_FUNC_2, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â F2SYNC, (bus->rxctl + firstread), rdlen, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â NULL, NULL, NULL); > Â Â Â Âbus->f2rxdata++; > Â Â Â ÂASSERT(sdret != -BCME_PENDING); > > @@ -3264,20 +3262,16 @@ static u8 dhdsdio_rxglom(dhd_bus_t *bus, u8 rxseq) > Â Â Â Â Â Â Â Â * packet and and copy into the chain. > Â Â Â Â Â Â Â Â */ > Â Â Â Â Â Â Â Âif (usechain) { > - Â Â Â Â Â Â Â Â Â Â Â errcode = dhd_bcmsdh_recv_buf(bus, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bcmsdh_cur_sbwad > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â (bus->sdh), SDIO_FUNC_2, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â F2SYNC, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â (u8 *) pfirst->data, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dlen, pfirst, NULL, NULL); > + Â Â Â Â Â Â Â Â Â Â Â errcode = bcmsdh_recv_buf(bus, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bcmsdh_cur_sbwad(bus->sdh), SDIO_FUNC_2, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â F2SYNC, (u8 *) pfirst->data, dlen, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â pfirst, NULL, NULL); > Â Â Â Â Â Â Â Â} else if (bus->dataptr) { > - Â Â Â Â Â Â Â Â Â Â Â errcode = dhd_bcmsdh_recv_buf(bus, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bcmsdh_cur_sbwad > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â (bus->sdh), SDIO_FUNC_2, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â F2SYNC, bus->dataptr, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dlen, NULL, NULL, NULL); > - Â Â Â Â Â Â Â Â Â Â Â sublen = > - Â Â Â Â Â Â Â Â Â Â Â Â Â (u16) pktfrombuf(pfirst, 0, dlen, > + Â Â Â Â Â Â Â Â Â Â Â errcode = bcmsdh_recv_buf(bus, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bcmsdh_cur_sbwad(bus->sdh), SDIO_FUNC_2, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â F2SYNC, bus->dataptr, dlen, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â NULL, NULL, NULL); > + Â Â Â Â Â Â Â Â Â Â Â sublen = (u16) pktfrombuf(pfirst, 0, dlen, > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âbus->dataptr); > Â Â Â Â Â Â Â Â Â Â Â Âif (sublen != dlen) { > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂDHD_ERROR(("%s: FAILED TO COPY, dlen %d sublen %d\n", > @@ -3544,7 +3538,6 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Âu16 len, check; /* Extracted hardware header fields */ > Â Â Â Âu8 chan, seq, doff; Â Â /* Extracted software header fields */ > Â Â Â Âu8 fcbits; Â Â Â Â Â Â Â/* Extracted fcbits from software header */ > - Â Â Â u8 delta; > > Â Â Â Âstruct sk_buff *pkt; Â Â Â Â Â Â/* Packet for event or data frames */ > Â Â Â Âu16 pad; Â Â Â Â Â Â Â Â/* Number of pad bytes to read */ > @@ -3650,14 +3643,11 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂASSERT(bus->rxctl >= bus->rxbuf); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Ârxbuf = bus->rxctl; > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â/* Read the entire frame */ > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â sdret = dhd_bcmsdh_recv_buf(bus, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bcmsdh_cur_sbwad > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â (sdh), > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â SDIO_FUNC_2, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â F2SYNC, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â rxbuf, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â rdlen, NULL, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â NULL, NULL); > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â sdret = bcmsdh_recv_buf(bus, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bcmsdh_cur_sbwad(sdh), > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â SDIO_FUNC_2, F2SYNC, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â rxbuf, rdlen, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â NULL, NULL, NULL); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âbus->f2rxdata++; > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂASSERT(sdret != -BCME_PENDING); > > @@ -3694,12 +3684,11 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂPKTALIGN(pkt, rdlen, DHD_SDALIGN); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Ârxbuf = (u8 *) (pkt->data); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â/* Read the entire frame */ > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â sdret = > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_bcmsdh_recv_buf(bus, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â sdret = bcmsdh_recv_buf(bus, > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âbcmsdh_cur_sbwad(sdh), > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂSDIO_FUNC_2, F2SYNC, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â rxbuf, rdlen, pkt, NULL, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â NULL); > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â rxbuf, rdlen, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â pkt, NULL, NULL); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âbus->f2rxdata++; > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂASSERT(sdret != -BCME_PENDING); > > @@ -3733,23 +3722,19 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Â Â Â Â Â Â Â Â Âif (!(len | check)) { > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂDHD_INFO(("%s (nextlen): read zeros in HW " > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â"header???\n", __func__)); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â PKTFREE2(); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdunlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â GSPI_PR55150_BAILOUT; > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhdsdio_pktfree2(bus, pkt); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âcontinue; > Â Â Â Â Â Â Â Â Â Â Â Â} > > Â Â Â Â Â Â Â Â Â Â Â Â/* Validate check bytes */ > Â Â Â Â Â Â Â Â Â Â Â Âif ((u16)~(len ^ check)) { > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â DHD_ERROR(("%s (nextlen): HW hdr error: nextlen/len/check" " 0x%04x/0x%04x/0x%04x\n", > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â DHD_ERROR(("%s (nextlen): HW hdr error:" > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â " nextlen/len/check" > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â " 0x%04x/0x%04x/0x%04x\n", > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â__func__, nextlen, len, check)); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â PKTFREE2(); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdunlock_rxq(bus->dhd); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âbus->rx_badhdr++; > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âdhdsdio_rxfail(bus, false, false); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â GSPI_PR55150_BAILOUT; > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhdsdio_pktfree2(bus, pkt); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âcontinue; > Â Â Â Â Â Â Â Â Â Â Â Â} > > @@ -3757,10 +3742,7 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Â Â Â Â Â Â Â Â Âif (len < SDPCM_HDRLEN) { > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂDHD_ERROR(("%s (nextlen): HW hdr length " > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â"invalid: %d\n", __func__, len)); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â PKTFREE2(); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdunlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â GSPI_PR55150_BAILOUT; > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhdsdio_pktfree2(bus, pkt); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âcontinue; > Â Â Â Â Â Â Â Â Â Â Â Â} > > @@ -3769,31 +3751,25 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Â Â Â Â Â Â Â Â Âif (len_consistent) { > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â/* Mismatch, force retry w/normal > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âheader (may be >4K) */ > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â DHD_ERROR(("%s (nextlen): mismatch, nextlen %d len %d rnd %d; " "expected rxseq %d\n", > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â DHD_ERROR(("%s (nextlen): mismatch, " > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â "nextlen %d len %d rnd %d; " > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â "expected rxseq %d\n", > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â__func__, nextlen, > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âlen, roundup(len, 16), rxseq)); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â PKTFREE2(); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdunlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhdsdio_rxfail(bus, true, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â(bus->bus == > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â SPI_BUS) ? false : true); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â GSPI_PR55150_BAILOUT; > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhdsdio_rxfail(bus, true, (bus->bus != SPI_BUS)); > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhdsdio_pktfree2(bus, pkt); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âcontinue; > Â Â Â Â Â Â Â Â Â Â Â Â} > > Â Â Â Â Â Â Â Â Â Â Â Â/* Extract software header fields */ > - Â Â Â Â Â Â Â Â Â Â Â chan = > - Â Â Â Â Â Â Â Â Â Â Â Â Â SDPCM_PACKET_CHANNEL(&bus->rxhdr > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â[SDPCM_FRAMETAG_LEN]); > - Â Â Â Â Â Â Â Â Â Â Â seq = > - Â Â Â Â Â Â Â Â Â Â Â Â Â SDPCM_PACKET_SEQUENCE(&bus->rxhdr > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â [SDPCM_FRAMETAG_LEN]); > - Â Â Â Â Â Â Â Â Â Â Â doff = > - Â Â Â Â Â Â Â Â Â Â Â Â Â SDPCM_DOFFSET_VALUE(&bus->rxhdr > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â [SDPCM_FRAMETAG_LEN]); > - Â Â Â Â Â Â Â Â Â Â Â txmax = > - Â Â Â Â Â Â Â Â Â Â Â Â Â SDPCM_WINDOW_VALUE(&bus->rxhdr[SDPCM_FRAMETAG_LEN]); > + Â Â Â Â Â Â Â Â Â Â Â chan = SDPCM_PACKET_CHANNEL( > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â &bus->rxhdr[SDPCM_FRAMETAG_LEN]); > + Â Â Â Â Â Â Â Â Â Â Â seq = SDPCM_PACKET_SEQUENCE( > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â &bus->rxhdr[SDPCM_FRAMETAG_LEN]); > + Â Â Â Â Â Â Â Â Â Â Â doff = SDPCM_DOFFSET_VALUE( > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â &bus->rxhdr[SDPCM_FRAMETAG_LEN]); > + Â Â Â Â Â Â Â Â Â Â Â txmax = SDPCM_WINDOW_VALUE( > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â &bus->rxhdr[SDPCM_FRAMETAG_LEN]); > > Â Â Â Â Â Â Â Â Â Â Â Âbus->nextlen = > Â Â Â Â Â Â Â Â Â Â Â Â Â Âbus->rxhdr[SDPCM_FRAMETAG_LEN + > @@ -3805,21 +3781,18 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Â Â Â Â Â Â Â Â Â} > > Â Â Â Â Â Â Â Â Â Â Â Âbus->dhd->rx_readahead_cnt++; > + > Â Â Â Â Â Â Â Â Â Â Â Â/* Handle Flow Control */ > - Â Â Â Â Â Â Â Â Â Â Â fcbits = > - Â Â Â Â Â Â Â Â Â Â Â Â Â SDPCM_FCMASK_VALUE(&bus->rxhdr[SDPCM_FRAMETAG_LEN]); > + Â Â Â Â Â Â Â Â Â Â Â fcbits = SDPCM_FCMASK_VALUE( > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â &bus->rxhdr[SDPCM_FRAMETAG_LEN]); > > - Â Â Â Â Â Â Â Â Â Â Â delta = 0; > - Â Â Â Â Â Â Â Â Â Â Â if (~bus->flowcontrol & fcbits) { > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bus->fc_xoff++; > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â delta = 1; > - Â Â Â Â Â Â Â Â Â Â Â } > - Â Â Â Â Â Â Â Â Â Â Â if (bus->flowcontrol & ~fcbits) { > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bus->fc_xon++; > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â delta = 1; > - Â Â Â Â Â Â Â Â Â Â Â } > + Â Â Â Â Â Â Â Â Â Â Â if (bus->flowcontrol != fcbits) { > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â if (~bus->flowcontrol & fcbits) > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bus->fc_xoff++; > + > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â if (bus->flowcontrol & ~fcbits) > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bus->fc_xon++; > > - Â Â Â Â Â Â Â Â Â Â Â if (delta) { > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âbus->fc_rcvd++; > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âbus->flowcontrol = fcbits; > Â Â Â Â Â Â Â Â Â Â Â Â} > @@ -3852,23 +3825,15 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âif (bus->bus == SPI_BUS) { > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âdhdsdio_read_control(bus, rxbuf, len, > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â doff); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â if (bus->usebufpool) { > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â pkt_buf_free_skb(pkt); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdunlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â } > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â continue; > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â} else { > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂDHD_ERROR(("%s (nextlen): readahead on control" " packet %d?\n", > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â__func__, seq)); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â/* Force retry w/normal header read */ > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âbus->nextlen = 0; > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âdhdsdio_rxfail(bus, false, true); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â PKTFREE2(); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdunlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â continue; > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â} > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhdsdio_pktfree2(bus, pkt); > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â continue; > Â Â Â Â Â Â Â Â Â Â Â Â} > > Â Â Â Â Â Â Â Â Â Â Â Âif ((bus->bus == SPI_BUS) && !bus->usebufpool) { > @@ -3881,11 +3846,8 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Â Â Â Â Â Â Â Â Âif ((doff < SDPCM_HDRLEN) || (doff > len)) { > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂDHD_ERROR(("%s (nextlen): bad data offset %d: HW len %d min %d\n", > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â__func__, doff, len, SDPCM_HDRLEN)); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â PKTFREE2(); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhd_os_sdunlock_rxq(bus->dhd); > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ASSERT(0); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âdhdsdio_rxfail(bus, false, false); > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dhdsdio_pktfree2(bus, pkt); > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âcontinue; > Â Â Â Â Â Â Â Â Â Â Â Â} > > @@ -3897,10 +3859,9 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Â Â Â Â Â Â Â Â Âbreak; > > Â Â Â Â Â Â Â Â/* Read frame header (hardware and software) */ > - Â Â Â Â Â Â Â sdret = > - Â Â Â Â Â Â Â Â Â dhd_bcmsdh_recv_buf(bus, bcmsdh_cur_sbwad(sdh), SDIO_FUNC_2, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â F2SYNC, bus->rxhdr, firstread, NULL, > - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â NULL, NULL); > + Â Â Â Â Â Â Â sdret = bcmsdh_recv_buf(bus, bcmsdh_cur_sbwad(sdh), > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â SDIO_FUNC_2, F2SYNC, bus->rxhdr, firstread, > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â NULL, NULL, NULL); > Â Â Â Â Â Â Â Âbus->f2rxhdrs++; > Â Â Â Â Â Â Â ÂASSERT(sdret != -BCME_PENDING); > > @@ -3972,17 +3933,13 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Â Â Â Â Â/* Handle Flow Control */ > Â Â Â Â Â Â Â Âfcbits = SDPCM_FCMASK_VALUE(&bus->rxhdr[SDPCM_FRAMETAG_LEN]); > > - Â Â Â Â Â Â Â delta = 0; > - Â Â Â Â Â Â Â if (~bus->flowcontrol & fcbits) { > - Â Â Â Â Â Â Â Â Â Â Â bus->fc_xoff++; > - Â Â Â Â Â Â Â Â Â Â Â delta = 1; > - Â Â Â Â Â Â Â } > - Â Â Â Â Â Â Â if (bus->flowcontrol & ~fcbits) { > - Â Â Â Â Â Â Â Â Â Â Â bus->fc_xon++; > - Â Â Â Â Â Â Â Â Â Â Â delta = 1; > - Â Â Â Â Â Â Â } > + Â Â Â Â Â Â Â if (bus->flowcontrol != fcbits) { > + Â Â Â Â Â Â Â Â Â Â Â if (~bus->flowcontrol & fcbits) > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bus->fc_xoff++; > + > + Â Â Â Â Â Â Â Â Â Â Â if (bus->flowcontrol & ~fcbits) > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bus->fc_xon++; > > - Â Â Â Â Â Â Â if (delta) { > Â Â Â Â Â Â Â Â Â Â Â Âbus->fc_rcvd++; > Â Â Â Â Â Â Â Â Â Â Â Âbus->flowcontrol = fcbits; > Â Â Â Â Â Â Â Â} > @@ -4063,8 +4020,7 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) > Â Â Â Â Â Â Â ÂPKTALIGN(pkt, rdlen, DHD_SDALIGN); > > Â Â Â Â Â Â Â Â/* Read the remaining frame data */ > - Â Â Â Â Â Â Â sdret = > - Â Â Â Â Â Â Â Â Â dhd_bcmsdh_recv_buf(bus, bcmsdh_cur_sbwad(sdh), SDIO_FUNC_2, > + Â Â Â Â Â Â Â sdret = bcmsdh_recv_buf(bus, bcmsdh_cur_sbwad(sdh), SDIO_FUNC_2, > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂF2SYNC, ((u8 *) (pkt->data)), rdlen, > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âpkt, NULL, NULL); > Â Â Â Â Â Â Â Âbus->f2rxdata++; > @@ -4211,16 +4167,16 @@ static u32 dhdsdio_hostmail(dhd_bus_t *bus) > > Â Â Â Â/* > Â Â Â Â * Flow Control has been moved into the RX headers and this out of band > - Â Â Â Â* method isn't used any more. ÂLeae this here for possibly > - Â Â Â Â* remaining backward > - Â Â Â Â* compatible with older dongles > + Â Â Â Â* method isn't used any more. > + Â Â Â Â* remaining backward compatible with older dongles. > Â Â Â Â */ > Â Â Â Âif (hmb_data & HMB_DATA_FC) { > - Â Â Â Â Â Â Â fcbits = > - Â Â Â Â Â Â Â Â Â (hmb_data & HMB_DATA_FCDATA_MASK) >> HMB_DATA_FCDATA_SHIFT; > + Â Â Â Â Â Â Â fcbits = (hmb_data & HMB_DATA_FCDATA_MASK) >> > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â HMB_DATA_FCDATA_SHIFT; > > Â Â Â Â Â Â Â Âif (fcbits & ~bus->flowcontrol) > Â Â Â Â Â Â Â Â Â Â Â Âbus->fc_xoff++; > + > Â Â Â Â Â Â Â Âif (bus->flowcontrol & ~fcbits) > Â Â Â Â Â Â Â Â Â Â Â Âbus->fc_xon++; > > @@ -5900,19 +5856,6 @@ err: > Â Â Â Âreturn bcmerror; > Â} > > -static int > -dhd_bcmsdh_recv_buf(dhd_bus_t *bus, u32 addr, uint fn, uint flags, > - Â Â Â Â Â Â Â Â Â u8 *buf, uint nbytes, struct sk_buff *pkt, > - Â Â Â Â Â Â Â Â Â bcmsdh_cmplt_fn_t complete, void *handle) > -{ > - Â Â Â int status; > - > - Â Â Â /* 4329: GSPI check */ > - Â Â Â status = > - Â Â Â Â Â bcmsdh_recv_buf(bus->sdh, addr, fn, flags, buf, nbytes, pkt, > - Â Â Â Â Â Â Â Â Â Â Â Â Â complete, handle); > - Â Â Â return status; > -} > > Âstatic int > Âdhd_bcmsdh_send_buf(dhd_bus_t *bus, u32 addr, uint fn, uint flags, > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel