Hi,
I would like to know the exact meaning of "chains" member of struct
sta_info. mac80211 sta_info.h states :
"@chains: chains ever used for RX from this station"
In ath9k, it is incremented when testing each value of the chain_signal
array (code here is ath9k common.c) :
if (rssi != ATH9K_RSSI_BAD) {
rxs->chains |= BIT(j);
rxs->chain_signal[j] = ah->noise + rssi;
}
I did this in ath10k (htt-rx.c l.874) on the model of a patch published
on the mailing list :
static void ath10k_htt_rx_h_signal(struct ath10k *ar,
struct ieee80211_rx_status *status,
struct htt_rx_desc *rxd)
{
u8 signal_per_chain;
int i;
for (i = 0; i< IEEE80211_MAX_CHAINS; i++)
{
signal_per_chain = rxd->ppdu_start.rssi_chains[i].pri20_mhz;
if (signal_per_chain != ATH10K_RSSI_BAD) // = 0x80
{
status->chains |= BIT(i);
status->chain_signal[i] = ATH10K_DEFAULT_NOISE_FLOOR +
signal_per_chain;
}
}
/* FIXME: Get real NF */
status->signal = ATH10K_DEFAULT_NOISE_FLOOR +
rxd->ppdu_start.rssi_comb;
status->flag &= ~RX_FLAG_NO_SIGNAL_VAL;
}
But when I configure the number of antennas (iw phy0 set antennas - iw
3.15) lower than the maximum of antennas, chains doesn't change, i.e.
there is still a correct value in chain_signal of the disabled antennas
(the value is not updated though).
I don't understand how a signal value can be received from a STA if the
antennas configuration doesn't allow it.
If it is not a bug, should i check rx_chain_mask in the driver to verify
the antennas configuration instead of chains ?
Thanks for your help
Simon