diff --git a/patches.suse/wifi-mt76-add-flexible-polling-wait-interval-support.patch b/patches.suse/wifi-mt76-add-flexible-polling-wait-interval-support.patch new file mode 100644 index 0000000..bcdf0a2 --- /dev/null +++ b/patches.suse/wifi-mt76-add-flexible-polling-wait-interval-support.patch @@ -0,0 +1,78 @@ +From 35effe6c0c24adcf0f732bb1c3d75573d4c88e63 Mon Sep 17 00:00:00 2001 +From: Deren Wu +Date: Sat, 14 Jan 2023 12:56:46 +0800 +Subject: [PATCH] wifi: mt76: add flexible polling wait-interval support +Git-commit: 35effe6c0c24adcf0f732bb1c3d75573d4c88e63 +Patch-mainline: v6.3-rc1 +References: git-fixes + +The default waiting unit is 10ms and the value is too much for +data path related control. Provide a new API mt76_poll_msec_tick() +to support different cases, such as 1ms polling waiting kick. + +Reviewed-by: Lorenzo Bianconi +Signed-off-by: Deren Wu +Signed-off-by: Felix Fietkau +Acked-by: Takashi Iwai + +--- + drivers/net/wireless/mediatek/mt76/mt76.h | 9 +++++---- + drivers/net/wireless/mediatek/mt76/util.c | 10 +++++----- + 2 files changed, 10 insertions(+), 9 deletions(-) + +diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h +index f351a37c47f7..4a1d8be06b0a 100644 +--- a/drivers/net/wireless/mediatek/mt76/mt76.h ++++ b/drivers/net/wireless/mediatek/mt76/mt76.h +@@ -909,10 +909,11 @@ bool __mt76_poll(struct mt76_dev *dev, u32 offset, u32 mask, u32 val, + + #define mt76_poll(dev, ...) __mt76_poll(&((dev)->mt76), __VA_ARGS__) + +-bool __mt76_poll_msec(struct mt76_dev *dev, u32 offset, u32 mask, u32 val, +- int timeout); +- +-#define mt76_poll_msec(dev, ...) __mt76_poll_msec(&((dev)->mt76), __VA_ARGS__) ++bool ____mt76_poll_msec(struct mt76_dev *dev, u32 offset, u32 mask, u32 val, ++ int timeout, int kick); ++#define __mt76_poll_msec(...) ____mt76_poll_msec(__VA_ARGS__, 10) ++#define mt76_poll_msec(dev, ...) ____mt76_poll_msec(&((dev)->mt76), __VA_ARGS__, 10) ++#define mt76_poll_msec_tick(dev, ...) ____mt76_poll_msec(&((dev)->mt76), __VA_ARGS__) + + void mt76_mmio_init(struct mt76_dev *dev, void __iomem *regs); + void mt76_pci_disable_aspm(struct pci_dev *pdev); +diff --git a/drivers/net/wireless/mediatek/mt76/util.c b/drivers/net/wireless/mediatek/mt76/util.c +index 581964425468..fc76c66ff1a5 100644 +--- a/drivers/net/wireless/mediatek/mt76/util.c ++++ b/drivers/net/wireless/mediatek/mt76/util.c +@@ -24,23 +24,23 @@ bool __mt76_poll(struct mt76_dev *dev, u32 offset, u32 mask, u32 val, + } + EXPORT_SYMBOL_GPL(__mt76_poll); + +-bool __mt76_poll_msec(struct mt76_dev *dev, u32 offset, u32 mask, u32 val, +- int timeout) ++bool ____mt76_poll_msec(struct mt76_dev *dev, u32 offset, u32 mask, u32 val, ++ int timeout, int tick) + { + u32 cur; + +- timeout /= 10; ++ timeout /= tick; + do { + cur = __mt76_rr(dev, offset) & mask; + if (cur == val) + return true; + +- usleep_range(10000, 20000); ++ usleep_range(1000 * tick, 2000 * tick); + } while (timeout-- > 0); + + return false; + } +-EXPORT_SYMBOL_GPL(__mt76_poll_msec); ++EXPORT_SYMBOL_GPL(____mt76_poll_msec); + + int mt76_wcid_alloc(u32 *mask, int size) + { +-- +2.35.3 + diff --git a/series.conf b/series.conf index c830c54..3864a7c 100644 --- a/series.conf +++ b/series.conf @@ -18949,6 +18949,7 @@ patches.suse/msft-hv-2767-hv_netvsc-Check-status-in-SEND_RNDIS_PKT-completion-.patch patches.suse/dt-bindings-net-snps-dwmac-Fix-snps-reset-delays-us-.patch patches.suse/wifi-mt76-dma-free-rx_head-in-mt76_dma_rx_cleanup.patch + patches.suse/wifi-mt76-add-flexible-polling-wait-interval-support.patch patches.suse/wifi-iwl3945-Add-missing-check-for-create_singlethre.patch patches.suse/wifi-iwl4965-Add-missing-check-for-create_singlethre.patch patches.suse/wifi-mwifiex-Add-missing-compatible-string-for-SD878.patch