brcmfmac: fix brcmf_sdcard_send_pkt() for host without sg support

If the host does not support scatter-gather transmit the packets
in the pktq individually using brcmf_sdio_buffrw().

Reviewed-by: Franky Lin <frankyl@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@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:
Arend van Spriel 2013-10-15 15:44:55 +02:00 коммит произвёл John W. Linville
Родитель 667931e8aa
Коммит c8cce1f9a7
1 изменённых файлов: 11 добавлений и 3 удалений

Просмотреть файл

@ -620,6 +620,7 @@ int
brcmf_sdcard_send_pkt(struct brcmf_sdio_dev *sdiodev, u32 addr, uint fn, brcmf_sdcard_send_pkt(struct brcmf_sdio_dev *sdiodev, u32 addr, uint fn,
uint flags, struct sk_buff_head *pktq) uint flags, struct sk_buff_head *pktq)
{ {
struct sk_buff *skb;
uint width; uint width;
int err; int err;
@ -631,9 +632,16 @@ brcmf_sdcard_send_pkt(struct brcmf_sdio_dev *sdiodev, u32 addr, uint fn,
if (err) if (err)
return err; return err;
if (pktq->qlen == 1) if (pktq->qlen == 1 || !sdiodev->sg_support)
return brcmf_sdio_buffrw(sdiodev, fn, true, addr, pktq->next); skb_queue_walk(pktq, skb) {
return brcmf_sdio_sglist_rw(sdiodev, fn, true, addr, pktq); err = brcmf_sdio_buffrw(sdiodev, fn, true, addr, skb);
if (err)
break;
}
else
err = brcmf_sdio_sglist_rw(sdiodev, fn, true, addr, pktq);
return err;
} }
int int