netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] wireless-2.6 zd1211rw check against regulatory domain rather than hardcoded value of 11
@ 2006-10-23 18:21 Holden Karau
  2006-10-23 22:57 ` Daniel Drake
  0 siblings, 1 reply; 11+ messages in thread
From: Holden Karau @ 2006-10-23 18:21 UTC (permalink / raw)
  To: zd1211-devs; +Cc: linville, netdev, linux-kernel, holdenk

From: Holden Karau <holden@pigscanfly.ca> http://www.holdenkarau.com

I have made a small patch for the zd1211rw driver which uses the
boundry channels of the regulatory domain, rather than the hard coded
values of 1 & 11.
Signed-off-by: Holden Karau <holden@pigscanfly.ca> http://www.holdenkarau.com
---
I'm not entirely sure how useful this patch is, but it seems like a
good idea. If its totally misguided, let me know :-) In case the patch
gets mangled I've put it up at
http://www.holdenkarau.com/~holden/projects/zd1211rw/zd1211rw-use-geo-for-channels.patch
And now for the patch:
--- a/drivers/net/wireless/zd1211rw/zd_chip.c	2006-10-23
10:07:39.000000000 -0400
+++ b/drivers/net/wireless/zd1211rw/zd_chip.c	2006-10-23
10:41:51.000000000 -0400
@@ -38,6 +38,8 @@ void zd_chip_init(struct zd_chip *chip,
 	mutex_init(&chip->mutex);
 	zd_usb_init(&chip->usb, netdev, intf);
 	zd_rf_init(&chip->rf);
+	/* The chip needs to know which geo it is in */
+	chip->geo = ieee80211_get_geo(zd_mac_to_ieee80211(zd_netdev_mac(netdev)));
 }

 void zd_chip_clear(struct zd_chip *chip)
@@ -606,14 +608,17 @@ static int patch_6m_band_edge(struct zd_
 		{ CR128, 0x14 }, { CR129, 0x12 }, { CR130, 0x10 },
 		{ CR47,  0x1e },
 	};
+	struct ieee80211_geo *geo = chip->geo;

 	if (!chip->patch_6m_band_edge || !chip->rf.patch_6m_band_edge)
 		return 0;

-	/* FIXME: Channel 11 is not the edge for all regulatory domains. */
-	if (channel == 1 || channel == 11)
+	/* Checks the channel boundry of the region */
+	dev_dbg_f("checking boundry == %d || %d\n" , 1 , geo->bg_channels);
+	if (channel == 1 || channel == geo->bg_channels)
 		ioreqs[0].value = 0x12;

+
 	dev_dbg_f(zd_chip_dev(chip), "patching for channel %d\n", channel);
 	return zd_iowrite16a_locked(chip, ioreqs, ARRAY_SIZE(ioreqs));
 }
--- a/drivers/net/wireless/zd1211rw/zd_chip.h	2006-10-23
10:07:39.000000000 -0400
+++ b/drivers/net/wireless/zd1211rw/zd_chip.h	2006-10-23
10:39:08.000000000 -0400
@@ -21,6 +21,8 @@
 #include "zd_types.h"
 #include "zd_rf.h"
 #include "zd_usb.h"
+#include "zd_ieee80211.h"
+#include <linux/wireless.h>

 /* Header for the Media Access Controller (MAC) and the Baseband Processor
  * (BBP). It appears that the ZD1211 wraps the old ZD1205 with USB glue and
@@ -669,6 +671,7 @@ struct zd_chip {
 	/* SetPointOFDM in the vendor driver */
 	u8 ofdm_cal_values[3][E2P_CHANNEL_COUNT];
 	u16 link_led;
+  	struct ieee80211_geo* geo;
 	unsigned int pa_type:4,
 		patch_cck_gain:1, patch_cr157:1, patch_6m_band_edge:1,
 		new_phy_layout:1,

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2006-11-01  0:36 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-23 18:21 [PATCH] wireless-2.6 zd1211rw check against regulatory domain rather than hardcoded value of 11 Holden Karau
2006-10-23 22:57 ` Daniel Drake
2006-10-24 14:09   ` Holden Karau
2006-10-24 15:09     ` Daniel Drake
2006-10-29 15:42       ` Uli Kunitz
2006-10-30  8:42         ` Johannes Berg
2006-10-30 17:49           ` Holden Karau
2006-10-30 22:59           ` Uli Kunitz
2006-10-31 14:26             ` Holden Karau
2006-10-31 23:48             ` Michael Buesch
2006-11-01  1:34               ` Daniel Drake

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).