aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajkumar Manoharan <rmanohar@qca.qualcomm.com>2011-07-17 02:13:02 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-07-18 14:29:45 -0400
commit5479de6e876e93d0037e43da7a8e7c2ed170b424 (patch)
tree859ba79fc5d34f9fa1cc76289a4af5522d407c9d
parent0901edb758854e317fbc96774159739db4aff353 (diff)
ath9k: Fix sparse warnings
drivers/net/wireless/ath/ath9k/init.c:199:21: warning: context imbalance in 'ath9k_reg_rmw' - different lock contexts for basic block drivers/net/wireless/ath/ath9k/xmit.c:1175:31: warning: context imbalance in 'ath_drain_txq_list' - unexpected unlock drivers/net/wireless/ath/ath9k/xmit.c:2047:23: warning: context imbalance in 'ath_tx_process_buffer' - unexpected unlock drivers/net/wireless/ath/ath9k/ar9003_eeprom.c:3041:24: warning: cast to restricted __le32 Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_eeprom.c2
-rw-r--r--drivers/net/wireless/ath/ath9k/init.c25
-rw-r--r--drivers/net/wireless/ath/ath9k/xmit.c4
3 files changed, 22 insertions, 9 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
index 33a1600de34..d109c25417f 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
@@ -3039,7 +3039,7 @@ static u32 ath9k_hw_ar9300_get_eeprom(struct ath_hw *ah,
3039 case EEP_CHAIN_MASK_REDUCE: 3039 case EEP_CHAIN_MASK_REDUCE:
3040 return (pBase->miscConfiguration >> 0x3) & 0x1; 3040 return (pBase->miscConfiguration >> 0x3) & 0x1;
3041 case EEP_ANT_DIV_CTL1: 3041 case EEP_ANT_DIV_CTL1:
3042 return le32_to_cpu(eep->base_ext1.ant_div_control); 3042 return eep->base_ext1.ant_div_control;
3043 default: 3043 default:
3044 return 0; 3044 return 0;
3045 } 3045 }
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index ce297173e0d..dceaa4a8281 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -196,6 +196,19 @@ static unsigned int ath9k_ioread32(void *hw_priv, u32 reg_offset)
196 return val; 196 return val;
197} 197}
198 198
199static unsigned int __ath9k_reg_rmw(struct ath_softc *sc, u32 reg_offset,
200 u32 set, u32 clr)
201{
202 u32 val;
203
204 val = ioread32(sc->mem + reg_offset);
205 val &= ~clr;
206 val |= set;
207 iowrite32(val, sc->mem + reg_offset);
208
209 return val;
210}
211
199static unsigned int ath9k_reg_rmw(void *hw_priv, u32 reg_offset, u32 set, u32 clr) 212static unsigned int ath9k_reg_rmw(void *hw_priv, u32 reg_offset, u32 set, u32 clr)
200{ 213{
201 struct ath_hw *ah = (struct ath_hw *) hw_priv; 214 struct ath_hw *ah = (struct ath_hw *) hw_priv;
@@ -204,16 +217,12 @@ static unsigned int ath9k_reg_rmw(void *hw_priv, u32 reg_offset, u32 set, u32 cl
204 unsigned long uninitialized_var(flags); 217 unsigned long uninitialized_var(flags);
205 u32 val; 218 u32 val;
206 219
207 if (ah->config.serialize_regmode == SER_REG_MODE_ON) 220 if (ah->config.serialize_regmode == SER_REG_MODE_ON) {
208 spin_lock_irqsave(&sc->sc_serial_rw, flags); 221 spin_lock_irqsave(&sc->sc_serial_rw, flags);
209 222 val = __ath9k_reg_rmw(sc, reg_offset, set, clr);
210 val = ioread32(sc->mem + reg_offset);
211 val &= ~clr;
212 val |= set;
213 iowrite32(val, sc->mem + reg_offset);
214
215 if (ah->config.serialize_regmode == SER_REG_MODE_ON)
216 spin_unlock_irqrestore(&sc->sc_serial_rw, flags); 223 spin_unlock_irqrestore(&sc->sc_serial_rw, flags);
224 } else
225 val = __ath9k_reg_rmw(sc, reg_offset, set, clr);
217 226
218 return val; 227 return val;
219} 228}
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 9283440a021..7810b926fb3 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -1147,6 +1147,8 @@ static bool bf_is_ampdu_not_probing(struct ath_buf *bf)
1147 1147
1148static void ath_drain_txq_list(struct ath_softc *sc, struct ath_txq *txq, 1148static void ath_drain_txq_list(struct ath_softc *sc, struct ath_txq *txq,
1149 struct list_head *list, bool retry_tx) 1149 struct list_head *list, bool retry_tx)
1150 __releases(txq->axq_lock)
1151 __acquires(txq->axq_lock)
1150{ 1152{
1151 struct ath_buf *bf, *lastbf; 1153 struct ath_buf *bf, *lastbf;
1152 struct list_head bf_head; 1154 struct list_head bf_head;
@@ -2035,6 +2037,8 @@ static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf,
2035static void ath_tx_process_buffer(struct ath_softc *sc, struct ath_txq *txq, 2037static void ath_tx_process_buffer(struct ath_softc *sc, struct ath_txq *txq,
2036 struct ath_tx_status *ts, struct ath_buf *bf, 2038 struct ath_tx_status *ts, struct ath_buf *bf,
2037 struct list_head *bf_head) 2039 struct list_head *bf_head)
2040 __releases(txq->axq_lock)
2041 __acquires(txq->axq_lock)
2038{ 2042{
2039 int txok; 2043 int txok;
2040 2044