746 unsigned short nwid=ntohs(beacon->nwid);
747 unsigned short sigqual=stats[2] & MMR_SGNL_QUAL;
748 wavepoint_history *wavepoint=NULL;
749 net_local *lp = netdev_priv(dev);
750
751#ifdef I_NEED_THIS_FEATURE
752
753 nwid=nwid^ntohs(beacon->domain_id);
754#endif
755
756#if WAVELAN_ROAMING_DEBUG > 1
757 printk(KERN_DEBUG "WaveLAN: beacon, dev %s:\n",dev->name);
758 printk(KERN_DEBUG "Domain: %.4X NWID: %.4X SigQual=%d\n",ntohs(beacon->domain_id),nwid,sigqual);
759#endif
760
761 lp->wavepoint_table.locked=1;
762
763 wavepoint=wl_roam_check(nwid,lp);
764 if(wavepoint==NULL)
765 {
766 wavepoint=wl_new_wavepoint(nwid,beacon->seq,lp);
767 if(wavepoint==NULL)
768 goto out;
769 }
770 if(lp->curr_point==NULL)
771 wv_roam_handover(wavepoint, lp);
772
773 wl_update_history(wavepoint, sigqual, beacon->seq);
774
775
776 if(lp->curr_point->average_slow < SEARCH_THRESH_LOW)
777 if(!lp->cell_search)
778 wv_nwid_filter(NWID_PROMISC,lp);
779
780 if(wavepoint->average_slow >
781 lp->curr_point->average_slow + WAVELAN_ROAMING_DELTA)
782 wv_roam_handover(wavepoint, lp);
783
784 if(lp->curr_point->average_slow > SEARCH_THRESH_HIGH)
785 if(lp->cell_search)
786 wv_nwid_filter(!NWID_PROMISC,lp);