linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dan Williams <dcbw@redhat.com>
To: "Pali Rohár" <pali.rohar@gmail.com>
Cc: Luciano Coelho <luca@coelho.fi>,
	"John W. Linville" <linville@tuxdriver.com>,
	linux-wireless@vger.kernel.org, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, freemangordon@abv.bg,
	aaro.koskinen@iki.fi, pavel@ucw.cz, sre@ring0.de,
	joni.lapilainen@gmail.com,
	Johannes Berg <johannes@sipsolutions.net>,
	Felipe Contreras <felipe.contreras@gmail.com>
Subject: Re: [PATCH v2 14/16] wl1251: Add sysfs file tx_mgmt_frm_rate for setting rate
Date: Mon, 09 Dec 2013 10:50:47 -0600	[thread overview]
Message-ID: <1386607847.24473.10.camel@dcbw.foobar.com> (raw)
In-Reply-To: <1386494714-21070-15-git-send-email-pali.rohar@gmail.com>

On Sun, 2013-12-08 at 10:25 +0100, Pali Rohár wrote:
> This patch adds support for configuring reg domains.
> Patch was extracted from Maemo 2.6.28 kernel.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> ---
>  drivers/net/wireless/ti/wl1251/main.c |  152 +++++++++++++++++++++++++++++++++
>  1 file changed, 152 insertions(+)

Isn't this supposed to be done automatically by the rate control
modules?  Seems pretty wrong to have it done via a sysfs file.  If the
maemo code was twiddling the TX rate for management frames so that it
could get more reliable DHCP or 802.1x, we have better nl80211
mechanisms for that now.

Also, the patch description is wrong.  This doesn't really add support
for "configuring reg domains" at all.

Dan

