Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Dec 2012 17:08:19 -0500
From:      Ramanujan Seshadri <ksramanujan@gmail.com>
To:        PseudoCylon <moonlightakkiy@yahoo.ca>
Cc:        freebsd-net@freebsd.org
Subject:   Re: Ralink RT2860 Driver Code
Message-ID:  <CAK=C58K51H9g%2BvhuzurnQUv-ZxP4PCFpTHpnMsx7tKYcHcgJYg@mail.gmail.com>
In-Reply-To: <CAFZ_MYKDGDHDi7iax5gR2trJ9expv-km9=cwCgKNHZF2h8ip2Q@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>

next in thread | previous in thread | raw e-mail | index | archive | help
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 ?

-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?CAK=C58K51H9g%2BvhuzurnQUv-ZxP4PCFpTHpnMsx7tKYcHcgJYg>