Re: [ath9k-devel] Patching ath9k/mac80211 to change MAC layer features
From: Mohammed Shafi <hidden>
Date: 2011-06-28 07:00:29
Also in:
lkml
On Mon, Jun 27, 2011 at 11:07 PM, Fred Matthews [off-list ref] wrote:
Hi all, Much appreciated Mohammed Shafi, disabling aggregation works when replacing those lines with sc->sc_flags &= ~SC_OP_TXAGGR; sc->sc_flags &= ~SC_OP_RXAGGR; only issue is I must always recompile compat-wireless to re-enable/disable it again. I tried to port it using debugfs to be able to enable and disable at runtime but ath9k kept rebooting.
I am not sure we can enable/disable aggregation via debugfs, these flags seem are set at initialization and based on this lot of things happen in tx-path, initializing TID structure, ampdu action, rate control etc.
Also I would be very grateful if someone can help regarding my attached patch and previous query: ------------ need to patch ath9k so that I can be able to modify/fix the A-MPDU aggregation frame length and other parameters such that they can be configured at runtime via debugfs. I made a newbie attempt at trying to change the aggregate length (attached), but I am unsure of the correctness/efficiency - when applied throughput varies with different frame lengths entered but I can't be sure if its actually changing the aggregation length (passes the framelen/aggr_limit). Hence I would be very grateful if someone can assist in the correct way of doing this (possibly directly via mac80211). Also if the ampdu aggregate length is changed I believe the number/length of the subframes of the aggregate stays constant (at the default which is 32). I try to change this in my patch as well as the maximum software retries by just changing the default definition in ath9k.h, thus is there a (more) correct/better way of changing these. Finally, how can I patch the driver to be able to disable Block-Acks via debugfs or otherwise. --------------- Thank you very much On Mon, Jun 20, 2011 at 9:15 AM, Mohammed Shafi [off-list ref] wrote:quoted
On Fri, Jun 17, 2011 at 2:09 AM, Fred Matthews [off-list ref] wrote:quoted
Hello all, I have a query regarding patching ath9k/mac80211 to change MAC layer features and I would be most grateful if someone can assist. I need to patch ath9k so that I can be able to modify/fix the A-MPDU aggregation frame length and other parameters such that they can be configured at runtime via debugfs. I made a newbie attempt at trying to change the aggregate length (attached), but I am unsure of the correctness/efficiency - when applied throughput varies with different frame lengths entered but I can't be sure if its actually changing the aggregation length (passes the framelen/aggr_limit). Hence I would be very grateful if someone can assist in the correct way of doing this (possibly directly via mac80211). Also if the ampdu aggregate length is changed I believe the number/length of the subframes of the aggregate stays constant (at the default which is 32). I try to change this in my patch as well as the maximum software retries by just changing the default definition in ath9k.h, thus is there a (more) correct/better way of changing these. Finally, how can I patch the driver to be able to disable Block-Acks/aggregation via debugfs or otherwise.to disable aggregation in the driver, please try thisdiff --git a/drivers/net/wireless/ath/ath9k/init.cb/drivers/net/wireless/ath/ath9k/init.c index d4b166c..e0175d0 100644--- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c@@ -524,8 +524,6 @@ static void ath9k_init_misc(struct ath_softc *sc)sc->config.txpowlimit = ATH_TXPOWER_MAX; if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT) { - sc->sc_flags |= SC_OP_TXAGGR; - sc->sc_flags |= SC_OP_RXAGGR; } common->tx_chainmask = sc->sc_ah->caps.tx_chainmask; if you want only tx-aggregation to be disabled , please comment out only that. also you can completely disable HT bydiff --git a/drivers/net/wireless/ath/ath9k/hw.cb/drivers/net/wireless/ath/ath9k/hw.c index 6de2655..696b4cc 100644--- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c@@ -1915,10 +1915,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah)common->crypt_caps |= ATH_CRYPT_CAP_CIPHER_AESCCM; - if (ah->hw_version.devid != AR2427_DEVID_PCIE) - pCap->hw_caps |= ATH9K_HW_CAP_HT; - else - pCap->hw_caps &= ~ATH9K_HW_CAP_HT; + pCap->hw_caps &= ~ATH9K_HW_CAP_HT; if (AR_SREV_9271(ah)) pCap->num_gpio_pins = AR9271_NUM_GPIO;quoted
I highly appreciate, help in any of the above, as well as other advice, Many thanks _______________________________________________ ath9k-devel mailing list ath9k-devel@lists.ath9k.org https://lists.ath9k.org/mailman/listinfo/ath9k-devel-- shafi -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
-- shafi