Revert "mt76: use IEEE80211_OFFLOAD_ENCAP_ENABLED instead of MT_DRV_AMSDU_OFFLOAD"
Subsystems (2)
RFC 1/1 Revert "mt76: use IEEE80211_OFFLOAD_ENCAP_ENABLED instead of MT_DRV_AMSDU_OFFLOAD"
From: Ben Greear <[email protected]>
This reverts commit f17f4864504d754bcbf31e4c89412cdf9946c409.
The reverted commit significantly decreases performance when running a test where two MTK7915 radios have 16 station vdevs each, configured for AC mode, and transmitting UDP traffic to AP.
Reported-by Carson Vandegriffe <[email protected]>
Signed-off-by Ben Greear <[email protected]>
---
NOTE: This patch fixes the performance regression we see, but maybe there is a better way to fix it.
Test run before this patch:
http://www.candelatech.com/downloads/tr-398-2022-10-01-07-03-52-bad/
After this patch:
http://www.candelatech.com/downloads/tr-398-2022-10-01-07-04-50-good/
drivers/net/wireless/mediatek/mt76/mac80211.c | 8 ++++++-- drivers/net/wireless/mediatek/mt76/mt76.h | 1 + drivers/net/wireless/mediatek/mt76/mt7915/mmio.c | 3 ++- drivers/net/wireless/mediatek/mt76/mt7921/pci.c | 3 ++- 4 files changed, 11 insertions(+), 4 deletions(-)
drivers/net/wireless/mediatek/mt76/mac80211.c +6 -2
@@ -444,8 +444,12 @@ mt76_phy_init(struct mt76_phy *phy, struct ieee80211_hw *hw)ieee80211_hw_set (hw,SUPPORTS_CLONED_SKBS );ieee80211_hw_set (hw,SUPPORTS_AMSDU_IN_AMPDU );ieee80211_hw_set (hw,SUPPORTS_REORDERING_BUFFER ); -ieee80211_hw_set (hw,TX_AMSDU ); -ieee80211_hw_set (hw,TX_FRAG_LIST ); + +if (!(dev->drv->drv_flags &MT_DRV_AMSDU_OFFLOAD )) { +ieee80211_hw_set (hw,TX_AMSDU ); +ieee80211_hw_set (hw,TX_FRAG_LIST ); + } +ieee80211_hw_set (hw,MFP_CAPABLE );ieee80211_hw_set (hw,AP_LINK_PS );ieee80211_hw_set (hw,REPORTS_TX_ACK_STATUS );
drivers/net/wireless/mediatek/mt76/mt76.h +1 -0
@@ -395,6 +395,7 @@ struct mt76_hw_cap {#define MT_DRV_SW_RX_AIRTIME BIT(2)#define MT_DRV_RX_DMA_HDR BIT(3)#define MT_DRV_HW_MGMT_TXQ BIT(4) +#define MT_DRV_AMSDU_OFFLOAD BIT(5)struct mt76_driver_ops {u32 drv_flags;
drivers/net/wireless/mediatek/mt76/mt7915/mmio.c +2 -1
@@ -658,7 +658,8 @@ struct mt7915_dev *mt7915_mmio_probe(struct device *pdev,static const struct mt76_driver_ops drv_ops = {/* txwi_size = txd size + txp size */ .txwi_size =MT_TXD_SIZE +sizeof (struct mt76_connac_fw_txp ), - .drv_flags =MT_DRV_TXWI_NO_FREE |MT_DRV_HW_MGMT_TXQ , + .drv_flags =MT_DRV_TXWI_NO_FREE |MT_DRV_HW_MGMT_TXQ | +MT_DRV_AMSDU_OFFLOAD , .survey_flags =SURVEY_INFO_TIME_TX |SURVEY_INFO_TIME_RX |SURVEY_INFO_TIME_BSS_RX ,
drivers/net/wireless/mediatek/mt76/mt7921/pci.c +2 -1
@@ -231,7 +231,8 @@ static int mt7921_pci_probe(struct pci_dev *pdev,static const struct mt76_driver_ops drv_ops = {/* txwi_size = txd size + txp size */ .txwi_size =MT_TXD_SIZE +sizeof (struct mt76_connac_hw_txp ), - .drv_flags =MT_DRV_TXWI_NO_FREE |MT_DRV_HW_MGMT_TXQ , + .drv_flags =MT_DRV_TXWI_NO_FREE |MT_DRV_HW_MGMT_TXQ | +MT_DRV_AMSDU_OFFLOAD , .survey_flags =SURVEY_INFO_TIME_TX |SURVEY_INFO_TIME_RX |SURVEY_INFO_TIME_BSS_RX ,
Signature · 1 line
2.20.1