https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=250482
Bug ID: 250482 Summary: Missing function in multiple wifi device drivers causing error "need multicast status callback" Product: Base System Version: 12.1-RELEASE Hardware: amd64 OS: Any Status: New Severity: Affects Many People Priority: --- Component: wireless Assignee: wirel...@freebsd.org Reporter: dr2867.busin...@pacbell.net Also affects i386 as well. I found the cause of the problem with various wireless NICs printing an error that says "Need multicast update callback." The problem is driver specific and multiple drivers have this issue. The cause is that the affected device drivers are not updating the function pointer in the ieee80211com struct in the file /usr/src/sys/net80211/ieee80211.c. The wlan driver initializes the structure with default values in ieee80211_ifattach. Then the device driver updates the function pointers to point to routines within itself. As it turns out, the drivers that have this problem is missing the callback function. The drivers that seem have this issue are as follows: an bwi bwn ipw iwi malo mwl ral <--- Confirmed (I'm using this one.) wi wpi Interestingly enough, the same issue exists with the same drives with the promiscuous mode callback as well. There is a third callback only known as chw that affects even more drivers. Here's the grep that I did on my system: wildfire:/usr/src/sys 114 ### ->grep -Rn ic_update_mcast * dev/iwm/if_iwm.c:6077: ic->ic_update_mcast = iwm_update_mcast; dev/wi/if_wi.c:435: ic->ic_update_mcast = wi_update_mcast; dev/wpi/if_wpi.c:514: ic->ic_update_mcast = wpi_update_mcast; dev/usb/wlan/if_rsu.c:596: ic->ic_update_mcast = rsu_update_mcast; dev/usb/wlan/if_upgt.c:354: ic->ic_update_mcast = upgt_update_mcast; dev/usb/wlan/if_zyd.c:401: ic->ic_update_mcast = zyd_update_mcast; dev/usb/wlan/if_urtw.c:902: ic->ic_update_mcast = urtw_update_mcast; dev/usb/wlan/if_run.c:832: ic->ic_update_mcast = run_update_mcast; dev/usb/wlan/if_uath.c:451: ic->ic_update_mcast = uath_update_mcast; dev/usb/wlan/if_rum.c:573: ic->ic_update_mcast = rum_update_mcast; dev/mwl/if_mwl.c:473: ic->ic_update_mcast = mwl_update_mcast; dev/if_ndis/if_ndis.c:929: ic->ic_update_mcast = ndis_update_mcast; dev/iwn/if_iwn.c:672: ic->ic_update_mcast = iwn_update_mcast; dev/ath/if_ath.c:1304: ic->ic_update_mcast = ath_update_mcast; dev/rtwn/if_rtwn.c:296: ic->ic_update_mcast = rtwn_update_mcast; dev/wtap/if_wtap.c:662: ic->ic_update_mcast = wtap_update_mcast; dev/otus/if_otus.c:759: ic->ic_update_mcast = otus_update_mcast; net80211/ieee80211_ddb.c:636: DB_PRINTSYM("\t", "ic_update_mcast", ic->ic_update_mcast); net80211/ieee80211_var.h:303: void (*ic_update_mcast)(struct ieee80211com *); net80211/ieee80211_proto.c:1373: ic->ic_update_mcast(ic); net80211/ieee80211.c:349: ic->ic_update_mcast = null_update_mcast; wildfire:/usr/src/sys 115 ### ->grep -Rn ic_update_promisc * dev/ral/rt2560.c:293: ic->ic_update_promisc = rt2560_update_promisc; dev/ral/rt2860.c:339: ic->ic_update_promisc = rt2860_update_promisc; dev/ral/rt2661.c:300: ic->ic_update_promisc = rt2661_update_promisc; dev/bwn/if_bwn.c:817: ic->ic_update_promisc = bwn_update_promisc; dev/wi/if_wi.c:436: ic->ic_update_promisc = wi_update_promisc; dev/wpi/if_wpi.c:513: ic->ic_update_promisc = wpi_update_promisc; dev/usb/wlan/if_rsu.c:595: ic->ic_update_promisc = rsu_update_promisc; dev/usb/wlan/if_ural.c:485: ic->ic_update_promisc = ural_update_promisc; dev/usb/wlan/if_zyd.c:402: ic->ic_update_promisc = zyd_update_mcast; dev/usb/wlan/if_urtw.c:901: ic->ic_update_promisc = urtw_update_promisc; dev/usb/wlan/if_run.c:835: ic->ic_update_promisc = run_update_promisc; dev/usb/wlan/if_uath.c:452: ic->ic_update_promisc = uath_update_promisc; dev/usb/wlan/if_rum.c:561: ic->ic_update_promisc = rum_update_promisc; dev/mwl/if_mwl.c:474: ic->ic_update_promisc = mwl_update_promisc; dev/if_ndis/if_ndis.c:930: ic->ic_update_promisc = ndis_update_promisc; dev/iwn/if_iwn.c:671: ic->ic_update_promisc = iwn_update_promisc; dev/ath/if_ath.c:1305: ic->ic_update_promisc = ath_update_promisc; dev/rtwn/if_rtwn.c:295: ic->ic_update_promisc = rtwn_update_promisc; dev/wtap/if_wtap.c:663: ic->ic_update_promisc = wtap_update_promisc; dev/otus/if_otus.c:760: ic->ic_update_promisc = otus_update_mcast; net80211/ieee80211_ddb.c:637: DB_PRINTSYM("\t", "ic_update_promisc", ic->ic_update_promisc); net80211/ieee80211_var.h:305: void (*ic_update_promisc)(struct ieee80211com *); net80211/ieee80211_proto.c:1381: ic->ic_update_promisc(ic); net80211/ieee80211.c:350: ic->ic_update_promisc = null_update_promisc; wildfire:/usr/src/sys 116 ### ->grep -Rn ic_update_chw * dev/usb/wlan/if_rsu.c:601: ic->ic_update_chw = rsu_update_chw; dev/ath/if_ath.c:1329: ic->ic_update_chw = ath_update_chw; dev/rtwn/if_rtwn.c:287: ic->ic_update_chw = rtwn_update_chw; dev/otus/if_otus.c:763: ic->ic_update_chw = otus_update_chw; net80211/ieee80211_var.h:371: void (*ic_update_chw)(struct ieee80211com *); net80211/ieee80211_proto.c:1401: ic->ic_update_chw(ic); net80211/ieee80211.c:351: ic->ic_update_chw = null_update_chw; wildfire:/usr/src/sys 117 ### -> I don't know what the affect of not having the various callback functions are, or even if they are required for certain drivers. What I do know is that this is annoying and it messes up the console display (I just use a syscons console, no X.) when I'm using vi or something. This bug is similar to bug #170573 -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ freebsd-wireless@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-wireless To unsubscribe, send any mail to "freebsd-wireless-unsubscr...@freebsd.org"