Loading drivers/net/wireless/ipw2200.c +20 −7 Original line number Diff line number Diff line Loading @@ -4082,6 +4082,11 @@ static void ipw_bg_gather_stats(void *data) up(&priv->sem); } /* Missed beacon behavior: * 1st missed -> roaming_threshold, just wait, don't do any scan/roam. * roaming_threshold -> disassociate_threshold, scan and roam for better signal. * Above disassociate threshold, give up and stop scanning. * Roaming is disabled if disassociate_threshold <= roaming_threshold */ static inline void ipw_handle_missed_beacon(struct ipw_priv *priv, int missed_count) { Loading Loading @@ -4116,9 +4121,12 @@ static inline void ipw_handle_missed_beacon(struct ipw_priv *priv, return; } if (missed_count > priv->roaming_threshold) { if (missed_count > priv->roaming_threshold && missed_count <= priv->disassociate_threshold) { /* If we are not already roaming, set the ROAM * bit in the status and kick off a scan */ * bit in the status and kick off a scan. * This can happen several times before we reach * disassociate_threshold. */ IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE, "Missed beacon: %d - initiate " "roaming\n", missed_count); Loading Loading @@ -4480,11 +4488,16 @@ static inline void ipw_rx_notification(struct ipw_priv *priv, STATUS_DISASSOCIATING))) queue_work(priv->workqueue, &priv->associate); else if (priv->status & STATUS_ROAMING) { if (x->status == SCAN_COMPLETED_STATUS_COMPLETE) /* If a scan completed and we are in roam mode, then * the scan that completed was the one requested as a * result of entering roam... so, schedule the * roam work */ queue_work(priv->workqueue, &priv->roam); queue_work(priv->workqueue, &priv->roam); else /* Don't schedule if we aborted the scan */ priv->status &= ~STATUS_ROAMING; } else if (priv->status & STATUS_SCAN_PENDING) queue_work(priv->workqueue, &priv->request_scan); Loading drivers/net/wireless/ipw2200.h +3 −0 Original line number Diff line number Diff line Loading @@ -590,6 +590,9 @@ struct notif_channel_result { u8 uReserved; } __attribute__ ((packed)); #define SCAN_COMPLETED_STATUS_COMPLETE 1 #define SCAN_COMPLETED_STATUS_ABORTED 2 struct notif_scan_complete { u8 scan_type; u8 num_channels; Loading Loading
drivers/net/wireless/ipw2200.c +20 −7 Original line number Diff line number Diff line Loading @@ -4082,6 +4082,11 @@ static void ipw_bg_gather_stats(void *data) up(&priv->sem); } /* Missed beacon behavior: * 1st missed -> roaming_threshold, just wait, don't do any scan/roam. * roaming_threshold -> disassociate_threshold, scan and roam for better signal. * Above disassociate threshold, give up and stop scanning. * Roaming is disabled if disassociate_threshold <= roaming_threshold */ static inline void ipw_handle_missed_beacon(struct ipw_priv *priv, int missed_count) { Loading Loading @@ -4116,9 +4121,12 @@ static inline void ipw_handle_missed_beacon(struct ipw_priv *priv, return; } if (missed_count > priv->roaming_threshold) { if (missed_count > priv->roaming_threshold && missed_count <= priv->disassociate_threshold) { /* If we are not already roaming, set the ROAM * bit in the status and kick off a scan */ * bit in the status and kick off a scan. * This can happen several times before we reach * disassociate_threshold. */ IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE, "Missed beacon: %d - initiate " "roaming\n", missed_count); Loading Loading @@ -4480,11 +4488,16 @@ static inline void ipw_rx_notification(struct ipw_priv *priv, STATUS_DISASSOCIATING))) queue_work(priv->workqueue, &priv->associate); else if (priv->status & STATUS_ROAMING) { if (x->status == SCAN_COMPLETED_STATUS_COMPLETE) /* If a scan completed and we are in roam mode, then * the scan that completed was the one requested as a * result of entering roam... so, schedule the * roam work */ queue_work(priv->workqueue, &priv->roam); queue_work(priv->workqueue, &priv->roam); else /* Don't schedule if we aborted the scan */ priv->status &= ~STATUS_ROAMING; } else if (priv->status & STATUS_SCAN_PENDING) queue_work(priv->workqueue, &priv->request_scan); Loading
drivers/net/wireless/ipw2200.h +3 −0 Original line number Diff line number Diff line Loading @@ -590,6 +590,9 @@ struct notif_channel_result { u8 uReserved; } __attribute__ ((packed)); #define SCAN_COMPLETED_STATUS_COMPLETE 1 #define SCAN_COMPLETED_STATUS_ABORTED 2 struct notif_scan_complete { u8 scan_type; u8 num_channels; Loading