mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-22 23:59:26 +07: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
@ -379,6 +379,7 @@ struct mt76_usb {
|
||||
u16 out_max_packet;
|
||||
u8 in_ep[__MT_EP_IN_MAX];
|
||||
u16 in_max_packet;
|
||||
bool sg_en;
|
||||
|
||||
struct mt76u_mcu {
|
||||
struct mutex mutex;
|
||||
@ -726,16 +727,6 @@ static inline u8 q2ep(u8 qid)
|
||||
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
|
||||
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;
|
||||
|
||||
/* 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;
|
||||
else
|
||||
hw->max_tx_fragments = 1;
|
||||
|
@ -228,7 +228,7 @@ int mt76x2u_register_device(struct mt76x02_dev *dev)
|
||||
goto fail;
|
||||
|
||||
/* 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;
|
||||
else
|
||||
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);
|
||||
}
|
||||
|
||||
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
|
||||
mt76u_set_endpoints(struct usb_interface *intf,
|
||||
struct mt76_usb *usb)
|
||||
@ -535,7 +545,7 @@ static int mt76u_alloc_rx(struct mt76_dev *dev)
|
||||
if (!q->entry)
|
||||
return -ENOMEM;
|
||||
|
||||
if (mt76u_check_sg(dev)) {
|
||||
if (dev->usb.sg_en) {
|
||||
q->buf_size = MT_RX_BUF_SIZE;
|
||||
nsgs = MT_SG_MAX_SIZE;
|
||||
} else {
|
||||
@ -880,6 +890,8 @@ int mt76u_init(struct mt76_dev *dev,
|
||||
dev->bus = &mt76u_ops;
|
||||
dev->queue_ops = &usb_queue_ops;
|
||||
|
||||
usb->sg_en = mt76u_check_sg(dev);
|
||||
|
||||
return mt76u_set_endpoints(intf, usb);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt76u_init);
|
||||
|
Loading…
Reference in New Issue
Block a user