Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Aug 2013 09:58:21 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Chenchong Qin <qinchenchong@gmail.com>
Cc:        "freebsd-wireless@freebsd.org" <freebsd-wireless@freebsd.org>
Subject:   Re: Chenchong's work on net80211_ratectl
Message-ID:  <CAJ-VmokU=ZXysjZfAJ-REZL7kwg-_Z-LeAKca7AefONW_O1E5A@mail.gmail.com>
In-Reply-To: <CAJ-VmokyXwkKLdsJw74bux7G5EJSRvFhugTcLR9BgXfw4ysYRg@mail.gmail.com>
References:  <CAFnsE3dYdPf5yGTFH683Q1Zh0mc-g%2B_YtCTraNNt28z2vBoSKw@mail.gmail.com> <CAJ-Vmom4sY7jcNwWmJkrDwfWjsok2fk8UEwTi5A=egj1JyerLw@mail.gmail.com> <CAFnsE3cyg=msBfQqqKUMmLABSL=j24VoMBwbBjxQ6b7Dyy7Mqg@mail.gmail.com> <CAJ-Vmo=k8NddAYyAJCkx4eOaA_8XsSxg6uKrdddx%2BgmeT%2BX9KA@mail.gmail.com> <CAFnsE3eaOyRcO3LXSi3L=jbzpyMv5Nt_jRGKt_mmA0WV-EV5vA@mail.gmail.com> <CAJ-VmokdxLhK5x6kO=jJzk-dv61EDK-ZgmndOimoyWWf76HiZA@mail.gmail.com> <CAJ-VmonMjR5iVTMVN9532d%2BPqOXWNUoZvxPtQir5h=yGxU-XdQ@mail.gmail.com> <CAFnsE3d9nG-X2b=z1srKfTtpxC3w5L%2B6Hg3TbOnAQrJN%2Bt19GA@mail.gmail.com> <CAJ-VmokF6hPtg9FoEdeJXLLaZRNhzd=nr_o6nHE%2BjYiQKTg3zQ@mail.gmail.com> <CAFnsE3eMwX-GiRzJt8jk4r9mxwSAQkcrDwk%2BnWVG7q6dabeA3A@mail.gmail.com> <CAJ-Vmo=mzvS0UBC7fGx2t501%2Bfioi4DJcw8qobOpbYOUiraqGg@mail.gmail.com> <CAFnsE3df=1WEuLZh5355v_K2eBgcuBbpoza74Y-5vvNupBz22A@mail.gmail.com> <CAJ-VmokyXwkKLdsJw74bux7G5EJSRvFhugTcLR9BgXfw4ysYRg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi!

So yes, we do need to have a generic way of returning that completion
information to the rate control code.

I'm all for you churning the rate control API to return a struct
ieee80211_rc_info in the complete function and totally just kill arg1/arg2.
That forces us to extend ieee80211_rc_info to be "right" for all the
drivers.

What wifi devices do you have there? It looks like we're almost at the
point where we can start converting a few things to use the modified rate
control API and modules - notably iwn (which won't use the multi-rate retry
stuff to begin with - it works "differently"..) and ath (which will use the
multi-rate retry stuff and the sample rate control module.)

Thanks!



-adrian



On 14 August 2013 09:34, Adrian Chadd <adrian@freebsd.org> wrote:

