Sun, 13 Aug 2017 04:09:45 +0300 було написано Farhan Khan <>:

Sounds like rtwn_init() fails somewhere - I would try to 'ifdef' out
various routines from the end of it (e.g., everything but rtwn_power_on(),
then rtwn_load_firmware(), rtwn_mac_init() etc.) to see where is the problem.

P.S. One thing that can be done without recompilation - try to move the
firmware away and load the driver without it (it should start normally,
rtl8188e* does not use it currently).

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.

Some clues:

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.

Thank you,

Farhan Khan
PGP Fingerprint: 782F 342B 5B08 0D2F F4E8 82C3 FFA1 CAE1 6536 51CA

On Mon, Aug 7, 2017 at 7:15 PM, Adrian Chadd <> 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 <> 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
> 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
> _______________________________________________
> mailing list
> To unsubscribe, send any mail to "freebsd-wireless-unsubscribe@"

_______________________________________________ mailing list
To unsubscribe, send any mail to ""
_______________________________________________ mailing list
To unsubscribe, send any mail to ""

Reply via email to