Skip to content

Commit

Permalink
orinoco: always use latest BSS info when caching scan results
Browse files Browse the repository at this point in the history
Always copy the latest BSS information from the firmware's results to
the driver's BSS table to ensure that everything is up-to-date (IEs,
supported rates, encryption status, etc).

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Dan Williams authored and David S. Miller committed Jan 28, 2008
1 parent ef31224 commit 2236761
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions drivers/net/wireless/orinoco.c
Original file line number Diff line number Diff line change
Expand Up @@ -1194,7 +1194,7 @@ static int orinoco_process_scan_results(struct net_device *dev,
/* Read the entries one by one */
for (; offset + atom_len <= len; offset += atom_len) {
int found = 0;
bss_element *bss;
bss_element *bss = NULL;

/* Get next atom */
atom = (union hermes_scan_info *) (buf + offset);
Expand All @@ -1209,7 +1209,6 @@ static int orinoco_process_scan_results(struct net_device *dev,
if (memcmp(bss->bss.a.essid, atom->a.essid,
le16_to_cpu(atom->a.essid_len)))
continue;
bss->last_scanned = jiffies;
found = 1;
break;
}
Expand All @@ -1220,10 +1219,14 @@ static int orinoco_process_scan_results(struct net_device *dev,
bss_element, list);
list_del(priv->bss_free_list.next);

memcpy(bss, atom, sizeof(bss->bss));
bss->last_scanned = jiffies;
list_add_tail(&bss->list, &priv->bss_list);
}

if (bss) {
/* Always update the BSS to get latest beacon info */
memcpy(&bss->bss, atom, sizeof(bss->bss));
bss->last_scanned = jiffies;
}
}

return 0;
Expand Down

0 comments on commit 2236761

Please sign in to comment.