forked from Minki/linux
staging: ath6kl: Fixing disappearing of scan list due to jiffies wrap over
When jiffies wrap-over, all the BSS in the cache is removed. Wrap-over of jiffies is not handled in the correct way. This cause the scan list to go empty during this time for a small duration Signed-off-by: Vipin Mehta <vmehta@atheros.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
28f7e85a4b
commit
d0e0086893
@ -121,7 +121,7 @@ typedef spinlock_t A_MUTEX_T;
|
||||
|
||||
/* Get current time in ms adding a constant offset (in ms) */
|
||||
#define A_GET_MS(offset) \
|
||||
(jiffies + ((offset) / 1000) * HZ)
|
||||
(((jiffies / HZ) * 1000) + (offset))
|
||||
|
||||
/*
|
||||
* Timer Functions
|
||||
|
@ -122,7 +122,7 @@ wlan_setup_node(struct ieee80211_node_table *nt, bss_t *ni,
|
||||
|
||||
timeoutValue = nt->nt_nodeAge;
|
||||
|
||||
ni->ni_tstamp = A_GET_MS (timeoutValue);
|
||||
ni->ni_tstamp = A_GET_MS (0);
|
||||
ni->ni_actcnt = WLAN_NODE_INACT_CNT;
|
||||
|
||||
IEEE80211_NODE_LOCK_BH(nt);
|
||||
@ -360,7 +360,7 @@ wlan_refresh_inactive_nodes (struct ieee80211_node_table *nt)
|
||||
if (A_MEMCMP(myBssid, bss->ni_macaddr, sizeof(myBssid)) != 0)
|
||||
{
|
||||
|
||||
if (bss->ni_tstamp <= now || --bss->ni_actcnt == 0)
|
||||
if (((now - bss->ni_tstamp) > timeoutValue) || --bss->ni_actcnt == 0)
|
||||
{
|
||||
/*
|
||||
* free up all but the current bss - if set
|
||||
@ -381,6 +381,7 @@ wlan_node_timeout (A_ATH_TIMER arg)
|
||||
bss_t *bss, *nextBss;
|
||||
u8 myBssid[IEEE80211_ADDR_LEN], reArmTimer = false;
|
||||
u32 timeoutValue = 0;
|
||||
u32 now = A_GET_MS(0);
|
||||
|
||||
timeoutValue = nt->nt_nodeAge;
|
||||
|
||||
@ -393,7 +394,7 @@ wlan_node_timeout (A_ATH_TIMER arg)
|
||||
if (A_MEMCMP(myBssid, bss->ni_macaddr, sizeof(myBssid)) != 0)
|
||||
{
|
||||
|
||||
if (bss->ni_tstamp <= A_GET_MS(0))
|
||||
if ((now - bss->ni_tstamp) > timeoutValue)
|
||||
{
|
||||
/*
|
||||
* free up all but the current bss - if set
|
||||
|
Loading…
Reference in New Issue
Block a user