Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Oct 2020 09:11:30 +0000
From:      bugzilla-noreply@freebsd.org
To:        wireless@FreeBSD.org
Subject:   [Bug 250482] Missing function in multiple wifi device drivers causing error "need multicast status callback"
Message-ID:  <bug-250482-21060@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D250482

            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: wireless@FreeBSD.org
          Reporter: dr2867.business@pacbell.net

Also affects i386 as well.

I found the cause of the problem with various wireless NICs printing an err=
or
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 tu=
rns
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 =3D iwm_update_mcast;
dev/wi/if_wi.c:435:     ic->ic_update_mcast =3D wi_update_mcast;
dev/wpi/if_wpi.c:514:   ic->ic_update_mcast =3D wpi_update_mcast;
dev/usb/wlan/if_rsu.c:596:      ic->ic_update_mcast =3D rsu_update_mcast;
dev/usb/wlan/if_upgt.c:354:     ic->ic_update_mcast =3D upgt_update_mcast;
dev/usb/wlan/if_zyd.c:401:      ic->ic_update_mcast =3D zyd_update_mcast;
dev/usb/wlan/if_urtw.c:902:     ic->ic_update_mcast =3D urtw_update_mcast;
dev/usb/wlan/if_run.c:832:      ic->ic_update_mcast =3D run_update_mcast;
dev/usb/wlan/if_uath.c:451:     ic->ic_update_mcast =3D uath_update_mcast;
dev/usb/wlan/if_rum.c:573:      ic->ic_update_mcast =3D rum_update_mcast;
dev/mwl/if_mwl.c:473:   ic->ic_update_mcast =3D mwl_update_mcast;
dev/if_ndis/if_ndis.c:929:      ic->ic_update_mcast =3D ndis_update_mcast;
dev/iwn/if_iwn.c:672:   ic->ic_update_mcast =3D iwn_update_mcast;
dev/ath/if_ath.c:1304:  ic->ic_update_mcast =3D ath_update_mcast;
dev/rtwn/if_rtwn.c:296: ic->ic_update_mcast =3D rtwn_update_mcast;
dev/wtap/if_wtap.c:662: ic->ic_update_mcast =3D wtap_update_mcast;
dev/otus/if_otus.c:759: ic->ic_update_mcast =3D otus_update_mcast;
net80211/ieee80211_ddb.c:636:           DB_PRINTSYM("\t", "ic_update_mcast",
ic->ic_update_mcast);
net80211/ieee80211_var.h:303:   void=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20
(*ic_update_mcast)(struct ieee80211com *);
net80211/ieee80211_proto.c:1373:        ic->ic_update_mcast(ic);
net80211/ieee80211.c:349:       ic->ic_update_mcast =3D null_update_mcast;
wildfire:/usr/src/sys 115 ### ->grep -Rn ic_update_promisc *
dev/ral/rt2560.c:293:   ic->ic_update_promisc =3D rt2560_update_promisc;
dev/ral/rt2860.c:339:   ic->ic_update_promisc =3D rt2860_update_promisc;
dev/ral/rt2661.c:300:   ic->ic_update_promisc =3D rt2661_update_promisc;
dev/bwn/if_bwn.c:817:   ic->ic_update_promisc =3D bwn_update_promisc;
dev/wi/if_wi.c:436:     ic->ic_update_promisc =3D wi_update_promisc;
dev/wpi/if_wpi.c:513:   ic->ic_update_promisc =3D wpi_update_promisc;
dev/usb/wlan/if_rsu.c:595:      ic->ic_update_promisc =3D rsu_update_promis=
c;
dev/usb/wlan/if_ural.c:485:     ic->ic_update_promisc =3D ural_update_promi=
sc;
dev/usb/wlan/if_zyd.c:402:      ic->ic_update_promisc =3D zyd_update_mcast;
dev/usb/wlan/if_urtw.c:901:     ic->ic_update_promisc =3D urtw_update_promi=
sc;
dev/usb/wlan/if_run.c:835:      ic->ic_update_promisc =3D run_update_promis=
c;
dev/usb/wlan/if_uath.c:452:     ic->ic_update_promisc =3D uath_update_promi=
sc;
dev/usb/wlan/if_rum.c:561:      ic->ic_update_promisc =3D rum_update_promis=
c;
dev/mwl/if_mwl.c:474:   ic->ic_update_promisc =3D mwl_update_promisc;
dev/if_ndis/if_ndis.c:930:      ic->ic_update_promisc =3D ndis_update_promi=
sc;
dev/iwn/if_iwn.c:671:   ic->ic_update_promisc =3D iwn_update_promisc;
dev/ath/if_ath.c:1305:  ic->ic_update_promisc =3D ath_update_promisc;
dev/rtwn/if_rtwn.c:295: ic->ic_update_promisc =3D rtwn_update_promisc;
dev/wtap/if_wtap.c:663: ic->ic_update_promisc =3D wtap_update_promisc;
dev/otus/if_otus.c:760: ic->ic_update_promisc =3D otus_update_mcast;
net80211/ieee80211_ddb.c:637:           DB_PRINTSYM("\t", "ic_update_promis=
c",
ic->ic_update_promisc);
net80211/ieee80211_var.h:305:   void=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20
(*ic_update_promisc)(struct ieee80211com *);
net80211/ieee80211_proto.c:1381:        ic->ic_update_promisc(ic);
net80211/ieee80211.c:350:       ic->ic_update_promisc =3D null_update_promi=
sc;
wildfire:/usr/src/sys 116 ### ->grep -Rn ic_update_chw *
dev/usb/wlan/if_rsu.c:601:      ic->ic_update_chw =3D rsu_update_chw;
dev/ath/if_ath.c:1329:  ic->ic_update_chw =3D ath_update_chw;
dev/rtwn/if_rtwn.c:287: ic->ic_update_chw =3D rtwn_update_chw;
dev/otus/if_otus.c:763: ic->ic_update_chw =3D otus_update_chw;
net80211/ieee80211_var.h:371:   void                    (*ic_update_chw)(st=
ruct
ieee80211com *);
net80211/ieee80211_proto.c:1401:        ic->ic_update_chw(ic);
net80211/ieee80211.c:351:       ic->ic_update_chw =3D null_update_chw;
wildfire:/usr/src/sys 117 ### ->

I don't know what the affect of not having the various callback functions a=
re,
or even if they are required for certain drivers.  What I do know is that t=
his
is annoying and it messes up the console display (I just use a syscons cons=
ole,
no X.) when I'm using vi or something.

This bug is similar to bug #170573

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-250482-21060>