Thread (4 messages) 4 messages, 3 authors, 2011-06-28

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 this
diff --git a/drivers/net/wireless/ath/ath9k/init.c
b/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 by
diff --git a/drivers/net/wireless/ath/ath9k/hw.c
b/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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help