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