Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src-draft/trunk]: src/sys/dev/pci Wrap firmware upload in a function.



details:   https://anonhg.NetBSD.org/src-all/rev/44bef43ba5c0
branches:  trunk
changeset: 360348:44bef43ba5c0
user:      Nathanial Sloss <nat%netbsd.org@localhost>
date:      Sat Nov 20 01:54:23 2021 +1100

description:
Wrap firmware upload in a function.

diffstat:

 sys/dev/pci/if_iwn.c |  53 +++++++++++++++++++++++++++++++--------------------
 1 files changed, 32 insertions(+), 21 deletions(-)

diffs (78 lines):

diff -r 8d18830bb91e -r 44bef43ba5c0 sys/dev/pci/if_iwn.c
--- a/sys/dev/pci/if_iwn.c      Thu Nov 18 08:39:49 2021 +1100
+++ b/sys/dev/pci/if_iwn.c      Sat Nov 20 01:54:23 2021 +1100
@@ -413,6 +413,7 @@
 static int     iwn_hw_init(struct iwn_softc *);
 static void    iwn_hw_stop(struct iwn_softc *);
 static int     iwn_init(struct ifnet *);
+static int     iwn_fw_init(struct iwn_softc *);
 static void    iwn_stop(struct ifnet *, int);
 
 /* XXX MCLGETI alternative */
@@ -6865,6 +6866,36 @@
 }
 
 static int
+iwn_fw_init(struct iwn_softc *sc)
+{
+       int error = 0;
+
+       /* Read firmware images from the filesystem. */
+       if ((error = iwn_read_firmware(sc)) != 0) {
+               aprint_error_dev(sc->sc_dev,
+                   "could not read firmware\n");
+               return error;
+       }
+
+       /* Initialize interrupt mask to default value. */
+       sc->int_mask = IWN_INT_MASK_DEF;
+       sc->sc_flags &= ~IWN_FLAG_USE_ICT;
+
+       /* Initialize hardware and upload firmware. */
+       KASSERT(sc->fw.data != NULL && sc->fw.size > 0);
+       error = iwn_hw_init(sc);
+       firmware_free(sc->fw.data, sc->fw.size);
+       sc->fw.data = NULL;
+       sc->fw.size = 0;
+       if (error != 0) {
+               aprint_error_dev(sc->sc_dev,
+                   "could not initialize hardware\n");
+       }
+
+       return error;
+}
+
+static int
 iwn_init(struct ifnet *ifp)
 {
        struct ieee80211vap *vap = ifp->if_softc;
@@ -6890,28 +6921,8 @@
                goto fail;
        }
 
-       /* Read firmware images from the filesystem. */
-       if ((error = iwn_read_firmware(sc)) != 0) {
-               aprint_error_dev(sc->sc_dev,
-                   "could not read firmware\n");
+       if (iwn_fw_init(sc) != 0)
                goto fail;
-       }
-
-       /* Initialize interrupt mask to default value. */
-       sc->int_mask = IWN_INT_MASK_DEF;
-       sc->sc_flags &= ~IWN_FLAG_USE_ICT;
-
-       /* Initialize hardware and upload firmware. */
-       KASSERT(sc->fw.data != NULL && sc->fw.size > 0);
-       error = iwn_hw_init(sc);
-       firmware_free(sc->fw.data, sc->fw.size);
-       sc->fw.data = NULL;
-       sc->fw.size = 0;
-       if (error != 0) {
-               aprint_error_dev(sc->sc_dev,
-                   "could not initialize hardware\n");
-               goto fail;
-       }
 
        /* Configure adapter now that it is ready. */
        if ((error = iwn_config(vap)) != 0) {



Home | Main Index | Thread Index | Old Index