Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Dec 2012 20:38:23 -0700
From:      PseudoCylon <moonlightakkiy@yahoo.ca>
To:        Ramanujan Seshadri <ksramanujan@gmail.com>
Cc:        freebsd-net@freebsd.org
Subject:   Re: Ralink RT2860 Driver Code
Message-ID:  <CAFZ_MYLo4KjQaHSWs1L3LYqh4OcnBZj6yeRKBDpUT8J4msDs0A@mail.gmail.com>
In-Reply-To: <CAK=C58K51H9g%2BvhuzurnQUv-ZxP4PCFpTHpnMsx7tKYcHcgJYg@mail.gmail.com>
References:  <CAFZ_MYKUAtz=Lem-LQsC_Jgw6zzWPx6EibxJqrCB32faWx8PVA@mail.gmail.com> <CAK=C58%2B3bnU=_jqtitT8cauO9_CSuvAhMpp7VAgCp4h6EBhXyQ@mail.gmail.com> <CAFZ_MY%2Bm=YNMC6iODQuSkEt7-UU=hAEgXLxqgiCoO%2Bgtu3O%2BHA@mail.gmail.com> <CAK=C58%2BGPSTRZRWPE-c-9vwAECoV5pG8a7P7bv4uqDi_hqiNFA@mail.gmail.com> <CAFZ_MYKDGDHDi7iax5gR2trJ9expv-km9=cwCgKNHZF2h8ip2Q@mail.gmail.com> <CAK=C58K51H9g%2BvhuzurnQUv-ZxP4PCFpTHpnMsx7tKYcHcgJYg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Dec 1, 2012 at 3:08 PM, Ramanujan Seshadri
<ksramanujan@gmail.com> wrote:
> Hello,
>   Thanks for the explanation. In fact when i saw the code i also thought the
> same, but when i tried
> to print out the transmitted A-MPDU's i found something different.
>
> For example,
>    The Counter AggSize15Count should print the the numbers in the multiples
> of 15, but sometimes it doesn't.
> So, my understanding is that, the MPDU's are written into these registers,
> and then an ampdu is formed only when there
> are enough number of MPDU;s. For example, AggSize15Count sometimes show the
> counter as 54, so
> there would be only (54/15) == 3 ampdu's ( 9 remainder).
>
>  But, then i am not sure what will happen to the remaining 9 MPDU's. Does
> the register wait for 6 more MPDU's
> so that it can aggregate 15 MPDU's to form 1 ampdu or does it write to a
> different registry like
> AggSize9Count where these 9 MPDU's can get aggregated to an ampdu.
>
> Can you please explain ?

Maybe, re-transmitted packets were counted multiple times.

If you need to know exactly what is going on, you have to figure out,
i.e by reading BA packet or checking what other end is receiving.

Unfortunately, this is what you need to do when you are writing a
driver without proper documentation.


AK

