Hi Thomas
I am able to see the correct values after I enable the wifi interface
and with the following changes.
Index: compat-wireless-2015-03-09/drivers/net/wireless/ath/ath9k/debug.c
===================================================================
--- compat-wireless-2015-03-09.orig/drivers/net/wireless/ath/ath9k/debug.c
+++ compat-wireless-2015-03-09/drivers/net/wireless/ath/ath9k/debug.c
@@ -624,8 +624,13 @@ static int read_file_xmit(struct seq_fil
static void print_queue(struct ath_softc *sc, struct ath_txq *txq,
struct seq_file *file)
{
+ seq_printf(file, "(%s): %d ", "cwmin",
sc->sc_ah->txq[txq->axq_qnum].tqi_cwmin);
+ seq_printf(file, "(%s): %d ", "cwmax",
sc->sc_ah->txq[txq->axq_qnum].tqi_cwmax);
+ seq_printf(file, "(%s): %d ", "aifs",
sc->sc_ah->txq[txq->axq_qnum].tqi_aifs);
+ seq_printf(file, "(%s): %d ", "burst",
sc->sc_ah->txq[txq->axq_qnum].tqi_burstTime);
ath_txq_lock(sc, txq);
+ seq_printf(file, "%s: %d ", "mac qnum", txq->mac80211_qnum);
seq_printf(file, "%s: %d ", "qnum", txq->axq_qnum);
seq_printf(file, "%s: %2d ", "qdepth", txq->axq_depth);
seq_printf(file, "%s: %2d ", "ampdu-depth", txq->axq_ampdu_depth);
@@ -639,6 +644,7 @@ static int read_file_queues(struct seq_f
Default values:
===========
root@OpenWrt:~# cat /sys/kernel/debug/ieee80211/phy0/ath9k/queues
(VO): (cwmin): 3 (cwmax): 7 (aifs): 2 (burst): 1504 mac qnum: 0 qnum:
3 qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
(VI): (cwmin): 7 (cwmax): 15 (aifs): 2 (burst): 3008 mac qnum: 1
qnum: 2 qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
(BE): (cwmin): 15 (cwmax): 1023 (aifs): 3 (burst): 0 mac qnum: 2
qnum: 1 qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
(BK): (cwmin): 15 (cwmax): 1023 (aifs): 7 (burst): 0 mac qnum: 3
qnum: 0 qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
(CAB): (cwmin): -1 (cwmax): 1023 (aifs): 2 (burst): 0 mac qnum: -1
qnum: 8 qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
Modified Queue 0 values:
===================
root@OpenWrt:~# cat /sys/kernel/debug/ieee80211/phy0/ath9k/queues
(VO): (cwmin): 7 (cwmax): 63 (aifs): 7 (burst): 0 mac qnum: 0 qnum: 3
qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
(VI): (cwmin): 7 (cwmax): 15 (aifs): 2 (burst): 3008 mac qnum: 1
qnum: 2 qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
(BE): (cwmin): 15 (cwmax): 1023 (aifs): 3 (burst): 0 mac qnum: 2
qnum: 1 qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
(BK): (cwmin): 15 (cwmax): 1023 (aifs): 7 (burst): 0 mac qnum: 3
qnum: 0 qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
(CAB): (cwmin): -1 (cwmax): 1023 (aifs): 2 (burst): 0 mac qnum: -1
qnum: 8 qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
Best Regards
Phani
On Fri, Mar 23, 2018 at 10:39 PM, Phani Siriki <[email protected]> wrote:
> Hi Thomas
>
> I modified the code and tried to set the TXQ parameters for mesh
> interface. I didn't observe any error.
>
> However, I modified the ath9k driver code to verify default TXQ
> parameters. But I am observing same values for all the queues and the
> cwmin is looks different.
>
> To my understanding, the configured parameters using netlink library
> will get effect in driver queues..
>
> nl80211 - cfg80211 - mac80211 - ath9k
>
> Could you please let me know if I am doing something wrong.
>
>
> wifi@wifi-VirtualBox:~/chaos/get_txq_code/chaos_calmer-15.05.1/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/compat-wireless-2015-03-09$
> quilt diff
> Index: compat-wireless-2015-03-09/drivers/net/wireless/ath/ath9k/debug.c
> ===================================================================
> --- compat-wireless-2015-03-09.orig/drivers/net/wireless/ath/ath9k/debug.c
> +++ compat-wireless-2015-03-09/drivers/net/wireless/ath/ath9k/debug.c
> @@ -639,6 +639,7 @@ static int read_file_queues(struct seq_f
> {
> struct ieee80211_hw *hw = dev_get_drvdata(file->private);
> struct ath_softc *sc = hw->priv;
> + struct ath_hw *ah = sc->sc_ah;
> struct ath_txq *txq;
> int i;
> static const char *qname[4] = {
> @@ -648,6 +649,10 @@ static int read_file_queues(struct seq_f
> for (i = 0; i < IEEE80211_NUM_ACS; i++) {
> txq = sc->tx.txq_map[i];
> seq_printf(file, "(%s): ", qname[i]);
> + seq_printf(file, "(%s): %u ", "cwmin", ah->txq[i].tqi_cwmin);
> + seq_printf(file, "(%s): %u ", "cwmax", ah->txq[i].tqi_cwmax);
> + seq_printf(file, "(%s): %u ", "aifs", ah->txq[i].tqi_aifs);
> + seq_printf(file, "(%s): %u ", "burst",
> ah->txq[i].tqi_burstTime);
> print_queue(sc, txq, file);
> }
>
> root@OpenWrt:~# cat /sys/kernel/debug/ieee80211/phy0/ath9k/queues
> (VO): (cwmin): 4294967295 (cwmax): 1023 (aifs): 2 (burst): 0 qnum: 3
> qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
> (VI): (cwmin): 4294967295 (cwmax): 1023 (aifs): 2 (burst): 0 qnum: 2
> qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
> (BE): (cwmin): 4294967295 (cwmax): 1023 (aifs): 2 (burst): 0 qnum: 1
> qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
> (BK): (cwmin): 4294967295 (cwmax): 1023 (aifs): 2 (burst): 0 qnum: 0
> qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
> (CAB): qnum: 8 qdepth: 0 ampdu-depth: 0 pending: 0 stopped: 0
>
> Best Regards
> Phani
>
> On Fri, Mar 16, 2018 at 10:41 AM, Phani Siriki <[email protected]> wrote:
>> Thanks Thomas. I will try to hack the code and let you know.
>>
>> Best Regards
>> Phani
>>
>> On Thu, Mar 15, 2018 at 5:31 PM, Thomas Pedersen <[email protected]> wrote:
>>> On Wed, Mar 7, 2018 at 8:39 AM, Phani Siriki <[email protected]> wrote:
>>>> Hi Thomas
>>>>
>>>> Thank you for your reply.
>>>>
>>>> Could you please let me know how can I verify these queues on a mesh
>>>> router? (I am using TPLink router with Ath9k chipset).
>>>
>>> try
>>>
>>> $ iw mesh0 mpath dump
>>>
>>> The mpath queue length is under the "QLEN" heading.
>>>
>>>> Also, the TXQ parameters can only be set if device is in AP or P2P
>>>> mode. Do you have any idea why this restriction is in place?
>>>
>>> I don't think there is any reason modifying the queue parameters wouldn't
>>> work
>>> in mesh mode. Why don't you hack up that code and give it a try.
>>>
>>>> https://github.com/torvalds/linux/blob/master/net/wireless/nl80211.c
>>>>
>>>> static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
>>>> {
>>>>
>>>> if (info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS]) {
>>>> ....
>>>> if (netdev->ieee80211_ptr->iftype != NL80211_IFTYPE_AP
>>>> &&
>>>> netdev->ieee80211_ptr->iftype !=
>>>> NL80211_IFTYPE_P2P_GO)
>>>> return -EINVAL;
>>>> ...
>>>> }
>>>>
>>>> Best Regards
>>>> Phani
>>>>
>>>> On Tue, Mar 6, 2018 at 11:59 PM, Thomas Pedersen <[email protected]> wrote:
>>>>> On Thu, Mar 1, 2018 at 7:27 AM, Phani Siriki <[email protected]>
>>>>> wrote:
>>>>>> Hi All
>>>>>>
>>>>>> I am trying to understand the queuing mechanism wireless mesh networks.
>>>>>>
>>>>>> As per AP mode is concerned, there are four queues (BK, BE, Vi, VO)
>>>>>> and traffic is controlled based on CWmin, CWmax, AIFS and TxOP.
>>>>>>
>>>>>> Does, mesh mode also involve these queues? Does mesh mode have any
>>>>>> queue or it is just a single queue?
>>>>>
>>>>> mesh mode maps to the different ACs like AP mode. The only additional
>>>>> queue in mesh is the mpath->frame_queue, which may be used if an
>>>>> active mpath for a given RA can't be found.
>>>>>
>>>>> --
>>>>> thomas
>>>
>>>
>>>
>>> --
>>> thomas