mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-04 18:19:28 +09:00
mt76: mt76u: add queue parameter to mt76u_rx_urb_alloc
Add mt76_queue parameter to mt76u_rx_urb_alloc signature since this routine will be used to allocate urbs for mcu hw queue used by new chipset generation (e.g. mt7663u). Check sg_max_size in in mt76u_urb_alloc in order to use linear urb for mcu queue Co-developed-by: Sean Wang <sean.wang@mediatek.com> Signed-off-by: Sean Wang <sean.wang@mediatek.com> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
committed by
Felix Fietkau
parent
63deaab0dd
commit
87999d4e6b
@@ -347,24 +347,25 @@ mt76u_urb_alloc(struct mt76_dev *dev, struct mt76_queue_entry *e,
|
||||
|
||||
usb_init_urb(e->urb);
|
||||
|
||||
if (dev->usb.sg_en)
|
||||
if (dev->usb.sg_en && sg_max_size > 0)
|
||||
e->urb->sg = (struct scatterlist *)(e->urb + 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
mt76u_rx_urb_alloc(struct mt76_dev *dev, struct mt76_queue_entry *e)
|
||||
mt76u_rx_urb_alloc(struct mt76_dev *dev, struct mt76_queue *q,
|
||||
struct mt76_queue_entry *e)
|
||||
{
|
||||
struct mt76_queue *q = &dev->q_rx[MT_RXQ_MAIN];
|
||||
int err;
|
||||
enum mt76_rxq_id qid = q - &dev->q_rx[MT_RXQ_MAIN];
|
||||
int err, sg_size;
|
||||
|
||||
err = mt76u_urb_alloc(dev, e, MT_RX_SG_MAX_SIZE);
|
||||
sg_size = qid == MT_RXQ_MAIN ? MT_RX_SG_MAX_SIZE : 0;
|
||||
err = mt76u_urb_alloc(dev, e, sg_size);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
return mt76u_refill_rx(dev, q, e->urb, MT_RX_SG_MAX_SIZE,
|
||||
GFP_KERNEL);
|
||||
return mt76u_refill_rx(dev, q, e->urb, sg_size, GFP_KERNEL);
|
||||
}
|
||||
|
||||
static void mt76u_urb_free(struct urb *urb)
|
||||
@@ -620,7 +621,7 @@ mt76u_alloc_rx_queue(struct mt76_dev *dev, enum mt76_rxq_id qid)
|
||||
q->buf_size = PAGE_SIZE;
|
||||
|
||||
for (i = 0; i < q->ndesc; i++) {
|
||||
err = mt76u_rx_urb_alloc(dev, &q->entry[i]);
|
||||
err = mt76u_rx_urb_alloc(dev, q, &q->entry[i]);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user