Search Linux Wireless

Re: [PATCH 1/4] ath5k: correct channel setting for 2.5 mhz spacing

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

 



On Thursday 08 April 2010 12:55:56 Bob Copeland wrote:
> These channels aren't selectable anyway, but our calculations
> for 2.5 mhz frequencies are incorrect.  The value is supposed to
> be:
> 
>   (frequency - reference) * (10/25)
> 
> i.e., divide by 2.5, but we were instead doing:
> 
>   (10 * frequency - reference) / 25.
> 
> Additionally, the check for (frequency % 5 == 2) had an extra
> subtraction that wasn't in madwifi HAL.
> 
> Signed-off-by: Bob Copeland <me@xxxxxxxxxxxxxxx>
> ---
>  drivers/net/wireless/ath/ath5k/phy.c |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath5k/phy.c
> b/drivers/net/wireless/ath/ath5k/phy.c index b83ca8a..81bdebd 100644
> --- a/drivers/net/wireless/ath/ath5k/phy.c
> +++ b/drivers/net/wireless/ath/ath5k/phy.c
> @@ -979,7 +979,7 @@ static int ath5k_hw_rf5112_channel(struct ath5k_hw *ah,
>  			return -EINVAL;
> 
>  		data0 = ath5k_hw_bitswap((data0 << 2) & 0xff, 8);
> -	} else if ((c - (c % 5)) != 2 || c > 5435) {
> +	} else if ((c % 5) != 2 || c > 5435) {
>  		if (!(c % 20) && c >= 5120) {
>  			data0 = ath5k_hw_bitswap(((c - 4800) / 20 << 2), 8);
>  			data2 = ath5k_hw_bitswap(3, 2);
> @@ -992,7 +992,7 @@ static int ath5k_hw_rf5112_channel(struct ath5k_hw *ah,
>  		} else
>  			return -EINVAL;
>  	} else {
> -		data0 = ath5k_hw_bitswap((10 * (c - 2) - 4800) / 25 + 1, 8);
> +		data0 = ath5k_hw_bitswap((10 * (c - 2 - 4800)) / 25 + 1, 8);
>  		data2 = ath5k_hw_bitswap(0, 2);
>  	}
> 
> @@ -1020,7 +1020,7 @@ static int ath5k_hw_rf2425_channel(struct ath5k_hw
> *ah, data0 = ath5k_hw_bitswap((c - 2272), 8);
>  		data2 = 0;
>  	/* ? 5GHz ? */
> -	} else if ((c - (c % 5)) != 2 || c > 5435) {
> +	} else if ((c % 5) != 2 || c > 5435) {
>  		if (!(c % 20) && c < 5120)
>  			data0 = ath5k_hw_bitswap(((c - 4800) / 20 << 2), 8);
>  		else if (!(c % 10))
> @@ -1031,7 +1031,7 @@ static int ath5k_hw_rf2425_channel(struct ath5k_hw
> *ah, return -EINVAL;
>  		data2 = ath5k_hw_bitswap(1, 2);
>  	} else {
> -		data0 = ath5k_hw_bitswap((10 * (c - 2) - 4800) / 25 + 1, 8);
> +		data0 = ath5k_hw_bitswap((10 * (c - 2 - 4800)) / 25 + 1, 8);
>  		data2 = ath5k_hw_bitswap(0, 2);
>  	}

for whatever it's worth :-)

Acked-by: Bruno Randolf <br1@xxxxxxxxxxx>
--
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