aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2007-12-27 01:54:06 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:09:10 -0500
commit5b5e807fb8b56e31319fe8b27e1b072bb80862a8 (patch)
treecd72cb9c83895ab8533b4551193b193b0fb5e19d
parente62e1ee02900bc315d7aeba55196a78f8f62f1c5 (diff)
ipw2200: do not byteswap struct ipw_associate
keep it little-endian, update places that use its members Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ipw2200.c48
-rw-r--r--drivers/net/wireless/ipw2200.h18
2 files changed, 26 insertions, 40 deletions
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
index 7ac57f1fc18b..3e6ad7b92c83 100644
--- a/drivers/net/wireless/ipw2200.c
+++ b/drivers/net/wireless/ipw2200.c
@@ -2352,27 +2352,13 @@ static int ipw_set_sensitivity(struct ipw_priv *priv, u16 sens)
2352static int ipw_send_associate(struct ipw_priv *priv, 2352static int ipw_send_associate(struct ipw_priv *priv,
2353 struct ipw_associate *associate) 2353 struct ipw_associate *associate)
2354{ 2354{
2355 struct ipw_associate tmp_associate;
2356
2357 if (!priv || !associate) { 2355 if (!priv || !associate) {
2358 IPW_ERROR("Invalid args\n"); 2356 IPW_ERROR("Invalid args\n");
2359 return -1; 2357 return -1;
2360 } 2358 }
2361 2359
2362 memcpy(&tmp_associate, associate, sizeof(*associate)); 2360 return ipw_send_cmd_pdu(priv, IPW_CMD_ASSOCIATE, sizeof(*associate),
2363 tmp_associate.policy_support = 2361 associate);
2364 cpu_to_le16(tmp_associate.policy_support);
2365 tmp_associate.assoc_tsf_msw = cpu_to_le32(tmp_associate.assoc_tsf_msw);
2366 tmp_associate.assoc_tsf_lsw = cpu_to_le32(tmp_associate.assoc_tsf_lsw);
2367 tmp_associate.capability = cpu_to_le16(tmp_associate.capability);
2368 tmp_associate.listen_interval =
2369 cpu_to_le16(tmp_associate.listen_interval);
2370 tmp_associate.beacon_interval =
2371 cpu_to_le16(tmp_associate.beacon_interval);
2372 tmp_associate.atim_window = cpu_to_le16(tmp_associate.atim_window);
2373
2374 return ipw_send_cmd_pdu(priv, IPW_CMD_ASSOCIATE, sizeof(tmp_associate),
2375 &tmp_associate);
2376} 2362}
2377 2363
2378static int ipw_send_supported_rates(struct ipw_priv *priv, 2364static int ipw_send_supported_rates(struct ipw_priv *priv,
@@ -4168,7 +4154,7 @@ static void ipw_gather_stats(struct ipw_priv *priv)
4168 priv->last_missed_beacons = priv->missed_beacons; 4154 priv->last_missed_beacons = priv->missed_beacons;
4169 if (priv->assoc_request.beacon_interval) { 4155 if (priv->assoc_request.beacon_interval) {
4170 missed_beacons_percent = missed_beacons_delta * 4156 missed_beacons_percent = missed_beacons_delta *
4171 (HZ * priv->assoc_request.beacon_interval) / 4157 (HZ * le16_to_cpu(priv->assoc_request.beacon_interval)) /
4172 (IPW_STATS_INTERVAL * 10); 4158 (IPW_STATS_INTERVAL * 10);
4173 } else { 4159 } else {
4174 missed_beacons_percent = 0; 4160 missed_beacons_percent = 0;
@@ -4432,9 +4418,9 @@ static void ipw_rx_notification(struct ipw_priv *priv,
4432 workqueue, 4418 workqueue,
4433 &priv-> 4419 &priv->
4434 adhoc_check, 4420 adhoc_check,
4435 priv-> 4421 le16_to_cpu(priv->
4436 assoc_request. 4422 assoc_request.
4437 beacon_interval); 4423 beacon_interval));
4438 break; 4424 break;
4439 } 4425 }
4440 4426
@@ -6044,7 +6030,7 @@ static void ipw_adhoc_check(void *data)
6044 } 6030 }
6045 6031
6046 queue_delayed_work(priv->workqueue, &priv->adhoc_check, 6032 queue_delayed_work(priv->workqueue, &priv->adhoc_check,
6047 priv->assoc_request.beacon_interval); 6033 le16_to_cpu(priv->assoc_request.beacon_interval));
6048} 6034}
6049 6035
6050static void ipw_bg_adhoc_check(struct work_struct *work) 6036static void ipw_bg_adhoc_check(struct work_struct *work)
@@ -7287,7 +7273,7 @@ static int ipw_associate_network(struct ipw_priv *priv,
7287 priv->assoc_request.auth_type = AUTH_OPEN; 7273 priv->assoc_request.auth_type = AUTH_OPEN;
7288 7274
7289 if (priv->ieee->wpa_ie_len) { 7275 if (priv->ieee->wpa_ie_len) {
7290 priv->assoc_request.policy_support = 0x02; /* RSN active */ 7276 priv->assoc_request.policy_support = cpu_to_le16(0x02); /* RSN active */
7291 ipw_set_rsn_capa(priv, priv->ieee->wpa_ie, 7277 ipw_set_rsn_capa(priv, priv->ieee->wpa_ie,
7292 priv->ieee->wpa_ie_len); 7278 priv->ieee->wpa_ie_len);
7293 } 7279 }
@@ -7304,7 +7290,7 @@ static int ipw_associate_network(struct ipw_priv *priv,
7304 else if (network->mode & priv->ieee->mode & IEEE_B) 7290 else if (network->mode & priv->ieee->mode & IEEE_B)
7305 priv->assoc_request.ieee_mode = IPW_B_MODE; 7291 priv->assoc_request.ieee_mode = IPW_B_MODE;
7306 7292
7307 priv->assoc_request.capability = network->capability; 7293 priv->assoc_request.capability = cpu_to_le16(network->capability);
7308 if ((network->capability & WLAN_CAPABILITY_SHORT_PREAMBLE) 7294 if ((network->capability & WLAN_CAPABILITY_SHORT_PREAMBLE)
7309 && !(priv->config & CFG_PREAMBLE_LONG)) { 7295 && !(priv->config & CFG_PREAMBLE_LONG)) {
7310 priv->assoc_request.preamble_length = DCT_FLAG_SHORT_PREAMBLE; 7296 priv->assoc_request.preamble_length = DCT_FLAG_SHORT_PREAMBLE;
@@ -7313,13 +7299,13 @@ static int ipw_associate_network(struct ipw_priv *priv,
7313 7299
7314 /* Clear the short preamble if we won't be supporting it */ 7300 /* Clear the short preamble if we won't be supporting it */
7315 priv->assoc_request.capability &= 7301 priv->assoc_request.capability &=
7316 ~WLAN_CAPABILITY_SHORT_PREAMBLE; 7302 ~cpu_to_le16(WLAN_CAPABILITY_SHORT_PREAMBLE);
7317 } 7303 }
7318 7304
7319 /* Clear capability bits that aren't used in Ad Hoc */ 7305 /* Clear capability bits that aren't used in Ad Hoc */
7320 if (priv->ieee->iw_mode == IW_MODE_ADHOC) 7306 if (priv->ieee->iw_mode == IW_MODE_ADHOC)
7321 priv->assoc_request.capability &= 7307 priv->assoc_request.capability &=
7322 ~WLAN_CAPABILITY_SHORT_SLOT_TIME; 7308 ~cpu_to_le16(WLAN_CAPABILITY_SHORT_SLOT_TIME);
7323 7309
7324 IPW_DEBUG_ASSOC("%sssocation attempt: '%s', channel %d, " 7310 IPW_DEBUG_ASSOC("%sssocation attempt: '%s', channel %d, "
7325 "802.11%c [%d], %s[:%s], enc=%s%s%s%c%c\n", 7311 "802.11%c [%d], %s[:%s], enc=%s%s%s%c%c\n",
@@ -7341,7 +7327,7 @@ static int ipw_associate_network(struct ipw_priv *priv,
7341 '1' + priv->ieee->sec.active_key : '.', 7327 '1' + priv->ieee->sec.active_key : '.',
7342 priv->capability & CAP_PRIVACY_ON ? '.' : ' '); 7328 priv->capability & CAP_PRIVACY_ON ? '.' : ' ');
7343 7329
7344 priv->assoc_request.beacon_interval = network->beacon_interval; 7330 priv->assoc_request.beacon_interval = cpu_to_le16(network->beacon_interval);
7345 if ((priv->ieee->iw_mode == IW_MODE_ADHOC) && 7331 if ((priv->ieee->iw_mode == IW_MODE_ADHOC) &&
7346 (network->time_stamp[0] == 0) && (network->time_stamp[1] == 0)) { 7332 (network->time_stamp[0] == 0) && (network->time_stamp[1] == 0)) {
7347 priv->assoc_request.assoc_type = HC_IBSS_START; 7333 priv->assoc_request.assoc_type = HC_IBSS_START;
@@ -7352,21 +7338,21 @@ static int ipw_associate_network(struct ipw_priv *priv,
7352 priv->assoc_request.assoc_type = HC_REASSOCIATE; 7338 priv->assoc_request.assoc_type = HC_REASSOCIATE;
7353 else 7339 else
7354 priv->assoc_request.assoc_type = HC_ASSOCIATE; 7340 priv->assoc_request.assoc_type = HC_ASSOCIATE;
7355 priv->assoc_request.assoc_tsf_msw = network->time_stamp[1]; 7341 priv->assoc_request.assoc_tsf_msw = cpu_to_le32(network->time_stamp[1]);
7356 priv->assoc_request.assoc_tsf_lsw = network->time_stamp[0]; 7342 priv->assoc_request.assoc_tsf_lsw = cpu_to_le32(network->time_stamp[0]);
7357 } 7343 }
7358 7344
7359 memcpy(priv->assoc_request.bssid, network->bssid, ETH_ALEN); 7345 memcpy(priv->assoc_request.bssid, network->bssid, ETH_ALEN);
7360 7346
7361 if (priv->ieee->iw_mode == IW_MODE_ADHOC) { 7347 if (priv->ieee->iw_mode == IW_MODE_ADHOC) {
7362 memset(&priv->assoc_request.dest, 0xFF, ETH_ALEN); 7348 memset(&priv->assoc_request.dest, 0xFF, ETH_ALEN);
7363 priv->assoc_request.atim_window = network->atim_window; 7349 priv->assoc_request.atim_window = cpu_to_le16(network->atim_window);
7364 } else { 7350 } else {
7365 memcpy(priv->assoc_request.dest, network->bssid, ETH_ALEN); 7351 memcpy(priv->assoc_request.dest, network->bssid, ETH_ALEN);
7366 priv->assoc_request.atim_window = 0; 7352 priv->assoc_request.atim_window = 0;
7367 } 7353 }
7368 7354
7369 priv->assoc_request.listen_interval = network->listen_interval; 7355 priv->assoc_request.listen_interval = cpu_to_le16(network->listen_interval);
7370 7356
7371 err = ipw_send_ssid(priv, priv->essid, priv->essid_len); 7357 err = ipw_send_ssid(priv, priv->essid, priv->essid_len);
7372 if (err) { 7358 if (err) {
@@ -10862,9 +10848,9 @@ static void shim__set_security(struct net_device *dev,
10862#if 0 10848#if 0
10863 if ((priv->status & (STATUS_ASSOCIATED | STATUS_ASSOCIATING)) && 10849 if ((priv->status & (STATUS_ASSOCIATED | STATUS_ASSOCIATING)) &&
10864 (((priv->assoc_request.capability & 10850 (((priv->assoc_request.capability &
10865 WLAN_CAPABILITY_PRIVACY) && !sec->enabled) || 10851 cpu_to_le16(WLAN_CAPABILITY_PRIVACY)) && !sec->enabled) ||
10866 (!(priv->assoc_request.capability & 10852 (!(priv->assoc_request.capability &
10867 WLAN_CAPABILITY_PRIVACY) && sec->enabled))) { 10853 cpu_to_le16(WLAN_CAPABILITY_PRIVACY)) && sec->enabled))) {
10868 IPW_DEBUG_ASSOC("Disassociating due to capability " 10854 IPW_DEBUG_ASSOC("Disassociating due to capability "
10869 "change.\n"); 10855 "change.\n");
10870 ipw_disassociate(priv); 10856 ipw_disassociate(priv);
diff --git a/drivers/net/wireless/ipw2200.h b/drivers/net/wireless/ipw2200.h
index fae57a9f8be4..fdc187e0769d 100644
--- a/drivers/net/wireless/ipw2200.h
+++ b/drivers/net/wireless/ipw2200.h
@@ -881,20 +881,20 @@ struct ipw_associate {
881 u8 auth_type:4, auth_key:4; 881 u8 auth_type:4, auth_key:4;
882 u8 assoc_type; 882 u8 assoc_type;
883 u8 reserved; 883 u8 reserved;
884 u16 policy_support; 884 __le16 policy_support;
885 u8 preamble_length; 885 u8 preamble_length;
886 u8 ieee_mode; 886 u8 ieee_mode;
887 u8 bssid[ETH_ALEN]; 887 u8 bssid[ETH_ALEN];
888 u32 assoc_tsf_msw; 888 __le32 assoc_tsf_msw;
889 u32 assoc_tsf_lsw; 889 __le32 assoc_tsf_lsw;
890 u16 capability; 890 __le16 capability;
891 u16 listen_interval; 891 __le16 listen_interval;
892 u16 beacon_interval; 892 __le16 beacon_interval;
893 u8 dest[ETH_ALEN]; 893 u8 dest[ETH_ALEN];
894 u16 atim_window; 894 __le16 atim_window;
895 u8 smr; 895 u8 smr;
896 u8 reserved1; 896 u8 reserved1;
897 u16 reserved2; 897 __le16 reserved2;
898} __attribute__ ((packed)); 898} __attribute__ ((packed));
899 899
900struct ipw_supported_rates { 900struct ipw_supported_rates {
@@ -1759,7 +1759,7 @@ enum {
1759#define HC_IBSS_RECONF 4 1759#define HC_IBSS_RECONF 4
1760#define HC_DISASSOC_QUIET 5 1760#define HC_DISASSOC_QUIET 5
1761 1761
1762#define HC_QOS_SUPPORT_ASSOC 0x01 1762#define HC_QOS_SUPPORT_ASSOC cpu_to_le16(0x01)
1763 1763
1764#define IPW_RATE_CAPABILITIES 1 1764#define IPW_RATE_CAPABILITIES 1
1765#define IPW_RATE_CONNECT 0 1765#define IPW_RATE_CONNECT 0