Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp365630pxf; Wed, 7 Apr 2021 01:10:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwJ8+40+aQH3q40GjRlJs+W8msAM7ZIzVYC1kKVC95oP7yDsKhSEsOb8cgCg4IpNxWna+LG X-Received: by 2002:a05:6e02:138e:: with SMTP id d14mr1794599ilo.239.1617783036612; Wed, 07 Apr 2021 01:10:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617783036; cv=none; d=google.com; s=arc-20160816; b=Zxd1adL8H30+ocepcBl3IhfoxW2RCaeJvtCfj5K6SjMhD+7/eJTUpnqgxRphMjQXER chZEyI6kFjIo8ePqV+t9u3AeoMUSF/pYvy8Lw6wRUmO/UOu/g0cxRZUHAhbAYDqpaF1g ImlS8qqUGyT8dp+4Eosenm2Gs1IWFc/koclH7Po2M2t+L5gvCVueX6SqPAge7U0Zrw8n WgMMLNflYQeVwIlGNssIiWJcueHTvoe9LxW2ZC4Yn6nYfThodt6+NUmcs1QagaLER4RK hyTgyA9sPre/JFTn1wxaqDS7x5QiwfiVkv+wOWlUuJpUJN8bnNKTSc3Yp+KYsARytKJ0 6EyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:subject:from :references:cc:to; bh=k4ZJGue2P3KpaKeEEdwnt3xbuAQKw4mu0CQpCcsAAZQ=; b=w1mIftkYBKOq0V3xhUywCzPapViW8HI8TPdI7OxkmcsgLriByVYK/8rPi4qxGtgaGD Nqg6KfAJLlmu9pNOR28oC+Y+jBesHMbPYWvF80H6OZ9paYn5lx/g86ADZBFIFHXHJTT/ jup2Ziw626UlsEz8z8zaxC5a5faFObf9nxZ4o3TiA7h4YM/H4TvaTzBqbgyCjG8Ae90Y wEcms9pbXBJYamqjJpEloVEFmm8Omj2RbvdViw8JOE6HEARkSjdoNmMT3tVhmpNdyqa/ PAD/K01+XtrX1gxgTgb05Wc8KuBOMlMohD3e2kWKDYgm+Mhp5yF7exd7BJJiKnI3N7i0 ioWA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w24si20116921jaq.43.2021.04.07.01.10.23; Wed, 07 Apr 2021 01:10:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239444AbhDFS3w (ORCPT + 99 others); Tue, 6 Apr 2021 14:29:52 -0400 Received: from vps-vb.mhejs.net ([37.28.154.113]:38006 "EHLO vps-vb.mhejs.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238613AbhDFS32 (ORCPT ); Tue, 6 Apr 2021 14:29:28 -0400 Received: from MUA by vps-vb.mhejs.net with esmtps (TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.93.0.4) (envelope-from ) id 1lTqRr-0003Ku-8U; Tue, 06 Apr 2021 20:29:11 +0200 To: Larry Finger Cc: Ping-Ke Shih , Johannes Berg , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Kalle Valo References: <846f6166-c570-01fc-6bbc-3e3b44e51327@maciej.szmigiero.name> <87r1jnohq6.fsf@codeaurora.org> <8e0434eb-d15f-065d-2ba7-b50c67877112@maciej.szmigiero.name> From: "Maciej S. Szmigiero" Subject: Re: rtlwifi/rtl8192cu AP mode broken with PS STA Message-ID: <1cec013f-1f30-ec40-ed73-1dea2dc74d5f@maciej.szmigiero.name> Date: Tue, 6 Apr 2021 20:29:05 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On 06.04.2021 18:25, Larry Finger wrote: > On 4/6/21 7:06 AM, Maciej S. Szmigiero wrote: >> On 06.04.2021 12:00, Kalle Valo wrote: >>> "Maciej S. Szmigiero" writes: >>> >>>> On 29.03.2021 00:54, Maciej S. Szmigiero wrote: >>>>> Hi, >>>>> >>>>> It looks like rtlwifi/rtl8192cu AP mode is broken when a STA is using PS, >>>>> since the driver does not update its beacon to account for TIM changes, >>>>> so a station that is sleeping will never learn that it has packets >>>>> buffered at the AP. >>>>> >>>>> Looking at the code, the rtl8192cu driver implements neither the set_tim() >>>>> callback, nor does it explicitly update beacon data periodically, so it >>>>> has no way to learn that it had changed. >>>>> >>>>> This results in the AP mode being virtually unusable with STAs that do >>>>> PS and don't allow for it to be disabled (IoT devices, mobile phones, >>>>> etc.). >>>>> >>>>> I think the easiest fix here would be to implement set_tim() for example >>>>> the way rt2x00 driver does: queue a work or schedule a tasklet to update >>>>> the beacon data on the device. >>>> >>>> Are there any plans to fix this? >>>> The driver is listed as maintained by Ping-Ke. >>> >>> Yeah, power save is hard and I'm not surprised that there are drivers >>> with broken power save mode support. If there's no fix available we >>> should stop supporting AP mode in the driver. >>> >> >> https://wireless.wiki.kernel.org/en/developers/documentation/mac80211/api >> clearly documents that "For AP mode, it must (...) react to the set_tim() >> callback or fetch each beacon from mac80211". >> >> The driver isn't doing either so no wonder the beacon it is sending >> isn't getting updated. >> >> As I have said above, it seems to me that all that needs to be done here >> is to queue a work in a set_tim() callback, then call >> send_beacon_frame() from rtlwifi/core.c from this work. >> >> But I don't know the exact device semantics, maybe it needs some other >> notification that the beacon has changed, too, or even tries to >> manage the TIM bitmap by itself. >> >> It would be a shame to lose the AP mode for such minor thing, though. >> >> I would play with this myself, but unfortunately I don't have time >> to work on this right now. >> >> That's where my question to Realtek comes: are there plans to actually >> fix this? > > Yes, I am working on this. My only question is "if you are such an expert on the problem, why do you not fix it?" I don't think I am an expert here - I've tried to use a rtl8192cu USB dongle in AP mode but its STAs would become unreachable or disconnect after a short while, so I have started investigating the reason for such problems. Ultimately, I have traced it to DTIM in beacons not indicating there are frames buffered for connected stations. Then I've looked how the beacon that is broadcast is supposed to get updated when it changes and seen there seems to be no existing mechanism for this in rtl8192cu driver. However, I had to stop at this point and post my findings as I could not commit more time to this issue due to other workload. > The example in rx200 is not particularly useful, and I have not found any other examples. That's why I thought it would be best if somebody from Realtek, with deep knowledge of both the driver and the hardware, could voice their opinion here. As I have stated earlier, just uploading new beacon to the hardware might not be enough for it to be (safely) updated. > Larry > Thanks, Maciej