From nobody Tue Feb 10 21:54:31 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4f9b200sj6z6S6hX for ; Tue, 10 Feb 2026 21:54:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f9b1z70Nhz3RcC for ; Tue, 10 Feb 2026 21:54:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770760472; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QYLWkF0dikc+3fPPBV2JGhdzundvaT7RQpf0tN1/RqI=; b=k86yxl+wBb0DzTLtktVCtyQKpKGAtBVSGgRpxey1BJzQb7lj3xQnyJ84rGOqzH5tA8V+sR 1e/FA6okr/XuvmqvXv5Z+gpjg1yLs+9pUS5VP6cBuUyRt73y04yZ36kWTZ3xyG4XpVsQFu 6izD7GpxybLElUq7hNAGGcMUM6SzXudnRFbImEfoft/Ndcn9E+WoJBvJnzshaZEPcLepCf dgwaHBI+H1nvbhvgP2eZzblczF31DfXu0Ebsivw71lqfYi5nXleHIqTRuZ060Hyv55klxQ Oq3Tev3MViJzTAfc/McZrPXa6QsavMNJdNN4SwS9fi8LoNMHJledn0M2wsU3Yg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770760472; a=rsa-sha256; cv=none; b=nEe/CxIjwmwDEYvAkQG0+2UIJXTnoAn3FapYLNo9xxQeeUDlXZGh0IQdqg4uZ9vIfcNYg8 HmGE0OzP1XAj5dUmESfyCl1GXuRH9wq6vUAProz7DdgO5EV8kI2NH6/XRqNXD/N41PXncr 3MnCtlB7VaG9QgkwcEpWu0/dU2pCcUO5PKiSgF8fmeVxYtFjXXdrjm2CLuVIu6lMYt2Ap0 wjT2oF5oMfc7nugLCK/l+nAfVTeukXWW3hyjCdpXkmM9XdMBdGIsZmftrHJji9yvcr9eRV 4BYhfu+vxKtuMzQDBeyF9vAdlSnv8DVNXQbEP+vzsLOKaHnI1G37erRu3a+U/A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770760472; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QYLWkF0dikc+3fPPBV2JGhdzundvaT7RQpf0tN1/RqI=; b=nmuCXAwBJuJwf0DlnGupbNm62n2kqAXDqZ4o3Dl/4+JqaQal4VEgZ3MiUCnkHVhYEdeqHu KX7h+V7ioDdHWceZePSLkmAZsfJsBVCkAKKCt2dopPGWZS2MlS0CmUyJiRxXwg1+PFcTNx C2SPpGA25O8VdmgvRR1rOfbx3gfZR+d879V0m8bKRJPHr28bFyDL+19p3Uly54hEggzuay 6dK1cbXGxAtdJOQShgbcqA8+UdB+/wHDMH6+FgcISOSSNnOfAkHH28WqQqSOyPDiMD21ao /9qrKYK+dAEe6aIKB4ZMBD025dFdSvYRZjIGTYawd5kma9wfiTWxOFtHdXVRhw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f9b1z68Hwz6RP for ; Tue, 10 Feb 2026 21:54:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 20758 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 10 Feb 2026 21:54:31 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Bjoern A. Zeeb Subject: git: 22741535bcf4 - main - brcmfmac: make USB parts compile (and not panic right away) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 22741535bcf4b003e41c0ecd22cca578359ba434 Auto-Submitted: auto-generated Date: Tue, 10 Feb 2026 21:54:31 +0000 Message-Id: <698ba917.20758.26637122@gitrepo.freebsd.org> The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=22741535bcf4b003e41c0ecd22cca578359ba434 commit 22741535bcf4b003e41c0ecd22cca578359ba434 Author: Bjoern A. Zeeb AuthorDate: 2026-02-09 01:07:01 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-02-10 21:37:13 +0000 brcmfmac: make USB parts compile (and not panic right away) Fix casts and consts and add one extra error check for a NULL pointer. This will require [a future] linuxkpi_usb. There are very few dongles I know off: - the original Raspberry PI USB dongle [1] - Cisco Linksys AE1200 The reason for making USB compile despite the limited 11n 150/300 Mbit/s adapters is that it is the simplest way to work on cfg80211 while on the road, not requiring a full PCIe slot or another SoC for SDIO. Sponsored by: The FreeBSD Foundation Hardware donated by: Martin Husemann (martin NetBSD.org) [1] MFC after: 3 days --- sys/contrib/dev/broadcom/brcm80211/brcmfmac/bcdc.c | 6 +++ sys/contrib/dev/broadcom/brcm80211/brcmfmac/usb.c | 52 ++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/sys/contrib/dev/broadcom/brcm80211/brcmfmac/bcdc.c b/sys/contrib/dev/broadcom/brcm80211/brcmfmac/bcdc.c index 9ec0c60b6da1..7e846cbf5157 100644 --- a/sys/contrib/dev/broadcom/brcm80211/brcmfmac/bcdc.c +++ b/sys/contrib/dev/broadcom/brcm80211/brcmfmac/bcdc.c @@ -387,12 +387,18 @@ brcmf_proto_bcdc_configure_addr_mode(struct brcmf_pub *drvr, int ifidx, static void brcmf_proto_bcdc_delete_peer(struct brcmf_pub *drvr, int ifidx, +#if defined(__FreeBSD__) + const +#endif u8 peer[ETH_ALEN]) { } static void brcmf_proto_bcdc_add_tdls_peer(struct brcmf_pub *drvr, int ifidx, +#if defined(__FreeBSD__) + const +#endif u8 peer[ETH_ALEN]) { } diff --git a/sys/contrib/dev/broadcom/brcm80211/brcmfmac/usb.c b/sys/contrib/dev/broadcom/brcm80211/brcmfmac/usb.c index f0129d10d2b9..46b7cf4380e6 100644 --- a/sys/contrib/dev/broadcom/brcm80211/brcmfmac/usb.c +++ b/sys/contrib/dev/broadcom/brcm80211/brcmfmac/usb.c @@ -8,6 +8,9 @@ #include #include #include +#if defined(__FreeBSD__) +#include +#endif #include #include @@ -255,7 +258,11 @@ brcmf_usb_send_ctl(struct brcmf_usbdev_info *devinfo, u8 *buf, int len) devinfo->ctl_out_pipe, (unsigned char *) &devinfo->ctl_write, buf, size, +#if defined(__linux__) (usb_complete_t)brcmf_usb_ctlwrite_complete, +#elif defined(__FreeBSD__) + brcmf_usb_ctlwrite_complete, +#endif devinfo); ret = usb_submit_urb(devinfo->ctl_urb, GFP_ATOMIC); @@ -289,7 +296,11 @@ brcmf_usb_recv_ctl(struct brcmf_usbdev_info *devinfo, u8 *buf, int len) devinfo->ctl_in_pipe, (unsigned char *) &devinfo->ctl_read, buf, size, +#if defined(__linux__) (usb_complete_t)brcmf_usb_ctlread_complete, +#elif defined(__FreeBSD__) + brcmf_usb_ctlread_complete, +#endif devinfo); ret = usb_submit_urb(devinfo->ctl_urb, GFP_ATOMIC); @@ -768,7 +779,11 @@ static int brcmf_usb_dl_cmd(struct brcmf_usbdev_info *devinfo, u8 cmd, usb_rcvctrlpipe(devinfo->usbdev, 0), (unsigned char *) &devinfo->ctl_read, (void *) tmpbuf, size, +#if defined(__linux__) (usb_complete_t)brcmf_usb_sync_complete, devinfo); +#elif defined(__FreeBSD__) + brcmf_usb_sync_complete, devinfo); +#endif devinfo->ctl_completed = false; ret = usb_submit_urb(devinfo->ctl_urb, GFP_ATOMIC); @@ -873,7 +888,11 @@ brcmf_usb_dl_send_bulk(struct brcmf_usbdev_info *devinfo, void *buffer, int len) /* Prepare the URB */ usb_fill_bulk_urb(devinfo->bulk_urb, devinfo->usbdev, devinfo->tx_pipe, buffer, len, +#if defined(__linux__) (usb_complete_t)brcmf_usb_sync_complete, devinfo); +#elif defined(__FreeBSD__) + brcmf_usb_sync_complete, devinfo); +#endif devinfo->bulk_urb->transfer_flags |= URB_ZERO_PACKET; @@ -888,10 +907,19 @@ brcmf_usb_dl_send_bulk(struct brcmf_usbdev_info *devinfo, void *buffer, int len) } static int +#if defined(__linux__) brcmf_usb_dl_writeimage(struct brcmf_usbdev_info *devinfo, u8 *fw, int fwlen) +#elif defined(__FreeBSD__) +brcmf_usb_dl_writeimage(struct brcmf_usbdev_info *devinfo, const u8 *fw, int fwlen) +#endif { unsigned int sendlen, sent, dllen; +#if defined(__linux__) char *bulkchunk = NULL, *dlpos; +#elif defined(__FreeBSD__) + char *bulkchunk = NULL; + const u8 *dlpos; +#endif struct rdl_state_le state; u32 rdlstate, rdlbytes; int err = 0; @@ -973,7 +1001,11 @@ fail: return err; } +#if defined(__linux__) static int brcmf_usb_dlstart(struct brcmf_usbdev_info *devinfo, u8 *fw, int len) +#elif defined(__FreeBSD__) +static int brcmf_usb_dlstart(struct brcmf_usbdev_info *devinfo, const u8 *fw, int len) +#endif { int err; @@ -1049,7 +1081,11 @@ brcmf_usb_fw_download(struct brcmf_usbdev_info *devinfo) goto out; err = brcmf_usb_dlstart(devinfo, +#if defined(__linux__) (u8 *)devinfo->image, devinfo->image_len); +#elif defined(__FreeBSD__) + (const u8 *)devinfo->image, devinfo->image_len); +#endif if (err == 0) err = brcmf_usb_dlrun(devinfo); @@ -1080,12 +1116,20 @@ static void brcmf_usb_detach(struct brcmf_usbdev_info *devinfo) static int check_file(const u8 *headers) { +#if defined(__linux__) struct trx_header_le *trx; +#elif defined(__FreeBSD__) + const struct trx_header_le *trx; +#endif int actual_len = -1; brcmf_dbg(USB, "Enter\n"); /* Extract trx header */ +#if defined(__linux__) trx = (struct trx_header_le *) headers; +#elif defined(__FreeBSD__) + trx = (const struct trx_header_le *) headers; +#endif if (trx->magic != cpu_to_le32(TRX_MAGIC)) return -1; @@ -1187,6 +1231,10 @@ static void brcmf_usb_probe_phase2(struct device *dev, int ret, fw = fwreq->items[BRCMF_USB_FW_CODE].binary; kfree(fwreq); +#if defined(__FreeBSD__) + if (fw == NULL) + goto error; +#endif ret = check_file(fw->data); if (ret < 0) { @@ -1602,3 +1650,7 @@ int brcmf_usb_register(void) brcmf_dbg(USB, "Enter\n"); return usb_register(&brcmf_usbdrvr); } + +#if defined(__FreeBSD__) +MODULE_DEPEND(brcmfmac, linuxkpi_usb, 1, 1, 1); +#endif