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"

Reply via email to