Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8cce1f9 authored by Arend van Spriel's avatar Arend van Spriel Committed by John W. Linville
Browse files

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: default avatarFranky Lin <frankyl@broadcom.com>
Reviewed-by: default avatarHante Meuleman <meuleman@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 667931e8
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -620,6 +620,7 @@ int
brcmf_sdcard_send_pkt(struct brcmf_sdio_dev *sdiodev, u32 addr, uint fn,
		      uint flags, struct sk_buff_head *pktq)
{
	struct sk_buff *skb;
	uint width;
	int err;

@@ -631,9 +632,16 @@ brcmf_sdcard_send_pkt(struct brcmf_sdio_dev *sdiodev, u32 addr, uint fn,
	if (err)
		return err;

	if (pktq->qlen == 1)
		return brcmf_sdio_buffrw(sdiodev, fn, true, addr, pktq->next);
	return brcmf_sdio_sglist_rw(sdiodev, fn, true, addr, pktq);
	if (pktq->qlen == 1 || !sdiodev->sg_support)
		skb_queue_walk(pktq, skb) {
			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