Source: broadcom-sta
Version: cfg80211 functionality updates, cleanups, fixes
Severity: normal
Tags: patch
X-Debbugs-Cc: die...@gnome.org

Hi,

I've been working on a few improvements to this driver, trying
(hopelessly) to fix the disconnect issues on my particular card + router
combination. Although my original goal has failed miserably, I was able
to figure out a couple of other fixes for common issues with this card.

I have pushed a branch to salsa, which includes the following fixes:
 * Make power management commands actually work (the driver ignores
 turning PM off)
 * Correctly read the value of TX power (the notorious "200dBm" bug)
 * Correctly refuse MAC address changing (fixes network-manager
 disconnects because of "random / custom mac address"
 * Cleanup a few compiler warnings, and cfg80211 API usage

The branch is here:
 https://salsa.debian.org/diegoe-guest/broadcom-sta/-/commits/diegoe_debian

While working on the above I also figured that I might as well try to
create a proof of concept "new upstream" without all the cruft from the
10 years of kernel versions conditionals:
 https://salsa.debian.org/diegoe-guest/broadcom-sta/-/commits/frankenwl

My "frankenwl" branch is functionally the same as the above
"diegoe_debian" branch, but it certainly makes it less convoluted to try
and find problems in the code going forward. That said, I wasn't sure
what would be the best way to proceed, or if it was a smart thing to do
anyway. I guess this package is on "life support" on most distros, so I
doubt there would be a objections on creating a shared new upstream (but
I'm not familiar with the packaging of this driver in Debian, or other
distros).

I also tried, naively, to contact cypress/broadcom to inquiry about a
newer firmware blob dump, or just a new code dump. Of course, no
response. I think it's worth highlighting that the kernel bcmf80211
driver is very similar to the broadcom-sta code, which lead me to
believe that it can work with the cards supported only by broadcom-sta,
we just need the firmware blob and plug the loose ends. Anyway, this is
probably never going to happen, unless someone figures out how to
extract the (say, in my case) BCM4360 software-side firmware blob from
the linux or mac or windows driver.

Anyway, I wanted to share this work here so it's considered for
inclusion for the upcoming Debian stable. At the very least this solves
a few nitpicks (power settings, tx set/get) that degrade the user
experience and a serious issue (mac address failures) that usually gets
new users stuck and confused (random NM disconnections).

I'm also aware that cards supported by this driver are "old" but most
computers trapped in the broadcom-sta driver are perfectly functional
today and will be for a few more years. In my particular case I'm
running a macbookpro11,1 (2013) which works flawlessly except for the
wifi! (Hah!) -- And I understand most other macbookpro models from
around 2013 share this or similar Broadcom cards that use this driver.
All those machines should be perfectly functional with Debian right now,
and for a few more years.

Hope to hear your feedback, I'm glad to cleanup this branch as you see
fit to get it merged into the package.

Diego

-- System Information:
Debian Release: bullseye/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.7.0-3-amd64 (SMP w/4 CPU threads)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Reply via email to