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>
This commit is contained in:
Christian Lamparter 2008-12-30 13:48:29 +01:00 коммит произвёл John W. Linville
Родитель 78eb7484fa
Коммит 51eed9923d
1 изменённых файлов: 4 добавлений и 2 удалений

Просмотреть файл

@ -1579,7 +1579,8 @@ static int p54_setup_mac(struct ieee80211_hw *dev)
* "TRANSPARENT and PROMISCUOUS are mutually exclusive" * "TRANSPARENT and PROMISCUOUS are mutually exclusive"
* STSW45X0C LMAC API - page 12 * STSW45X0C LMAC API - page 12
*/ */
if ((priv->filter_flags & FIF_PROMISC_IN_BSS) && if (((priv->filter_flags & FIF_PROMISC_IN_BSS) ||
(priv->filter_flags & FIF_OTHER_BSS)) &&
(mode != P54_FILTER_TYPE_PROMISCUOUS)) (mode != P54_FILTER_TYPE_PROMISCUOUS))
mode |= P54_FILTER_TYPE_TRANSPARENT; mode |= P54_FILTER_TYPE_TRANSPARENT;
} else } else
@ -2007,12 +2008,13 @@ static void p54_configure_filter(struct ieee80211_hw *dev,
struct p54_common *priv = dev->priv; struct p54_common *priv = dev->priv;
*total_flags &= FIF_PROMISC_IN_BSS | *total_flags &= FIF_PROMISC_IN_BSS |
FIF_OTHER_BSS |
(*total_flags & FIF_PROMISC_IN_BSS) ? (*total_flags & FIF_PROMISC_IN_BSS) ?
FIF_FCSFAIL : 0; FIF_FCSFAIL : 0;
priv->filter_flags = *total_flags; priv->filter_flags = *total_flags;
if (changed_flags & FIF_PROMISC_IN_BSS) if (changed_flags & (FIF_PROMISC_IN_BSS | FIF_OTHER_BSS))
p54_setup_mac(dev); p54_setup_mac(dev);
} }