From b1b942f3c32068e35fd606214ecff89056c13a2f Mon Sep 17 00:00:00 2001 From: nbd Date: Thu, 4 Dec 2008 21:57:17 +0000 Subject: [PATCH] madwifi: fix division by zero git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13521 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/madwifi/patches/389-autochannel.patch | 9 ++++++--- package/madwifi/patches/406-monitor_r3711.patch | 4 ++-- package/madwifi/patches/408-changeset_r3337.patch | 2 +- package/madwifi/patches/450-new_hal.patch | 2 +- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/package/madwifi/patches/389-autochannel.patch b/package/madwifi/patches/389-autochannel.patch index 9c77b0e54..7926d2e58 100644 --- a/package/madwifi/patches/389-autochannel.patch +++ b/package/madwifi/patches/389-autochannel.patch @@ -16,7 +16,7 @@ sc->sc_curchan.channel = ic->ic_curchan->ic_freq; sc->sc_curchan.channelFlags = ath_chan2flags(ic->ic_curchan); if (!ath_hal_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_FALSE, &status)) { -@@ -2913,6 +2915,37 @@ ath_hw_check_atim(struct ath_softc *sc, +@@ -2913,6 +2915,40 @@ ath_hw_check_atim(struct ath_softc *sc, } @@ -38,6 +38,9 @@ + + rx = OS_REG_READ(ah, AR5K_RXCLEAR); + cc = OS_REG_READ(ah, AR5K_CYCLES); ++ if (!cc) ++ return; ++ + if (rx > cc) + return; /* wraparound */ + @@ -54,7 +57,7 @@ /* * Reset the hardware w/o losing operational state. This is * basically a more efficient way of doing ath_stop, ath_init, -@@ -2939,6 +2972,7 @@ ath_reset(struct net_device *dev) +@@ -2939,6 +2975,7 @@ ath_reset(struct net_device *dev) * Convert to a HAL channel description with the flags * constrained to reflect the current operating mode. */ @@ -62,7 +65,7 @@ c = ic->ic_curchan; sc->sc_curchan.channel = c->ic_freq; sc->sc_curchan.channelFlags = ath_chan2flags(c); -@@ -9019,6 +9053,7 @@ ath_chan_set(struct ath_softc *sc, struc +@@ -9019,6 +9056,7 @@ ath_chan_set(struct ath_softc *sc, struc u_int8_t channel_change_required = 0; struct timeval tv; diff --git a/package/madwifi/patches/406-monitor_r3711.patch b/package/madwifi/patches/406-monitor_r3711.patch index f5e5a9586..64f19e0b8 100644 --- a/package/madwifi/patches/406-monitor_r3711.patch +++ b/package/madwifi/patches/406-monitor_r3711.patch @@ -1,6 +1,6 @@ --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -6507,7 +6507,7 @@ ath_capture(struct net_device *dev, cons +@@ -6510,7 +6510,7 @@ ath_capture(struct net_device *dev, cons /* Never copy the SKB, as it is ours on the RX side, and this is the * last process on the TX side and we only modify our own headers. */ @@ -9,7 +9,7 @@ if (tskb == NULL) { DPRINTF(sc, ATH_DEBUG_ANY, "Dropping; ath_skb_removepad failed!\n"); -@@ -6515,6 +6515,8 @@ ath_capture(struct net_device *dev, cons +@@ -6518,6 +6518,8 @@ ath_capture(struct net_device *dev, cons } ieee80211_input_monitor(ic, tskb, bf, tx, tsf, sc); diff --git a/package/madwifi/patches/408-changeset_r3337.patch b/package/madwifi/patches/408-changeset_r3337.patch index b0121b97e..00f0955fa 100644 --- a/package/madwifi/patches/408-changeset_r3337.patch +++ b/package/madwifi/patches/408-changeset_r3337.patch @@ -10,7 +10,7 @@ Please let us know if you think your name should be mentioned here! --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -3126,7 +3126,7 @@ ath_tx_startraw(struct net_device *dev, +@@ -3129,7 +3129,7 @@ ath_tx_startraw(struct net_device *dev, struct ath_softc *sc = dev->priv; struct ath_hal *ah = sc->sc_ah; struct ieee80211_phy_params *ph = (struct ieee80211_phy_params *) diff --git a/package/madwifi/patches/450-new_hal.patch b/package/madwifi/patches/450-new_hal.patch index 199f91fb0..324f7dd6b 100644 --- a/package/madwifi/patches/450-new_hal.patch +++ b/package/madwifi/patches/450-new_hal.patch @@ -108,7 +108,7 @@ /* * Check if the MAC has multi-rate retry support. * We do this by trying to setup a fake extended -@@ -7521,7 +7529,7 @@ ath_txq_setup(struct ath_softc *sc, int +@@ -7524,7 +7532,7 @@ ath_txq_setup(struct ath_softc *sc, int if (qtype == HAL_TX_QUEUE_UAPSD) qi.tqi_qflags = HAL_TXQ_TXDESCINT_ENABLE; else