diff --git a/_codeql_detected_source_root b/_codeql_detected_source_root new file mode 120000 index 0000000..945c9b4 --- /dev/null +++ b/_codeql_detected_source_root @@ -0,0 +1 @@ +. \ No newline at end of file diff --git a/mt76x2/pci_phy.c b/mt76x2/pci_phy.c index 8831337..ed98b1e 100644 --- a/mt76x2/pci_phy.c +++ b/mt76x2/pci_phy.c @@ -227,7 +227,11 @@ int mt76x2_phy_set_channel(struct mt76x02_dev *dev, mt76_wr(dev, MT_BBP(AGC, 61), 0xFF64A4E2); mt76_wr(dev, MT_BBP(AGC, 7), 0x08081010); mt76_wr(dev, MT_BBP(AGC, 11), 0x00000404); - mt76_wr(dev, MT_BBP(AGC, 2), 0x00007070); + /* Adjust AGC 2 for high-band 5GHz channels (157-165) to improve stability */ + if (band == NL80211_BAND_5GHZ && chan->hw_value >= 157) + mt76_wr(dev, MT_BBP(AGC, 2), 0x00006868); + else + mt76_wr(dev, MT_BBP(AGC, 2), 0x00007070); mt76_wr(dev, MT_TXOP_CTRL_CFG, 0x04101B3F); if (scan) diff --git a/mt76x2/phy.c b/mt76x2/phy.c index 8faffc8..b797c5b 100644 --- a/mt76x2/phy.c +++ b/mt76x2/phy.c @@ -321,6 +321,9 @@ void mt76x2_phy_update_channel_gain(struct mt76x02_dev *dev) agc_35 = agc_37 = 0x08080808; else if (dev->mphy.chandef.width == NL80211_CHAN_WIDTH_80) agc_35 = 0x10101014; + else if (dev->mphy.chandef.chan->band == NL80211_BAND_5GHZ && + dev->mphy.chandef.chan->hw_value >= 157) + agc_35 = 0x0f0f0f14; else agc_35 = 0x11111116; diff --git a/mt76x2/usb_phy.c b/mt76x2/usb_phy.c index a04a98f..55042ba 100644 --- a/mt76x2/usb_phy.c +++ b/mt76x2/usb_phy.c @@ -161,7 +161,11 @@ int mt76x2u_phy_set_channel(struct mt76x02_dev *dev, mt76_wr(dev, MT_BBP(AGC, 61), 0xff64a4e2); mt76_wr(dev, MT_BBP(AGC, 7), 0x08081010); mt76_wr(dev, MT_BBP(AGC, 11), 0x00000404); - mt76_wr(dev, MT_BBP(AGC, 2), 0x00007070); + /* Adjust AGC 2 for high-band 5GHz channels (157-165) to improve stability */ + if (chan->band == NL80211_BAND_5GHZ && chan->hw_value >= 157) + mt76_wr(dev, MT_BBP(AGC, 2), 0x00006868); + else + mt76_wr(dev, MT_BBP(AGC, 2), 0x00007070); mt76_wr(dev, MT_TXOP_CTRL_CFG, 0X04101b3f); mt76_set(dev, MT_BBP(TXO, 4), BIT(25));