Search Linux Wireless

[PATCH 1/1] ath5k: Cleanup after API changes patch

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

 



Cleanup after API changes patch (checkpatch.pl stuff) and on
ath5k_hw_rf5112_channel() make use of the new channel->band and
existing ath5k_channel_ok() instead of re-implementing the checks
again. This was necessary to make the code cleaner and fit
the 80-chars wide limit so sending it within the same patch.

Finally make a note that we should eventually move cap_range stuff
to struct wiphy.

This patch applies ontop of Nick's API changes patch.

Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxxxxxxxxxxxx>

drivers/net/wireless/ath5k/ath5k.h:	Changes-licensed-under: ISC
drivers/net/wireless/ath5k/base.c:	Changes-licensed-under: 3-Clause-BSD
drivers/net/wireless/ath5k/initvals.c:	Changes-licensed-under: ISC
drivers/net/wireless/ath5k/phy.c:	Changes-licensed-under: ISC
---
 drivers/net/wireless/ath5k/ath5k.h    |    8 ++-
 drivers/net/wireless/ath5k/base.c     |  126 +++++++++++++++++++--------------
 drivers/net/wireless/ath5k/initvals.c |    6 +-
 drivers/net/wireless/ath5k/phy.c      |   48 +++++++++----
 4 files changed, 118 insertions(+), 70 deletions(-)

diff --git a/drivers/net/wireless/ath5k/ath5k.h b/drivers/net/wireless/ath5k/ath5k.h
index 3b03600..7b8a1df 100644
--- a/drivers/net/wireless/ath5k/ath5k.h
+++ b/drivers/net/wireless/ath5k/ath5k.h
@@ -263,8 +263,10 @@ enum ath5k_driver_mode {
 /* adding this flag to rate_code enables short preamble, see ar5212_reg.h */
 #define AR5K_SET_SHORT_PREAMBLE 0x04
 
-#define HAS_SHPREAMBLE(_ix) (rt->rates[_ix].modulation == IEEE80211_RATE_SHORT_PREAMBLE)
-#define SHPREAMBLE_FLAG(_ix) (HAS_SHPREAMBLE(_ix) ? AR5K_SET_SHORT_PREAMBLE : 0)
+#define HAS_SHPREAMBLE(_ix) \
+	(rt->rates[_ix].modulation == IEEE80211_RATE_SHORT_PREAMBLE)
+#define SHPREAMBLE_FLAG(_ix) \
+	(HAS_SHPREAMBLE(_ix) ? AR5K_SET_SHORT_PREAMBLE : 0)
 
 /****************\
   TX DEFINITIONS
@@ -892,6 +894,8 @@ enum ath5k_capability_type {
 	AR5K_CAP_RFSILENT		= 20,	/* Supports RFsilent */
 };
 
