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

Commit 85d2955e authored by Stanislaw Gruszka's avatar Stanislaw Gruszka Committed by Felix Fietkau
Browse files

mt76usb: allocate urb and sg as linear data



Alloc sg table at the end of urb structure. This will increase
cache usage.

Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 7524c63f
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -336,19 +336,19 @@ mt76u_refill_rx(struct mt76_dev *dev, struct urb *urb, int nsgs, gfp_t gfp)
static int
mt76u_urb_alloc(struct mt76_dev *dev, struct mt76_queue_entry *e)
{
	struct urb *urb;
	unsigned int size = sizeof(struct urb);

	urb = usb_alloc_urb(0, GFP_KERNEL);
	if (!urb)
		return -ENOMEM;
	e->urb = urb;
	if (dev->usb.sg_en)
		size += MT_SG_MAX_SIZE * sizeof(struct scatterlist);

	if (dev->usb.sg_en) {
		urb->sg = devm_kcalloc(dev->dev, MT_SG_MAX_SIZE,
				       sizeof(*urb->sg), GFP_KERNEL);
		if (!urb->sg)
	e->urb = kzalloc(size, GFP_KERNEL);
	if (!e->urb)
		return -ENOMEM;
	}

	usb_init_urb(e->urb);

	if (dev->usb.sg_en)
		e->urb->sg = (struct scatterlist *)(e->urb + 1);

	return 0;
}