On Sunday 09 March 2008 17:10:46 Kalle Valo wrote: > 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; So your driver can not pass control frames and beacons in normal operation to the stack? > > 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); > } > > } > > -- Greetings Michael. -- 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