For now, this method is called only in two cases:
- when the first vap is started (<drv>_init() is called here), or
- when the last vap is stopped (<drv>_stop() will be called in case when it was not called previously).
For other cases (IFF_PROMISC/IFF_ALLMULTI flags change, another vap addition) it's not called - so, anything other than <drv>_init()/<drv>_stop() is considered as dead code (and moved into appropriate places).
upgt(4), ural(4), urtw(4), zyd(4) - just drop any code, related to multicast packet filter/promiscuous mode setting update (supports only one vap at a time, will be called via appropriate callbacks).
ral(4), run(4), wi(4) - if needed, state will be updated via ieee80211_promisc() anyway.
ath(4), mwl(4), bwn(4) - move code to <drv>_vap_create()
otus(4) - call ieee80211_stop() on error.
wi(4) - note about hostap vs promiscuous mode incompatibility was moved to wi_update_promisc()
bwn(4) - previous version contains recursive locking + manpage says, that there is no multi-vap support (so, this code may be unneeded at all)