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:
Родитель
667931e8aa
Коммит
c8cce1f9a7
|
@ -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
|
||||||
|
|
Загрузка…
Ссылка в новой задаче