aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/p54
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@web.de>2008-12-30 07:48:29 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-01-29 15:59:44 -0500
commit51eed9923d98477e7f7473edd60d876d1cecc8c5 (patch)
treeb46faa7c3e8c5a6fadca7bf30e059d13e7563ae8 /drivers/net/wireless/p54
parent78eb7484fadddd2860d4503b3c8c1710c1bfa1b3 (diff)
p54: implement FIF_OTHER_BSS filter setting
According to STMicroelectronics' LMAC documentation, the P54_FILTER_TYPE_TRANSPARENT flag "configures the receive frame filter to pass all frames without regard to type and address matching." Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/p54')
-rw-r--r--drivers/net/wireless/p54/p54common.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
index 6e9f73745b6..d85a6bafd79 100644
--- a/drivers/net/wireless/p54/p54common.c
+++ b/drivers/net/wireless/p54/p54common.c
@@ -1579,7 +1579,8 @@ static int p54_setup_mac(struct ieee80211_hw *dev)
1579 * "TRANSPARENT and PROMISCUOUS are mutually exclusive" 1579 * "TRANSPARENT and PROMISCUOUS are mutually exclusive"
1580 * STSW45X0C LMAC API - page 12 1580 * STSW45X0C LMAC API - page 12
1581 */ 1581 */
1582 if ((priv->filter_flags & FIF_PROMISC_IN_BSS) && 1582 if (((priv->filter_flags & FIF_PROMISC_IN_BSS) ||
1583 (priv->filter_flags & FIF_OTHER_BSS)) &&
1583 (mode != P54_FILTER_TYPE_PROMISCUOUS)) 1584 (mode != P54_FILTER_TYPE_PROMISCUOUS))
1584 mode |= P54_FILTER_TYPE_TRANSPARENT; 1585 mode |= P54_FILTER_TYPE_TRANSPARENT;
1585 } else 1586 } else
@@ -2007,12 +2008,13 @@ static void p54_configure_filter(struct ieee80211_hw *dev,
2007 struct p54_common *priv = dev->priv; 2008 struct p54_common *priv = dev->priv;
2008 2009
2009 *total_flags &= FIF_PROMISC_IN_BSS | 2010 *total_flags &= FIF_PROMISC_IN_BSS |
2011 FIF_OTHER_BSS |
2010 (*total_flags & FIF_PROMISC_IN_BSS) ? 2012 (*total_flags & FIF_PROMISC_IN_BSS) ?
2011 FIF_FCSFAIL : 0; 2013 FIF_FCSFAIL : 0;
2012 2014
2013 priv->filter_flags = *total_flags; 2015 priv->filter_flags = *total_flags;
2014 2016
2015 if (changed_flags & FIF_PROMISC_IN_BSS) 2017 if (changed_flags & (FIF_PROMISC_IN_BSS | FIF_OTHER_BSS))
2016 p54_setup_mac(dev); 2018 p54_setup_mac(dev);
2017} 2019}
2018 2020