2012.07.11. 19:59 keltezéssel, Felix Fietkau írta: > Many chips are not able to deal with non-consecutive rx antenna selections > and respond with calibration errors, reset errors, etc. > When an antenna is selected as a tx antenna, also flag it for rx to avoid > chip issues. > > Signed-off-by: Felix Fietkau <nbd@xxxxxxxxxxx> > --- > drivers/net/wireless/ath/ath9k/main.c | 19 ++++++++++++++++++- > 1 files changed, 18 insertions(+), 1 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c > index 248e5b2..49f293a 100644 > --- a/drivers/net/wireless/ath/ath9k/main.c > +++ b/drivers/net/wireless/ath/ath9k/main.c > @@ -1912,12 +1912,29 @@ static u32 fill_chainmask(u32 cap, u32 new) > return filled; > } > > +static bool validate_antenna_mask(struct ath_hw *ah, u32 val) > +{ > + switch (val & ah->caps.rx_chainmask) { > + case 0x1: > + case 0x3: > + case 0x7: > + return true; > + case 0x2: > + return (ah->caps.rx_chainmask == 1); This case statement seems superfluous. If 'rx_chainmask == 1' then 'val & rx_chainmask' never will be 0x2. > + default: > + return false; > + } Additionally, the function does not allows to set rx antenna to 0x2/0x3 for chips with antenna diversity capabilities. -Gabor -- 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