Search Linux Wireless

Re: [PATCH] ath9k: Save spectral scan data in network byteorder

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey Zefir,

On Wed, Jan 16, 2013 at 10:53:15AM +0100, Zefir Kurtisi wrote:
> On 01/16/2013 09:59 AM, Simon Wunderlich wrote:
> > On Tue, Jan 15, 2013 at 01:02:43PM +0100, Sven Eckelmann wrote:
> >> The sample data received through the spectral scan can be either in big or
> >> little endian byteorder. This information isn't stored in the output file.
> >> Therefore it is not possible for the analyzer software to find the correct byte
> >> order.
> >>
> >> It is relative common to get the data from a low end AP in big endian mode and
> >> transfer it to another computer in little endian mode to analyze it. Therefore,
> >> it would be better to store it in network (big endian) byte order.
> > 
> > I'd agree that changing the byteorder to the "general" network order format is
> > a good idea, although we will break compatibility again - which should hopefully
> > be no problem as the original patch is pretty new anyway.
> > 
> > I was pondering about performance loss when we run spectral on the same machine
> > (i.e. maybe adding two useless byteswaps per value). OTOH the byteswaps are pretty
> > cheap and we do some computations anyway, so the performance difference should be quite
> > small.
> > 
> > Therefore,
> > 
> > Acked-by: Simon Wunderlich <siwu@xxxxxxxxxxxxxxxxxx>
> > 
> > (I've CCd some more people in the reply so they can scream if they don't like it. ;])
> > 
> > Thanks,
> > 	Simon
> > 
> Hi Simon,
> 
> at this point, I'd like to advocate the approach I am currently using that does
> the conversion fully in user space. There, each sample provided consists of the
> fft data as bytes plus the values required to scale the magnitude values back to
> absolute power numbers (i.e. the 'bug-fixed' raw data).
> 
> Since for the scaling an user space component is mandatory (FP calculations), I
> miss to see the benefit of splitting post-processing in the kernel (shifting bins)
> and user space. This step doubles fft data size and introduces endianess issues
> for no (at least to me) evident reason.

Well, that's right. The idea was to not send so "obscure" data, but I guess providing
sample code which shifts the bins etc should be easy enough for people integrating this
in userspace.

> 
> Maybe you have a host application in mind where it does not really matter where
> the processing is done. Whereas, if you operate an AP as continuous spectral
> scanner, shifting the post-processing to the point where it is evaluated /
> displayed (usually your fat PC) significantly impacts your AP's load and its
> capability to provide higher sampling rates.

I didn't see any performance limits yet. Shifting the data is probably not so expensive
(what we do right now in the kernel), but doubled sample size and other aspects
will certainly have an impact for this kind of "streaming" application for (low-end) APs.

> 
> I'd assume Adrian's proposal to just push out the raw spectral data to user-space
> is also targeting at that, which I fully support. The only thing I would keep in
> the driver is fixing the fft data corruption caused by known chip bugs.

As far as I understood, Adrian returns the whole packet with all flags and bugs, but I might
be wrong. I'd agree to at least fix the length bug in the kernel (newer chips should not
have this flaw anymore).

In any case, I don't want to change the format multiple times again, so let's discuss and
fix it once and for all[tm] now. There are some parties already experimenting with and integrating
this feature now. And if I'm not mistaken we have ~3 weeks left to add changes for
the next kernel version.

My suggestions for the new format:
 * fix length bugs (as you said)
 * use a TLV format to hand out samples (as done now) - we can use a new type
 * each "sample packet" holds one sample, i.e. aggregated sample packets from the chip (we are not processing
   them in the current version, but in later versions maybe) are split into multiple "sample packets"
 * the bins are not shifted (8 bit per bin)
 * auxiliary information which is larger than 8 bit (tsf, frequency, etc) is converted into network byte order

Anything else?

Cheers,
	Simon

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux