From: Ivo van Doorn <ivdoorn@gmail.com>
To: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org, rt2400-devel@lists.sourceforge.net
Subject: [PATCH 07/16] rt2x00: Move TSF sync values into rt2x00config
Date: Sat, 6 Oct 2007 14:14:29 +0200 [thread overview]
Message-ID: <200710061414.30195.IvDoorn@gmail.com> (raw)
In-Reply-To: <200710061410.31765.IvDoorn@gmail.com>
All drivers use the same values for TSF sync,
this will move the value determination into rt2x00config.c,
and the definition for the values to rt2x00reg.h
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
drivers/net/wireless/rt2x00/rt2400pci.c | 12 +++---------
drivers/net/wireless/rt2x00/rt2500pci.c | 12 +++---------
drivers/net/wireless/rt2x00/rt2500usb.c | 14 ++++----------
drivers/net/wireless/rt2x00/rt2x00.h | 3 ++-
drivers/net/wireless/rt2x00/rt2x00config.c | 20 +++++++++++++++++---
drivers/net/wireless/rt2x00/rt2x00lib.h | 2 +-
drivers/net/wireless/rt2x00/rt2x00reg.h | 9 +++++++++
drivers/net/wireless/rt2x00/rt61pci.c | 12 +++---------
drivers/net/wireless/rt2x00/rt73usb.c | 12 +++---------
9 files changed, 45 insertions(+), 51 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index 7f2db6d..5f8df7a 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -265,9 +265,9 @@ static void rt2400pci_config_bssid(struct rt2x00_dev *rt2x00dev,
(2 * sizeof(__le32)));
}
-static void rt2400pci_config_type(struct rt2x00_dev *rt2x00dev, int type)
+static void rt2400pci_config_type(struct rt2x00_dev *rt2x00dev, const int type,
+ const int tsf_sync)
{
- struct interface *intf = &rt2x00dev->interface;
u32 reg;
rt2x00pci_register_write(rt2x00dev, CSR14, 0);
@@ -287,13 +287,7 @@ static void rt2400pci_config_type(struct rt2x00_dev *rt2x00dev, int type)
rt2x00_set_field32(®, CSR14_TSF_COUNT, 1);
rt2x00_set_field32(®, CSR14_TBCN, 1);
rt2x00_set_field32(®, CSR14_BEACON_GEN, 0);
- if (is_interface_type(intf, IEEE80211_IF_TYPE_IBSS) ||
- is_interface_type(intf, IEEE80211_IF_TYPE_AP))
- rt2x00_set_field32(®, CSR14_TSF_SYNC, 2);
- else if (is_interface_type(intf, IEEE80211_IF_TYPE_STA))
- rt2x00_set_field32(®, CSR14_TSF_SYNC, 1);
- else
- rt2x00_set_field32(®, CSR14_TSF_SYNC, 0);
+ rt2x00_set_field32(®, CSR14_TSF_SYNC, tsf_sync);
rt2x00pci_register_write(rt2x00dev, CSR14, reg);
}
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index 1f70917..cac9430 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -265,9 +265,9 @@ static void rt2500pci_config_bssid(struct rt2x00_dev *rt2x00dev,
(2 * sizeof(__le32)));
}
-static void rt2500pci_config_type(struct rt2x00_dev *rt2x00dev, const int type)
+static void rt2500pci_config_type(struct rt2x00_dev *rt2x00dev, const int type,
+ const int tsf_sync)
{
- struct interface *intf = &rt2x00dev->interface;
u32 reg;
rt2x00pci_register_write(rt2x00dev, CSR14, 0);
@@ -291,13 +291,7 @@ static void rt2500pci_config_type(struct rt2x00_dev *rt2x00dev, const int type)
rt2x00_set_field32(®, CSR14_TSF_COUNT, 1);
rt2x00_set_field32(®, CSR14_TBCN, 1);
rt2x00_set_field32(®, CSR14_BEACON_GEN, 0);
- if (is_interface_type(intf, IEEE80211_IF_TYPE_IBSS) ||
- is_interface_type(intf, IEEE80211_IF_TYPE_AP))
- rt2x00_set_field32(®, CSR14_TSF_SYNC, 2);
- else if (is_interface_type(intf, IEEE80211_IF_TYPE_STA))
- rt2x00_set_field32(®, CSR14_TSF_SYNC, 1);
- else
- rt2x00_set_field32(®, CSR14_TSF_SYNC, 0);
+ rt2x00_set_field32(®, CSR14_TSF_SYNC, tsf_sync);
rt2x00pci_register_write(rt2x00dev, CSR14, reg);
}
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index e7530ae..234b34e 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -268,9 +268,9 @@ static void rt2500usb_config_bssid(struct rt2x00_dev *rt2x00dev,
(3 * sizeof(__le16)));
}
-static void rt2500usb_config_type(struct rt2x00_dev *rt2x00dev, const int type)
+static void rt2500usb_config_type(struct rt2x00_dev *rt2x00dev, const int type,
+ const int tsf_sync)
{
- struct interface *intf = &rt2x00dev->interface;
u16 reg;
rt2500usb_register_write(rt2x00dev, TXRX_CSR19, 0);
@@ -281,7 +281,7 @@ static void rt2500usb_config_type(struct rt2x00_dev *rt2x00dev, const int type)
rt2500usb_register_read(rt2x00dev, TXRX_CSR20, ®);
rt2x00_set_field16(®, TXRX_CSR20_OFFSET,
(PREAMBLE + get_duration(IEEE80211_HEADER, 2)) >> 6);
- if (is_interface_type(intf, IEEE80211_IF_TYPE_STA))
+ if (type == IEEE80211_IF_TYPE_STA)
rt2x00_set_field16(®, TXRX_CSR20_BCN_EXPECT_WINDOW, 0);
else
rt2x00_set_field16(®, TXRX_CSR20_BCN_EXPECT_WINDOW, 2);
@@ -298,13 +298,7 @@ static void rt2500usb_config_type(struct rt2x00_dev *rt2x00dev, const int type)
rt2x00_set_field16(®, TXRX_CSR19_TSF_COUNT, 1);
rt2x00_set_field16(®, TXRX_CSR19_TBCN, 1);
rt2x00_set_field16(®, TXRX_CSR19_BEACON_GEN, 0);
- if (is_interface_type(intf, IEEE80211_IF_TYPE_IBSS) ||
- is_interface_type(intf, IEEE80211_IF_TYPE_AP))
- rt2x00_set_field16(®, TXRX_CSR19_TSF_SYNC, 2);
- else if (is_interface_type(intf, IEEE80211_IF_TYPE_STA))
- rt2x00_set_field16(®, TXRX_CSR19_TSF_SYNC, 1);
- else
- rt2x00_set_field16(®, TXRX_CSR19_TSF_SYNC, 0);
+ rt2x00_set_field16(®, TXRX_CSR19_TSF_SYNC, tsf_sync);
rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg);
}
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 235e5ad..27bec6e 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -410,7 +410,8 @@ struct rt2x00lib_ops {
*/
void (*config_mac_addr) (struct rt2x00_dev *rt2x00dev, __le32 *mac);
void (*config_bssid) (struct rt2x00_dev *rt2x00dev, __le32 *bssid);
- void (*config_type) (struct rt2x00_dev *rt2x00dev, const int type);
+ void (*config_type) (struct rt2x00_dev *rt2x00dev, const int type,
+ const int tsf_sync);
void (*config) (struct rt2x00_dev *rt2x00dev, const unsigned int flags,
struct ieee80211_conf *conf);
#define CONFIG_UPDATE_PHYMODE ( 1 << 1 )
diff --git a/drivers/net/wireless/rt2x00/rt2x00config.c b/drivers/net/wireless/rt2x00/rt2x00config.c
index aeeaa0c..f8e87aa 100644
--- a/drivers/net/wireless/rt2x00/rt2x00config.c
+++ b/drivers/net/wireless/rt2x00/rt2x00config.c
@@ -74,10 +74,24 @@ void rt2x00lib_config_bssid(struct rt2x00_dev *rt2x00dev, u8 *bssid)
rt2x00dev->ops->lib->config_bssid(rt2x00dev, ®[0]);
}
-void rt2x00lib_config_type(struct rt2x00_dev *rt2x00dev, int type)
+void rt2x00lib_config_type(struct rt2x00_dev *rt2x00dev, const int type)
{
- if (type != INVALID_INTERFACE)
- rt2x00dev->ops->lib->config_type(rt2x00dev, type);
+ int tsf_sync;
+
+ switch (type) {
+ case IEEE80211_IF_TYPE_IBSS:
+ case IEEE80211_IF_TYPE_AP:
+ tsf_sync = TSF_SYNC_BEACON;
+ break;
+ case IEEE80211_IF_TYPE_STA:
+ tsf_sync = TSF_SYNC_INFRA;
+ break;
+ default:
+ tsf_sync = TSF_SYNC_NONE;
+ break;
+ }
+
+ rt2x00dev->ops->lib->config_type(rt2x00dev, type, tsf_sync);
}
void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,
diff --git a/drivers/net/wireless/rt2x00/rt2x00lib.h b/drivers/net/wireless/rt2x00/rt2x00lib.h
index 0ab39ca..29ca932 100644
--- a/drivers/net/wireless/rt2x00/rt2x00lib.h
+++ b/drivers/net/wireless/rt2x00/rt2x00lib.h
@@ -52,7 +52,7 @@ void rt2x00lib_uninitialize(struct rt2x00_dev *rt2x00dev);
*/
void rt2x00lib_config_mac_addr(struct rt2x00_dev *rt2x00dev, u8 *mac);
void rt2x00lib_config_bssid(struct rt2x00_dev *rt2x00dev, u8 *bssid);
-void rt2x00lib_config_type(struct rt2x00_dev *rt2x00dev, int type);
+void rt2x00lib_config_type(struct rt2x00_dev *rt2x00dev, const int type);
void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,
struct ieee80211_conf *conf, const int force_config);
diff --git a/drivers/net/wireless/rt2x00/rt2x00reg.h b/drivers/net/wireless/rt2x00/rt2x00reg.h
index 7927d5f..8384212 100644
--- a/drivers/net/wireless/rt2x00/rt2x00reg.h
+++ b/drivers/net/wireless/rt2x00/rt2x00reg.h
@@ -59,6 +59,15 @@ enum led_mode {
};
/*
+ * TSF sync values
+ */
+enum tsf_sync {
+ TSF_SYNC_NONE = 0,
+ TSF_SYNC_INFRA = 1,
+ TSF_SYNC_BEACON = 2,
+};
+
+/*
* Device states
*/
enum dev_state {
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index ba6153a..62f1297 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -300,9 +300,9 @@ static void rt61pci_config_bssid(struct rt2x00_dev *rt2x00dev, __le32 *bssid)
(2 * sizeof(__le32)));
}
-static void rt61pci_config_type(struct rt2x00_dev *rt2x00dev, const int type)
+static void rt61pci_config_type(struct rt2x00_dev *rt2x00dev, const int type,
+ const int tsf_sync)
{
- struct interface *intf = &rt2x00dev->interface;
u32 reg;
/*
@@ -324,13 +324,7 @@ static void rt61pci_config_type(struct rt2x00_dev *rt2x00dev, const int type)
rt2x00_set_field32(®, TXRX_CSR9_TSF_TICKING, 1);
rt2x00_set_field32(®, TXRX_CSR9_TBTT_ENABLE, 1);
rt2x00_set_field32(®, TXRX_CSR9_BEACON_GEN, 0);
- if (is_interface_type(intf, IEEE80211_IF_TYPE_IBSS) ||
- is_interface_type(intf, IEEE80211_IF_TYPE_AP))
- rt2x00_set_field32(®, TXRX_CSR9_TSF_SYNC, 2);
- else if (is_interface_type(intf, IEEE80211_IF_TYPE_STA))
- rt2x00_set_field32(®, TXRX_CSR9_TSF_SYNC, 1);
- else
- rt2x00_set_field32(®, TXRX_CSR9_TSF_SYNC, 0);
+ rt2x00_set_field32(®, TXRX_CSR9_TSF_SYNC, tsf_sync);
rt2x00pci_register_write(rt2x00dev, TXRX_CSR9, reg);
}
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index f48e5fb..e7887c3 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -279,9 +279,9 @@ static void rt73usb_config_bssid(struct rt2x00_dev *rt2x00dev, __le32 *bssid)
(2 * sizeof(__le32)));
}
-static void rt73usb_config_type(struct rt2x00_dev *rt2x00dev, const int type)
+static void rt73usb_config_type(struct rt2x00_dev *rt2x00dev, const int type,
+ const int tsf_sync)
{
- struct interface *intf = &rt2x00dev->interface;
u32 reg;
/*
@@ -303,13 +303,7 @@ static void rt73usb_config_type(struct rt2x00_dev *rt2x00dev, const int type)
rt2x00_set_field32(®, TXRX_CSR9_TSF_TICKING, 1);
rt2x00_set_field32(®, TXRX_CSR9_TBTT_ENABLE, 1);
rt2x00_set_field32(®, TXRX_CSR9_BEACON_GEN, 0);
- if (is_interface_type(intf, IEEE80211_IF_TYPE_IBSS) ||
- is_interface_type(intf, IEEE80211_IF_TYPE_AP))
- rt2x00_set_field32(®, TXRX_CSR9_TSF_SYNC, 2);
- else if (is_interface_type(intf, IEEE80211_IF_TYPE_STA))
- rt2x00_set_field32(®, TXRX_CSR9_TSF_SYNC, 1);
- else
- rt2x00_set_field32(®, TXRX_CSR9_TSF_SYNC, 0);
+ rt2x00_set_field32(®, TXRX_CSR9_TSF_SYNC, tsf_sync);
rt73usb_register_write(rt2x00dev, TXRX_CSR9, reg);
}
--
1.5.3.4
next prev parent reply other threads:[~2007-10-06 12:04 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200710061410.31765.IvDoorn@gmail.com>
2007-10-06 12:11 ` [PATCH 01/16] rt2x00: Remove duplicate code in MAC & BSSID handling Ivo van Doorn
2007-10-06 12:12 ` [PATCH 02/16] rt2x00: Remove radio check from rt2x00lib_toggle_rx Ivo van Doorn
2007-10-06 12:12 ` [PATCH 03/16] rt2x00: Store "STARTED" state during suspend Ivo van Doorn
2007-10-06 12:13 ` [PATCH 04/16] rt2x00: Move rt2x00dev flags into enumeration Ivo van Doorn
2007-10-06 12:13 ` [PATCH 05/16] rt2x00: Don't use changed_flags inside configure_packet_filter Ivo van Doorn
2007-10-06 12:14 ` [PATCH 06/16] rt2x00: Fix rfkill handling Ivo van Doorn
2007-10-06 12:14 ` Ivo van Doorn [this message]
2007-10-06 12:14 ` [PATCH 08/16] rt2x00: get_duration expects values in 100kbs Ivo van Doorn
2007-10-06 12:15 ` [PATCH 09/16] rt2x00: Cut lines down to 80 characters Ivo van Doorn
2007-10-06 12:15 ` [PATCH 10/16] rt2x00: Add get_tx_data_len callback function Ivo van Doorn
2007-10-06 12:16 ` [PATCH 11/16] rt2x00: Pass dev_state to rt2x00lib_toggle_rx Ivo van Doorn
2007-10-06 12:16 ` [PATCH 12/16] rt2x00: Small optimizations Ivo van Doorn
2007-10-06 12:17 ` [PATCH 13/16] rt2x00: Reorganize configuration handler Ivo van Doorn
2007-10-06 12:18 ` [PATCH 14/16] rt2x00: Clean disabling of rt73usb_get_tsf Ivo van Doorn
2007-10-06 12:18 ` [PATCH 15/16] rt2x00: Allways memset memory obtained from skb_push() Ivo van Doorn
2007-10-06 12:18 ` [PATCH 16/16] rt2x00: Release 2.0.10 Ivo van Doorn
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=200710061414.30195.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=rt2400-devel@lists.sourceforge.net \
/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.