On Sat, 30 Dec, 2023 14:45:23 +0100 Michael Büsch <m@xxxxxxx> wrote: > [[PGP Signed Part:Undecided]] > On Sat, 30 Dec 2023 04:51:51 +0000 > Rahul Rameshbabu <sergeantsagara@xxxxxxxxxxxxxx> wrote: > >> bcm4331 appears to lack QoS support. > > I think that's rather unlikely. > The firmware probably is just too old for this device. I just retested with newer firmware released on 2012-08-15. I still see the same issue with QoS. This appears to be the newest firmware I can acquire from http://lwfinger.com/b43-firmware/, which I extract from broadcom-wl-6.30.163.46. [ 11.661972] b43-phy0: Loading firmware version 784.2 (2012-08-15 21:35:19) [ 11.919942] b43-phy0: Loading firmware version 784.2 (2012-08-15 21:35:19) [ 13.717460] [drm] amdgpu kernel modesetting enabled. [ 13.717705] amdgpu: Virtual CRAT table created for CPU [ 13.717719] amdgpu: Topology: Add CPU node [ 13.776896] NET: Registered PF_PACKET protocol family [ 15.234058] b43-phy0: Loading firmware version 784.2 (2012-08-15 21:35:19) [ 15.319388] wlp3s0b1: authenticate with 1c:87:2c:6f:f4:e0 [ 15.333239] wlp3s0b1: send auth to 1c:87:2c:6f:f4:e0 (try 1/3) [ 15.341672] wlp3s0b1: authenticated [ 15.341921] wlp3s0b1: associate with 1c:87:2c:6f:f4:e0 (try 1/3) [ 15.346912] wlp3s0b1: RX AssocResp from 1c:87:2c:6f:f4:e0 (capab=0x411 status=0 aid=3) [ 15.347255] wlp3s0b1: associated > >> +static const u16 b43_no_qos_chip_ids[] = { >> + BCMA_CHIP_ID_BCM4331, >> + 0, >> +}; >> + >> +static bool b43_qos_not_supported(struct b43_wldev *dev) >> +{ >> + int idx; >> + >> + for (idx = 0; b43_no_qos_chip_ids[idx]; idx++) >> + if (dev->dev->chip_id == b43_no_qos_chip_ids[idx]) >> + return true; >> + >> + return false; >> +} >> + >> static void b43_wireless_core_exit(struct b43_wldev *dev); >> static int b43_wireless_core_init(struct b43_wldev *dev); >> static struct b43_wldev * b43_wireless_core_stop(struct b43_wldev *dev); >> @@ -2587,7 +2603,7 @@ static void b43_request_firmware(struct work_struct *work) >> >> start_ieee80211: >> wl->hw->queues = B43_QOS_QUEUE_NUM; >> - if (!modparam_qos || dev->fw.opensource) >> + if (!modparam_qos || dev->fw.opensource || b43_qos_not_supported(wl->current_dev)) > > This looks a bit over-engineered to me. > Can we just instead do it like this, please? > > if (!modparam_qos || dev->fw.opensource || dev->dev->chip_id == BCMA_CHIP_ID_BCM4331) > Ack. >> wl->hw->queues = 1; >> >> err = ieee80211_register_hw(wl->hw); -- Thanks, Rahul Rameshbabu