aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorPavel Roskin <proski@gnu.org>2005-09-01 20:06:06 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-09-05 18:14:07 -0400
commitc89cc225f72ec240196733872fa1a9eb9d8335ac (patch)
tree08d8d46b486a3517f94e1c3d9077dbb156dcbd73 /drivers/net/wireless
parent708218b064e3ad3d55ac0f9d19b3c8c0fb7af3a4 (diff)
[PATCH] orinoco: Optimize orinoco_join_ap()
Signed-off-by: Pavel Roskin <proski@gnu.org> diff-tree cb289b9f9b2a0f3ae7070a008f22e383b37526ee (from 56bfcdb38b3d04c1f8c1fd705e411f4be53b663c) Author: Pavel Roskin <proski@gnu.org> Date: Thu Sep 1 19:05:16 2005 -0400 Optimize orinoco_join_ap() - break from loop once the requested BSSID is found. Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/orinoco.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c
index 95eb05abc44a..8de49fe57233 100644
--- a/drivers/net/wireless/orinoco.c
+++ b/drivers/net/wireless/orinoco.c
@@ -1053,8 +1053,9 @@ static void orinoco_join_ap(struct net_device *dev)
1053 u16 channel; 1053 u16 channel;
1054 } __attribute__ ((packed)) req; 1054 } __attribute__ ((packed)) req;
1055 const int atom_len = offsetof(struct prism2_scan_apinfo, atim); 1055 const int atom_len = offsetof(struct prism2_scan_apinfo, atim);
1056 struct prism2_scan_apinfo *atom; 1056 struct prism2_scan_apinfo *atom = NULL;
1057 int offset = 4; 1057 int offset = 4;
1058 int found = 0;
1058 u8 *buf; 1059 u8 *buf;
1059 u16 len; 1060 u16 len;
1060 1061
@@ -1089,15 +1090,18 @@ static void orinoco_join_ap(struct net_device *dev)
1089 * we were requested to join */ 1090 * we were requested to join */
1090 for (; offset + atom_len <= len; offset += atom_len) { 1091 for (; offset + atom_len <= len; offset += atom_len) {
1091 atom = (struct prism2_scan_apinfo *) (buf + offset); 1092 atom = (struct prism2_scan_apinfo *) (buf + offset);
1092 if (memcmp(&atom->bssid, priv->desired_bssid, ETH_ALEN) == 0) 1093 if (memcmp(&atom->bssid, priv->desired_bssid, ETH_ALEN) == 0) {
1093 goto found; 1094 found = 1;
1095 break;
1096 }
1094 } 1097 }
1095 1098
1096 DEBUG(1, "%s: Requested AP not found in scan results\n", 1099 if (! found) {
1097 dev->name); 1100 DEBUG(1, "%s: Requested AP not found in scan results\n",
1098 goto out; 1101 dev->name);
1102 goto out;
1103 }
1099 1104
1100 found:
1101 memcpy(req.bssid, priv->desired_bssid, ETH_ALEN); 1105 memcpy(req.bssid, priv->desired_bssid, ETH_ALEN);
1102 req.channel = atom->channel; /* both are little-endian */ 1106 req.channel = atom->channel; /* both are little-endian */
1103 err = HERMES_WRITE_RECORD(hw, USER_BAP, HERMES_RID_CNFJOINREQUEST, 1107 err = HERMES_WRITE_RECORD(hw, USER_BAP, HERMES_RID_CNFJOINREQUEST,