| History log of /src/sys/dev/ic/bwfm.c |
| Revision | | Date | Author | Comments |
| 1.36 |
| 31-Dec-2023 |
gutteridge | bwfm.c: KNF a comment (spaces->tabs)
|
| 1.35 |
| 01-Aug-2023 |
mrg | fix simple mis-matched function prototype and definitions.
most of these are like, eg
void foo(int[2]);
with either of these
void foo(int*) { ... } void foo(int[]) { ... }
in some cases (such as stat or utimes* calls found in our header files), we now match standard definition from opengroup.
found by GCC 12.
|
| 1.34 |
| 04-Dec-2022 |
mlelstv | Make power save mode configurable by ifconfig, now defaults to non-powersave like other interfaces. Remove cargo-culted check for manual roaming.
|
| 1.33 |
| 03-Dec-2022 |
mlelstv | Fix bug in protocol parser that often caused fatal 'checksum error'. Defer power save setting to interface start. More verbose on errors. Allow build without FDT.
|
| 1.32 |
| 14-Mar-2022 |
mlelstv | Add OpenBSD to code to optionally load CLM (Country Locale Matrix) files.
|
| 1.31 |
| 16-Jun-2021 |
riastradh | if_attach and if_initialize cannot fail, don't test return value
These were originally made failable back in 2017 when if_initialize allocated a softint in every interface for link state changes, so that it could fail gracefully instead of panicking:
https://mail-index.NetBSD.org/source-changes/2017/10/23/msg089053.html
However, this spawned many seldom- or never-tested error branches, which are risky to have around. And that softint in every interface has since been replaced by a single global workqueue, because link state changes require thread context but not low latency or high throughput:
https://mail-index.NetBSD.org/source-changes/2020/02/06/msg113759.html
So there is no longer any reason for if_initialize to fail. (The subroutine if_stats_init can't fail because percpu_alloc can't fail either.)
There is a snag: the softint_establish in if_percpuq_create could fail, potentially leading to bad consequences later on trying to use the softint. This change doesn't introduce any new bugs because of the snag -- if_percpuq_attach was already broken. However, the snag can be better addressed without spawning error branches, either by using a single softint or making softints less scarce.
(Separate commit will change the signatures of if_attach and if_initialize to return void, scheduled to ride whatever is the next convenient kernel bump.)
Patch and testing on amd64 and evbmips64-eb by maya@; commit message soliloquy, and compile-testing on evbppc/i386/earmv7hf, by me.
|
| 1.30 |
| 13-Apr-2021 |
mrg | branches: 1.30.2; remove extra line that clearly isn't meant to be there and may trigger uninitialised reads of variables.
|
| 1.29 |
| 22-Jul-2020 |
riastradh | branches: 1.29.4; bwfm: Switch from pcq to pool_cache.
pcq_get is required to be serialized, but it's far from clear that it is serialized here.
|
| 1.28 |
| 22-Jul-2020 |
riastradh | Add include guards and appropriate includes to bwfmreg.h, bwfmvar.h.
No functional change intended.
|
| 1.27 |
| 22-Jul-2020 |
riastradh | Sort #includes. Nix trailing whitespace.
No functional change intended.
|
| 1.26 |
| 13-Jul-2020 |
mrg | move some of the patching of callbacks and other data after ieee80211_ifattach() but before if_deferred_start_init().
may fix panic i saw in after restarting wpa_supplicant.
from mlelstv.
|
| 1.25 |
| 30-May-2020 |
jdolecek | discussed with thorpej@, and it seems it's better to allocate the bss alignment buffer statically (as part of softc) just to be sure to not affect performance
|
| 1.24 |
| 30-May-2020 |
jdolecek | reduce stack usage in bwfm_rx_event_cb(), can use KM_SLEEP because this is called from workqueue handler (i.e. thread context)
|
| 1.23 |
| 30-May-2020 |
jdolecek | constify, and make static where possible
|
| 1.22 |
| 25-Mar-2020 |
thorpej | Add a file type entry for CLM files.
|
| 1.21 |
| 25-Mar-2020 |
thorpej | - Refactor the firmware loading code into a set of common routines in the core driver that understand how to find model-specific files before the generic files. This greatly simplifies the firmware loading procedure in each of the bus front ends. Adding additional firmware file types (such as CLM files) much simpler. - Make firmware image selection table-driven rather than a set of switch() and if() statements. - Add several additional firmware image entries.
|
| 1.20 |
| 29-Jan-2020 |
thorpej | Adopt <net/if_stats.h>.
|
| 1.19 |
| 27-Dec-2019 |
msaitoh | branches: 1.19.2; s/suport/support/
|
| 1.18 |
| 28-Oct-2019 |
mlelstv | More code from OpenBSD no need to splnet() when enqueing packets explicit structure padding make internal functions static
also prepare for GPIO interrupts.
|
| 1.17 |
| 03-Oct-2019 |
jmcneill | If firmware is connected in HT or VHT mode, report it to SIOCGIFMEDIA
|
| 1.16 |
| 02-Sep-2019 |
mlelstv | tagging work queue as MPSAFE was premature. Revert.
|
| 1.15 |
| 01-Sep-2019 |
mlelstv | From OpenBSD: - move event handling to workqueue - check for save/restore capability Tag work queue as MPsafe and increase length. Juse use bpf_mtap(), the 802.11 encapsulation is handled by firmware.
|
| 1.14 |
| 02-Sep-2018 |
maya | branches: 1.14.2; 1.14.6; Initialize if_stop so suspend won't jump to NULL.
|
| 1.13 |
| 01-Sep-2018 |
riastradh | bwfm has only one tx descriptor; limit mbuf chains to one segment.
PR kern/53287
Can't use m_defrag because it always yields two segments.
Discussion on tech-net: https://mail-index.netbsd.org/tech-net/2018/09/01/msg007031.html
Diagnosed and tested by maya.
|
| 1.12 |
| 26-Jun-2018 |
msaitoh | branches: 1.12.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
| 1.11 |
| 11-May-2018 |
maya | sync with openbsd bwfm to some extent.
add a txcheck set chip active/passive for more kinds of chips add wrapper around setting active/passive detect chip RAM make bwfm_rx take an mbuf
|
| 1.10 |
| 16-Jan-2018 |
maxv | branches: 1.10.2; Prepend 'sp_' to the name of the fields, so that they can easily be found via NXR or grep.
|
| 1.9 |
| 16-Jan-2018 |
maxv | Mmh refix previous, we also need to make sure frm[1] is there.
|
| 1.8 |
| 16-Jan-2018 |
maxv | Fix overflow, noted by Maya.
|
| 1.7 |
| 18-Dec-2017 |
jmcneill | Support promiscuous mode
|
| 1.6 |
| 18-Dec-2017 |
jmcneill | Use ieee80211_media_status
|
| 1.5 |
| 18-Dec-2017 |
jmcneill | Stop the device at attach in case it was previously initialized
|
| 1.4 |
| 23-Oct-2017 |
jmcneill | branches: 1.4.2; Initialize txrate to 0 for new associations; firmware handles rate adaptation for us
|
| 1.3 |
| 23-Oct-2017 |
msaitoh | If if_initialize() failed in the attach function, free resources and return.
|
| 1.2 |
| 20-Oct-2017 |
jmcneill | Fix an alignment problem with scan results within an escan event
|
| 1.1 |
| 19-Oct-2017 |
jmcneill | Add driver for Broadcom 802.11a/b/g/n/ac USB wireless devices, based on the OpenBSD bwfm(4) driver.
|
| 1.4.2.2 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
| 1.4.2.1 |
| 23-Oct-2017 |
jdolecek | file bwfm.c was added on branch tls-maxphys on 2017-12-03 11:37:03 +0000
|
| 1.10.2.3 |
| 06-Sep-2018 |
pgoyette | Sync with HEAD
Resolve a couple of conflicts (result of the uimin/uimax changes)
|
| 1.10.2.2 |
| 28-Jul-2018 |
pgoyette | Sync with HEAD
|
| 1.10.2.1 |
| 21-May-2018 |
pgoyette | Sync with HEAD
|
| 1.12.2.3 |
| 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|
| 1.12.2.2 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
| 1.12.2.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
| 1.14.6.3 |
| 17-Aug-2020 |
martin | Pull up following revision(s) (requested by mrg in ticket #1052):
sys/dev/ic/bwfm.c: revision 1.28 sys/dev/ic/bwfm.c: revision 1.29 sys/dev/sdmmc/if_bwfm_sdio.c: revision 1.22 sys/dev/ic/bwfmreg.h: revision 1.7 sys/dev/ic/bwfmvar.h: revision 1.11 sys/dev/ic/bwfmvar.h: revision 1.12 (all via patch)
Add include guards and appropriate includes to bwfmreg.h, bwfmvar.h.
No functional change intended.
Need <sys/kmem.h> for kmem_*.
Currently accidentally side-loaded by <sys/pcq.h>.
bwfm: Switch from pcq to pool_cache. pcq_get is required to be serialized, but it's far from clear that it is serialized here.
|
| 1.14.6.2 |
| 09-Aug-2020 |
martin | Pull up following revision(s) (requested by mrg in ticket #1042):
sys/dev/sdmmc/if_bwfm_sdio.c: revision 1.19 sys/dev/sdmmc/ld_sdmmc.c: revision 1.38 sys/dev/sdmmc/sdmmcvar.h: revision 1.35 sys/dev/sdmmc/if_bwfm_sdio.c: revision 1.5 sys/dev/ic/bwfm.c: revision 1.26 sys/dev/ic/bwfm.c: revision 1.27 sys/dev/sdmmc/if_bwfm_sdio.c: revision 1.20 sys/dev/sdmmc/if_bwfm_sdio.c: revision 1.21 sys/dev/sdmmc/sdmmc_io.c: revision 1.20 sys/dev/sdmmc/sdmmc_mem.c: revision 1.72 sys/dev/sdmmc/sdmmc.c: revision 1.40 sys/dev/sdmmc/sdmmc_ioreg.h: revision 1.6 sys/dev/sdmmc/if_bwfm_sdio.c: revision 1.16
Don't pass empty mbufs to the network stack.
Avoid changing signedness bit with << in sdmmc_ioreg.h Reported by <prlw1>
If the controller doesn't support switch func (opcode 6) then skip setting this but continue with other settings. This allows us to use a card, albeit at a lower speed.
Fix races in sdmmc tasks and teach ld@sdmmc to abort xfers on detach. - Teach sdmmc_add_task to queue it only if not already queued. - Remove now-redundant logic to avoid repeated queueing elsewhere. - Teach sdmmc_del_task to wait until task has completed. - Call sdmmc_del_task in various needful places. - Replace abuse of pcq by a lock and a tailq. (pcq is multi-producer, _single_-consumer, but there are potentially multiple consumers here and really only one producer.) - Teach ld_sdmmc to abort xfers on detach. (Mechanism is kinda kludgey but it'll do for now; any effort one is tempted to spend overhauling this should be spent overhauling sdmmc to support proper asynchronous commands.) - Make sure ld_sdmmc_discard either returns failure or eventually calls ldenddiscard.
XXX Currently ld_sdmmc_detach aborts xfers _before_ ldbegindetach has has committed to detaching or not. This is currently necessary to avoid a deadlock because ldbegindetach waits for xfers to drain -- which strikes me as wrong; ldbegindetach shouldn't wait for anything, and should only make the decision to commit to detaching or not so the caller can decide whether to abort xfers before we actually wait for them in ldenddetach.
XXX pullup -- although this changes some kernel symbols (sdmmc_add_task and sdmmc_del_task), it shouldn't affect any existing modules; the only module that uses sdmmc is ld_sdmmc.kmod, which is `.if 0' in the build so there shouldn't be any of them floating around.
Make this work on big endian machines
move some of the patching of callbacks and other data after ieee80211_ifattach() but before if_deferred_start_init(). may fix panic i saw in after restarting wpa_supplicant. from mlelstv.
only ask for SDPCMD_INTSTATUS_HMB_SW_MASK and SDPCMD_INTSTATUS_CHIPACTIVE interrupts, not all of them. we only ack these ones. mostly fixes pinebookpro wifi hard hangs. still is problematic and can trigger interrupt storm that appears as a hard hang without NET_MPSAFE, and a follow up, less clearly right, change will reduce that to a soft hang of the interface that can be cleared with 'ifconfig bwfm0 down up', and even often recovers itself now.
clear all interrupts, not just those we expect from the hostintmask. this removes the final hard hang i have seen in pinebookpro wifi, though one may still need to 'ifconfig bwfm0 down up' occasionally, so we still have bugs to fix here (the hang is usually associated with 'checksum error' from bwfm/sdio.)
Sort #includes. Nix trailing whitespace. No functional change intended.
|
| 1.14.6.1 |
| 25-Feb-2020 |
martin | Pull up following revision(s) (requested by mrg in ticket #717):
sys/dev/fdt/dwcmmc_fdt.c 1.11 sys/dev/ic/bwfm.c 1.15-1.18 sys/dev/ic/bwfmreg.h 1.4-1.6 sys/dev/ic/bwfmvar.h 1.4,1.5 sys/dev/ic/dwc_mmc.c 1.21,1.22 sys/dev/ic/dwc_mmc_reg.h 1.8,1.9,1.12,1.13 sys/dev/pcmcia/pcmciareg.h 1.11 sys/dev/sdmmc/if_bwfm_sdio.c 1.4,1.6-1.12 sys/dev/sdmmc/if_bwfm_sdio.h 1.1,1.2 sys/dev/sdmmc/sdhc.c 1.105,1.106 sys/dev/sdmmc/sdmmc.c 1.37,1.39 sys/dev/sdmmc/sdmmc_cis.c 1.6,1.8 sys/dev/sdmmc/sdmmc_io.c 1.15-1.19 sys/dev/sdmmc/sdmmc_ioreg.h 1.4,1.5 sys/dev/sdmmc/sdmmc_mem.c 1.69-1.71 sys/dev/sdmmc/sdmmcdevs 1.5-1.8 sys/dev/sdmmc/sdmmcvar.h 1.31,1.33,1.34 sys/net/if_media.h 1.66
Add Broadcom devices - Fix typo - add PCMCIA_CISTPL_SDIO definition. - From OpenBSD: - move event handling to workqueue - check for save/restore capability - Tag work queue as MPsafe and increase length. - Juse use bpf_mtap(), the 802.11 encapsulation is handled by firmware. - From OpenBSD: - support block length per function - add functions to read/write regions - Decode (but not use) SDIO tuple in CIS. - Fix locking. - Add more SDIO defines (partially from version 3.0). - From OpenBSD: - All the missing pieces (firmware load, chip setup, protocol handling) TX queue and interrupt handling via sdmmc_task. - Fix locking. - Fix packet parsing. - Add parser for original firmware config files. - tagging work queue as MPSAFE was premature. Revert. - SD_IO_RW_EXTENDED is a data transfer command, so set ADTC flag instead of AC Use correct function to verify if a task has been queued. Avoids race that can corrupt the task queue. - More register definitions. - Add IFM_IEEE80211_VHT subtype, IFM_IEEE80211_11AC operating mode, and missing descriptions - If firmware is connected in HT or VHT mode, report it to SIOCGIFMEDIA - white space police.
Skip setting power when the voltage doesn't change. Also increase some timeouts. - Add and use sdmmc_pause to avoid long-term busy waits. - Add sdio abort function. - Additional error messages. - Print parameters for SDIO devices. - Minor cosmetics. - Simplyfy sdmmc_io_set_blocklen function signature by dropping the extra softc pointer. Aligns with OpenBSD. - Missing commit for sdio abort function. - More code from OpenBSD - no need to splnet() when enqueing packets - explicit structure padding - make internal functions static - also prepare for GPIO interrupts. - Avoid warnings for tautological shifts as sole conditional. - Follow the Linux driver an use the FDT "compatible" property to build a filename for the nvram config file, fall back to the standard filename. E.g. [Caching 123 nodes and 1093 properties] compatible 73696e6f 766f6970 2c627069 2d6d322d "sinovoip,bpi-m2- 0010: 7a65726f 00...... ........ ........ zero" 0015: 616c6c77 696e6e65 722c7375 6e38692d "allwinner,sun8i- 0025: 68322d70 6c757300 ........ ........ h2-plus" interrupt-parent 00000001 ........ ........ ........ .... model 42616e61 6e612050 69204250 492d4d32 "Banana Pi BPI-M2 0010: 2d5a6572 6f00.... ........ ........ -Zero" name 00...... ........ ........ ........ "" serial-number 30326330 30303432 65636431 36376566 02c00042ecd167ef 0010: 00...... ........ ........ ........ . -rw-r--r-- 1 root wheel 875 Nov 2 12:06 brcmfmac43430-sdio.AP6212.txt lrwxr-xr-x 1 root wheel 29 Dec 30 16:19 brcmfmac43430-sdio.sinovoip,bpi-m2-zero.txt -> brcmfmac43430-sdio.AP6212.txt -rw-r--r-- 1 root wheel 874 Jun 30 2019 brcmfmac43430-sdio.raspberrypi,3-model-b.txt -rw-r--r-- 1 root wheel 1864 Jun 30 2019 brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt lrwxr-xr-x 1 root wheel 29 Dec 30 11:24 brcmfmac43455-sdio.raspberrypi,4-model-b-plus.txt -> brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt - Add product ID for Broadcom BCM43455 - Use correct firmware for BCM43456 - size check was backwards. - Be less noisy for some commands. - Fix DWC_MMC_INT_SDIO_INT bit - dwc_mmc fixes: - Rockchip uses a different SDIO int bit, so take this into consideration - Avoid unnecessary resets and always wait for resets to complete - kpause instead of delay while holding spinlock - Do not attempt autostop for SD_IO_RW_EXTENDED commands - Allow for sub-blklen byte counts for single block transfers - More SDIO stability and performance fixes
|
| 1.14.2.2 |
| 31-Oct-2018 |
martin | Backport of bfwm code, requested by maya in ticket #1072:
sys/dev/ic/bwfm.c 1.14 sys/dev/ic/bwfmreg.h 1.3 sys/dev/ic/bwfmvar.h 1.3 sys/dev/pci/if_bwfm_pci.c 1.4 sys/dev/pci/if_bwfm_pci.h 1.8 sys/dev/usb/if_bwfm_usb.c 1.8
via patch.
|
| 1.14.2.1 |
| 02-Sep-2018 |
martin | file bwfm.c was added on branch netbsd-8 on 2018-10-31 09:23:00 +0000
|
| 1.19.2.1 |
| 29-Feb-2020 |
ad | Sync with head.
|
| 1.29.4.1 |
| 17-Apr-2021 |
thorpej | Sync with HEAD.
|
| 1.30.2.1 |
| 17-Jun-2021 |
thorpej | Sync w/ HEAD.
|