Search Linux Wireless

Re: Question on beacon-miss offloading.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12 June 2015 at 17:37, Ben Greear <greearb@xxxxxxxxxxxxxxx> wrote:
> On 06/11/2015 11:03 PM, Michal Kazior wrote:
>> On 12 June 2015 at 01:38, Ben Greear <greearb@xxxxxxxxxxxxxxx> wrote:
>>> On 06/11/2015 02:07 PM, Ben Greear wrote:
>>>> In my ath10k CT firmware, I am disabling the beacon-miss offloading
>>>> to save space and because it will not work with lots of virtual
>>>> stations.
>>>>
>>>> But, it must be that I need some way to tell the stack that this
>>>> feature is not enabled, because when suddenly kill my AP, then
>>>> the ath10k station connected to it shows endless 'beacon loss' events
>>>> in 'iw events' output, but it never actually loses connection.
>>>>
>>>> Stock firmware works fine, so probably I just need to disable
>>>> some feature flag when registering the ath10k hardware
>>>> when using CT firmware.
>>>>
>>>> With stock firmware, I see a quick dissassociation due to inactivity.
>>>>
>>>> I am having poor luck finding how a driver tells the stack
>>>> it has beacon miss offload or not, so, does anyone know how
>>>> this is controlled?
>>>
>>> I still am not sure why stock firmware works, but it appears
>>> the reason mine is failing is that the ACK status for mgt frames
>>> is always set to TRUE since the ath10k wmi-mgt-tx API is so
>>> lame.  So, mac80211 does a probe, ath10k lies and says it was
>>> acked, and mac80211 then things all is well for another few
>>> seconds.
>>
>> mac80211 shouldn't do a Probe Req to an AP on beacon loss because
>> ath10k advertises it supports tx-status report. Hence mac80211 should
>> use NullFunc frames which shouldn't go through wmi-mgmt-tx but htt
>> tx-frm.
>>
>> But then again: NullFunc status reporting via htt tx-frm was broken on
>> 10.1 if memory serves right. I believe it was fixed in 10.2 or 10.2.4.
>>
>> This problem has been effectively obscured on stock 10.1 by the
>> offloaded beacon miss.
>
> Thanks for the hint.  I was able to fix my firmware to properly
> return htt tx status, and now it appears to work properly.
>
> A quick throughput test works as well, so hopefully no regressions.
>
> I guess the NulFunc related comment is incorrect for 10.1 stock firmware?
>
> Maybe some others?
>
> static void ath10k_tx_htt(struct ath10k *ar, struct sk_buff *skb)
> {
>         struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
>         int ret = 0;
>
>         if (ar->htt.target_version_major >= 3) {
>                 /* Since HTT 3.0 there is no separate mgmt tx command */
>                 ret = ath10k_htt_tx(&ar->htt, skb);
>                 goto exit;
>         }
>
>         if (ieee80211_is_mgmt(hdr->frame_control)) {
>                 if (test_bit(ATH10K_FW_FEATURE_HAS_WMI_MGMT_TX,
>                              ar->fw_features)) {
>                         if (skb_queue_len(&ar->wmi_mgmt_tx_queue) >=
>                             ATH10K_MAX_NUM_MGMT_PENDING) {
>                                 ath10k_warn(ar, "reached WMI management transmit queue limit\n");
>                                 ret = -EBUSY;
>                                 goto exit;
>                         }
>
>                         skb_queue_tail(&ar->wmi_mgmt_tx_queue, skb);
>                         ieee80211_queue_work(ar->hw, &ar->wmi_mgmt_tx_work);
>                 } else {
>                         ret = ath10k_htt_mgmt_tx(&ar->htt, skb);
>                 }
>         } else if (!test_bit(ATH10K_FW_FEATURE_HAS_WMI_MGMT_TX,
>                              ar->fw_features) &&
>                    ieee80211_is_nullfunc(hdr->frame_control)) {
>                 /* FW does not report tx status properly for NullFunc frames
>                  * unless they are sent through mgmt tx path. mac80211 sends
>                  * those frames when it detects link/beacon loss and depends
>                  * on the tx status to be correct. */
>                 ret = ath10k_htt_mgmt_tx(&ar->htt, skb);
>         } else {
>                 ret = ath10k_htt_tx(&ar->htt, skb);
>         }

The NullFunc workaround was originally done for 999.999.0.636 but
should be true for 10.1 as well with the sole exception the latter
doesn't have htt-mgmt-tx to workaround the problem.


Michał
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux