mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-29 10:01:25 +00:00
mt76: usb: move mt76u_check_sg in usb.c
Move mt76u_check_sg routine in usb.c and introduce sg_en variable in mt76_usb in order to check if scatter-gather is supported by mt76u layer Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
b3098121c4
commit
63a7de5dfb
4 changed files with 16 additions and 13 deletions
|
@ -379,6 +379,7 @@ struct mt76_usb {
|
||||||
u16 out_max_packet;
|
u16 out_max_packet;
|
||||||
u8 in_ep[__MT_EP_IN_MAX];
|
u8 in_ep[__MT_EP_IN_MAX];
|
||||||
u16 in_max_packet;
|
u16 in_max_packet;
|
||||||
|
bool sg_en;
|
||||||
|
|
||||||
struct mt76u_mcu {
|
struct mt76u_mcu {
|
||||||
struct mutex mutex;
|
struct mutex mutex;
|
||||||
|
@ -726,16 +727,6 @@ static inline u8 q2ep(u8 qid)
|
||||||
return qid + 1;
|
return qid + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool mt76u_check_sg(struct mt76_dev *dev)
|
|
||||||
{
|
|
||||||
struct usb_interface *intf = to_usb_interface(dev->dev);
|
|
||||||
struct usb_device *udev = interface_to_usbdev(intf);
|
|
||||||
|
|
||||||
return (udev->bus->sg_tablesize > 0 &&
|
|
||||||
(udev->bus->no_sg_constraint ||
|
|
||||||
udev->speed == USB_SPEED_WIRELESS));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
mt76u_bulk_msg(struct mt76_dev *dev, void *data, int len, int timeout)
|
mt76u_bulk_msg(struct mt76_dev *dev, void *data, int len, int timeout)
|
||||||
{
|
{
|
||||||
|
|
|
@ -206,7 +206,7 @@ static int mt76x0u_register_device(struct mt76x02_dev *dev)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
/* check hw sg support in order to enable AMSDU */
|
/* check hw sg support in order to enable AMSDU */
|
||||||
if (mt76u_check_sg(&dev->mt76))
|
if (dev->mt76.usb.sg_en)
|
||||||
hw->max_tx_fragments = MT_SG_MAX_SIZE;
|
hw->max_tx_fragments = MT_SG_MAX_SIZE;
|
||||||
else
|
else
|
||||||
hw->max_tx_fragments = 1;
|
hw->max_tx_fragments = 1;
|
||||||
|
|
|
@ -228,7 +228,7 @@ int mt76x2u_register_device(struct mt76x02_dev *dev)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
/* check hw sg support in order to enable AMSDU */
|
/* check hw sg support in order to enable AMSDU */
|
||||||
if (mt76u_check_sg(&dev->mt76))
|
if (dev->mt76.usb.sg_en)
|
||||||
hw->max_tx_fragments = MT_SG_MAX_SIZE;
|
hw->max_tx_fragments = MT_SG_MAX_SIZE;
|
||||||
else
|
else
|
||||||
hw->max_tx_fragments = 1;
|
hw->max_tx_fragments = 1;
|
||||||
|
|
|
@ -241,6 +241,16 @@ mt76u_rd_rp(struct mt76_dev *dev, u32 base,
|
||||||
return mt76u_req_rd_rp(dev, base, data, n);
|
return mt76u_req_rd_rp(dev, base, data, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool mt76u_check_sg(struct mt76_dev *dev)
|
||||||
|
{
|
||||||
|
struct usb_interface *intf = to_usb_interface(dev->dev);
|
||||||
|
struct usb_device *udev = interface_to_usbdev(intf);
|
||||||
|
|
||||||
|
return (udev->bus->sg_tablesize > 0 &&
|
||||||
|
(udev->bus->no_sg_constraint ||
|
||||||
|
udev->speed == USB_SPEED_WIRELESS));
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
mt76u_set_endpoints(struct usb_interface *intf,
|
mt76u_set_endpoints(struct usb_interface *intf,
|
||||||
struct mt76_usb *usb)
|
struct mt76_usb *usb)
|
||||||
|
@ -535,7 +545,7 @@ static int mt76u_alloc_rx(struct mt76_dev *dev)
|
||||||
if (!q->entry)
|
if (!q->entry)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
if (mt76u_check_sg(dev)) {
|
if (dev->usb.sg_en) {
|
||||||
q->buf_size = MT_RX_BUF_SIZE;
|
q->buf_size = MT_RX_BUF_SIZE;
|
||||||
nsgs = MT_SG_MAX_SIZE;
|
nsgs = MT_SG_MAX_SIZE;
|
||||||
} else {
|
} else {
|
||||||
|
@ -880,6 +890,8 @@ int mt76u_init(struct mt76_dev *dev,
|
||||||
dev->bus = &mt76u_ops;
|
dev->bus = &mt76u_ops;
|
||||||
dev->queue_ops = &usb_queue_ops;
|
dev->queue_ops = &usb_queue_ops;
|
||||||
|
|
||||||
|
usb->sg_en = mt76u_check_sg(dev);
|
||||||
|
|
||||||
return mt76u_set_endpoints(intf, usb);
|
return mt76u_set_endpoints(intf, usb);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mt76u_init);
|
EXPORT_SYMBOL_GPL(mt76u_init);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue