mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
p54: add more rx filters
This patch adds new filters settings to make the card more useful in monitor mode. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
a0db663ff1
commit
78d57eb2b6
@ -80,6 +80,7 @@ struct p54_common {
|
||||
struct pda_channel_output_limit *output_limit;
|
||||
unsigned int output_limit_len;
|
||||
struct pda_pa_curve_data *curve_data;
|
||||
unsigned int filter_flags;
|
||||
u16 rxhw;
|
||||
u8 version;
|
||||
u8 rx_antenna;
|
||||
|
@ -433,6 +433,13 @@ static int p54_rx_data(struct ieee80211_hw *dev, struct sk_buff *skb)
|
||||
size_t header_len = sizeof(*hdr);
|
||||
u32 tsf32;
|
||||
|
||||
if (!(hdr->magic & cpu_to_le16(0x0001))) {
|
||||
if (priv->filter_flags & FIF_FCSFAIL)
|
||||
rx_status.flag |= RX_FLAG_FAILED_FCS_CRC;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
rx_status.signal = hdr->rssi;
|
||||
/* XX correct? */
|
||||
rx_status.qual = (100 * hdr->rssi) / 127;
|
||||
@ -1127,13 +1134,26 @@ static void p54_configure_filter(struct ieee80211_hw *dev,
|
||||
{
|
||||
struct p54_common *priv = dev->priv;
|
||||
|
||||
*total_flags &= FIF_BCN_PRBRESP_PROMISC;
|
||||
*total_flags &= FIF_BCN_PRBRESP_PROMISC |
|
||||
FIF_PROMISC_IN_BSS |
|
||||
FIF_FCSFAIL;
|
||||
|
||||
priv->filter_flags = *total_flags;
|
||||
|
||||
if (changed_flags & FIF_BCN_PRBRESP_PROMISC) {
|
||||
if (*total_flags & FIF_BCN_PRBRESP_PROMISC)
|
||||
p54_set_filter(dev, 0, NULL);
|
||||
p54_set_filter(dev, priv->filter_type, NULL);
|
||||
else
|
||||
p54_set_filter(dev, 0, priv->bssid);
|
||||
p54_set_filter(dev, priv->filter_type, priv->bssid);
|
||||
}
|
||||
|
||||
if (changed_flags & FIF_PROMISC_IN_BSS) {
|
||||
if (*total_flags & FIF_PROMISC_IN_BSS)
|
||||
p54_set_filter(dev, priv->filter_type |
|
||||
cpu_to_le16(0x8), NULL);
|
||||
else
|
||||
p54_set_filter(dev, priv->filter_type &
|
||||
~cpu_to_le16(0x8), priv->bssid);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user