Package: broadcom-sta-dkms
Version: 6.30.223.271-25
Followup-For: Bug #1093091
X-Debbugs-Cc: die...@gnome.org

I botched the kernel version :,(.

Attaching corrected patch.

-- 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 f4e68a018ca9d9f88ddd8490f96314af8a8d074d 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.13

See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1093091
---
 ...uild-Provide-local-lib80211.h-header.patch | 165 ++++++++++++++++++
 debian/patches/series                         |   1 +
 2 files changed, 166 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..e352c39
--- /dev/null
+++ b/debian/patches/32-build-Provide-local-lib80211.h-header.patch
@@ -0,0 +1,165 @@
+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.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
+---
+ 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..79557c3 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, 13, 0)
++#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