+
+/* XXX: move cap_range stuff to struct wiphy, use these helper for now */
 struct ath5k_capabilities {
 	/*
 	 * Supported PHY modes
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index 8ddac36..bd9c9a8 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -80,7 +80,7 @@ MODULE_AUTHOR("Nick Kossifidis");
 MODULE_DESCRIPTION("Support for 5xxx series of Atheros 802.11 wireless LAN cards.");
 MODULE_SUPPORTED_DEVICE("Atheros 5xxx WLAN cards");
 MODULE_LICENSE("Dual BSD/GPL");
-MODULE_VERSION("0.1.1 (EXPERIMENTAL)");
+MODULE_VERSION("0.5.0 (EXPERIMENTAL)");
 
 
 /* Known PCI ids */
@@ -513,35 +513,46 @@ ath5k_pci_probe(struct pci_dev *pdev,
 					sc->ah->ah_mac_srev,
 					sc->ah->ah_phy_revision);
 
-	if(!sc->ah->ah_single_chip){
+	if (!sc->ah->ah_single_chip) {
 		/* Single chip radio (!RF5111) */
-		if(sc->ah->ah_radio_5ghz_revision && !sc->ah->ah_radio_2ghz_revision) {
+		if (sc->ah->ah_radio_5ghz_revision &&
+			!sc->ah->ah_radio_2ghz_revision) {
 			/* No 5GHz support -> report 2GHz radio */
-			if(!test_bit(AR5K_MODE_11A, sc->ah->ah_capabilities.cap_mode)){
+			if (!test_bit(AR5K_MODE_11A,
+				sc->ah->ah_capabilities.cap_mode)) {
 				ATH5K_INFO(sc, "RF%s 2GHz radio found (0x%x)\n",
-					ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
-							sc->ah->ah_radio_5ghz_revision);
-			/* No 2GHz support (5110 and some 5Ghz only cards) -> report 5Ghz radio */
-			} else if(!test_bit(AR5K_MODE_11B, sc->ah->ah_capabilities.cap_mode)){
+					ath5k_chip_name(AR5K_VERSION_RAD,
+						sc->ah->ah_radio_5ghz_revision),
+						sc->ah->ah_radio_5ghz_revision);
+			/* No 2GHz support (5110 and some
+			 * 5Ghz only cards) -> report 5Ghz radio */
+			} else if (!test_bit(AR5K_MODE_11B,
+				sc->ah->ah_capabilities.cap_mode)) {
 				ATH5K_INFO(sc, "RF%s 5GHz radio found (0x%x)\n",
-					ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
-							sc->ah->ah_radio_5ghz_revision);
+					ath5k_chip_name(AR5K_VERSION_RAD,
+						sc->ah->ah_radio_5ghz_revision),
+						sc->ah->ah_radio_5ghz_revision);
 			/* Multiband radio */
 			} else {
 				ATH5K_INFO(sc, "RF%s multiband radio found"
 					" (0x%x)\n",
-					ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
-							sc->ah->ah_radio_5ghz_revision);
+					ath5k_chip_name(AR5K_VERSION_RAD,
+						sc->ah->ah_radio_5ghz_revision),
+						sc->ah->ah_radio_5ghz_revision);
 			}
 		}
-		/* Multi chip radio (RF5111 - RF2111) -> report both 2GHz/5GHz radios */
-		else if(sc->ah->ah_radio_5ghz_revision && sc->ah->ah_radio_2ghz_revision){
+		/* Multi chip radio (RF5111 - RF2111) ->
+		 * report both 2GHz/5GHz radios */
+		else if (sc->ah->ah_radio_5ghz_revision &&
+				sc->ah->ah_radio_2ghz_revision){
 			ATH5K_INFO(sc, "RF%s 5GHz radio found (0x%x)\n",
-				ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
-						sc->ah->ah_radio_5ghz_revision);
+				ath5k_chip_name(AR5K_VERSION_RAD,
+					sc->ah->ah_radio_5ghz_revision),
+					sc->ah->ah_radio_5ghz_revision);
 			ATH5K_INFO(sc, "RF%s 2GHz radio found (0x%x)\n",
-				ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_2ghz_revision),
-						sc->ah->ah_radio_2ghz_revision);
+				ath5k_chip_name(AR5K_VERSION_RAD,
+					sc->ah->ah_radio_2ghz_revision),
+					sc->ah->ah_radio_2ghz_revision);
 		}
 	}
 
