Michael Buesch <mb@xxxxxxxxx> writes: >> +#define AT76_SUPPORTED_FILTERS FIF_PROMISC_IN_BSS > > See my recent patch to zd1211rw: > [PATCH] zd1211rw: Fix beacon filter flags thinko > I think this thinko also applies here. > > A driver does not support a flag, if it can _not_ _provide_ > a specific frame. (so in case it always filters it) > Not the other way around. So if it always > provides a specific type of frames, it _does_ support the filter flag. Thanks for looking at this. I have to admit that I didn't undertstand the filter flags logic at that time, but I think I understand it now. I hope this is right: static void at76_op_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags, unsigned int *total_flags, int mc_count, struct dev_addr_list *mc_list) { struct at76_priv *priv = hw->priv; at76_dbg(DBG_MAC80211, "%s(): changed_flags=0x%08x " "total_flags=0x%08x mc_count=%d", __func__, changed_flags, *total_flags, mc_count); *total_flags &= FIF_PROMISC_IN_BSS; if (changed_flags & FIF_PROMISC_IN_BSS) { /* FIXME: access to priv->promisc should be protected with * priv->mtx, but it's impossible because this function * needs to be atomic */ priv->promisc = *total_flags & FIF_PROMISC_IN_BSS; queue_work(hw->workqueue, &priv->work_set_promisc); } } -- Kalle Valo -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html