diff options
author | Christian Lamparter <chunkeey@googlemail.com> | 2010-09-28 23:00:59 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-10-05 13:35:21 -0400 |
commit | 5c895691944862e782c285a871f5d3466797b4ef (patch) | |
tree | 7d49f76b23d23253b2c54a1794beb0676c66c615 /drivers/net/wireless/ath/carl9170/fw.c | |
parent | 85416a4fa193754ef36e12b20bb02fe661cb7f17 (diff) | |
download | op-kernel-dev-5c895691944862e782c285a871f5d3466797b4ef.zip op-kernel-dev-5c895691944862e782c285a871f5d3466797b4ef.tar.gz |
carl9170: support firmware-based rx filter
The hardware rx-filter was essentially disabled, because
of a serve, yet unidentifiable problem with iwlagn.
Due to these circumstances the driver and mac80211 were
left with the job of filtering.
This is very unfortunate and has proven to be expensive
in terms of latency, memory and load.
Therefore the new 1.8.8.3 firmware introduces a flexible
filtering infrastructure which allows the driver to
offload some of the checks (FCS & PLCP crc check,
RA match, control frame filter, etc...) whenever possible.
Note:
This patch also includes all changes to the
shared headers files since the inclusion.
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/carl9170/fw.c')
-rw-r--r-- | drivers/net/wireless/ath/carl9170/fw.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/carl9170/fw.c b/drivers/net/wireless/ath/carl9170/fw.c index 3661546..ae6c006 100644 --- a/drivers/net/wireless/ath/carl9170/fw.c +++ b/drivers/net/wireless/ath/carl9170/fw.c @@ -257,6 +257,13 @@ static int carl9170_fw(struct ar9170 *ar, const __u8 *data, size_t len) if (SUPP(CARL9170FW_USB_UP_STREAM)) ar->fw.rx_stream = true; + if (SUPP(CARL9170FW_RX_FILTER)) { + ar->fw.rx_filter = true; + ar->rx_filter_caps = FIF_FCSFAIL | FIF_PLCPFAIL | + FIF_CONTROL | FIF_PSPOLL | FIF_OTHER_BSS | + FIF_PROMISC_IN_BSS; + } + ar->fw.vif_num = otus_desc->vif_num; ar->fw.cmd_bufs = otus_desc->cmd_bufs; ar->fw.address = le32_to_cpu(otus_desc->fw_address); |