diff for duplicates of <87r2ia28ii.fsf@toke.dk> diff --git a/a/1.txt b/N1/1.txt index 7c16348..21a7ace 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,98 +1,96 @@ Anilkumar Kolli <akolli@codeaurora.org> writes: -> On 2018-08-31 19:52, Toke Høiland-Jørgensen wrote: +> On 2018-08-31 19:52, Toke H=C3=B8iland-J=C3=B8rgensen wrote: >> Kalle Valo <kvalo@codeaurora.org> writes: ->> +>>=20 >>> Anilkumar Kolli <akolli@codeaurora.org> writes: ->>> +>>>=20 >>>> Mesh path metric needs txrate information from ieee80211_tx_status() ->>>> call but in ath10k there is no mechanism to report tx rate +>>>> call but in ath10k there is no mechanism to report tx rate=20 >>>> information >>>> via ieee80211_tx_status(), the rate is only accessible via >>>> sta_statiscs() op. ->>>> +>>>>=20 >>>> Per peer stats has tx rate info available, this patch stores per peer ->>>> last tx rate and updates the tx rate info structures in tx +>>>> last tx rate and updates the tx rate info structures in tx=20 >>>> completition. >>>> The rate updated in ieee80211_tx_status() is not exactly for the last ->>>> transmitted frame instead the rate is from one of the previous +>>>> transmitted frame instead the rate is from one of the previous=20 >>>> frames. ->>>> +>>>>=20 >>>> Per peer txrate information is updated through per peer statistics >>>> and is available for QCA9888/QCA9984/QCA4019/QCA998X only ->>>> +>>>>=20 >>>> Tested on QCA9984 with firmware-5.bin_10.4-3.5.3-00053 >>>> Tested on QCA998X with firmware-5.bin_10.2.4-1.0-00036 ->>>> +>>>>=20 >>>> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org> ->>> +>>>=20 >>> This is a patch from last March, full patch here: ->>> +>>>=20 >>> https://patchwork.kernel.org/patch/10267693/ ->>> +>>>=20 >>>> @@ -119,6 +122,18 @@ int ath10k_txrx_tx_unref(struct ath10k_htt *htt, ->>>> info->flags &= ~IEEE80211_TX_STAT_ACK; +>>>> info->flags &=3D ~IEEE80211_TX_STAT_ACK; >>>> } ->>>> +>>>>=20 >>>> + if (sta) { >>>> + spin_lock_bh(&ar->data_lock); ->>>> + arsta = (struct ath10k_sta *)sta->drv_priv; ->>>> + info->status.rates[0].idx = +>>>> + arsta =3D (struct ath10k_sta *)sta->drv_priv; +>>>> + info->status.rates[0].idx =3D >>>> + arsta->tx_info.status.rates[0].idx; ->>>> + info->status.rates[0].count = +>>>> + info->status.rates[0].count =3D >>>> + arsta->tx_info.status.rates[0].count; ->>>> + info->status.rates[0].flags = +>>>> + info->status.rates[0].flags =3D >>> <> + arsta->tx_info.status.rates[0].flags; >>>> + spin_unlock_bh(&ar->data_lock); >>>> + } >>>> + >>>> ieee80211_tx_status(htt->ar->hw, msdu); >>>> /* we do not own the msdu anymore */ ->>> ->>> "is not exactly" is IMHO an understatement. What it means that with +>>>=20 +>>> "is not exactly" is IMHO an understatement. What it means that with=20 >>> this ->>> patch ath10k reports the rate information from another frame instead +>>> patch ath10k reports the rate information from another frame instead=20 >>> of ->>> the current skb, because the firmware provides the rate information +>>> the current skb, because the firmware provides the rate information=20 >>> "out >>> of band". A simple example to clarify: ->>> +>>>=20 >>> Let's say ath10k transmits frames A, B and C. Then ath10k calls >>> ieee80211_tx_status() for frame C the rate information could be for ->>> frame A, or it could be the other around for frame A status the +>>> frame A, or it could be the other around for frame A status the=20 >>> rate >>> information is from frame C. ->>> +>>>=20 >>> In other words, there's no guarantee from what frame the rate >>> information is from. ->>> +>>>=20 >>> Too me this feels like a bad idea but I'm not familiar enough with ->>> mac80211 to really comment on this. What kind of implications does +>>> mac80211 to really comment on this. What kind of implications does=20 >>> this >>> have for Mesh or ATF, for example? Adding Johannes and Toke to hear >>> about their opinion about this. ->> +>>=20 >> I was under the impression that the values gathered (at least for >> airtime) would be cumulative values? If it's just the airtime of a >> single random frame, which is what I understand from your example, it's >> not going to be terribly useful to provide ATF at least... ->> +>>=20 >> -Toke > > The design: -> Whenever radio transmits packet, firmware will record numbers of bytes -> sent, MSDU’s sent, TX duration, AMPDU information, ACK fail, BA fail, -> Rate at which packet is sent. This is recorded for 4 frames sent on that -> peer. Once 4 frames are sent for that peer, TX packet event is sent to -> ath10k driver with the recorded values. These rate values are updated to +> Whenever radio transmits packet, firmware will record numbers of bytes=20 +> sent, MSDU=E2=80=99s sent, TX duration, AMPDU information, ACK fail, BA f= +ail,=20 +> Rate at which packet is sent. This is recorded for 4 frames sent on that= +=20 +> peer. Once 4 frames are sent for that peer, TX packet event is sent to=20 +> ath10k driver with the recorded values. These rate values are updated to= +=20 > mac80211 using ieee80211_tx_status(). So the values reported are the sums for all four packets? But the latest value for rate information? -Toke - -_______________________________________________ -ath10k mailing list -ath10k@lists.infradead.org -http://lists.infradead.org/mailman/listinfo/ath10k diff --git a/a/content_digest b/N1/content_digest index c33c23c..d79a56c 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -6,109 +6,107 @@ "Subject\0Re: [RFC v2] ath10k: report tx rate using ieee80211_tx_status()\0" "Date\0Mon, 03 Sep 2018 12:13:57 +0200\0" "To\0Anilkumar Kolli <akolli@codeaurora.org>\0" - "Cc\0Johannes Berg <johannes@sipsolutions.net>" - linux-wireless@vger.kernel.org + "Cc\0Kalle Valo <kvalo@codeaurora.org>" ath10k@lists.infradead.org - " Kalle Valo <kvalo@codeaurora.org>\0" + linux-wireless@vger.kernel.org + " Johannes Berg <johannes@sipsolutions.net>\0" "\00:1\0" "b\0" "Anilkumar Kolli <akolli@codeaurora.org> writes:\n" "\n" - "> On 2018-08-31 19:52, Toke H\303\270iland-J\303\270rgensen wrote:\n" + "> On 2018-08-31 19:52, Toke H=C3=B8iland-J=C3=B8rgensen wrote:\n" ">> Kalle Valo <kvalo@codeaurora.org> writes:\n" - ">> \n" + ">>=20\n" ">>> Anilkumar Kolli <akolli@codeaurora.org> writes:\n" - ">>> \n" + ">>>=20\n" ">>>> Mesh path metric needs txrate information from ieee80211_tx_status()\n" - ">>>> call but in ath10k there is no mechanism to report tx rate \n" + ">>>> call but in ath10k there is no mechanism to report tx rate=20\n" ">>>> information\n" ">>>> via ieee80211_tx_status(), the rate is only accessible via\n" ">>>> sta_statiscs() op.\n" - ">>>> \n" + ">>>>=20\n" ">>>> Per peer stats has tx rate info available, this patch stores per peer\n" - ">>>> last tx rate and updates the tx rate info structures in tx \n" + ">>>> last tx rate and updates the tx rate info structures in tx=20\n" ">>>> completition.\n" ">>>> The rate updated in ieee80211_tx_status() is not exactly for the last\n" - ">>>> transmitted frame instead the rate is from one of the previous \n" + ">>>> transmitted frame instead the rate is from one of the previous=20\n" ">>>> frames.\n" - ">>>> \n" + ">>>>=20\n" ">>>> Per peer txrate information is updated through per peer statistics\n" ">>>> and is available for QCA9888/QCA9984/QCA4019/QCA998X only\n" - ">>>> \n" + ">>>>=20\n" ">>>> Tested on QCA9984 with firmware-5.bin_10.4-3.5.3-00053\n" ">>>> Tested on QCA998X with firmware-5.bin_10.2.4-1.0-00036\n" - ">>>> \n" + ">>>>=20\n" ">>>> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>\n" - ">>> \n" + ">>>=20\n" ">>> This is a patch from last March, full patch here:\n" - ">>> \n" + ">>>=20\n" ">>> https://patchwork.kernel.org/patch/10267693/\n" - ">>> \n" + ">>>=20\n" ">>>> @@ -119,6 +122,18 @@ int ath10k_txrx_tx_unref(struct ath10k_htt *htt,\n" - ">>>> \t\t\tinfo->flags &= ~IEEE80211_TX_STAT_ACK;\n" + ">>>> \t\t\tinfo->flags &=3D ~IEEE80211_TX_STAT_ACK;\n" ">>>> \t}\n" - ">>>> \n" + ">>>>=20\n" ">>>> +\tif (sta) {\n" ">>>> +\t\tspin_lock_bh(&ar->data_lock);\n" - ">>>> +\t\tarsta = (struct ath10k_sta *)sta->drv_priv;\n" - ">>>> +\t\tinfo->status.rates[0].idx =\n" + ">>>> +\t\tarsta =3D (struct ath10k_sta *)sta->drv_priv;\n" + ">>>> +\t\tinfo->status.rates[0].idx =3D\n" ">>>> +\t\t\tarsta->tx_info.status.rates[0].idx;\n" - ">>>> +\t\tinfo->status.rates[0].count =\n" + ">>>> +\t\tinfo->status.rates[0].count =3D\n" ">>>> +\t\t\tarsta->tx_info.status.rates[0].count;\n" - ">>>> +\t\tinfo->status.rates[0].flags =\n" + ">>>> +\t\tinfo->status.rates[0].flags =3D\n" ">>> <> +\t\t\tarsta->tx_info.status.rates[0].flags;\n" ">>>> +\t\tspin_unlock_bh(&ar->data_lock);\n" ">>>> +\t}\n" ">>>> +\n" ">>>> \tieee80211_tx_status(htt->ar->hw, msdu);\n" ">>>> \t/* we do not own the msdu anymore */\n" - ">>> \n" - ">>> \"is not exactly\" is IMHO an understatement. What it means that with \n" + ">>>=20\n" + ">>> \"is not exactly\" is IMHO an understatement. What it means that with=20\n" ">>> this\n" - ">>> patch ath10k reports the rate information from another frame instead \n" + ">>> patch ath10k reports the rate information from another frame instead=20\n" ">>> of\n" - ">>> the current skb, because the firmware provides the rate information \n" + ">>> the current skb, because the firmware provides the rate information=20\n" ">>> \"out\n" ">>> of band\". A simple example to clarify:\n" - ">>> \n" + ">>>=20\n" ">>> Let's say ath10k transmits frames A, B and C. Then ath10k calls\n" ">>> ieee80211_tx_status() for frame C the rate information could be for\n" - ">>> frame A, or it could be the other around for frame A status the \n" + ">>> frame A, or it could be the other around for frame A status the=20\n" ">>> rate\n" ">>> information is from frame C.\n" - ">>> \n" + ">>>=20\n" ">>> In other words, there's no guarantee from what frame the rate\n" ">>> information is from.\n" - ">>> \n" + ">>>=20\n" ">>> Too me this feels like a bad idea but I'm not familiar enough with\n" - ">>> mac80211 to really comment on this. What kind of implications does \n" + ">>> mac80211 to really comment on this. What kind of implications does=20\n" ">>> this\n" ">>> have for Mesh or ATF, for example? Adding Johannes and Toke to hear\n" ">>> about their opinion about this.\n" - ">> \n" + ">>=20\n" ">> I was under the impression that the values gathered (at least for\n" ">> airtime) would be cumulative values? If it's just the airtime of a\n" ">> single random frame, which is what I understand from your example, it's\n" ">> not going to be terribly useful to provide ATF at least...\n" - ">> \n" + ">>=20\n" ">> -Toke\n" ">\n" "> The design:\n" - "> Whenever radio transmits packet, firmware will record numbers of bytes \n" - "> sent, MSDU\342\200\231s sent, TX duration, AMPDU information, ACK fail, BA fail, \n" - "> Rate at which packet is sent. This is recorded for 4 frames sent on that \n" - "> peer. Once 4 frames are sent for that peer, TX packet event is sent to \n" - "> ath10k driver with the recorded values. These rate values are updated to \n" + "> Whenever radio transmits packet, firmware will record numbers of bytes=20\n" + "> sent, MSDU=E2=80=99s sent, TX duration, AMPDU information, ACK fail, BA f=\n" + "ail,=20\n" + "> Rate at which packet is sent. This is recorded for 4 frames sent on that=\n" + "=20\n" + "> peer. Once 4 frames are sent for that peer, TX packet event is sent to=20\n" + "> ath10k driver with the recorded values. These rate values are updated to=\n" + "=20\n" "> mac80211 using ieee80211_tx_status().\n" "\n" "So the values reported are the sums for all four packets? But the latest\n" "value for rate information?\n" "\n" - "-Toke\n" - "\n" - "_______________________________________________\n" - "ath10k mailing list\n" - "ath10k@lists.infradead.org\n" - http://lists.infradead.org/mailman/listinfo/ath10k + -Toke -aedfe90bb1732c385ea29d62b5a6b7faef3eb7dd8e5399b052defe7e4fd60cfa +50c25c52e422fe75b9072e4cf79cf8657477b7912345700ac3e8450ec138320c
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.