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

Reply via email to