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

Reply via email to