> diff --git a/drivers/net/wireless/ti/wl1251/main.c b/drivers/net/wireless/ti/wl1251/main.c
> index 382dedf..42730b7 100644
> --- a/drivers/net/wireless/ti/wl1251/main.c
> +++ b/drivers/net/wireless/ti/wl1251/main.c
> @@ -1377,6 +1377,147 @@ static const struct ieee80211_ops wl1251_ops = {
>  	.get_survey = wl1251_op_get_survey,
>  };
>  
> +static ssize_t wl1251_sysfs_show_tx_mgmt_frm_rate(struct device *dev,
> +						  struct device_attribute *attr,
> +						  char *buf)
> +{
> +	struct wl1251 *wl = dev_get_drvdata(dev);
> +	ssize_t len;
> +	int val;
> +
> +	/* FIXME: what's the maximum length of buf? page size?*/
> +	len = 500;
> +
> +	switch (wl->tx_mgmt_frm_rate) {
> +		/* skip 1 and 12 Mbps because they have same value 0x0a */
> +	case RATE_2MBPS:
> +		val = 20;
> +		break;
> +	case RATE_5_5MBPS:
> +		val = 55;
> +		break;
> +	case RATE_11MBPS:
> +		val = 110;
> +		break;
> +	case RATE_6MBPS:
> +		val = 60;
> +		break;
> +	case RATE_9MBPS:
> +		val = 90;
> +		break;
> +	case RATE_12MBPS:
> +		val = 120;
> +		break;
> +	case RATE_18MBPS:
> +		val = 180;
> +		break;
> +	case RATE_24MBPS:
> +		val = 240;
> +		break;
> +	case RATE_36MBPS:
> +		val = 360;
> +		break;
> +	case RATE_48MBPS:
> +		val = 480;
> +		break;
> +	case RATE_54MBPS:
> +		val = 540;
> +		break;
> +	default:
> +		val = 10;
> +	}
> +
> +	/* for 1 and 12 Mbps we have to check the modulation */
> +	if (wl->tx_mgmt_frm_rate == RATE_1MBPS) {
> +		switch (wl->tx_mgmt_frm_rate) {
> +		case CCK_LONG:
> +			val = 10;
> +			break;
> +		case OFDM:
> +			val = 120;
> +			break;
> +		default:
> +			val = 10;
> +			break;
> +		}
> +	}
> +	len = snprintf(buf, len, "%d", val);
> +
> +	return len;
> +}
> +
> +static ssize_t wl1251_sysfs_store_tx_mgmt_frm_rate(struct device *dev,
> +					struct device_attribute *attr,
> +					const char *buf, size_t count)
> +{
> +	struct wl1251 *wl = dev_get_drvdata(dev);
> +	unsigned long res;
> +	int ret;
> +
> +	ret = strict_strtoul(buf, 10, &res);
> +
> +	if (ret < 0) {
> +		wl1251_warning("incorrect value written to tx_mgmt_frm_rate");
> +		return 0;
> +	}
> +
> +	switch (res) {
> +	case 10:
> +		wl->tx_mgmt_frm_rate = RATE_1MBPS;
> +		wl->tx_mgmt_frm_mod = CCK_LONG;
> +		break;
> +	case 20:
> +		wl->tx_mgmt_frm_rate = RATE_2MBPS;
> +		wl->tx_mgmt_frm_mod = CCK_LONG;
> +		break;
> +	case 55:
> +		wl->tx_mgmt_frm_rate = RATE_5_5MBPS;
> +		wl->tx_mgmt_frm_mod = CCK_LONG;
> +		break;
> +	case 110:
> +		wl->tx_mgmt_frm_rate = RATE_11MBPS;
> +		wl->tx_mgmt_frm_mod = CCK_LONG;
> +		break;
> +	case 60:
> +		wl->tx_mgmt_frm_rate = RATE_6MBPS;
> +		wl->tx_mgmt_frm_mod = OFDM;
> +		break;
> +	case 90:
> +		wl->tx_mgmt_frm_rate = RATE_9MBPS;
> +		wl->tx_mgmt_frm_mod = OFDM;
> +		break;
> +	case 120:
> +		wl->tx_mgmt_frm_rate = RATE_12MBPS;
> +		wl->tx_mgmt_frm_mod = OFDM;
> +		break;
> +	case 180:
> +		wl->tx_mgmt_frm_rate = RATE_18MBPS;
> +		wl->tx_mgmt_frm_mod = OFDM;
> +		break;
> +	case 240:
> +		wl->tx_mgmt_frm_rate = RATE_24MBPS;
> +		wl->tx_mgmt_frm_mod = OFDM;
> +		break;
> +	case 360:
> +		wl->tx_mgmt_frm_rate = RATE_36MBPS;
> +		wl->tx_mgmt_frm_mod = OFDM;
> +		break;
> +	case 480:
> +		wl->tx_mgmt_frm_rate = RATE_48MBPS;
> +		wl->tx_mgmt_frm_mod = OFDM;
> +		break;
> +	case 540:
> +		wl->tx_mgmt_frm_rate = RATE_54MBPS;
> +		wl->tx_mgmt_frm_mod = OFDM;
> +		break;
> +	default:
> +		wl1251_warning("incorrect value written to tx_mgmt_frm_rate");
> +		return 0;
> +	}
> +
> +	return count;
> +}
> +
>  static ssize_t wl1251_sysfs_show_bt_coex_mode(struct device *dev,
>  					      struct device_attribute *attr,
>  					      char *buf)
> @@ -1445,6 +1586,10 @@ out:
>  	return count;
>  }
>  
> +static DEVICE_ATTR(tx_mgmt_frm_rate, S_IRUGO | S_IWUSR,
> +		   wl1251_sysfs_show_tx_mgmt_frm_rate,
> +		   wl1251_sysfs_store_tx_mgmt_frm_rate);
> +
>  static DEVICE_ATTR(bt_coex_mode, S_IRUGO | S_IWUSR,
>  		   wl1251_sysfs_show_bt_coex_mode,
>  		   wl1251_sysfs_store_bt_coex_mode);
> @@ -1585,6 +1730,13 @@ int wl1251_init_ieee80211(struct wl1251 *wl)
>  	}
>  	dev_set_drvdata(&wl1251_device.dev, wl);
>  
> +	/* Create sysfs file tx_mgmt_frm_rate */
> +	ret = device_create_file(&wl1251_device.dev,
> +				 &dev_attr_tx_mgmt_frm_rate);
> +	if (ret < 0) {
> +		wl1251_error("failed to create sysfs file tx_mgmt_frm_rate");
> +		goto out;
> +	}
>  
>  	/* Create sysfs file to control bt coex state */
>  	ret = device_create_file(&wl1251_device.dev, &dev_attr_bt_coex_mode);



  reply	other threads:[~2013-12-09 16:55 UTC|newest]

