This extends the filter flags documentation to make it clear what clearing a flag really means. Signed-off-by: Michael Buesch <mb@xxxxxxxxx> Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> Index: wireless-2.6/include/net/mac80211.h =================================================================== --- wireless-2.6.orig/include/net/mac80211.h 2008-02-08 22:54:22.000000000 +0100 +++ wireless-2.6/include/net/mac80211.h 2008-02-12 20:07:19.000000000 +0100 @@ -790,14 +790,24 @@ static inline void SET_IEEE80211_PERM_AD * * If your device has no multicast address filters your driver will * need to check both the %FIF_ALLMULTI flag and the @mc_count * parameter to see whether multicast frames should be accepted * or dropped. * - * All unsupported flags in @total_flags must be cleared, i.e. you - * should clear all bits except those you honoured. + * All unsupported flags in @total_flags must be cleared. + * Hardware does not support a flag if it is incapable of _passing_ + * the frame to the stack. Otherwise the driver must ignore + * the flag, but not clear it. + * You must _only_ clear the flag (announce no support for the + * flag to mac80211) if you are not able to pass the packet type + * to the stack (so the hardware always filters it). + * So for example, you should clear @FIF_CONTROL, if your hardware + * always filters control frames. If your hardware always passes + * control frames to the kernel and is incapable of filtering them, + * you do _not_ clear the @FIF_CONTROL flag. + * This rule applies to all other FIF flags as well. */ /** * enum ieee80211_filter_flags - hardware filter flags * * These flags determine what the filter in hardware should be - 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