Following up on this from earlier:
I am trying to extend the sys/dev/rtwn/rtl8188e driver to support PCI.
Linux calls this rtl8188ee.
Right now, my code loads, reads the ROM, and will create an interface with:
ifconfig wlan0 create wlandev rtwn0
But when I assign an IP address, it immediately detaches. I have not been
able to figure out why this is happening and I cannot continue developing
this driver, despite a few weeks of tracing the code.
I found that rtwn_parent() will trigger rtwn_stop() if ic->ic_nrunning is
less than 0. That value is incremented in ieee80211_start_locked() and
decremented in ieee80211_stop_locked().
I used stack_print(9), which show that ieee80211_stop_locked() is executed
at least 4 times, but the trace's originate with a device_detach() in the
first place. What is causing that in the first place?
So, why is my driver unloading?
Because ic->ic_nrunning is less than 0.
Why is ic->ic_nrunning less than 0? Because something is calling
I have no direction on what the issue may be and have been just searching
for an extended period now. Any assistance would be highly appreciated.
PGP Fingerprint: 782F 342B 5B08 0D2F F4E8 82C3 FFA1 CAE1 6536 51CA
On Mon, Aug 7, 2017 at 7:15 PM, Adrian Chadd <adrian.ch...@gmail.com> wrote:
> For reference, we chatted on IRC.
> I think it's the NIC disappearing because giving it an iP brings it
> link 'up' and something in the 'up' path is causing the firmware to
> crash and the NIC to disappear.
> which bus is it on btw? eg, you could try 'devctl rescan pcib3' if
> it's on pcib3..
> On 5 August 2017 at 19:43, Farhan Khan <kha...@gmail.com> wrote:
> > Hi all,
> > I am slowly struggling through writing my Wifi first driver, which is an
> > extension to the current rtwn driver. I have reached another hurdle that
> > I'm stuck on.
> > I bring up my wifi driver as follows:
> > # kldload rtwn && kldload rtwn_pci
> > # sudo ifconfig wlan0 create wlandev rtwn0
> > # sudo ifconfig wlan0 126.96.36.199
> > The third line causes the rtwn0 device to detach (and pci0 device, which
> > requires a reboot and is quite frustrating).
> > I traced through the code to find why it is detaching and found that in
> > rtwn_parent() (sys/dev/rtwn/if_rtwn.c), it checks the ic->ic_nrunning
> > struct ieee80211com). If that value is less than or equal to 0, it will
> > cause the rtwn driver to stop. This appears to be a common control
> > structure used by other drivers as well.
> > Unfortunately, I have not been able to determine where ic->ic_nrunning is
> > modified anywhere in the kernel. In fact, the only references I found
> > my searches was checking the ic_nrunning value, not setting it.
> > Does anyone know where this is being set? Without determining this, I
> > cannot why my driver is unloading. I suspect that I failed to set the
> > appropriate 802.11 values in my own code, causing the base 802.11 code to
> > mark it as "off" or malfunctioning but I am not certain.
> > Please advise.
> > Thank you,
> > --
> > Farhan Khan
> > PGP Fingerprint: 782F 342B 5B08 0D2F F4E8 82C3 FFA1 CAE1 6536 51CA
> > _______________________________________________
> > firstname.lastname@example.org mailing list
> > https://lists.freebsd.org/mailman/listinfo/freebsd-wireless
> > To unsubscribe, send any mail to "freebsd-wireless-unsubscribe@
email@example.com mailing list
To unsubscribe, send any mail to "freebsd-wireless-unsubscr...@freebsd.org"