From nobody Fri Feb 27 02:30:11 2026 X-Original-To: dev-commits-src-branches@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 4fMXNg51ZCz6T7kF for ; Fri, 27 Feb 2026 02:30:11 +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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fMXNg32lqz41cj for ; Fri, 27 Feb 2026 02:30:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772159411; 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=PTkKof3CAssLbAgZqaZ13MICmKV2tL3H8J9/HBBL6pU=; b=u/y8HUq5Ql/h5FFO5Go4mcenpyvGn8LB3Z6cdEp0If/MRirhA1CfwR2KzHxdfn5AeLTliE nQUohepS9y/EXTR50ABtzHwkD6i+bO75uHIxz62bAOiRlE7AtI9MH4Q2t2Acyx9uMuy6sQ UuYzfml/6tUzmyvmKZjg452nc6s/Sl6Bw3o20DxReqsuKaTc3NC2PHj4TzaYtKx3+SEY08 fo/5MdldXYUl9Pg69g2pA4qoYxgUWlr3wcXi3Dql1ZX5rWd++GgMeIU4MgP94v/HxOod7A sRY1S4liN3k/EkNb5yf4Ye0ctFx3i3kanuN9QoY192634MJt83EUKKMYsRX4YA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772159411; a=rsa-sha256; cv=none; b=ubN3EbMz1xWlVvpDyH1dDiKPPpb7NFL1s8e38mBtpQG4rSYB+qw0JPDbqk5WUvH7BiBqmU hAhkWIgEimdo5XiiJQbZz9pbSImwfr0bo4IomxgPwze2+rgQ1O5iwUiN0AnN77WxEnxFmh 0wea6IQVZdDLgUOEtZrrNSmTON7Og6rHtQiC9dkWNOfux9WzX4M1JLWHnwuB7Z5ivOgC3G sPdIzMKpqcwRedunMj1/SMdmrMCqpp8Gw4yT9G6gPhu/SNX/D5SdXeQjs+ZAsI7nV0mcY6 fFNB+3TV8Gu6/Oxk4GJL3MGVhX/qmMWfBDRtsFK0ifQBRteyFVrzVEPHeyLAiQ== 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=1772159411; 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=PTkKof3CAssLbAgZqaZ13MICmKV2tL3H8J9/HBBL6pU=; b=CZ1rQu9w6Vz0jBIltRjKK6mPmvYmYz7l6lfg7HNXG7hxgw67EKkYsZsxT3jZWNjJAYt13T vFr7p7KYAaqVtvwesNBGbiff/tN94Yu5RKb7eAB5a75DDgu9onV0mdjmdhdnyEKQZdaa0/ y+F2rh2OzFUaF9yv0ccCwritPrMAcIcnMYFNOiHqKfJu6kL5le94DgEFPe+EtNbqKama94 hce6QDmjoWvYCyRtc3UQ+Vw3JR55yv7hfX4FyCM8qXyx/qfnnT3Nyb44Kvjz/+4u4re8/5 16FugPGZ9OYebj9GbJu8JQaUcrH0TCMMFS+y5oFMLkH5b5wlSbXgyB9Y/0QE8A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fMXNg2GMVzych for ; Fri, 27 Feb 2026 02:30:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 22075 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 27 Feb 2026 02:30:11 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: f77e10824dd5 - stable/15 - brcmfmac: make USB parts compile (and not panic right away) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/15 X-Git-Reftype: branch X-Git-Commit: f77e10824dd526652849e39d7e9879cfe3d25597 Auto-Submitted: auto-generated Date: Fri, 27 Feb 2026 02:30:11 +0000 Message-Id: <69a101b3.22075.59152bfc@gitrepo.freebsd.org> The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=f77e10824dd526652849e39d7e9879cfe3d25597 commit f77e10824dd526652849e39d7e9879cfe3d25597 Author: Bjoern A. Zeeb AuthorDate: 2026-02-09 01:07:01 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-02-26 23:07:25 +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] (cherry picked from commit 22741535bcf4b003e41c0ecd22cca578359ba434) --- 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