Query on queues in mesh mode

8 messages, 2 authors, 2018-03-28 · open the first message on its own page

Query on queues in mesh mode

From: Phani Siriki <hidden>
Date: 2018-03-01 15:28:00

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?

Could someone clarify this?

Best Regards
Phani

Re: Query on queues in mesh mode

From: Thomas Pedersen <hidden>
Date: 2018-03-07 05:59:28

On Thu, Mar 1, 2018 at 7:27 AM, Phani Siriki [off-list ref] 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

Re: Query on queues in mesh mode

From: Phani Siriki <hidden>
Date: 2018-03-07 16:39:33

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).

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?

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 [off-list ref] wrote:
On Thu, Mar 1, 2018 at 7:27 AM, Phani Siriki [off-list ref] wrote:
quoted
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

Re: Query on queues in mesh mode

From: Phani Siriki <hidden>
Date: 2018-03-15 16:41:48

Could someone help me on this?

On Wed, Mar 7, 2018 at 10:39 AM, Phani Siriki [off-list ref] 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).

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?

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 [off-list ref] wrote:
quoted
On Thu, Mar 1, 2018 at 7:27 AM, Phani Siriki [off-list ref] wrote:
quoted
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

Re: Query on queues in mesh mode

From: Thomas Pedersen <hidden>
Date: 2018-03-15 22:31:31

On Wed, Mar 7, 2018 at 8:39 AM, Phani Siriki [off-list ref] 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 [off-list ref] wrote:
quoted
On Thu, Mar 1, 2018 at 7:27 AM, Phani Siriki [off-list ref] wrote:
quoted
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

Re: Query on queues in mesh mode

From: Phani Siriki <hidden>
Date: 2018-03-16 15:41:17

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 [off-list ref] wrote:
On Wed, Mar 7, 2018 at 8:39 AM, Phani Siriki [off-list ref] wrote:
quoted
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.
quoted
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.
quoted
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 [off-list ref] wrote:
quoted
On Thu, Mar 1, 2018 at 7:27 AM, Phani Siriki [off-list ref] wrote:
quoted
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

Re: Query on queues in mesh mode

From: Phani Siriki <hidden>
Date: 2018-03-24 03:39:46

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 [off-list ref] 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 [off-list ref] wrote:
quoted
On Wed, Mar 7, 2018 at 8:39 AM, Phani Siriki [off-list ref] wrote:
quoted
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.
quoted
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.
quoted
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 [off-list ref] wrote:
quoted
On Thu, Mar 1, 2018 at 7:27 AM, Phani Siriki [off-list ref] wrote:
quoted
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

Re: Query on queues in mesh mode

From: Phani Siriki <hidden>
Date: 2018-03-28 00:35:11

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 [off-list ref] wrote:
quoted hunk
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 [off-list ref] wrote:
quoted
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 [off-list ref] wrote:
quoted
On Wed, Mar 7, 2018 at 8:39 AM, Phani Siriki [off-list ref] wrote:
quoted
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.
quoted
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.
quoted
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 [off-list ref] wrote:
quoted
On Thu, Mar 1, 2018 at 7:27 AM, Phani Siriki [off-list ref] wrote:
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help