Module Name: src Committed By: jdolecek Date: Sat May 30 15:55:47 UTC 2020
Modified Files: src/sys/dev/ic: bwfm.c bwfmvar.h src/sys/dev/pci: if_bwfm_pci.c src/sys/dev/sdmmc: if_bwfm_sdio.c Log Message: 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 To generate a diff of this commit: cvs rdiff -u -r1.24 -r1.25 src/sys/dev/ic/bwfm.c cvs rdiff -u -r1.9 -r1.10 src/sys/dev/ic/bwfmvar.h cvs rdiff -u -r1.8 -r1.9 src/sys/dev/pci/if_bwfm_pci.c cvs rdiff -u -r1.17 -r1.18 src/sys/dev/sdmmc/if_bwfm_sdio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/ic/bwfm.c diff -u src/sys/dev/ic/bwfm.c:1.24 src/sys/dev/ic/bwfm.c:1.25 --- src/sys/dev/ic/bwfm.c:1.24 Sat May 30 14:03:08 2020 +++ src/sys/dev/ic/bwfm.c Sat May 30 15:55:47 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: bwfm.c,v 1.24 2020/05/30 14:03:08 jdolecek Exp $ */ +/* $NetBSD: bwfm.c,v 1.25 2020/05/30 15:55:47 jdolecek Exp $ */ /* $OpenBSD: bwfm.c,v 1.5 2017/10/16 22:27:16 patrick Exp $ */ /* * Copyright (c) 2010-2016 Broadcom Corporation @@ -38,8 +38,8 @@ #include <net80211/ieee80211_var.h> -#include <dev/ic/bwfmvar.h> #include <dev/ic/bwfmreg.h> +#include <dev/ic/bwfmvar.h> /* #define BWFM_DEBUG */ #ifdef BWFM_DEBUG @@ -2140,18 +2140,12 @@ bwfm_rx_event_cb(struct bwfm_softc *sc, bss = &res->bss_info[0]; for (i = 0; i < le16toh(res->bss_count); i++) { /* Fix alignment of bss_info */ - union { - struct bwfm_bss_info bss_info; - uint8_t padding[BWFM_BSS_INFO_BUFLEN]; - } *bss_buf; - if (len > sizeof(*bss_buf)) { + if (len > sizeof(sc->sc_bss_buf)) { printf("%s: bss_info buffer too big\n", DEVNAME(sc)); } else { - bss_buf = kmem_alloc(sizeof(*bss_buf), - KM_SLEEP); - memcpy(bss_buf, &res->bss_info[i], len); - bwfm_scan_node(sc, &bss_buf->bss_info, len); - kmem_free(bss_buf, sizeof(*bss_buf)); + memcpy(&sc->sc_bss_buf, &res->bss_info[i], len); + bwfm_scan_node(sc, &sc->sc_bss_buf.bss_info, + len); } len -= sizeof(*bss) + le32toh(bss->length); bss = (void *)(((uintptr_t)bss) + le32toh(bss->length)); Index: src/sys/dev/ic/bwfmvar.h diff -u src/sys/dev/ic/bwfmvar.h:1.9 src/sys/dev/ic/bwfmvar.h:1.10 --- src/sys/dev/ic/bwfmvar.h:1.9 Sat May 30 13:41:58 2020 +++ src/sys/dev/ic/bwfmvar.h Sat May 30 15:55:47 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: bwfmvar.h,v 1.9 2020/05/30 13:41:58 jdolecek Exp $ */ +/* $NetBSD: bwfmvar.h,v 1.10 2020/05/30 15:55:47 jdolecek Exp $ */ /* $OpenBSD: bwfmvar.h,v 1.1 2017/10/11 17:19:50 patrick Exp $ */ /* * Copyright (c) 2010-2016 Broadcom Corporation @@ -214,6 +214,11 @@ struct bwfm_softc { enum ieee80211_state, int); int sc_bcdc_reqid; + + union { + struct bwfm_bss_info bss_info; + uint8_t padding[BWFM_BSS_INFO_BUFLEN]; + } sc_bss_buf; }; void bwfm_attach(struct bwfm_softc *); Index: src/sys/dev/pci/if_bwfm_pci.c diff -u src/sys/dev/pci/if_bwfm_pci.c:1.8 src/sys/dev/pci/if_bwfm_pci.c:1.9 --- src/sys/dev/pci/if_bwfm_pci.c:1.8 Sat May 30 13:41:58 2020 +++ src/sys/dev/pci/if_bwfm_pci.c Sat May 30 15:55:47 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_bwfm_pci.c,v 1.8 2020/05/30 13:41:58 jdolecek Exp $ */ +/* $NetBSD: if_bwfm_pci.c,v 1.9 2020/05/30 15:55:47 jdolecek Exp $ */ /* $OpenBSD: if_bwfm_pci.c,v 1.18 2018/02/08 05:00:38 patrick Exp $ */ /* * Copyright (c) 2010-2016 Broadcom Corporation @@ -41,8 +41,8 @@ #include <dev/pci/pcivar.h> #include <dev/pci/pcidevs.h> -#include <dev/ic/bwfmvar.h> #include <dev/ic/bwfmreg.h> +#include <dev/ic/bwfmvar.h> #include <dev/pci/if_bwfm_pci.h> #define BWFM_DMA_D2H_SCRATCH_BUF_LEN 8 Index: src/sys/dev/sdmmc/if_bwfm_sdio.c diff -u src/sys/dev/sdmmc/if_bwfm_sdio.c:1.17 src/sys/dev/sdmmc/if_bwfm_sdio.c:1.18 --- src/sys/dev/sdmmc/if_bwfm_sdio.c:1.17 Sat May 30 13:41:58 2020 +++ src/sys/dev/sdmmc/if_bwfm_sdio.c Sat May 30 15:55:47 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_bwfm_sdio.c,v 1.17 2020/05/30 13:41:58 jdolecek Exp $ */ +/* $NetBSD: if_bwfm_sdio.c,v 1.18 2020/05/30 15:55:47 jdolecek Exp $ */ /* $OpenBSD: if_bwfm_sdio.c,v 1.1 2017/10/11 17:19:50 patrick Exp $ */ /* * Copyright (c) 2010-2016 Broadcom Corporation @@ -44,8 +44,8 @@ #include <dev/sdmmc/sdmmcdevs.h> #include <dev/sdmmc/sdmmcvar.h> -#include <dev/ic/bwfmvar.h> #include <dev/ic/bwfmreg.h> +#include <dev/ic/bwfmvar.h> #include <dev/sdmmc/if_bwfm_sdio.h> #ifdef BWFM_DEBUG