All of lore.kernel.org
 help / color / mirror / Atom feed
From: Henning Rogge <hrogge@googlemail.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: "Luis R. Rodriguez" <lrodriguez@atheros.com>,
	Henning Rogge <rogge@fgan.de>,
	Luis Rodriguez <Luis.Rodriguez@atheros.com>,
	Marcel Holtmann <holtmann@linux.intel.com>,
	"linux-wireless" <linux-wireless@vger.kernel.org>,
	"nbd@openwrt.org" <nbd@openwrt.org>
Subject: Re: [PATCH 1/2] Add signal strength and bandwith to nl80211station info
Date: Tue, 9 Dec 2008 20:50:23 +0100	[thread overview]
Message-ID: <200812092050.29545.hrogge@googlemail.com> (raw)
In-Reply-To: <1228765415.22164.107.camel@johannes.berg>


[-- Attachment #1.1: Type: text/plain, Size: 961 bytes --]

On Monday 08 December 2008 20:43:35 you wrote:
> And on your second patch:
> > +static u16 nl80211_calculate_bitrate(struct rate_info *rate)
> > +{
> > +       int modulation, streams, bitrate;
> > +
> > +       if (!(rate->flags & RATE_INFO_FLAGS_MCS))
> > +               return rate->legacy;
> > +
> > +       modulation = rate->mcs & 7;
> > +       streams = rate->mcs >> 3;

> I don't think this gives correct results for MCS rates 32 through 76,
> does it? It should at least not calculate anything then. If we did it in
> userspace then programs could also actually calculate the correct rate
> as a float, rather than this approximation. Not that it'll matter, I
> guess. Doesn't anybody know how to do the actual calculation?
It had a small type (corrected in the new patches), but I think the values are 
good. I have attached a test programm to this mail that outputs the bandwith 
values calculated by the function.

Henning


[-- Attachment #1.2: calctest.c --]
[-- Type: text/x-csrc, Size: 1717 bytes --]

#include <stdio.h>

#define RATE_INFO_FLAGS_MCS 1
#define RATE_INFO_FLAGS_40_MHZ_WIDTH 2
#define RATE_INFO_FLAGS_SHORT_GI 4

struct rate_info {
	int flags, mcs, legacy;
};

int nl80211_calculate_bitrate(struct rate_info *rate)
{
	int modulation, streams, bitrate;

	if (!(rate->flags & RATE_INFO_FLAGS_MCS))
		return rate->legacy;

	modulation = rate->mcs & 7;
	streams = (rate->mcs >> 3) + 1;

	bitrate = (rate->flags & RATE_INFO_FLAGS_40_MHZ_WIDTH) ?
			13500000 : 6500000;

	if (modulation < 4)
		bitrate *= (modulation + 1);
	else if (modulation == 4)
		bitrate *= (modulation + 2);
	else
		bitrate *= (modulation + 3);

	bitrate *= streams;

	if (rate->flags & RATE_INFO_FLAGS_SHORT_GI)
		bitrate = (bitrate / 9) * 10;

	/* do NOT round down here */
	return (bitrate + 50000) / 100000;
}

int main(int argc, char **argv) {
	struct rate_info ri;
	int mcs;

	printf("20 Mhz wide channels\n");
	for (mcs = 0; mcs < 72; mcs++) {
		int r1, r2;
		
		ri.mcs = mcs;
		
		ri.flags = RATE_INFO_FLAGS_MCS;
		r1 = nl80211_calculate_bitrate(&ri);

		ri.flags = RATE_INFO_FLAGS_MCS | RATE_INFO_FLAGS_SHORT_GI;
		r2 = nl80211_calculate_bitrate(&ri);

		printf("mcs %d:    long gi %4d / short gi %4d\n", mcs, r1, r2);
	}
	
	printf("\n");
	printf("40 Mhz wide channels\n");

	for (mcs = 0; mcs < 72; mcs++) {
		int r1, r2;

		ri.mcs = mcs;
		
		ri.flags = RATE_INFO_FLAGS_MCS | RATE_INFO_FLAGS_40_MHZ_WIDTH;
		r1 = nl80211_calculate_bitrate(&ri);

		ri.flags = RATE_INFO_FLAGS_MCS | RATE_INFO_FLAGS_SHORT_GI | RATE_INFO_FLAGS_40_MHZ_WIDTH;
		r2 = nl80211_calculate_bitrate(&ri);

		printf("mcs %d:    long gi %4d / short gi %4d\n", mcs, r1, r2);
	}
	
}

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

  reply	other threads:[~2008-12-09 19:50 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-25 20:31 RFC Patch: Add signal strength to nl80211station info Henning Rogge
2008-11-25 20:47 ` Johannes Berg
2008-11-25 21:01   ` Henning Rogge
2008-11-26  5:21   ` Marcel Holtmann
2008-11-26  8:32     ` Johannes Berg
2008-11-26 16:17     ` Henning Rogge
2008-11-29 10:50     ` RFC Patch v2: " Henning Rogge
2008-12-01 11:17       ` Johannes Berg
2008-12-01 13:22         ` Henning Rogge
2008-12-01 17:39           ` Luis R. Rodriguez
2008-12-01 17:45             ` Luis R. Rodriguez
2008-12-01 17:53             ` Henning Rogge
2008-12-02 13:25             ` Henning Rogge
2008-12-02 20:29               ` Luis R. Rodriguez
2008-12-02 20:46                 ` Henning Rogge
2008-12-03  1:44                   ` Luis R. Rodriguez
2008-12-03 10:31                     ` Henning Rogge
2008-12-04  8:47                       ` Johannes Berg
2008-12-04  9:48                         ` Henning Rogge
2008-12-04 13:02                           ` Johannes Berg
2008-12-04 20:26                       ` Johannes Berg
2008-12-04 21:12                         ` Luis R. Rodriguez
2008-12-04 21:20                           ` Johannes Berg
2008-12-05  8:34                             ` Henning Rogge
2008-12-05  9:45                               ` Johannes Berg
2008-12-05  9:51                                 ` Henning Rogge
2008-12-05  9:54                                   ` Johannes Berg
2008-12-05 23:26                                     ` Henning Rogge
2008-12-06  9:15                                       ` Johannes Berg
2008-12-06 11:12                                         ` Henning Rogge
2008-12-06 14:10                                 ` Henning Rogge
2008-12-06 14:43                                   ` Henning Rogge
2008-12-06 14:51                                   ` Johannes Berg
2008-12-06 15:03                                     ` Henning Rogge
2008-12-06 15:46                                       ` Henning Rogge
2008-12-06 15:59                                         ` Johannes Berg
2008-12-06 16:08                                           ` Henning Rogge
2008-12-06 20:46                                           ` Luis R. Rodriguez
2008-12-07 17:32                                             ` Henning Rogge
2008-12-07 17:39                                               ` Johannes Berg
2008-12-07 18:17                                                 ` [PATCH 1/2] Add signal strength and bandwith " Henning Rogge
2008-12-08 19:43                                                   ` Johannes Berg
2008-12-09 19:50                                                     ` Henning Rogge [this message]
2008-12-09 21:16                                                       ` Johannes Berg
2008-12-10  6:53                                                         ` Henning Rogge
2008-12-10  9:05                                                           ` Johannes Berg
2008-12-10 17:40                                                             ` Henning Rogge
2008-12-10 20:45                                                               ` Johannes Berg
2008-12-10 20:58                                                                 ` Henning Rogge
2008-12-10 21:01                                                                   ` Johannes Berg
2008-12-11 17:07                                                                     ` [Patch] nl80211: " Henning Rogge
2008-12-11 17:24                                                                       ` Johannes Berg
2008-12-11 18:02                                                                         ` Henning Rogge
2008-12-11 18:14                                                                           ` Johannes Berg
2008-12-11 18:22                                                                             ` Henning Rogge
2008-12-11 18:28                                                                               ` Johannes Berg
2008-12-11 20:10                                                                                 ` Henning Rogge
2008-12-11 20:24                                                                                   ` Johannes Berg
2008-12-11 20:12                                                                                 ` Henning Rogge
2008-12-11 20:23                                                                                   ` Johannes Berg
2008-12-09 19:54                                                     ` [Patch 1/2 v2] " Henning Rogge
2008-12-09 19:58                                                     ` [Patch 2/2 " Henning Rogge
2008-12-09 21:19                                                       ` Johannes Berg
2008-12-07 18:19                                                 ` [PATCH 2/2] " Henning Rogge
2008-12-07 18:20                                                 ` [PATCH 0/2] " Henning Rogge
2008-12-06 15:48                                       ` RFC Patch v2: Add signal strength " Johannes Berg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200812092050.29545.hrogge@googlemail.com \
    --to=hrogge@googlemail.com \
    --cc=Luis.Rodriguez@atheros.com \
    --cc=holtmann@linux.intel.com \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=lrodriguez@atheros.com \
    --cc=nbd@openwrt.org \
    --cc=rogge@fgan.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.