Package: broadcom-sta-dkms Version: 6.30.223.271-25 Followup-For: Bug #1093091 X-Debbugs-Cc: die...@gnome.org
I tried patching this by vendoring the "last" `lib80211.h` that was public. See attached patch. So far, so good. I still get the IBT noise from: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1084853 But that's an entirely separate problem. At least this builds again :). -- System Information: Debian Release: trixie/sid APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 6.13-rc7-amd64 (SMP w/4 CPU threads; PREEMPT) Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_USER, TAINT_WARN, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages broadcom-sta-dkms depends on: ii dkms 3.1.0-2.1 Versions of packages broadcom-sta-dkms recommends: ii wireless-tools 30~pre9-18+b1 broadcom-sta-dkms suggests no packages. -- no debconf information
>From 0d4e9b3314331ae52a52c1839bcdcf30c9990dab Mon Sep 17 00:00:00 2001 From: Diego Escalante Urrelo <die...@gnome.org> Date: Thu, 30 Jan 2025 23:26:50 -0500 Subject: [PATCH 1/3] d/patches: pq refresh and missing author info * 29-linux601.patch: Add Arch Linux author info. * pq refresh. --- debian/patches/08-linux47.patch | 26 +++++++++--------- debian/patches/09-linux48.patch | 8 +++--- debian/patches/10-fix-kernel-warnings.patch | 18 ++++++------- debian/patches/11-linux411.patch | 2 +- debian/patches/12-linux412.patch | 8 +++--- debian/patches/15-linux51.patch | 4 +-- .../17-Get-rid-of-get_fs-set_fs-calls.patch | 4 +-- ...sure-power_mgmt-settings-are-honored.patch | 4 +-- ...9-wl-Fix-get-set-values-for-tx_power.patch | 10 +++---- .../22-wl-Fix-fall-through-warnings.patch | 4 +-- ...void-disconnecting-invalid-interface.patch | 4 +-- ...the-right-enums-for-cfg80211_get_bss.patch | 8 +++--- debian/patches/27-linux600.patch | 9 +++---- debian/patches/29-linux601.patch | 27 +++++++++++++------ debian/patches/30-fix-version-parsing.patch | 20 +++++++++----- .../31-6.12-unaligned-header-location.patch | 13 +++++++-- 16 files changed, 100 insertions(+), 69 deletions(-) diff --git a/debian/patches/08-linux47.patch b/debian/patches/08-linux47.patch index 1c871db..396efcc 100644 --- a/debian/patches/08-linux47.patch +++ b/debian/patches/08-linux47.patch @@ -18,12 +18,14 @@ https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=57fbcc This patch is based on https://github.com/archlinuxcn/repo/tree/f4d6cff1cacf8dad13006fade5f96bc2cf020a9b/broadcom-wl-dkms . --- - amd64/src/wl/sys/wl_cfg80211_hybrid.c | 24 ++++++++++++------------ - 1 file changed, 12 insertions(+), 12 deletions(-) + amd64/src/wl/sys/wl_cfg80211_hybrid.c | 29 +++++++++++++++++------------ + 1 file changed, 17 insertions(+), 12 deletions(-) +diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c +index 7b606e0..9de9448 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -@@ -235,8 +235,13 @@ static s8 wl_dbg_estr[][WL_DBG_ESTR_MAX] +@@ -235,8 +235,13 @@ static s8 wl_dbg_estr[][WL_DBG_ESTR_MAX] = { }; #endif @@ -38,7 +40,7 @@ https://github.com/archlinuxcn/repo/tree/f4d6cff1cacf8dad13006fade5f96bc2cf020a9 .center_freq = (_freq), \ .hw_value = (_channel), \ .flags = (_flags), \ -@@ -245,7 +250,7 @@ static s8 wl_dbg_estr[][WL_DBG_ESTR_MAX] +@@ -245,7 +250,7 @@ static s8 wl_dbg_estr[][WL_DBG_ESTR_MAX] = { } #define CHAN5G(_channel, _flags) { \ @@ -47,7 +49,7 @@ https://github.com/archlinuxcn/repo/tree/f4d6cff1cacf8dad13006fade5f96bc2cf020a9 .center_freq = 5000 + (5 * (_channel)), \ .hw_value = (_channel), \ .flags = (_flags), \ -@@ -379,7 +384,7 @@ static struct ieee80211_channel __wl_5gh +@@ -379,7 +384,7 @@ static struct ieee80211_channel __wl_5ghz_n_channels[] = { }; static struct ieee80211_supported_band __wl_band_2ghz = { @@ -56,7 +58,7 @@ https://github.com/archlinuxcn/repo/tree/f4d6cff1cacf8dad13006fade5f96bc2cf020a9 .channels = __wl_2ghz_channels, .n_channels = ARRAY_SIZE(__wl_2ghz_channels), .bitrates = wl_g_rates, -@@ -387,7 +392,7 @@ static struct ieee80211_supported_band _ +@@ -387,7 +392,7 @@ static struct ieee80211_supported_band __wl_band_2ghz = { }; static struct ieee80211_supported_band __wl_band_5ghz_a = { @@ -65,7 +67,7 @@ https://github.com/archlinuxcn/repo/tree/f4d6cff1cacf8dad13006fade5f96bc2cf020a9 .channels = __wl_5ghz_a_channels, .n_channels = ARRAY_SIZE(__wl_5ghz_a_channels), .bitrates = wl_a_rates, -@@ -395,7 +400,7 @@ static struct ieee80211_supported_band _ +@@ -395,7 +400,7 @@ static struct ieee80211_supported_band __wl_band_5ghz_a = { }; static struct ieee80211_supported_band __wl_band_5ghz_n = { @@ -74,7 +76,7 @@ https://github.com/archlinuxcn/repo/tree/f4d6cff1cacf8dad13006fade5f96bc2cf020a9 .channels = __wl_5ghz_n_channels, .n_channels = ARRAY_SIZE(__wl_5ghz_n_channels), .bitrates = wl_a_rates, -@@ -1876,8 +1881,8 @@ static s32 wl_alloc_wdev(struct device * +@@ -1876,8 +1881,8 @@ static s32 wl_alloc_wdev(struct device *dev, struct wireless_dev **rwdev) wdev->wiphy->max_num_pmkids = WL_NUM_PMKIDS_MAX; #endif wdev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_ADHOC); @@ -85,7 +87,7 @@ https://github.com/archlinuxcn/repo/tree/f4d6cff1cacf8dad13006fade5f96bc2cf020a9 wdev->wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM; wdev->wiphy->cipher_suites = __wl_cipher_suites; wdev->wiphy->n_cipher_suites = ARRAY_SIZE(__wl_cipher_suites); -@@ -2000,7 +2005,7 @@ static s32 wl_inform_single_bss(struct w +@@ -2000,7 +2005,7 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39) freq = ieee80211_channel_to_frequency(notif_bss_info->channel, (notif_bss_info->channel <= CH_MAX_2G_CHANNEL) ? @@ -94,7 +96,7 @@ https://github.com/archlinuxcn/repo/tree/f4d6cff1cacf8dad13006fade5f96bc2cf020a9 #else freq = ieee80211_channel_to_frequency(notif_bss_info->channel); #endif -@@ -2116,7 +2121,7 @@ wl_notify_connect_status(struct wl_cfg80 +@@ -2116,7 +2121,7 @@ wl_notify_connect_status(struct wl_cfg80211_priv *wl, struct net_device *ndev, return err; } chan = wf_chspec_ctlchan(chanspec); @@ -103,7 +105,7 @@ https://github.com/archlinuxcn/repo/tree/f4d6cff1cacf8dad13006fade5f96bc2cf020a9 freq = ieee80211_channel_to_frequency(chan, band); channel = ieee80211_get_channel(wiphy, freq); cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL); -@@ -2250,10 +2255,10 @@ static void wl_ch_to_chanspec(struct iee +@@ -2250,10 +2255,10 @@ static void wl_ch_to_chanspec(struct ieee80211_channel *chan, struct wl_join_par join_params->params.chanspec_list[0] = ieee80211_frequency_to_channel(chan->center_freq); @@ -116,7 +118,7 @@ https://github.com/archlinuxcn/repo/tree/f4d6cff1cacf8dad13006fade5f96bc2cf020a9 chanspec |= WL_CHANSPEC_BAND_5G; } else { -@@ -2885,7 +2890,7 @@ static s32 wl_update_wiphybands(struct w +@@ -2885,7 +2890,7 @@ static s32 wl_update_wiphybands(struct wl_cfg80211_priv *wl) if (phy == 'n' || phy == 'a' || phy == 'v') { wiphy = wl_to_wiphy(wl); diff --git a/debian/patches/09-linux48.patch b/debian/patches/09-linux48.patch index b0e4c02..24ad2c0 100644 --- a/debian/patches/09-linux48.patch +++ b/debian/patches/09-linux48.patch @@ -14,10 +14,10 @@ Koos Vriezen 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -index cc5422d..05b9fd3 100644 +index 9de9448..3cf5c79 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -@@ -2386,8 +2386,15 @@ wl_bss_connect_done(struct wl_cfg80211_priv *wl, struct net_device *ndev, +@@ -2391,8 +2391,15 @@ wl_bss_connect_done(struct wl_cfg80211_priv *wl, struct net_device *ndev, s32 err = 0; if (wl->scan_request) { @@ -34,7 +34,7 @@ index cc5422d..05b9fd3 100644 wl->scan_request = NULL; } -@@ -2488,7 +2495,14 @@ wl_notify_scan_status(struct wl_cfg80211_priv *wl, struct net_device *ndev, +@@ -2493,7 +2500,14 @@ wl_notify_scan_status(struct wl_cfg80211_priv *wl, struct net_device *ndev, scan_done_out: if (wl->scan_request) { @@ -49,7 +49,7 @@ index cc5422d..05b9fd3 100644 wl->scan_request = NULL; } rtnl_unlock(); -@@ -2913,7 +2927,14 @@ s32 wl_cfg80211_down(struct net_device *ndev) +@@ -2918,7 +2932,14 @@ s32 wl_cfg80211_down(struct net_device *ndev) s32 err = 0; if (wl->scan_request) { diff --git a/debian/patches/10-fix-kernel-warnings.patch b/debian/patches/10-fix-kernel-warnings.patch index 0fb0337..b657514 100644 --- a/debian/patches/10-fix-kernel-warnings.patch +++ b/debian/patches/10-fix-kernel-warnings.patch @@ -8,10 +8,10 @@ Origin: https://bugs.debian.org/843387 1 file changed, 60 insertions(+), 27 deletions(-) diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -index 05b9fd3..551fe1f 100644 +index 3cf5c79..9551af7 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -@@ -1968,7 +1968,7 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info +@@ -1973,7 +1973,7 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info if (dtoh32(bi->length) > WL_BSS_INFO_MAX) { WL_DBG(("Beacon is larger than buffer. Discarding\n")); @@ -20,7 +20,7 @@ index 05b9fd3..551fe1f 100644 } notif_bss_info = kzalloc(sizeof(*notif_bss_info) + sizeof(*mgmt) - sizeof(u8) + WL_BSS_INFO_MAX, GFP_KERNEL); -@@ -1992,9 +1992,15 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info +@@ -1997,9 +1997,15 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info beacon_proberesp->capab_info = cpu_to_le16(bi->capability); wl_rst_ie(wl); @@ -38,7 +38,7 @@ index 05b9fd3..551fe1f 100644 notif_bss_info->frame_len = offsetof(struct ieee80211_mgmt, u.beacon.variable) + wl_get_ielen(wl); #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39) -@@ -2006,14 +2012,14 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info +@@ -2011,14 +2017,14 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info #endif if (freq == 0) { WL_ERR(("Invalid channel, fail to chcnage channel to freq\n")); @@ -57,7 +57,7 @@ index 05b9fd3..551fe1f 100644 } WL_DBG(("SSID : \"%s\", rssi %d, channel %d, capability : 0x04%x, bssid %pM\n", -@@ -2021,28 +2027,37 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info +@@ -2026,28 +2032,37 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info mgmt->u.beacon.capab_info, &bi->BSSID)); signal = notif_bss_info->rssi * 100; @@ -113,7 +113,7 @@ index 05b9fd3..551fe1f 100644 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) cfg80211_put_bss(wiphy, cbss); -@@ -2050,6 +2065,7 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info +@@ -2055,6 +2070,7 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info cfg80211_put_bss(cbss); #endif @@ -121,7 +121,7 @@ index 05b9fd3..551fe1f 100644 kfree(notif_bss_info); return err; -@@ -2316,6 +2332,9 @@ static s32 wl_update_bss_info(struct wl_cfg80211_priv *wl) +@@ -2321,6 +2337,9 @@ static s32 wl_update_bss_info(struct wl_cfg80211_priv *wl) if (err) goto update_bss_info_out; @@ -131,7 +131,7 @@ index 05b9fd3..551fe1f 100644 ie = ((u8 *)bi) + bi->ie_offset; ie_len = bi->ie_length; } else { -@@ -2328,11 +2347,18 @@ static s32 wl_update_bss_info(struct wl_cfg80211_priv *wl) +@@ -2333,11 +2352,18 @@ static s32 wl_update_bss_info(struct wl_cfg80211_priv *wl) ie_len = bss->len_information_elements; #endif wl->conf->channel = *bss->channel; @@ -150,7 +150,7 @@ index 05b9fd3..551fe1f 100644 } tim = bcm_parse_tlvs(ie, ie_len, WLAN_EID_TIM); -@@ -2360,10 +2386,17 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev, +@@ -2365,10 +2391,17 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev, struct wl_cfg80211_connect_info *conn_info = wl_to_conn(wl); s32 err = 0; diff --git a/debian/patches/11-linux411.patch b/debian/patches/11-linux411.patch index 3b6a4cf..2b94df3 100644 --- a/debian/patches/11-linux411.patch +++ b/debian/patches/11-linux411.patch @@ -21,7 +21,7 @@ Last-Update: 2017-05-04 2 files changed, 5 insertions(+) diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -index 551fe1f..83930ec 100644 +index 9551af7..694c03d 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c @@ -30,6 +30,9 @@ diff --git a/debian/patches/12-linux412.patch b/debian/patches/12-linux412.patch index efc626d..e1673cb 100644 --- a/debian/patches/12-linux412.patch +++ b/debian/patches/12-linux412.patch @@ -8,7 +8,7 @@ Origin: https://bugs.debian.org/867258 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -index 83930ec..1ec2ef3 100644 +index 694c03d..5e8f573 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c @@ -53,7 +53,11 @@ u32 wl_dbg_level = WL_DBG_ERR; @@ -24,7 +24,7 @@ index 83930ec..1ec2ef3 100644 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) static s32 wl_cfg80211_scan(struct wiphy *wiphy, -@@ -466,8 +470,11 @@ wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len) +@@ -471,8 +475,11 @@ wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len) static s32 wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev, @@ -38,7 +38,7 @@ index 83930ec..1ec2ef3 100644 { struct wl_cfg80211_priv *wl = wiphy_to_wl(wiphy); struct wireless_dev *wdev; -@@ -2387,6 +2394,15 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev, +@@ -2392,6 +2399,15 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev, const wl_event_msg_t *e, void *data) { struct wl_cfg80211_connect_info *conn_info = wl_to_conn(wl); @@ -54,7 +54,7 @@ index 83930ec..1ec2ef3 100644 s32 err = 0; err = wl_get_assoc_ies(wl); -@@ -2401,12 +2417,17 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev, +@@ -2406,12 +2422,17 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev, return err; cfg80211_roamed(ndev, diff --git a/debian/patches/15-linux51.patch b/debian/patches/15-linux51.patch index 40f23b5..5acfe34 100644 --- a/debian/patches/15-linux51.patch +++ b/debian/patches/15-linux51.patch @@ -17,10 +17,10 @@ Bug-Ubuntu: https://bugs.launchpad.net/bugs/1830042 2 files changed, 8 insertions(+) diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -index 1ec2ef3..8e01841 100644 +index 5e8f573..61446fc 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -@@ -457,7 +457,11 @@ wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len) +@@ -462,7 +462,11 @@ wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len) ifr.ifr_data = (caddr_t)&ioc; fs = get_fs(); diff --git a/debian/patches/17-Get-rid-of-get_fs-set_fs-calls.patch b/debian/patches/17-Get-rid-of-get_fs-set_fs-calls.patch index 904ee25..553988d 100644 --- a/debian/patches/17-Get-rid-of-get_fs-set_fs-calls.patch +++ b/debian/patches/17-Get-rid-of-get_fs-set_fs-calls.patch @@ -23,7 +23,7 @@ Signed-off-by: Joan Bruguera <joanbrugue...@gmail.com> 5 files changed, 42 insertions(+), 55 deletions(-) diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -index 8e01841..111ec5a 100644 +index 61446fc..5ca1f49 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c @@ -41,6 +41,7 @@ @@ -34,7 +34,7 @@ index 8e01841..111ec5a 100644 #define EVENT_TYPE(e) dtoh32((e)->event_type) #define EVENT_FLAGS(e) dtoh16((e)->flags) -@@ -442,34 +443,8 @@ static void key_endian_to_host(struct wl_wsec_key *key) +@@ -447,34 +448,8 @@ static void key_endian_to_host(struct wl_wsec_key *key) static s32 wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len) { diff --git a/debian/patches/18-wl-Make-sure-power_mgmt-settings-are-honored.patch b/debian/patches/18-wl-Make-sure-power_mgmt-settings-are-honored.patch index defc0b9..b3cbe26 100644 --- a/debian/patches/18-wl-Make-sure-power_mgmt-settings-are-honored.patch +++ b/debian/patches/18-wl-Make-sure-power_mgmt-settings-are-honored.patch @@ -14,10 +14,10 @@ keep PM off, no matter the circumstances. 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -index 111ec5a..e81389f 100644 +index 5ca1f49..978cf7a 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -@@ -1479,7 +1479,9 @@ wl_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *dev, +@@ -1484,7 +1484,9 @@ wl_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *dev, s32 pm; s32 err = 0; diff --git a/debian/patches/19-wl-Fix-get-set-values-for-tx_power.patch b/debian/patches/19-wl-Fix-get-set-values-for-tx_power.patch index a0e7ad9..f7bb69f 100644 --- a/debian/patches/19-wl-Fix-get-set-values-for-tx_power.patch +++ b/debian/patches/19-wl-Fix-get-set-values-for-tx_power.patch @@ -18,7 +18,7 @@ utilities like `iwconfig` or `iw`. 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -index e81389f..fd2430e 100644 +index 978cf7a..c941bcc 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c @@ -89,13 +89,13 @@ static s32 wl_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev, u @@ -38,7 +38,7 @@ index e81389f..fd2430e 100644 #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) -@@ -1080,24 +1080,25 @@ wl_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev, u16 reason_c +@@ -1085,24 +1085,25 @@ wl_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev, u16 reason_c #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) static s32 wl_cfg80211_set_tx_power(struct wiphy *wiphy, struct wireless_dev *wdev, @@ -68,7 +68,7 @@ index e81389f..fd2430e 100644 switch (type) { case NL80211_TX_POWER_AUTOMATIC: -@@ -1116,6 +1117,9 @@ wl_cfg80211_set_tx_power(struct wiphy *wiphy, enum tx_power_setting type, s32 db +@@ -1121,6 +1122,9 @@ wl_cfg80211_set_tx_power(struct wiphy *wiphy, enum tx_power_setting type, s32 db break; } @@ -78,7 +78,7 @@ index e81389f..fd2430e 100644 disable = WL_RADIO_SW_DISABLE << 16; disable = htod32(disable); err = wl_dev_ioctl(ndev, WLC_SET_RADIO, &disable, sizeof(disable)); -@@ -1124,11 +1128,7 @@ wl_cfg80211_set_tx_power(struct wiphy *wiphy, enum tx_power_setting type, s32 db +@@ -1129,11 +1133,7 @@ wl_cfg80211_set_tx_power(struct wiphy *wiphy, enum tx_power_setting type, s32 db return err; } @@ -91,7 +91,7 @@ index e81389f..fd2430e 100644 if (err) { WL_ERR(("qtxpower error (%d)\n", err)); return err; -@@ -1156,7 +1156,7 @@ static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, s32 *dbm) +@@ -1161,7 +1161,7 @@ static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, s32 *dbm) return err; } result = (u8) (txpwrdbm & ~WL_TXPWR_OVERRIDE); diff --git a/debian/patches/22-wl-Fix-fall-through-warnings.patch b/debian/patches/22-wl-Fix-fall-through-warnings.patch index 3d4db73..49f2cf9 100644 --- a/debian/patches/22-wl-Fix-fall-through-warnings.patch +++ b/debian/patches/22-wl-Fix-fall-through-warnings.patch @@ -21,10 +21,10 @@ src/wl/sys/wl_cfg80211_hybrid.c:820:2: note: here 1 file changed, 1 insertion(+) diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -index fd2430e..195c0e4 100644 +index c941bcc..03fba6e 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -@@ -790,6 +790,7 @@ wl_set_auth_type(struct net_device *dev, struct cfg80211_connect_params *sme) +@@ -795,6 +795,7 @@ wl_set_auth_type(struct net_device *dev, struct cfg80211_connect_params *sme) break; case NL80211_AUTHTYPE_NETWORK_EAP: WL_DBG(("network eap\n")); diff --git a/debian/patches/23-wl-Avoid-disconnecting-invalid-interface.patch b/debian/patches/23-wl-Avoid-disconnecting-invalid-interface.patch index 9f95a59..3526317 100644 --- a/debian/patches/23-wl-Avoid-disconnecting-invalid-interface.patch +++ b/debian/patches/23-wl-Avoid-disconnecting-invalid-interface.patch @@ -9,10 +9,10 @@ interface. 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -index 195c0e4..1801f70 100644 +index 03fba6e..f6d4feb 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -@@ -1065,14 +1065,15 @@ wl_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev, u16 reason_c +@@ -1070,14 +1070,15 @@ wl_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev, u16 reason_c WL_DBG(("Reason %d\n", reason_code)); if (wl->profile->active) { diff --git a/debian/patches/24-wl-Use-the-right-enums-for-cfg80211_get_bss.patch b/debian/patches/24-wl-Use-the-right-enums-for-cfg80211_get_bss.patch index dcee6d1..7c05854 100644 --- a/debian/patches/24-wl-Use-the-right-enums-for-cfg80211_get_bss.patch +++ b/debian/patches/24-wl-Use-the-right-enums-for-cfg80211_get_bss.patch @@ -3,12 +3,14 @@ Date: Sun, 2 Aug 2020 19:54:56 -0500 Subject: wl: Use the right enums for cfg80211_get_bss --- - amd64/src/wl/sys/wl_cfg80211_hybrid.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + amd64/src/wl/sys/wl_cfg80211_hybrid.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) +diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c +index f6d4feb..0ed402c 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -@@ -2309,7 +2309,13 @@ static s32 wl_update_bss_info(struct wl_ +@@ -2309,7 +2309,13 @@ static s32 wl_update_bss_info(struct wl_cfg80211_priv *wl) ssid = &wl->profile->ssid; bss = cfg80211_get_bss(wl_to_wiphy(wl), NULL, (s8 *)&wl->bssid, diff --git a/debian/patches/27-linux600.patch b/debian/patches/27-linux600.patch index 664e748..59ea862 100644 --- a/debian/patches/27-linux600.patch +++ b/debian/patches/27-linux600.patch @@ -1,4 +1,3 @@ -From 933540c63f33e6ac2825d65c4b681ef3387d9146 Mon Sep 17 00:00:00 2001 From: Antoine Cotten <he...@acotten.com> Date: Mon, 15 Aug 2022 17:53:51 +0200 Subject: [PATCH] cfg80211_roam_info compat for MLO APIs in Linux >= 6.0 @@ -10,14 +9,14 @@ See also: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/com Original patch by Joan Bruguera: https://gist.github.com/joanbm/207210d74637870c01ef5a3c262a597d --- - src/wl/sys/wl_cfg80211_hybrid.c | 4 ++++ + amd64/src/wl/sys/wl_cfg80211_hybrid.c | 4 ++++ 1 file changed, 4 insertions(+) -diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c -index 5e9e6d3..5ec35c5 100644 +diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c +index 0ed402c..9b20792 100644 --- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c +++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c -@@ -2412,7 +2412,11 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev, +@@ -2390,7 +2390,11 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev, struct wl_cfg80211_connect_info *conn_info = wl_to_conn(wl); #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) struct cfg80211_roam_info roam_info = { diff --git a/debian/patches/29-linux601.patch b/debian/patches/29-linux601.patch index b29e271..ad83d2e 100644 --- a/debian/patches/29-linux601.patch +++ b/debian/patches/29-linux601.patch @@ -1,7 +1,18 @@ -diff -Nurp -u -r a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c ---- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c 2022-12-12 00:23:30.821615599 +0000 -+++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c 2022-12-12 00:35:47.854975024 +0000 -@@ -105,14 +105,28 @@ static s32 wl_cfg80211_get_tx_power(stru +From: "Jan Alexander Steffens (heftig)" <hef...@archlinux.org> +Date: Thu, 30 Jan 2025 22:59:05 -0500 +Subject: linux601 + +See: https://gitlab.archlinux.org/archlinux/packaging/packages/broadcom-wl-dkms/-/commit/1d6c1d51b78711bf383a14146fdfb4b3d08939e7.patch + +--- + amd64/src/wl/sys/wl_cfg80211_hybrid.c | 46 ++++++++++++++++++++++++++++++----- + 1 file changed, 40 insertions(+), 6 deletions(-) + +diff --git a/amd64/src/wl/sys/wl_cfg80211_hybrid.c b/amd64/src/wl/sys/wl_cfg80211_hybrid.c +index 9b20792..2c865c1 100644 +--- a/amd64/src/wl/sys/wl_cfg80211_hybrid.c ++++ b/amd64/src/wl/sys/wl_cfg80211_hybrid.c +@@ -104,14 +104,28 @@ static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, struct wireless_dev *wd static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, s32 *dbm); #endif @@ -32,7 +43,7 @@ diff -Nurp -u -r a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybr static s32 wl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *dev, u8 key_idx, bool pairwise, const u8 *mac_addr, struct key_params *params); static s32 wl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *dev, -@@ -1161,7 +1175,12 @@ static s32 wl_cfg80211_get_tx_power(stru +@@ -1168,7 +1182,12 @@ static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, s32 *dbm) return err; } @@ -46,7 +57,7 @@ diff -Nurp -u -r a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybr static s32 wl_cfg80211_config_default_key(struct wiphy *wiphy, struct net_device *dev, u8 key_idx, bool unicast, bool multicast) -@@ -1186,7 +1205,12 @@ wl_cfg80211_config_default_key(struct wi +@@ -1193,7 +1212,12 @@ wl_cfg80211_config_default_key(struct wiphy *wiphy, return 0; } @@ -60,7 +71,7 @@ diff -Nurp -u -r a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybr static s32 wl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *dev, u8 key_idx, bool pairwise, const u8 *mac_addr, struct key_params *params) -@@ -1307,7 +1331,11 @@ wl_cfg80211_add_key(struct wiphy *wiphy, +@@ -1314,7 +1338,11 @@ wl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *dev, return err; } @@ -73,7 +84,7 @@ diff -Nurp -u -r a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybr static s32 wl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *dev, u8 key_idx, bool pairwise, const u8 *mac_addr) -@@ -1350,7 +1378,13 @@ wl_cfg80211_del_key(struct wiphy *wiphy, +@@ -1357,7 +1385,13 @@ wl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *dev, return err; } diff --git a/debian/patches/30-fix-version-parsing.patch b/debian/patches/30-fix-version-parsing.patch index 8e8ae75..f1c3166 100644 --- a/debian/patches/30-fix-version-parsing.patch +++ b/debian/patches/30-fix-version-parsing.patch @@ -1,11 +1,19 @@ -Author: Andreas Beckmann <a...@debian.org> -Description: fix detection of LINUXVER_WEXT_ONLY - - fix version parsing if there are only two numeric components (e.g. 6.7-rc1) - - set SUBLEVEL to 0 if missing - - fix version comparison logic - - -a and -o don't have well defined precedence +From: Andreas Beckmann <a...@debian.org> +Date: Thu, 30 Jan 2025 22:59:05 -0500 +Subject: fix detection of LINUXVER_WEXT_ONLY + Bug-Debian: https://bugs.debian.org/1057447 +- fix version parsing if there are only two numeric components (e.g. 6.7-rc1) +- set SUBLEVEL to 0 if missing +- fix version comparison logic +- -a and -o don't have well defined precedence +--- + amd64/Makefile | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/amd64/Makefile b/amd64/Makefile +index ed16dfc..4d7e9d1 100644 --- a/amd64/Makefile +++ b/amd64/Makefile @@ -20,20 +20,22 @@ diff --git a/debian/patches/31-6.12-unaligned-header-location.patch b/debian/patches/31-6.12-unaligned-header-location.patch index 3d2350e..5c649e4 100644 --- a/debian/patches/31-6.12-unaligned-header-location.patch +++ b/debian/patches/31-6.12-unaligned-header-location.patch @@ -1,5 +1,14 @@ +From: Eduard Bloch <bl...@debian.org> +Date: Thu, 30 Jan 2025 22:59:05 -0500 +Subject: .12-unaligned-header-location + +--- + amd64/src/wl/sys/wl_linux.c | 4 ++++ + i386/src/wl/sys/wl_linux.c | 5 +++++ + 2 files changed, 9 insertions(+) + diff --git a/amd64/src/wl/sys/wl_linux.c b/amd64/src/wl/sys/wl_linux.c -index 0d05100..eaf1053 100644 +index 46e5ce5..4d618b7 100644 --- a/amd64/src/wl/sys/wl_linux.c +++ b/amd64/src/wl/sys/wl_linux.c @@ -56,7 +56,11 @@ @@ -15,7 +24,7 @@ index 0d05100..eaf1053 100644 #include <proto/802.1d.h> diff --git a/i386/src/wl/sys/wl_linux.c b/i386/src/wl/sys/wl_linux.c -index 0d05100..b4b0543 100644 +index bff467d..77512a6 100644 --- a/i386/src/wl/sys/wl_linux.c +++ b/i386/src/wl/sys/wl_linux.c @@ -56,7 +56,12 @@ -- 2.47.2
>From e8a8238aa46643f82f3e421a8d46224283a157fb Mon Sep 17 00:00:00 2001 From: Diego Escalante Urrelo <die...@gnome.org> Date: Thu, 30 Jan 2025 23:42:37 -0500 Subject: [PATCH 2/3] d/patches: Fix build with 6.1.13 See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1093091 --- ...uild-Provide-local-lib80211.h-header.patch | 166 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 167 insertions(+) create mode 100644 debian/patches/32-build-Provide-local-lib80211.h-header.patch diff --git a/debian/patches/32-build-Provide-local-lib80211.h-header.patch b/debian/patches/32-build-Provide-local-lib80211.h-header.patch new file mode 100644 index 0000000..c7c7289 --- /dev/null +++ b/debian/patches/32-build-Provide-local-lib80211.h-header.patch @@ -0,0 +1,166 @@ +From: Diego Escalante Urrelo <die...@gnome.org> +Date: Thu, 30 Jan 2025 23:36:04 -0500 +Subject: build: Provide local lib80211.h header + +The `lib80211.h` header was moved into `libipw` in 6.1.13. This means +it's no longer available in standard kernel-headers. + +Luckily it's a small file and the driver only uses a struct that has not +changed in ages. + +This copies `lib80211.h` from the rename/remove commit below. + +See: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=02f220b5267042d0de649614eec84ded8aeecb4f +See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1093091 +--- + amd64/src/include/lib80211.h | 122 +++++++++++++++++++++++++++++++++++++++++++ + amd64/src/include/linuxver.h | 5 ++ + 2 files changed, 127 insertions(+) + create mode 100644 amd64/src/include/lib80211.h + +diff --git a/amd64/src/include/lib80211.h b/amd64/src/include/lib80211.h +new file mode 100644 +index 0000000..fd0f15d +--- /dev/null ++++ b/amd64/src/include/lib80211.h +@@ -0,0 +1,122 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * lib80211.h -- common bits for IEEE802.11 wireless drivers ++ * ++ * Copyright (c) 2008, John W. Linville <linvi...@tuxdriver.com> ++ * ++ * Some bits copied from old ieee80211 component, w/ original copyright ++ * notices below: ++ * ++ * Original code based on Host AP (software wireless LAN access point) driver ++ * for Intersil Prism2/2.5/3. ++ * ++ * Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen ++ * <j...@w1.fi> ++ * Copyright (c) 2002-2003, Jouni Malinen <j...@w1.fi> ++ * ++ * Adaption to a generic IEEE 802.11 stack by James Ketrenos ++ * <jketr...@linux.intel.com> ++ * ++ * Copyright (c) 2004, Intel Corporation ++ * ++ */ ++ ++#ifndef LIB80211_H ++#define LIB80211_H ++ ++#include <linux/types.h> ++#include <linux/list.h> ++#include <linux/atomic.h> ++#include <linux/if.h> ++#include <linux/skbuff.h> ++#include <linux/ieee80211.h> ++#include <linux/timer.h> ++#include <linux/seq_file.h> ++ ++#define NUM_WEP_KEYS 4 ++ ++enum { ++ IEEE80211_CRYPTO_TKIP_COUNTERMEASURES = (1 << 0), ++}; ++ ++struct module; ++ ++struct lib80211_crypto_ops { ++ const char *name; ++ struct list_head list; ++ ++ /* init new crypto context (e.g., allocate private data space, ++ * select IV, etc.); returns NULL on failure or pointer to allocated ++ * private data on success */ ++ void *(*init) (int keyidx); ++ ++ /* deinitialize crypto context and free allocated private data */ ++ void (*deinit) (void *priv); ++ ++ /* encrypt/decrypt return < 0 on error or >= 0 on success. The return ++ * value from decrypt_mpdu is passed as the keyidx value for ++ * decrypt_msdu. skb must have enough head and tail room for the ++ * encryption; if not, error will be returned; these functions are ++ * called for all MPDUs (i.e., fragments). ++ */ ++ int (*encrypt_mpdu) (struct sk_buff * skb, int hdr_len, void *priv); ++ int (*decrypt_mpdu) (struct sk_buff * skb, int hdr_len, void *priv); ++ ++ /* These functions are called for full MSDUs, i.e. full frames. ++ * These can be NULL if full MSDU operations are not needed. */ ++ int (*encrypt_msdu) (struct sk_buff * skb, int hdr_len, void *priv); ++ int (*decrypt_msdu) (struct sk_buff * skb, int keyidx, int hdr_len, ++ void *priv); ++ ++ int (*set_key) (void *key, int len, u8 * seq, void *priv); ++ int (*get_key) (void *key, int len, u8 * seq, void *priv); ++ ++ /* procfs handler for printing out key information and possible ++ * statistics */ ++ void (*print_stats) (struct seq_file *m, void *priv); ++ ++ /* Crypto specific flag get/set for configuration settings */ ++ unsigned long (*get_flags) (void *priv); ++ unsigned long (*set_flags) (unsigned long flags, void *priv); ++ ++ /* maximum number of bytes added by encryption; encrypt buf is ++ * allocated with extra_prefix_len bytes, copy of in_buf, and ++ * extra_postfix_len; encrypt need not use all this space, but ++ * the result must start at the beginning of the buffer and correct ++ * length must be returned */ ++ int extra_mpdu_prefix_len, extra_mpdu_postfix_len; ++ int extra_msdu_prefix_len, extra_msdu_postfix_len; ++ ++ struct module *owner; ++}; ++ ++struct lib80211_crypt_data { ++ struct list_head list; /* delayed deletion list */ ++ const struct lib80211_crypto_ops *ops; ++ void *priv; ++ atomic_t refcnt; ++}; ++ ++struct lib80211_crypt_info { ++ char *name; ++ /* Most clients will already have a lock, ++ so just point to that. */ ++ spinlock_t *lock; ++ ++ struct lib80211_crypt_data *crypt[NUM_WEP_KEYS]; ++ int tx_keyidx; /* default TX key index (crypt[tx_keyidx]) */ ++ struct list_head crypt_deinit_list; ++ struct timer_list crypt_deinit_timer; ++ int crypt_quiesced; ++}; ++ ++int lib80211_crypt_info_init(struct lib80211_crypt_info *info, char *name, ++ spinlock_t *lock); ++void lib80211_crypt_info_free(struct lib80211_crypt_info *info); ++int lib80211_register_crypto_ops(const struct lib80211_crypto_ops *ops); ++int lib80211_unregister_crypto_ops(const struct lib80211_crypto_ops *ops); ++const struct lib80211_crypto_ops *lib80211_get_crypto_ops(const char *name); ++void lib80211_crypt_delayed_deinit(struct lib80211_crypt_info *info, ++ struct lib80211_crypt_data **crypt); ++ ++#endif /* LIB80211_H */ +diff --git a/amd64/src/include/linuxver.h b/amd64/src/include/linuxver.h +index b05bc32..61a2f05 100644 +--- a/amd64/src/include/linuxver.h ++++ b/amd64/src/include/linuxver.h +@@ -148,8 +148,13 @@ typedef irqreturn_t(*FN_ISR) (int irq, void *dev_id, struct pt_regs *ptregs); + #endif + + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 13) ++#include "lib80211.h" ++#else + #include <net/lib80211.h> + #endif ++#endif ++ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) + #include <linux/ieee80211.h> + #else diff --git a/debian/patches/series b/debian/patches/series index a52136f..3ff7975 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -28,3 +28,4 @@ 29-linux601.patch 30-fix-version-parsing.patch 31-6.12-unaligned-header-location.patch +32-build-Provide-local-lib80211.h-header.patch -- 2.47.2