> Hi!
>
> Just a note - you need to keep the old copyright headers for code you've
> just shifted around.
>
> Eg, the ieee80211_rc_sample.[ch] files.
>
>
> -adrian
>
>
>
> On 13 August 2013 05:21, Chenchong Qin <qinchenchong@gmail.com> wrote:
>
>> Hi!
>>
>> Here is an update of work these days.
>>
>> I've added a new struct called ieee80211_rc_info to the ratectl API. It
>> contains tx completing information, i.e. txcnt, retrycnt, finaltsi, etc,
>> which
>> can be provided to ratectl algo during the __complete__ period. ir_rates,
>> ieee80211_ratectl_rates and ieee80211_ratectl_complete_rcflags are
>> adapted to accept the ieee80211_rc_info pointer through which framelen
>> and shortpreamble can also be reached. Then I added __complete__ stuff
>> and ir_rates to ieee80211_rc_sample.
>>
>> Thanks!
>>
>> Chenchong
>>
>>
>> On Tue, Aug 6, 2013 at 12:03 AM, Adrian Chadd <adrian@freebsd.org> wrote:
>>
>>> Hi!
>>>
>>> Great!
>>>
>>> So what's the problem with complete? Linux just provides all the
>>> information that the NIC supplies - how many attempts were made, how
>>> many attempts failed, which rate suceeded, etc. It looks a lot like it
>>> was designed around the requirements for the atheros driver (that has
>>> the most interesting information available) and other NICs just have
>>> to fake it somehow.
>>>
>>>
>>>
>>> -adrian
>>>
>>> On 5 August 2013 08:58, Chenchong Qin <qinchenchong@gmail.com> wrote:
>>> > Hi!
>>> >
>>> > Here is my work done these days on porting ath_rate_sample to
>>> net80211. It
>>> > has not been finished yet. _complete_ and _update_ are to be added.
>>> >
>>> > _complete_ is really a tricky thing. We have to provide rc algos with
>>> rc
>>> > information
>>> > during the frame completion period. Different rc algos may need
>>> different rc
>>> > information. What makes things more thornier is that different drivers
>>> > provide
>>> > different rc information in different ways. So, it seems we need a
>>> unified
>>> > way to
>>> > provide the rc information during completion of a frame.
>>> >
>>> > I'm browsing mac80211 these days to see what Linux do about
>>> _complete_. And,
>>> > looking forward to your commets!
>>> >
>>> > Thanks!
>>> >
>>> > Chenchong
>>> >
>>> >
>>> > On Sat, Aug 3, 2013 at 1:30 AM, Adrian Chadd <adrian@freebsd.org>
>>> wrote:
>>> >>
>>> >> Well just remember you can always ask me/us questions!
>>> >>
>>> >> What's your latest diff against -HEAD? Maybe I can start looking at
>>> >> including parts of it in the tree.
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> -adrian
>>> >>
>>> >> On 2 August 2013 09:17, Chenchong Qin <qinchenchong@gmail.com> wrote:
>>> >> > Hi!
>>> >> >
>>> >> > These days, I'm taking a further look at what Linux done for the
>>> >> > _completion_ of a
>>> >> > frame. Some updates will be posted here later.
>>> >> >
>>> >> > And, with ir_rates, we can return/fill an rc array rather than just
>>> >> > returning the rix.
>>> >> >
>>> >> > Thanks!
>>> >> >
>>> >> > Chenchong
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> > On Thu, Aug 1, 2013 at 12:21 AM, Adrian Chadd <adrian@freebsd.org>
>>> >> > wrote:
>>> >> >>
>>> >> >> Boo!
>>> >> >>
>>> >> >> Do you have another update?
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> -adrian
>>> >> >>
>>> >> >> On 24 July 2013 06:44, Adrian Chadd <adrian@freebsd.org> wrote:
>>> >> >> > On 24 July 2013 06:38, Chenchong Qin <qinchenchong@gmail.com>
>>> wrote:
>>> >> >> >>
>>> >> >> >> My pleasure!
>>> >> >> >>
>>> >> >> >> It's also against HEAD.
>>> >> >> >>
>>> >> >> >> Thanks!
>>> >> >> >
>>> >> >> > Ok. This is looking great!
>>> >> >> >
>>> >> >> > Next - we need to update the rate control API to now populate an
>>> rc
>>> >> >> > array rather than just returning the rix.
>>> >> >> >
>>> >> >> > This is the tricky part - as we're going to have to modify all
>>> the
>>> >> >> > drivers that use the rate control API to use this.
>>> >> >> > Which is fine, as there's only a handful. It's just annoying.
>>> >> >> >
>>> >> >> > Then we have to provide the rate control information during frame
>>> >> >> > _completion_, so the rate control code knows which transmission
>>> rates
>>> >> >> > succeeded or failed. I'm still not sure what to do about it here.
>>> >> >> > Maybe do something like Linux and attach TX rate control and
>>> >> >> > completion information as an mbuf tag?
>>> >> >> >
>>> >> >> > _Then_ we can start doing interesting thing with it. :)
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> > -adrian
>>> >> >
>>> >> >
>>> >
>>> >
>>>
>>
>>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmokU=ZXysjZfAJ-REZL7kwg-_Z-LeAKca7AefONW_O1E5A>