Thread overview: 116+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-26 20:33 [PATCH 00/16] wl1251 patches from linux-n900 tree Pali Rohár
2013-10-26 20:34 ` [PATCH 01/16] mac80211: fix TX device statistics for monitor interfaces Pali Rohár
2013-10-28  5:53   ` Kalle Valo
2013-12-08  8:45     ` [PATCH] " Pali Rohár
2013-12-16 12:38       ` Johannes Berg
2013-10-28 13:47   ` [PATCH 01/16] " Johannes Berg
2013-10-26 20:34 ` [PATCH 02/16] wl1251: fix scan behaviour while not associated Pali Rohár
2013-10-30 11:24   ` Pavel Machek
2013-10-26 20:34 ` [PATCH 03/16] wl1251: add sysfs interface for bluetooth coexistence mode configuration Pali Rohár
2013-10-28 23:39   ` Ben Hutchings
2013-10-29  7:09     ` Luca Coelho
2013-10-29 13:35       ` Kalle Valo
2013-12-08  7:55     ` Pali Rohár
2013-12-08 16:36       ` Ben Hutchings
2013-10-26 20:34 ` [PATCH 04/16] wl1251: retry power save entry Pali Rohár
2013-10-26 20:34 ` [PATCH 05/16] wl1251: implement hardware ARP filtering Pali Rohár
2013-10-30 11:28   ` Pavel Machek
2013-10-26 20:34 ` [PATCH 06/16] wl1251: split RX and TX data path initialisation Pali Rohár
2013-10-30 11:31   ` Pavel Machek
2013-10-26 20:34 ` [PATCH 07/16] wl1251: configure hardware en-/decryption for monitor mode Pali Rohár
2013-10-30 11:35   ` Pavel Machek
2013-10-26 20:34 ` [PATCH 08/16] wl1251: implement multicast address filtering Pali Rohár
2013-10-30 11:41   ` Pavel Machek
2013-10-26 20:34 ` [PATCH 09/16] wl1251: disable power saving in monitor mode Pali Rohár
2013-10-30 11:46   ` Pavel Machek
2013-10-26 20:34 ` [PATCH 10/16] wl1251: fix channel switching " Pali Rohár
2013-10-30 11:47   ` Pavel Machek
2013-10-26 20:34 ` [PATCH 11/16] wl1251: enable tx path in monitor mode if necessary for packet injection Pali Rohár
2013-10-30 11:51   ` Pavel Machek
2013-10-26 20:34 ` [PATCH 12/16] wl1251: disable retry and ACK policy for injected packets Pali Rohár
2013-10-30 11:52   ` Pavel Machek
2013-10-26 20:34 ` [PATCH 13/16] wl1251: enforce changed hw encryption support on monitor state change Pali Rohár
2013-10-30 11:55   ` Pavel Machek
2013-10-26 20:34 ` [PATCH 14/16] wl1251: add nvs file name to module firmware list Pali Rohár
2013-10-30 11:55   ` Pavel Machek
2013-10-26 20:34 ` [PATCH 15/16] wl1251: Add sysfs file tx_mgmt_frm_rate for setting rate Pali Rohár
2013-10-28 13:45   ` Johannes Berg
2013-10-26 20:34 ` [PATCH 16/16] wl1251: Add sysfs file address for setting permanent mac address Pali Rohár
2013-10-28 13:45   ` Johannes Berg
2013-10-28 13:49     ` Pali Rohár
2013-10-28 13:55       ` Johannes Berg
2013-10-28 14:00         ` Pali Rohár
2013-10-28 14:46           ` Dan Williams
2013-10-28 14:56             ` Johannes Berg
2013-10-28 15:04               ` Pali Rohár
2013-10-28 15:29                 ` Dan Williams
2013-10-28 16:21                   ` Pali Rohár
2013-10-28 15:33               ` Stephen Hemminger
2013-10-28 23:50   ` Ben Hutchings
2013-11-08 14:20 ` [PATCH 00/16] wl1251 patches from linux-n900 tree Felipe Contreras
2013-11-25 19:54   ` Pali Rohár
2013-12-08  9:24 ` [PATCH v2 " Pali Rohár
2013-12-08  9:24   ` [PATCH v2 01/16] wl1251: fix scan behaviour while not associated Pali Rohár
2013-12-10  9:21     ` Pavel Machek
2013-12-10 15:41       ` Kalle Valo
2013-12-10 17:08         ` Pali Rohár
2013-12-11 20:44           ` Ben Hutchings
2013-12-31  9:44       ` Pali Rohár
2013-12-08  9:25   ` [PATCH v2 02/16] wl1251: add sysfs interface for bluetooth coexistence mode configuration Pali Rohár
2013-12-10 15:46     ` Kalle Valo
2013-12-10 16:09       ` Pali Rohár
2013-12-08  9:25   ` [PATCH v2 03/16] wl1251: retry power save entry Pali Rohár
2013-12-10  9:24     ` Pavel Machek
2013-12-08  9:25   ` [PATCH v2 04/16] wl1251: implement hardware ARP filtering Pali Rohár
2013-12-10  9:29     ` Pavel Machek
2013-12-10  9:59       ` Michal Kubecek
2013-12-08  9:25   ` [PATCH v2 05/16] wl1251: split RX and TX data path initialisation Pali Rohár
2013-12-10  9:31     ` Pavel Machek
2013-12-08  9:25   ` [PATCH v2 06/16] wl1251: configure hardware en-/decryption for monitor mode Pali Rohár
2013-12-10  9:35     ` Pavel Machek
2013-12-31  9:31       ` Pali Rohár
2013-12-08  9:25   ` [PATCH v2 07/16] wl1251: implement multicast address filtering Pali Rohár
2013-12-10  9:39     ` Pavel Machek
2013-12-08  9:25   ` [PATCH v2 08/16] wl1251: disable power saving in monitor mode Pali Rohár
2013-12-10  9:41     ` Pavel Machek
2013-12-08  9:25   ` [PATCH v2 09/16] wl1251: fix channel switching " Pali Rohár
2013-12-10  9:43     ` Pavel Machek
2013-12-08  9:25   ` [PATCH v2 10/16] wl1251: enable tx path in monitor mode if necessary for packet injection Pali Rohár
2013-12-10  9:44     ` Pavel Machek
2013-12-08  9:25   ` [PATCH v2 11/16] wl1251: disable retry and ACK policy for injected packets Pali Rohár
2013-12-10  9:46     ` Pavel Machek
2013-12-08  9:25   ` [PATCH v2 12/16] wl1251: enforce changed hw encryption support on monitor state change Pali Rohár
2013-12-10  9:48     ` Pavel Machek
2013-12-08  9:25   ` [PATCH v2 13/16] wl1251: add nvs file name to module firmware list Pali Rohár
2013-12-10  9:49     ` Pavel Machek
2013-12-08  9:25   ` [PATCH v2 14/16] wl1251: Add sysfs file tx_mgmt_frm_rate for setting rate Pali Rohár
2013-12-09 16:50     ` Dan Williams [this message]
2013-12-10 15:36     ` Kalle Valo
2013-12-08  9:25   ` [PATCH v2 15/16] wl1251: Add sysfs file address for setting permanent mac address Pali Rohár
2013-12-10 15:49     ` Kalle Valo
2013-12-10 16:10       ` Pali Rohár
2013-12-10 17:14         ` Pali Rohár
2013-12-10 17:49           ` Dan Williams
2013-12-10 17:52             ` Pali Rohár
2013-12-10 19:22               ` Dan Williams
2013-12-10 19:31                 ` Pali Rohár
2013-12-11 21:26                   ` Ben Hutchings
2013-12-11 21:17               ` Ben Hutchings
2013-12-11 21:28                 ` Ben Hutchings
2013-12-11 21:35                 ` Ivajlo Dimitrov
2013-12-11 22:15                   ` Ben Hutchings
2013-12-11 22:36                     ` Ivajlo Dimitrov
2013-12-12 12:45                       ` Sergei Shtylyov
2013-12-11 22:53                     ` Dan Williams
2013-12-12 19:55                       ` Ben Hutchings
2013-12-12 20:24                         ` Ivajlo Dimitrov
2013-12-12 10:56                 ` Pavel Machek
2013-12-08  9:25   ` [PATCH v2 16/16] wl1251: fix NULL pointer dereference Pali Rohár
2013-12-10  9:42     ` Pavel Machek
2013-12-31  9:47   ` [PATCH v2 00/16] wl1251 patches from linux-n900 tree Pali Rohár
2014-01-06 20:00     ` John W. Linville
2014-01-06 20:26       ` Johannes Berg
2014-01-06 22:03       ` Pavel Machek
2014-01-07 12:15       ` Pavel Machek
2014-01-16  0:21       ` Pavel Machek
2014-01-16 20:29         ` John W. Linville

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=1386607847.24473.10.camel@dcbw.foobar.com \
    --to=dcbw@redhat.com \
    --cc=aaro.koskinen@iki.fi \
    --cc=felipe.contreras@gmail.com \
    --cc=freemangordon@abv.bg \
    --cc=johannes@sipsolutions.net \
    --cc=joni.lapilainen@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=luca@coelho.fi \
    --cc=netdev@vger.kernel.org \
    --cc=pali.rohar@gmail.com \
    --cc=pavel@ucw.cz \
    --cc=sre@ring0.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).