@@ -889,13 +900,15 @@ ath5k_copy_channels(struct ath5k_hw *ah,
 		/* Write channel info and increment counter */
 		channels[count].center_freq = freq;
 
-		if((mode == AR5K_MODE_11A) ||
-		(mode == AR5K_MODE_11G)){
-			channels[count].hw_value = chfreq|CHANNEL_OFDM;
-		} else if((mode == AR5K_MODE_11A_TURBO) ||
-		(mode == AR5K_MODE_11G_TURBO)){
-			channels[count].hw_value = chfreq|CHANNEL_OFDM|CHANNEL_TURBO;
-		}if(mode == AR5K_MODE_11B) {
+		if ((mode == AR5K_MODE_11A) ||
+			(mode == AR5K_MODE_11G)) {
+			channels[count].hw_value =
+				chfreq | CHANNEL_OFDM;
+		} else if ((mode == AR5K_MODE_11A_TURBO) ||
+			(mode == AR5K_MODE_11G_TURBO)) {
+			channels[count].hw_value =
+				chfreq | CHANNEL_OFDM|CHANNEL_TURBO;
+		} if (mode == AR5K_MODE_11B) {
 			channels[count].hw_value = CHANNEL_B;
 		}
 
@@ -923,15 +936,16 @@ ath5k_getchannels(struct ieee80211_hw *hw)
 	count_r = count_c = 0;
 
 	/* 2GHz band */
-	if(!test_bit(AR5K_MODE_11G, sc->ah->ah_capabilities.cap_mode)){
+	if (!test_bit(AR5K_MODE_11G, sc->ah->ah_capabilities.cap_mode)) {
 		mode2g = AR5K_MODE_11B;
-		if(!test_bit(AR5K_MODE_11B, sc->ah->ah_capabilities.cap_mode)){
+		if (!test_bit(AR5K_MODE_11B,
+			sc->ah->ah_capabilities.cap_mode))
 			mode2g = -1;
-		}
 	}
 
-	if(mode2g > 0){
-		struct ieee80211_supported_band *sband = &sbands[IEEE80211_BAND_2GHZ];
+	if (mode2g > 0) {
+		struct ieee80211_supported_band *sband =
+			&sbands[IEEE80211_BAND_2GHZ];
 
 		sband->bitrates = sc->rates;
 		sband->channels = sc->channels;
@@ -942,7 +956,7 @@ ath5k_getchannels(struct ieee80211_hw *hw)
 
 		hw_rates = ath5k_hw_get_rate_table(ah, mode2g);
 		sband->n_bitrates = ath5k_copy_rates(sband->bitrates,
-					hw_rates,max_r);
+					hw_rates, max_r);
 
 		count_c = sband->n_channels;
 		count_r = sband->n_bitrates;
@@ -956,8 +970,9 @@ ath5k_getchannels(struct ieee80211_hw *hw)
 
 	/* 5GHz band */
 
-	if(test_bit(AR5K_MODE_11A, sc->ah->ah_capabilities.cap_mode)){
-		struct ieee80211_supported_band *sband = &sbands[IEEE80211_BAND_5GHZ];
+	if (test_bit(AR5K_MODE_11A, sc->ah->ah_capabilities.cap_mode)) {
+		struct ieee80211_supported_band *sband =
+			&sbands[IEEE80211_BAND_5GHZ];
 
 		sband->bitrates = &sc->rates[count_r];
 		sband->channels = &sc->channels[count_c];
@@ -968,7 +983,7 @@ ath5k_getchannels(struct ieee80211_hw *hw)
 
 		hw_rates = ath5k_hw_get_rate_table(ah, AR5K_MODE_11A);
 		sband->n_bitrates = ath5k_copy_rates(sband->bitrates,
-					hw_rates,max_r);
+					hw_rates, max_r);
 
 		hw->wiphy->bands[IEEE80211_BAND_5GHZ] = sband;
 	}
@@ -1106,7 +1121,7 @@ ath5k_setcurmode(struct ath5k_softc *sc, unsigned int mode)
 
 	sc->curmode = mode;
 
-	if(mode == AR5K_MODE_11A){
+	if (mode == AR5K_MODE_11A) {
 		sc->curband = &sc->sbands[IEEE80211_BAND_5GHZ];
 	} else {
 		sc->curband = &sc->sbands[IEEE80211_BAND_2GHZ];
@@ -1158,43 +1173,43 @@ ath5k_mode_setup(struct ath5k_softc *sc)
  * When hw returns eg. 27 it points to the last 802.11g rate (54Mbits) etc
  */
 static void
-ath5k_set_total_hw_rates(struct ath5k_softc *sc){
+ath5k_set_total_hw_rates(struct ath5k_softc *sc) {
 
 	struct ath5k_hw *ah = sc->ah;
 
-	if(test_bit(AR5K_MODE_11A, ah->ah_modes))
+	if (test_bit(AR5K_MODE_11A, ah->ah_modes))
 		sc->a_rates = 8;
 
-	if(test_bit(AR5K_MODE_11B, ah->ah_modes))
+	if (test_bit(AR5K_MODE_11B, ah->ah_modes))
 		sc->b_rates = 4;
 
-	if(test_bit(AR5K_MODE_11G, ah->ah_modes))
+	if (test_bit(AR5K_MODE_11G, ah->ah_modes))
 		sc->g_rates = 12;
-	
+
 	/* XXX: Need to see what what happens when
 		xr disable bits in eeprom are set */
-	if(ah->ah_version >= AR5K_AR5212)
+	if (ah->ah_version >= AR5K_AR5212)
 		sc->xr_rates = 4;
 
 }
 
 static inline int
-ath5k_hw_to_driver_rix(struct ath5k_softc *sc, int hw_rix){
+ath5k_hw_to_driver_rix(struct ath5k_softc *sc, int hw_rix) {
 
 	int mac80211_rix;
 
-	if(sc->curband->band == IEEE80211_BAND_2GHZ){
+	if (sc->curband->band == IEEE80211_BAND_2GHZ) {
 		/* We setup a g ratetable for both b/g modes */
-		mac80211_rix = hw_rix - sc->b_rates - sc->a_rates - sc->xr_rates;
+		mac80211_rix =
+			hw_rix - sc->b_rates - sc->a_rates - sc->xr_rates;
 	} else {
 		mac80211_rix = hw_rix - sc->xr_rates;
 	}
 
 	/* Something went wrong, fallback to basic rate for this band */
-	if((mac80211_rix >= sc->curband->n_bitrates) || 
-	(mac80211_rix <= 0 )){
+	if ((mac80211_rix >= sc->curband->n_bitrates) ||
+		(mac80211_rix <= 0))
 		mac80211_rix = 1;
-	}
 
 	return mac80211_rix;
 }
@@ -1303,7 +1318,8 @@ ath5k_txbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf,
 
 	ret = ah->ah_setup_tx_desc(ah, ds, pktlen,
 		ieee80211_get_hdrlen_from_skb(skb), AR5K_PKT_TYPE_NORMAL,
-		(sc->power_level * 2), ctl->tx_rate->hw_value, ctl->retry_limit, keyidx, 0, flags, 0, 0);
+		(sc->power_level * 2), ctl->tx_rate->hw_value,
+		ctl->retry_limit, keyidx, 0, flags, 0, 0);
 	if (ret)
 		goto err_unmap;
 
@@ -1844,7 +1860,8 @@ accept:
 		rxs.signal = ds->ds_rxstat.rs_rssi * 100 / 64;
 
 		rxs.antenna = ds->ds_rxstat.rs_antenna;
-		rxs.rate_idx = ath5k_hw_to_driver_rix(sc,ds->ds_rxstat.rs_rate);
+		rxs.rate_idx = ath5k_hw_to_driver_rix(sc,
+			ds->ds_rxstat.rs_rate);
 		rxs.flag |= ath5k_rx_decrypted(sc, ds, skb);
 
 		ath5k_debug_dump_skb(sc, skb, "RX  ", 0);
@@ -1991,8 +2008,9 @@ ath5k_beacon_setup(struct ath5k_softc *sc, struct ath5k_buf *bf,
 	ds->ds_data = bf->skbaddr;
 	ret = ah->ah_setup_tx_desc(ah, ds, skb->len + FCS_LEN,
 			ieee80211_get_hdrlen_from_skb(skb),
-			AR5K_PKT_TYPE_BEACON, (sc->power_level * 2), ctl->tx_rate->hw_value, 1,
-			AR5K_TXKEYIX_INVALID, antenna, flags, 0, 0);
+			AR5K_PKT_TYPE_BEACON, (sc->power_level * 2),
+			ctl->tx_rate->hw_value, 1, AR5K_TXKEYIX_INVALID,
+			antenna, flags, 0, 0);
 	if (ret)
 		goto err_unmap;
 
@@ -2480,7 +2498,8 @@ ath5k_calibrate(unsigned long data)
 	struct ath5k_hw *ah = sc->ah;
 
 	ATH5K_DBG(sc, ATH5K_DEBUG_CALIBRATE, "channel %u/%x\n",
-		ieee80211_frequency_to_channel(sc->curchan->center_freq), sc->curchan->hw_value);
+		ieee80211_frequency_to_channel(sc->curchan->center_freq),
+		sc->curchan->hw_value);
 
 	if (ath5k_hw_get_rf_gain(ah) == AR5K_RFGAIN_NEED_CHANGE) {
 		/*
@@ -2492,7 +2511,8 @@ ath5k_calibrate(unsigned long data)
 	}
 	if (ath5k_hw_phy_calibrate(ah, sc->curchan))
 		ATH5K_ERR(sc, "calibration of channel %u failed\n",
-				ieee80211_frequency_to_channel(sc->curchan->center_freq));
+			ieee80211_frequency_to_channel(
+				sc->curchan->center_freq));
 
 	mod_timer(&sc->calib_tim, round_jiffies(jiffies +
 			msecs_to_jiffies(ath5k_calinterval * 1000)));
diff --git a/drivers/net/wireless/ath5k/initvals.c b/drivers/net/wireless/ath5k/initvals.c
index a255d8b..cfcb1fe 100644
--- a/drivers/net/wireless/ath5k/initvals.c
+++ b/drivers/net/wireless/ath5k/initvals.c
@@ -1317,8 +1317,10 @@ int ath5k_hw_write_initvals(struct ath5k_hw *ah, u8 mode, bool change_channel)
 	/* For AR5211 */
 	} else if (ah->ah_version == AR5K_AR5211) {
 
-		if(mode > 2){ /* AR5K_MODE_11B */
-			ATH5K_ERR(ah->ah_sc,"unsupported channel mode: %d\n", mode);
+		/* AR5K_MODE_11B */
+		if (mode > 2) {
+			ATH5K_ERR(ah->ah_sc,
+				"unsupported channel mode: %d\n", mode);
 			return -EINVAL;
 		}
 
diff --git a/drivers/net/wireless/ath5k/phy.c b/drivers/net/wireless/ath5k/phy.c
index 8b576b3..221a18c 100644
--- a/drivers/net/wireless/ath5k/phy.c
+++ b/drivers/net/wireless/ath5k/phy.c
@@ -1124,7 +1124,7 @@ static int ath5k_hw_rf5112_rfregs(struct ath5k_hw *ah,
 	rf = ah->ah_rf_banks;
 
 	if (ah->ah_radio_5ghz_revision >= AR5K_SREV_RAD_2112A
-		&& !test_bit(AR5K_MODE_11A, ah->ah_capabilities.cap_mode)){
+		&& !test_bit(AR5K_MODE_11A, ah->ah_capabilities.cap_mode)) {
 		rf_ini = rfregs_2112a;
 		rf_size = ARRAY_SIZE(rfregs_5112a);
 		if (mode < 2) {
@@ -1445,9 +1445,10 @@ static u32 ath5k_hw_rf5110_chan2athchan(struct ieee80211_channel *channel)
 	 * newer chipsets like the AR5212A who have a completely
 	 * different RF/PHY part.
 	 */
-	athchan = (ath5k_hw_bitswap((ieee80211_frequency_to_channel(channel->center_freq) - 24) / 2, 5) << 1) |
-		(1 << 6) | 0x1;
-
+	athchan = (ath5k_hw_bitswap(
+			(ieee80211_frequency_to_channel(
+				channel->center_freq) - 24) / 2, 5)
+				<< 1) | (1 << 6) | 0x1;
 	return athchan;
 }
 
@@ -1506,7 +1507,8 @@ static int ath5k_hw_rf5111_channel(struct ath5k_hw *ah,
 		struct ieee80211_channel *channel)
 {
 	struct ath5k_athchan_2ghz ath5k_channel_2ghz;
-	unsigned int ath5k_channel = ieee80211_frequency_to_channel(channel->center_freq);
+	unsigned int ath5k_channel =
+		ieee80211_frequency_to_channel(channel->center_freq);
 	u32 data0, data1, clock;
 	int ret;
 
@@ -1517,8 +1519,9 @@ static int ath5k_hw_rf5111_channel(struct ath5k_hw *ah,
 
 	if (channel->hw_value & CHANNEL_2GHZ) {
 		/* Map 2GHz channel to 5GHz Atheros channel ID */
-		ret = ath5k_hw_rf5111_chan2athchan(ieee80211_frequency_to_channel(channel->center_freq),
-				&ath5k_channel_2ghz);
+		ret = ath5k_hw_rf5111_chan2athchan(
+			ieee80211_frequency_to_channel(channel->center_freq),
+			&ath5k_channel_2ghz);
 		if (ret)
 			return ret;
 
@@ -1599,17 +1602,36 @@ static int ath5k_hw_rf5112_channel(struct ath5k_hw *ah,
 int ath5k_hw_channel(struct ath5k_hw *ah, struct ieee80211_channel *channel)
 {
 	int ret;
-
 	/*
 	 * Check bounds supported by the PHY
 	 * (don't care about regulation restrictions at this point)
 	 */
-	if ((channel->center_freq < ah->ah_capabilities.cap_range.range_2ghz_min ||
-	    channel->center_freq > ah->ah_capabilities.cap_range.range_2ghz_max) &&
-	    (channel->center_freq < ah->ah_capabilities.cap_range.range_5ghz_min ||
-	    channel->center_freq > ah->ah_capabilities.cap_range.range_5ghz_max)) {
+	switch (channel->band) {
+	case IEEE80211_BAND_2GHZ:
+		if (!ath5k_channel_ok(ah, channel->center_freq, CHANNEL_2GHZ)) {
+			ATH5K_ERR(ah->ah_sc,
+				"channel frequency (%u MHz) out of supported "
+				"2GHz band range (%u - %u MHz)\n",
+				channel->center_freq,
+				ah->ah_capabilities.cap_range.range_2ghz_min,
+				ah->ah_capabilities.cap_range.range_2ghz_max);
+			return -EINVAL;
+		}
+		break;
+	case IEEE80211_BAND_5GHZ:
+		if (!ath5k_channel_ok(ah, channel->center_freq, CHANNEL_5GHZ)) {
+			ATH5K_ERR(ah->ah_sc,
+				"channel frequency (%u MHz) out of supported "
+				"5GHz band range (%u - %u MHz)\n",
+				channel->center_freq,
+				ah->ah_capabilities.cap_range.range_5ghz_min,
+				ah->ah_capabilities.cap_range.range_5ghz_max);
+			return -EINVAL;
+		}
+		break;
+	default:
 		ATH5K_ERR(ah->ah_sc,
-			"channel out of supported range (%u MHz)\n",
+			"channel frequency (%u MHz) not in a supported band\n",
 			channel->center_freq);
 		return -EINVAL;
 	}
-- 
1.5.2.5

-
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux