Re: [PATCH 3/3] Bluetooth: btusb: Add a parameter to let users disable the fake CSR force-suspend hack
From: Luiz Augusto von Dentz
Date: Wed Nov 09 2022 - 17:39:26 EST
Hi Swyter,
On Wed, Nov 9, 2022 at 1:30 PM Swyter <swyterzone@xxxxxxxxx> wrote:
>
> On 09/11/2022 21:49, Luiz Augusto von Dentz wrote:
> > Hi Ismael,
> >
> > On Sat, Oct 29, 2022 at 1:25 PM Ismael Ferreras Morezuelas
> > <swyterzone@xxxxxxxxx> wrote:
> >>
> >> A few users have reported that their cloned Chinese dongle doesn't
> >> work well with the hack Hans de Goede added, that tries this
> >> off-on mechanism as a way to unfreeze them.
> >>
> >> It's still more than worthwhile to have it, as in the vast majority
> >> of cases it either completely brings dongles to life or just resets
> >> them harmlessly as it already happens during normal USB operation.
> >>
> >> This is nothing new and the controllers are expected to behave
> >> correctly. But yeah, go figure. :)
> >>
> >> For that unhappy minority we can easily handle this edge case by letting
> >> users disable it via our «btusb.disable_fake_csr_forcesuspend_hack=1» kernel option.
> >
> > Don't really like the idea of adding module parameter for device
> > specific problem.
>
> It's not for a single device, it's for a whole class of unnamed devices
> that are currently screwed even after all this.
>
>
> >> - ret = pm_runtime_suspend(&data->udev->dev);
> >> - if (ret >= 0)
> >> - msleep(200);
> >> - else
> >> - bt_dev_warn(hdev, "CSR: Couldn't suspend the device for our Barrot 8041a02 receive-issue workaround");
> >> + ret = pm_runtime_suspend(&data->udev->dev);
> >> + if (ret >= 0)
> >> + msleep(200);
> >> + else
> >> + bt_dev_warn(hdev, "CSR: Couldn't suspend the device for our Barrot 8041a02 receive-issue workaround");
> >
> > Is this specific to Barrot 8041a02? Why don't we add a quirk then?
> >
>
> We don't know how specific it is, we suspect the getting stuck thing happens with Barrot controllers,
> but in this world of lasered-out counterfeit chip IDs you can never be sure. Unless someone decaps them.
>
> Hans added that name because it's the closest thing we have, but this applies to a lot of chips.
> So much that now we do the hack by default, for very good reasons.
>
> So please reconsider, this closes the gap.
>
> With this last patch we go from ~+90% to almost ~100%, as the rest of generic quirks we added
> don't really hurt; even if a particular dongle only needs a few of the zoo of quirks we set,
> it's alright if we vaccinate them against all of these, except some are "allergic"
> against this particular "vaccine". Let people skip this one. :-)
>
> You know how normal BT controllers are utterly and inconsistently broken, now imagine you have a whole host
> of vendors reusing a VID/PID/version/subversion, masking as a CSR for bizarre reasons to avoid paying
> any USB-IF fees, or whatever. That's what we are fighting against here.
I see, but for suspend in particular, can't we actually handle it
somehow? I mean if we can detect the controller is getting stuck and
print some information and flip the quirk? Otherwise Im afraid this
parameter will end up always being set by distros to avoid suspend
problems.
--
Luiz Augusto von Dentz