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: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:

committed by
Felix Fietkau

parent
7524c63f1f
commit
85d2955ea1
@@ -336,19 +336,19 @@ mt76u_refill_rx(struct mt76_dev *dev, struct urb *urb, int nsgs, gfp_t gfp)
|
|||||||
static int
|
static int
|
||||||
mt76u_urb_alloc(struct mt76_dev *dev, struct mt76_queue_entry *e)
|
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 (dev->usb.sg_en)
|
||||||
if (!urb)
|
size += MT_SG_MAX_SIZE * sizeof(struct scatterlist);
|
||||||
return -ENOMEM;
|
|
||||||
e->urb = urb;
|
|
||||||
|
|
||||||
if (dev->usb.sg_en) {
|
e->urb = kzalloc(size, GFP_KERNEL);
|
||||||
urb->sg = devm_kcalloc(dev->dev, MT_SG_MAX_SIZE,
|
if (!e->urb)
|
||||||
sizeof(*urb->sg), GFP_KERNEL);
|
|
||||||
if (!urb->sg)
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
|
||||||
|
usb_init_urb(e->urb);
|
||||||
|
|
||||||
|
if (dev->usb.sg_en)
|
||||||
|
e->urb->sg = (struct scatterlist *)(e->urb + 1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user