>
> -Ram
>
> On Thu, Nov 29, 2012 at 3:35 AM, PseudoCylon <moonlightakkiy@yahoo.ca>
> wrote:
>>
>> On Wed, Nov 28, 2012 at 9:35 PM, Ramanujan Seshadri
>> <ksramanujan@gmail.com> wrote:
>> > Hello,
>> >
>> > Thanks for the reply. I just had one more doubt.
>> >
>> > In the counters to update the transmitted A-MPDU counter (Function Name:
>> > NICUpdateRawCounters),  i saw these lines of codes
>> >
>> > pRalinkCounters->TransmittedAMPDUCount.u.LowPart +=
>> > TxAggCnt0.field.AggSize1Count;
>> > pRalinkCounters->TransmittedAMPDUCount.u.LowPart +=
>> > (TxAggCnt0.field.AggSize2Count >> 1);
>> > pRalinkCounters->TransmittedAMPDUCount.u.LowPart +=
>> > (TxAggCnt0.field.AggSize3Count /3);
>> > .
>> > .
>> > .
>> > .
>> > pRalinkCounters->TransmittedAMPDUCount.u.LowPart +=
>> > (TxAggCnt0.field.AggSize15Count/ 15);
>> > pRalinkCounters->TransmittedAMPDUCount.u.LowPart +=
>> > (TxAggCnt0.field.AggSize16Count >> 4);
>> >
>> > Can you please explain the reason why the 'i'th counter is being divided
>> > by
>> > i, for example .TxAggCnt0.field.AggSize15Count is being divided by 15.
>>
>> [NB] For people who haven't seen Ralink's code, the above codes are
>> theirs.
>>
>> I guess I didn't explain well. Those counters show number of mpdu
>> packets, i.e. AggSize15Count == 30 means 30 mpdu or 2 (30/15) ampdu
>> packets. (Because I don't have any datasheet, that how I interpret
>> Ralink's code.)
>>
>> >
>> > Also if these were little endian counters then i could not understand
>> > the
>> > reason why the four counters "TxAggCnt0.field.AggSize2Count,
>> > TxAggCnt0.field.AggSize4Count, TxAggCnt0.field.AggSize8Count
>> > and TxAggCnt0.field.AggSize16Count " are shifted right by some bits,
>> > which
>> > means that they are multiplying them (since it is little endian
>> > registers)
>> > and why they are dividing the others.
>>
>> RTMP_IO_READ32() does byte swapping. The values should be saved into
>> AggSizeNCount with host's byte order. So, right sifting means dividing
>> regardless of the byte order.
>> >>1 == /2
>> ...
>> >>4 == /16
>> They are playing nice to CPUs, I think.
>>
>>
>> AK
>>
>> >
>> > Thanks for the help.
>> >
>> > -ram
>> >
>> >
>> > On Tue, Nov 27, 2012 at 6:07 PM, PseudoCylon <moonlightakkiy@yahoo.ca>
>> > wrote:
>> >>
>> >> On Tue, Nov 27, 2012 at 1:23 PM, Ramanujan Seshadri
>> >> <ksramanujan@gmail.com> wrote:
>> >> > I want to know how many MPDU's are aggregated in each AMPDU
>> >> > transmission.
>> >>
>> >> You could use following statistic counters
>> >> RT2860_TX_AGG_CNT0 to 7
>> >>
>> >>
>> >> https://gitorious.org/run/run/blobs/11n_rc3/dev/usb/wlan/if_runreg.h#line186
>> >> Each 32-bit little-endian read-on-clear register contains 2 16-bit
>> >> counters (total 16 16-bit counters).
>> >> counter at offset 0x1720 MPDU count 1
>> >> counter at offset 0x1722 MPDU count 2
>> >>  ...
>> >> counter at offset 0x173c MPDU count 15
>> >> counter at offset 0x173e MPDU count >= 16
>> >>
>> >> These regs are identical on RT2800 and RT2700 (pci/usb).
>> >>
>> >> Example (see #if 0 part)
>> >>
>> >> https://gitorious.org/run/run/blobs/11n_rc3/dev/usb/wlan/if_run.c#line2493
>> >>
>> >> You can only find out statistical numbers (total Tx counts past X
>> >> sec). You cannot find out an MPDU count in a particular packet, i.e.
>> >> an aggregated packet just Tx'd, unless you read the counters on each
>> >> Tx.
>> >>
>> >>
>> >> AK
>> >>
>> >> >
>> >> > -ram
>> >> >
>> >> >
>> >> > On Tue, Nov 27, 2012 at 2:11 PM, PseudoCylon
>> >> > <moonlightakkiy@yahoo.ca>
>> >> > wrote:
>> >> >>
>> >> >> > ------------------------------
>> >> >> >
>> >> >> > Message: 12
>> >> >> > Date: Tue, 27 Nov 2012 04:33:37 -0500
>> >> >> > From: Ramanujan Seshadri <ksramanujan@gmail.com>
>> >> >> > To: freebsd-net@freebsd.org
>> >> >> > Subject: Ralink RT2860 Driver Code
>> >> >> > Message-ID:
>> >> >> >
>> >> >> >
>> >> >> > <CAK=C58L7YAp+YGk3PZ2VJG9toaKWcBHHi7xsaxth6-KYf0d6xg@mail.gmail.com>
>> >> >> > Content-Type: text/plain; charset=ISO-8859-1
>> >> >> >
>> >> >> > Hello,
>> >> >> >   Can i know how to get the MPDU's aggregated in each AMPDU in a
>> >> >> > ralink
>> >> >> > driver code for RT2860. I saw the existing counters of ralink and
>> >> >> > tried
>> >> >> > to
>> >> >> > get some info, but was not very useful.
>> >> >> >   Any help is greatly appreciated.
>> >> >> >
>> >> >>
>> >> >> https://gitorious.org/run/run/trees/11n_rc3/dev/usb/wlan
>> >> >>
>> >> >> What info are you trying to get?
>> >> >>
>> >> >>
>> >> >> AK
>> >> >>
>> >> >> > Thanks
>> >> >> > ram
>> >> >> >
>> >> >> >
>> >> >> > ------------------------------
>> >> >> >
>> >> >> > _______________________________________________
>> >> >> > freebsd-net@freebsd.org mailing list
>> >> >> > http://lists.freebsd.org/mailman/listinfo/freebsd-net
>> >> >> > To unsubscribe, send any mail to
>> >> >> > "freebsd-net-unsubscribe@freebsd.org"
>> >> >> >
>> >> >> > End of freebsd-net Digest, Vol 504, Issue 2
>> >> >> > *******************************************
>> >> >
>> >> >
>> >
>> >
>
>



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