After my recent patch drivers can now tell the stack that a frame was damaged. That doesn't do much good, however, if the user cannot tell the stack to generate such frames. But we need to go level by level so first mac80211 needs to know about it. After some discussion and review of Daniel's document (thanks!) we came up with the following ideas: 1) Define new filter flags * FIF_PROMISC_IN_BSS (BSS filters still on, but otherwise promisc) * FIF_ALLMULTI (all multicast frames are allowed through) * FIF_BROADCAST (broadcast frames are allowed through) * FIF_FCSFAIL (frames with bad FCS are allowed through) * FIF_PLCPFAIL (frames with bad PLCP checksum are allowed through) * FIF_CONTROL (control frames are shown) * FIF_OTHER_BSS (frames from other BSSes are shown, subject to the other filters) [missing anything?] It should be permitted to silently 'upgrade', say if a driver can't support PROMISC_IN_BSS but only get all packets then it does that instead, but PROMISC_IN_BSS is still useful if possible. 2) Remove IEEE80211_HW_MONITOR_DURING_OPER, it becomes useless; same with soft monitor mode interface stuff 3) When a monitor interface is added, set FIF_OTHER_BSS and FIF_CONTROL; depending on the interface flags set FIF_PROMISC_IN_BSS, FIF_MCAST, FIF_BCAST. No longer tell drivers about monitor interfaces with add_interface/remove_interface, but rather call set_multicast_list() with changed flags when a monitor interface comes on. 4) Change the "int flags" argument to the set_multicast_list callback to "int *flags" so drivers can indicate whether they supported a flag or not by clearing all flags they did not honour. Additional advantage: drivers break and people will be forced to re-examine their code to use the new flags. 5) [FUTURE] Introduce cfg80211/nl80211 API to ask for bad FCS/bad PLCP on a monitor interface. johannes
Attachment:
signature.asc
Description: This is a digitally signed message part