Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Aug 2017 21:09:45 -0400
From:      Farhan Khan <khanzf@gmail.com>
To:        Adrian Chadd <adrian.chadd@gmail.com>
Cc:        "freebsd-wireless@freebsd.org" <freebsd-wireless@freebsd.org>
Subject:   Re: Why is rtwn module detaching?
Message-ID:  <CAFd4kYDygU732QknZmDeq2BtEvd3Le2iX80uEh%2BZ0xQ7GrUWBA@mail.gmail.com>
In-Reply-To: <CAJ-VmonkJWk0yqBvmCwoWFHynPxRWo9SSg7wS64YD1gNs-Jpig@mail.gmail.com>
References:  <CAFd4kYAzzoOG4mrdnxZduFjBR5JsiPf=SGjqtkSqRCMz5qfiSQ@mail.gmail.com> <CAJ-VmonkJWk0yqBvmCwoWFHynPxRWo9SSg7wS64YD1gNs-Jpig@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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
ieee80211_stop_locked().

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 <adrian.chadd@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..
>
> -adrian
>
> On 5 August 2017 at 19:43, Farhan Khan <khanzf@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 1.1.1.1
> >
> > 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
> (from
> > 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
> from
> > 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
> > _______________________________________________
> > freebsd-wireless@freebsd.org mailing list
> > https://lists.freebsd.org/mailman/listinfo/freebsd-wireless
> > To unsubscribe, send any mail to "freebsd-wireless-unsubscribe@
> freebsd.org"
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFd4kYDygU732QknZmDeq2BtEvd3Le2iX80uEh%2BZ0xQ7GrUWBA>