summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2013-06-05 00:42:04 +0000
committeradrian <adrian@FreeBSD.org>2013-06-05 00:42:04 +0000
commitf482ea2896a0bdf2e13b3f91f41daa618b6a8b39 (patch)
tree58b508de530722e36924c58a7e13f34575e85006 /sys/dev
parentc9d8be05cc0c911ebdddb6ca2f39204be21834ea (diff)
downloadFreeBSD-src-f482ea2896a0bdf2e13b3f91f41daa618b6a8b39.zip
FreeBSD-src-f482ea2896a0bdf2e13b3f91f41daa618b6a8b39.tar.gz
Add a new capability flag to announce that the chip implements LNA mixing
for the RX path. This is different to the div comb HAL flag, that says it actually can use this for RX diversity (the "slow" diversity path implemented but disabled in the AR9285 HAL code.) Tested: * AR9285, STA operation
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ath/ath_hal/ah.c2
-rw-r--r--sys/dev/ath/ath_hal/ah.h1
-rw-r--r--sys/dev/ath/ath_hal/ah_internal.h3
-rw-r--r--sys/dev/ath/ath_hal/ar9002/ar9285_attach.c1
4 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/ath/ath_hal/ah.c b/sys/dev/ath/ath_hal/ah.c
index c7840c6..7fd64d1 100644
--- a/sys/dev/ath/ath_hal/ah.c
+++ b/sys/dev/ath/ath_hal/ah.c
@@ -784,6 +784,8 @@ ath_hal_getcapability(struct ath_hal *ah, HAL_CAPABILITY_TYPE type,
case HAL_CAP_MFP: /* Management frame protection setting */
*result = pCap->halMfpSupport;
return HAL_OK;
+ case HAL_CAP_RX_LNA_MIXING: /* Hardware uses an RX LNA mixer to map 2 antennas to a 1 stream receiver */
+ return pCap->halRxUsingLnaMixing ? HAL_OK : HAL_ENOTSUPP;
default:
return HAL_EINVAL;
}
diff --git a/sys/dev/ath/ath_hal/ah.h b/sys/dev/ath/ath_hal/ah.h
index 842b658..f4798a0 100644
--- a/sys/dev/ath/ath_hal/ah.h
+++ b/sys/dev/ath/ath_hal/ah.h
@@ -198,6 +198,7 @@ typedef enum {
HAL_CAP_BB_READ_WAR = 244, /* baseband read WAR */
HAL_CAP_SERIALISE_WAR = 245, /* serialise register access on PCI */
HAL_CAP_ENFORCE_TXOP = 246, /* Enforce TXOP if supported */
+ HAL_CAP_RX_LNA_MIXING = 247, /* RX hardware uses LNA mixing */
} HAL_CAPABILITY_TYPE;
/*
diff --git a/sys/dev/ath/ath_hal/ah_internal.h b/sys/dev/ath/ath_hal/ah_internal.h
index 74d43c7..f92df9d 100644
--- a/sys/dev/ath/ath_hal/ah_internal.h
+++ b/sys/dev/ath/ath_hal/ah_internal.h
@@ -279,7 +279,8 @@ typedef struct {
halAntDivCombSupport : 1,
halAntDivCombSupportOrg : 1,
halRadioRetentionSupport : 1,
- halSpectralScanSupport : 1;
+ halSpectralScanSupport : 1,
+ halRxUsingLnaMixing : 1;
uint32_t halWirelessModes;
uint16_t halTotalQueues;
diff --git a/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c b/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c
index 5f6a2a9..67a15b8 100644
--- a/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c
+++ b/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c
@@ -525,6 +525,7 @@ ar9285FillCapabilityInfo(struct ath_hal *ah)
pCap->halMbssidAggrSupport = AH_TRUE;
pCap->hal4AddrAggrSupport = AH_TRUE;
pCap->halSpectralScanSupport = AH_TRUE;
+ pCap->halRxUsingLnaMixing = AH_TRUE;
if (AR_SREV_KITE_12_OR_LATER(ah))
pCap->halPSPollBroken = AH_FALSE;
OpenPOWER on IntegriCloud