From owner-svn-src-head@FreeBSD.ORG Sat Jul 27 14:58:24 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 34B4AEF2; Sat, 27 Jul 2013 14:58:24 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 128CD28D2; Sat, 27 Jul 2013 14:58:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r6REwOKA015914; Sat, 27 Jul 2013 14:58:24 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r6REwOWc015913; Sat, 27 Jul 2013 14:58:24 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201307271458.r6REwOWc015913@svn.freebsd.org> From: Adrian Chadd Date: Sat, 27 Jul 2013 14:58:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r253705 - head/sys/dev/iwn X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Jul 2013 14:58:24 -0000 Author: adrian Date: Sat Jul 27 14:58:23 2013 New Revision: 253705 URL: http://svnweb.freebsd.org/changeset/base/253705 Log: Implement some function tracing. Submitted by: Cedric GROSS Modified: head/sys/dev/iwn/if_iwn.c Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Sat Jul 27 09:00:32 2013 (r253704) +++ head/sys/dev/iwn/if_iwn.c Sat Jul 27 14:58:23 2013 (r253705) @@ -339,6 +339,7 @@ enum { IWN_DEBUG_CMD = 0x00001000, /* cmd submission */ IWN_DEBUG_TXRATE = 0x00002000, /* TX rate debugging */ IWN_DEBUG_PWRSAVE = 0x00004000, /* Power save operations */ + IWN_DEBUG_TRACE = 0x40000000, /* Print begin and start driver function */ IWN_DEBUG_FATAL = 0x80000000, /* fatal errors */ IWN_DEBUG_ANY = 0xffffffff }; @@ -456,6 +457,8 @@ iwn_attach(device_t dev) sc->sc_debug = 0; #endif + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: begin\n",__func__); + /* * Get the offset of the PCI Express Capability Structure in PCI * Configuration Space. @@ -706,9 +709,11 @@ iwn_attach(device_t dev) if (bootverbose) ieee80211_announce(ic); + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); return 0; fail: iwn_detach(dev); + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end in error\n",__func__); return error; } @@ -717,6 +722,7 @@ iwn4965_attach(struct iwn_softc *sc, uin { struct iwn_ops *ops = &sc->ops; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); ops->load_firmware = iwn4965_load_firmware; ops->read_eeprom = iwn4965_read_eeprom; ops->post_alive = iwn4965_post_alive; @@ -747,6 +753,8 @@ iwn4965_attach(struct iwn_softc *sc, uin sc->txchainmask = IWN_ANT_AB; sc->rxchainmask = IWN_ANT_ABC; + DPRINTF(sc, IWN_DEBUG_TRACE, "%s: end\n",__func__); + return 0; } @@ -755,6 +763,8 @@ iwn5000_attach(struct iwn_softc *sc, uin { struct iwn_ops *ops = &sc->ops; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + ops->load_firmware = iwn5000_load_firmware; ops->read_eeprom = iwn5000_read_eeprom; ops->post_alive = iwn5000_post_alive; @@ -831,6 +841,7 @@ iwn5000_attach(struct iwn_softc *sc, uin default: device_printf(sc->sc_dev, "adapter type %d not supported\n", sc->hw_type); + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end in error\n",__func__); return ENOTSUP; } return 0; @@ -844,12 +855,13 @@ iwn_radiotap_attach(struct iwn_softc *sc { struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; - + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); ieee80211_radiotap_attach(ic, &sc->sc_txtap.wt_ihdr, sizeof(sc->sc_txtap), IWN_TX_RADIOTAP_PRESENT, &sc->sc_rxtap.wr_ihdr, sizeof(sc->sc_rxtap), IWN_RX_RADIOTAP_PRESENT); + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end\n", __func__); } static void @@ -949,6 +961,7 @@ iwn_detach(device_t dev) if (ifp != NULL) if_free(ifp); + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s done\n", __func__); IWN_LOCK_DESTROY(sc); return 0; } @@ -1109,6 +1122,7 @@ iwn_eeprom_lock(struct iwn_softc *sc) DELAY(10); } } + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end timeout\n", __func__); return ETIMEDOUT; } @@ -1128,6 +1142,8 @@ iwn_init_otprom(struct iwn_softc *sc) uint16_t prev, base, next; int count, error; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Wait for clock stabilization before accessing prph. */ if ((error = iwn_clock_wait(sc)) != 0) return error; @@ -1171,6 +1187,9 @@ iwn_init_otprom(struct iwn_softc *sc) /* Skip "next" word. */ sc->prom_base = prev + 1; } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end\n", __func__); + return 0; } @@ -1181,6 +1200,8 @@ iwn_read_prom_data(struct iwn_softc *sc, uint32_t val, tmp; int ntries; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + addr += sc->prom_base; for (; count > 0; count -= 2, addr++) { IWN_WRITE(sc, IWN_EEPROM, addr << 2); @@ -1213,6 +1234,9 @@ iwn_read_prom_data(struct iwn_softc *sc, if (count > 1) *out++ = val >> 24; } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end\n", __func__); + return 0; } @@ -1343,6 +1367,8 @@ iwn_alloc_rx_ring(struct iwn_softc *sc, ring->cur = 0; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Allocate RX descriptors (256-byte aligned). */ size = IWN_RX_RING_COUNT * sizeof (uint32_t); error = iwn_dma_contig_alloc(sc, &ring->desc_dma, (void **)&ring->desc, @@ -1417,9 +1443,14 @@ iwn_alloc_rx_ring(struct iwn_softc *sc, bus_dmamap_sync(ring->desc_dma.tag, ring->desc_dma.map, BUS_DMASYNC_PREWRITE); + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return 0; fail: iwn_free_rx_ring(sc, ring); + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end in error\n",__func__); + return error; } @@ -1428,6 +1459,8 @@ iwn_reset_rx_ring(struct iwn_softc *sc, { int ntries; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + if (iwn_nic_lock(sc) == 0) { IWN_WRITE(sc, IWN_FH_RX_CONFIG, 0); for (ntries = 0; ntries < 1000; ntries++) { @@ -1447,6 +1480,8 @@ iwn_free_rx_ring(struct iwn_softc *sc, s { int i; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s \n", __func__); + iwn_dma_contig_free(&ring->desc_dma); iwn_dma_contig_free(&ring->stat_dma); @@ -1480,6 +1515,8 @@ iwn_alloc_tx_ring(struct iwn_softc *sc, ring->queued = 0; ring->cur = 0; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Allocate TX descriptors (256-byte aligned). */ size = IWN_TX_RING_COUNT * sizeof (struct iwn_tx_desc); error = iwn_dma_contig_alloc(sc, &ring->desc_dma, (void **)&ring->desc, @@ -1528,9 +1565,13 @@ iwn_alloc_tx_ring(struct iwn_softc *sc, goto fail; } } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end\n", __func__); + return 0; fail: iwn_free_tx_ring(sc, ring); + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end in error\n", __func__); return error; } @@ -1539,6 +1580,8 @@ iwn_reset_tx_ring(struct iwn_softc *sc, { int i; + DPRINTF(sc, IWN_DEBUG_TRACE, "->doing %s \n", __func__); + for (i = 0; i < IWN_TX_RING_COUNT; i++) { struct iwn_tx_data *data = &ring->data[i]; @@ -1564,6 +1607,8 @@ iwn_free_tx_ring(struct iwn_softc *sc, s { int i; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s \n", __func__); + iwn_dma_contig_free(&ring->desc_dma); iwn_dma_contig_free(&ring->cmd_dma); @@ -1617,6 +1662,8 @@ iwn_read_eeprom(struct iwn_softc *sc, ui uint16_t val; int error; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Check whether adapter has an EEPROM or an OTPROM. */ if (sc->hw_type >= IWN_HW_REV_TYPE_1000 && (IWN_READ(sc, IWN_OTP_GP) & IWN_OTP_GP_DEV_SEL_OTP)) @@ -1674,6 +1721,9 @@ iwn_read_eeprom(struct iwn_softc *sc, ui iwn_apm_stop(sc); /* Power OFF adapter. */ iwn_eeprom_unlock(sc); + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end\n", __func__); + return 0; } @@ -1684,6 +1734,8 @@ iwn4965_read_eeprom(struct iwn_softc *sc uint16_t val; int i; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Read regulatory domain (4 ASCII characters). */ iwn_read_prom_data(sc, IWN4965_EEPROM_DOMAIN, sc->eeprom_domain, 4); @@ -1722,6 +1774,8 @@ iwn4965_read_eeprom(struct iwn_softc *sc iwn4965_print_power_group(sc, i); } #endif + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end\n", __func__); } #ifdef IWN_DEBUG @@ -1768,6 +1822,8 @@ iwn5000_read_eeprom(struct iwn_softc *sc uint16_t val; int i; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Read regulatory domain (4 ASCII characters). */ iwn_read_prom_data(sc, IWN5000_EEPROM_REG, &val, 2); base = le16toh(val); @@ -1811,6 +1867,9 @@ iwn5000_read_eeprom(struct iwn_softc *sc DPRINTF(sc, IWN_DEBUG_CALIBRATE, "crystal calibration 0x%08x\n", le32toh(sc->eeprom_crystal)); } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end\n", __func__); + } /* @@ -1846,6 +1905,8 @@ iwn_read_eeprom_band(struct iwn_softc *s uint8_t chan; int i, nflags; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + for (i = 0; i < band->nchan; i++) { if (!(channels[i].flags & IWN_EEPROM_CHAN_VALID)) { DPRINTF(sc, IWN_DEBUG_RESET, @@ -1888,6 +1949,9 @@ iwn_read_eeprom_band(struct iwn_softc *s c->ic_flags |= IEEE80211_CHAN_HT20; } } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end\n", __func__); + } static void @@ -1901,8 +1965,12 @@ iwn_read_eeprom_ht40(struct iwn_softc *s uint8_t chan; int i, nflags; - if (!(sc->sc_flags & IWN_FLAG_HAS_11N)) + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s start\n", __func__); + + if (!(sc->sc_flags & IWN_FLAG_HAS_11N)) { + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end no 11n\n", __func__); return; + } for (i = 0; i < band->nchan; i++) { if (!(channels[i].flags & IWN_EEPROM_CHAN_VALID)) { @@ -1950,6 +2018,9 @@ iwn_read_eeprom_ht40(struct iwn_softc *s c->ic_flags &= ~IEEE80211_CHAN_HT; c->ic_flags |= IEEE80211_CHAN_HT40D | nflags; } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end\n", __func__); + } static void @@ -2033,6 +2104,8 @@ iwn_read_eeprom_enhinfo(struct iwn_softc uint8_t flags; int i, j; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + iwn_read_prom_data(sc, IWN5000_EEPROM_REG, &val, 2); base = le16toh(val); iwn_read_prom_data(sc, base + IWN6000_EEPROM_ENHINFO, @@ -2083,6 +2156,9 @@ iwn_read_eeprom_enhinfo(struct iwn_softc c->ic_maxpower = maxpwr; } } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end\n", __func__); + } static struct ieee80211_node * @@ -2229,6 +2305,8 @@ iwn_newstate(struct ieee80211vap *vap, e struct iwn_softc *sc = ic->ic_ifp->if_softc; int error = 0; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + DPRINTF(sc, IWN_DEBUG_STATE, "%s: %s -> %s\n", __func__, ieee80211_state_name[vap->iv_state], ieee80211_state_name[nstate]); @@ -2288,8 +2366,13 @@ iwn_newstate(struct ieee80211vap *vap, e } IWN_UNLOCK(sc); IEEE80211_LOCK(ic); - if (error != 0) + if (error != 0){ + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end in error\n", __func__); return error; + } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return ivp->iv_newstate(vap, nstate, arg); } @@ -2353,6 +2436,8 @@ iwn_rx_done(struct iwn_softc *sc, struct uint32_t flags; int error, len, rssi, nf; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + if (desc->type == IWN_MPDU_RX_DONE) { /* Check for prior RX_PHY notification. */ if (!sc->last_rx_valid) { @@ -2491,6 +2576,9 @@ iwn_rx_done(struct iwn_softc *sc, struct (void)ieee80211_input_all(ic, m, rssi - nf, nf); IWN_LOCK(sc); + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + } /* Process an incoming Compressed BlockAck. */ @@ -2512,6 +2600,8 @@ iwn_rx_compressed_ba(struct iwn_softc *s uint8_t tid; int ackfailcnt = 0, i, lastidx, qid, *res, shift; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + bus_dmamap_sync(sc->rxq.data_dmat, data->map, BUS_DMASYNC_POSTREAD); qid = le16toh(ba->qid); @@ -2583,6 +2673,9 @@ iwn_rx_compressed_ba(struct iwn_softc *s } bitmap >>= 1; } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + } /* @@ -2596,10 +2689,14 @@ iwn5000_rx_calib_results(struct iwn_soft struct iwn_phy_calib *calib = (struct iwn_phy_calib *)(desc + 1); int len, idx = -1; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Runtime firmware should not send such a notification. */ - if (sc->sc_flags & IWN_FLAG_CALIB_DONE) + if (sc->sc_flags & IWN_FLAG_CALIB_DONE){ + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s received after clib done\n", + __func__); return; - + } len = (le32toh(desc->len) & 0x3fff) - 4; bus_dmamap_sync(sc->rxq.data_dmat, data->map, BUS_DMASYNC_POSTREAD); @@ -2661,10 +2758,15 @@ iwn_rx_statistics(struct iwn_softc *sc, struct iwn_stats *stats = (struct iwn_stats *)(desc + 1); int temp; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Ignore statistics received during a scan. */ if (vap->iv_state != IEEE80211_S_RUN || - (ic->ic_flags & IEEE80211_F_SCAN)) + (ic->ic_flags & IEEE80211_F_SCAN)){ + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s received during calib\n", + __func__); return; + } bus_dmamap_sync(sc->rxq.data_dmat, data->map, BUS_DMASYNC_POSTREAD); @@ -2702,6 +2804,8 @@ iwn_rx_statistics(struct iwn_softc *sc, iwn_collect_noise(sc, &stats->rx.general); else if (calib->state == IWN_CALIB_STATE_RUN) iwn_tune_sensitivity(sc, &stats->rx); + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); } /* @@ -2783,6 +2887,8 @@ iwn_tx_done(struct iwn_softc *sc, struct KASSERT(data->ni != NULL, ("no node")); + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Unmap and free mbuf. */ bus_dmamap_sync(ring->data_dmat, data->map, BUS_DMASYNC_POSTWRITE); bus_dmamap_unload(ring->data_dmat, data->map); @@ -2837,6 +2943,9 @@ iwn_tx_done(struct iwn_softc *sc, struct iwn_start_locked(ifp); } } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + } /* @@ -2884,6 +2993,8 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, uint8_t tid; int bit, i, lastidx, *res, seqno, shift, start; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + #ifdef NOT_YET if (nframes == 1) { if ((*status & 0xff) != 1 && (*status & 0xff) != 2) @@ -2970,6 +3081,9 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, iwn_start_locked(ifp); } } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + } /* @@ -3280,7 +3394,8 @@ iwn_intr(void *arg) r2 = IWN_READ(sc, IWN_FH_INT); } - DPRINTF(sc, IWN_DEBUG_INTR, "interrupt reg1=%x reg2=%x\n", r1, r2); + DPRINTF(sc, IWN_DEBUG_INTR, "interrupt reg1=0x%08x reg2=0x%08x\n" + , r1, r2); if (r1 == 0 && r2 == 0) goto done; /* Interrupt not for us. */ @@ -3353,6 +3468,8 @@ iwn4965_update_sched(struct iwn_softc *s { uint16_t *w = &sc->sched[qid * IWN4965_SCHED_COUNT + idx]; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + *w = htole16(len + 8); bus_dmamap_sync(sc->sched_dma.tag, sc->sched_dma.map, BUS_DMASYNC_PREWRITE); @@ -3369,6 +3486,8 @@ iwn5000_update_sched(struct iwn_softc *s { uint16_t *w = &sc->sched[qid * IWN5000_SCHED_COUNT + idx]; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + *w = htole16(id << 12 | (len + 8)); bus_dmamap_sync(sc->sched_dma.tag, sc->sched_dma.map, BUS_DMASYNC_PREWRITE); @@ -3385,6 +3504,8 @@ iwn5000_reset_sched(struct iwn_softc *sc { uint16_t *w = &sc->sched[qid * IWN5000_SCHED_COUNT + idx]; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + *w = (*w & htole16(0xf000)) | htole16(1); bus_dmamap_sync(sc->sched_dma.tag, sc->sched_dma.map, BUS_DMASYNC_PREWRITE); @@ -3419,6 +3540,8 @@ iwn_tx_data(struct iwn_softc *sc, struct uint8_t tid, ridx, txant, type; int ac, i, totlen, error, pad, nsegs = 0, rate; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + IWN_LOCK_ASSERT(sc); wh = mtod(m, struct ieee80211_frame *); @@ -3664,6 +3787,8 @@ iwn_tx_data(struct iwn_softc *sc, struct if (++ring->queued > IWN_TX_RING_HIMARK) sc->qfullmsk |= 1 << ring->qid; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return 0; } @@ -3688,6 +3813,8 @@ iwn_tx_data_raw(struct iwn_softc *sc, st int ac, totlen, error, pad, nsegs = 0, i, rate; uint8_t ridx, type, txant; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + IWN_LOCK_ASSERT(sc); wh = mtod(m, struct ieee80211_frame *); @@ -3873,6 +4000,8 @@ iwn_tx_data_raw(struct iwn_softc *sc, st if (++ring->queued > IWN_TX_RING_HIMARK) sc->qfullmsk |= 1 << ring->qid; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return 0; } @@ -3885,6 +4014,8 @@ iwn_raw_xmit(struct ieee80211_node *ni, struct iwn_softc *sc = ifp->if_softc; int error = 0; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { ieee80211_free_node(ni); m_freem(m); @@ -3913,6 +4044,9 @@ iwn_raw_xmit(struct ieee80211_node *ni, sc->sc_tx_timer = 5; IWN_UNLOCK(sc); + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return error; } @@ -3968,6 +4102,8 @@ iwn_watchdog(void *arg) KASSERT(ifp->if_drv_flags & IFF_DRV_RUNNING, ("not running")); + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + if (sc->sc_tx_timer > 0) { if (--sc->sc_tx_timer == 0) { if_printf(ifp, "device timeout\n"); @@ -4035,6 +4171,8 @@ iwn_cmd(struct iwn_softc *sc, int code, bus_addr_t paddr; int totlen, error; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + if (async == 0) IWN_LOCK_ASSERT(sc); @@ -4090,6 +4228,8 @@ iwn_cmd(struct iwn_softc *sc, int code, ring->cur = (ring->cur + 1) % IWN_TX_RING_COUNT; IWN_WRITE(sc, IWN_HBUS_TARG_WRPTR, ring->qid << 8 | ring->cur); + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return async ? 0 : msleep(desc, &sc->sc_mtx, PCATCH, "iwncmd", hz); } @@ -4099,6 +4239,8 @@ iwn4965_add_node(struct iwn_softc *sc, s struct iwn4965_node_info hnode; caddr_t src, dst; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* * We use the node structure for 5000 Series internally (it is * a superset of the one for 4965AGN). We thus copy the common @@ -4115,6 +4257,9 @@ iwn4965_add_node(struct iwn_softc *sc, s static int iwn5000_add_node(struct iwn_softc *sc, struct iwn_node_info *node, int async) { + + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* Direct mapping. */ return iwn_cmd(sc, IWN_CMD_ADD_NODE, node, sizeof (*node), async); } @@ -4129,6 +4274,8 @@ iwn_set_link_quality(struct iwn_softc *s uint8_t txant; int i, rate, txrate; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Use the first valid TX antenna. */ txant = IWN_LSB(sc->txchainmask); @@ -4166,6 +4313,9 @@ iwn_set_link_quality(struct iwn_softc *s if (txrate > 0) txrate--; } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return iwn_cmd(sc, IWN_CMD_LINK_QUALITY, &linkq, sizeof linkq, 1); #undef RV } @@ -4184,6 +4334,8 @@ iwn_add_broadcast_node(struct iwn_softc uint8_t txant; int i, error; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + memset(&node, 0, sizeof node); IEEE80211_ADDR_COPY(node.macaddr, ifp->if_broadcastaddr); node.id = sc->broadcast_id; @@ -4212,6 +4364,9 @@ iwn_add_broadcast_node(struct iwn_softc for (i = 1; i < IWN_MAX_TX_RETRIES; i++) { linkq.retry[i] = linkq.retry[0]; } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return iwn_cmd(sc, IWN_CMD_LINK_QUALITY, &linkq, sizeof linkq, async); } @@ -4223,6 +4378,8 @@ iwn_updateedca(struct ieee80211com *ic) struct iwn_edca_params cmd; int aci; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + memset(&cmd, 0, sizeof cmd); cmd.flags = htole32(IWN_EDCA_UPDATE); for (aci = 0; aci < WME_NUM_AC; aci++) { @@ -4239,6 +4396,9 @@ iwn_updateedca(struct ieee80211com *ic) (void)iwn_cmd(sc, IWN_CMD_EDCA_PARAMS, &cmd, sizeof cmd, 1); IWN_UNLOCK(sc); IEEE80211_LOCK(ic); + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return 0; #undef IWN_EXP2 } @@ -4254,6 +4414,8 @@ iwn_set_led(struct iwn_softc *sc, uint8_ { struct iwn_cmd_led led; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* Clear microcode LED ownership. */ IWN_CLRBITS(sc, IWN_LED, IWN_LED_BSM_CTRL); @@ -4274,6 +4436,8 @@ iwn_set_critical_temp(struct iwn_softc * struct iwn_critical_temp crit; int32_t temp; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + IWN_WRITE(sc, IWN_UCODE_GP1_CLR, IWN_UCODE_GP1_CTEMP_STOP_RF); if (sc->hw_type == IWN_HW_REV_TYPE_5150) @@ -4294,6 +4458,8 @@ iwn_set_timing(struct iwn_softc *sc, str struct iwn_cmd_timing cmd; uint64_t val, mod; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + memset(&cmd, 0, sizeof cmd); memcpy(&cmd.tstamp, ni->ni_tstamp.data, sizeof (uint64_t)); cmd.bintval = htole16(ni->ni_intval); @@ -4316,6 +4482,8 @@ iwn4965_power_calibration(struct iwn_sof struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* Adjust TX power if need be (delta >= 3 degC). */ DPRINTF(sc, IWN_DEBUG_CALIBRATE, "%s: temperature %d->%d\n", __func__, sc->temp, temp); @@ -4487,6 +4655,8 @@ iwn5000_set_txpower(struct iwn_softc *sc { struct iwn5000_cmd_txpower cmd; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* * TX power calibration is handled automatically by the firmware * for 5000 Series. @@ -4509,6 +4679,8 @@ iwn4965_get_rssi(struct iwn_softc *sc, s uint8_t mask, agc; int rssi; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + mask = (le16toh(phy->antenna) >> 4) & IWN_ANT_ABC; agc = (le16toh(phy->agc) >> 7) & 0x7f; @@ -4534,6 +4706,8 @@ iwn5000_get_rssi(struct iwn_softc *sc, s uint8_t agc; int rssi; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + agc = (le32toh(phy->agc) >> 9) & 0x7f; rssi = MAX(le16toh(phy->rssi[0]) & 0xff, @@ -4575,6 +4749,8 @@ iwn4965_get_temperature(struct iwn_softc struct iwn_ucode_info *uc = &sc->ucode_info; int32_t r1, r2, r3, r4, temp; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + r1 = le32toh(uc->temp[0].chan20MHz); r2 = le32toh(uc->temp[1].chan20MHz); r3 = le32toh(uc->temp[2].chan20MHz); @@ -4599,6 +4775,8 @@ iwn5000_get_temperature(struct iwn_softc { int32_t temp; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* * Temperature is not used by the driver for 5000 Series because * TX power calibration is handled by firmware. @@ -4622,6 +4800,8 @@ iwn_init_sensitivity(struct iwn_softc *s uint32_t flags; int error; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* Reset calibration state machine. */ memset(calib, 0, sizeof (*calib)); calib->state = IWN_CALIB_STATE_INIT; @@ -4666,6 +4846,8 @@ iwn_collect_noise(struct iwn_softc *sc, uint32_t val; int i; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Accumulate RSSI and noise for all 3 antennas. */ for (i = 0; i < 3; i++) { calib->rssi[i] += le32toh(stats->rssi[i]) & 0xff; @@ -4704,6 +4886,9 @@ iwn_collect_noise(struct iwn_softc *sc, /* Enable power-saving mode if requested by user. */ if (ic->ic_flags & IEEE80211_F_PMGTON) (void)iwn_set_pslevel(sc, 0, 3, 1); + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + } static int @@ -4711,6 +4896,8 @@ iwn4965_init_gains(struct iwn_softc *sc) { struct iwn_phy_calib_gain cmd; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + memset(&cmd, 0, sizeof cmd); cmd.code = IWN4965_PHY_CALIB_DIFF_GAIN; /* Differential gains initially set to 0 for all 3 antennas. */ @@ -4724,6 +4911,8 @@ iwn5000_init_gains(struct iwn_softc *sc) { struct iwn_phy_calib cmd; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + memset(&cmd, 0, sizeof cmd); cmd.code = sc->reset_noise_gain; cmd.ngroups = 1; @@ -4740,6 +4929,8 @@ iwn4965_set_gains(struct iwn_softc *sc) struct iwn_phy_calib_gain cmd; int i, delta, noise; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* Get minimal noise among connected antennas. */ noise = INT_MAX; /* NB: There's at least one antenna. */ for (i = 0; i < 3; i++) @@ -4773,6 +4964,8 @@ iwn5000_set_gains(struct iwn_softc *sc) struct iwn_phy_calib_gain cmd; int i, ant, div, delta; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* We collected 20 beacons and !=6050 need a 1.5 factor. */ div = (sc->hw_type == IWN_HW_REV_TYPE_6050) ? 20 : 30; @@ -4831,9 +5024,13 @@ iwn_tune_sensitivity(struct iwn_softc *s uint8_t noise[3], noise_ref; int i, needs_update = 0; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Check that we've been enabled long enough. */ - if ((rxena = le32toh(stats->general.load)) == 0) + if ((rxena = le32toh(stats->general.load)) == 0){ + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s end not so long\n", __func__); return; + } /* Compute number of false alarms since last call for OFDM. */ fa = le32toh(stats->ofdm.bad_plcp) - calib->bad_plcp_ofdm; @@ -4951,6 +5148,9 @@ iwn_tune_sensitivity(struct iwn_softc *s if (needs_update) (void)iwn_send_sensitivity(sc); + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + #undef dec #undef inc } @@ -5158,6 +5358,8 @@ iwn_config(struct iwn_softc *sc) uint16_t rxchain; int error; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + if (sc->hw_type == IWN_HW_REV_TYPE_6005) { /* Set radio temperature sensor offset. */ error = iwn5000_temp_offset_calib(sc); @@ -5271,6 +5473,9 @@ iwn_config(struct iwn_softc *sc) "%s: could not set power saving level\n", __func__); return error; } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return 0; } @@ -5305,6 +5510,8 @@ iwn_scan(struct iwn_softc *sc) uint8_t txant; int buflen, error; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + buf = malloc(IWN_SCAN_MAXSZ, M_DEVBUF, M_NOWAIT | M_ZERO); if (buf == NULL) { device_printf(sc->sc_dev, @@ -5440,6 +5647,9 @@ iwn_scan(struct iwn_softc *sc) hdr->nchan); error = iwn_cmd(sc, IWN_CMD_SCAN, buf, buflen, 1); free(buf, M_DEVBUF); + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return error; } @@ -5452,6 +5662,8 @@ iwn_auth(struct iwn_softc *sc, struct ie struct ieee80211_node *ni = vap->iv_bss; int error; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + /* Update adapter configuration. */ IEEE80211_ADDR_COPY(sc->rxon.bssid, ni->ni_bssid); sc->rxon.chan = ieee80211_chan2ieee(ic, ni->ni_chan); @@ -5499,6 +5711,9 @@ iwn_auth(struct iwn_softc *sc, struct ie error); return error; } + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return 0; } @@ -5513,6 +5728,8 @@ iwn_run(struct iwn_softc *sc, struct iee uint32_t htflags = 0; int error; + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + if (ic->ic_opmode == IEEE80211_M_MONITOR) { /* Link LED blinks while monitoring. */ iwn_set_led(sc, IWN_LED_LINK, 5, 5); @@ -5632,6 +5849,9 @@ iwn_run(struct iwn_softc *sc, struct iee /* Link LED always on while associated. */ iwn_set_led(sc, IWN_LED_LINK, 0, 1); + + DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__); + return 0; } @@ -5652,6 +5872,8 @@ iwn_ampdu_rx_start(struct ieee80211_node uint8_t tid; int error; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + tid = MS(le16toh(baparamset), IEEE80211_BAPS_TID); ssn = MS(le16toh(baseqctl), IEEE80211_BASEQ_START); @@ -5684,6 +5906,8 @@ iwn_ampdu_rx_stop(struct ieee80211_node struct iwn_node_info node; uint8_t tid; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* XXX: tid as an argument */ for (tid = 0; tid < WME_NUM_TID; tid++) { if (&ni->ni_rx_ampdu[tid] == rap) @@ -5707,6 +5931,8 @@ iwn_addba_request(struct ieee80211_node struct iwn_softc *sc = ni->ni_ic->ic_ifp->if_softc; int qid; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + for (qid = sc->firstaggqueue; qid < sc->ntxqs; qid++) { if (sc->qid2tap[qid] == NULL) break; @@ -5737,6 +5963,8 @@ iwn_addba_response(struct ieee80211_node uint8_t tid = tap->txa_tid; int ret; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + if (code == IEEE80211_STATUS_SUCCESS) { ni->ni_txseqs[tid] = tap->txa_start & 0xfff; ret = iwn_ampdu_tx_start(ni->ni_ic, ni, tid); @@ -5765,6 +5993,8 @@ iwn_ampdu_tx_start(struct ieee80211com * struct iwn_node_info node; int error, qid; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* Enable TX for the specified RA/TID. */ wn->disable_tid &= ~(1 << tid); memset(&node, 0, sizeof node); @@ -5796,6 +6026,8 @@ iwn_ampdu_tx_stop(struct ieee80211_node uint8_t tid = tap->txa_tid; int qid; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + sc->sc_addba_stop(ni, tap); if (tap->txa_private == NULL) @@ -5819,6 +6051,8 @@ iwn4965_ampdu_tx_start(struct iwn_softc { struct iwn_node *wn = (void *)ni; + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* Stop TX scheduler while we're changing its configuration. */ iwn_prph_write(sc, IWN4965_SCHED_QUEUE_STATUS(qid), IWN4965_TXQ_STATUS_CHGACT); @@ -5854,6 +6088,8 @@ iwn4965_ampdu_tx_start(struct iwn_softc static void iwn4965_ampdu_tx_stop(struct iwn_softc *sc, int qid, uint8_t tid, uint16_t ssn) { + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + /* Stop TX scheduler while we're changing its configuration. */ iwn_prph_write(sc, IWN4965_SCHED_QUEUE_STATUS(qid), IWN4965_TXQ_STATUS_CHGACT); @@ -5874,6 +6110,8 @@ static void iwn5000_ampdu_tx_start(struct iwn_softc *sc, struct ieee80211_node *ni, int qid, uint8_t tid, uint16_t ssn) { + DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); + struct iwn_node *wn = (void *)ni; /* Stop TX scheduler while we're changing its configuration. */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***