mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-26 06:33:19 -04:00
qcacld-3.0: Set nud_state to PROBE on NUD_FAILED event post roaming
In the issue scenario, roaming is triggered due to NUD_FAILED event and nud state is set to NONE once roaming is completed. NUD_FAILED events could be received without any NUD_PROBE INCOMPLETE events post this roaming and these nud failures are not honored due to which further roaming due to NUD_FAILURE won't be triggered. Fix is to set nud state to PROBE explicity on receiving NUD_FAILED event post roaming. Change-Id: Ib34b82f478263eb9664112a25f2d1f8bd858f5dc CRs-Fixed: 2837825
This commit is contained in:
parent
dcc97e4d06
commit
a62a5a637c
2 changed files with 17 additions and 2 deletions
|
|
@ -3085,6 +3085,9 @@ hdd_association_completion_handler(struct hdd_adapter *adapter,
|
|||
if (!reqRsnIe)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
if (roam_info->fReassocReq || ft_carrier_on)
|
||||
hdd_nud_indicate_roam(adapter);
|
||||
|
||||
/*
|
||||
* For reassoc, the station is already registered, all we need
|
||||
* is to change the state of the STA in TL.
|
||||
|
|
@ -3379,7 +3382,6 @@ hdd_association_completion_handler(struct hdd_adapter *adapter,
|
|||
eCSR_BSS_TYPE_INFRASTRUCTURE);
|
||||
}
|
||||
|
||||
hdd_nud_indicate_roam(adapter);
|
||||
/* Start the tx queues */
|
||||
hdd_debug("Enabling queues");
|
||||
hdd_netif_queue_enable(adapter);
|
||||
|
|
|
|||
|
|
@ -504,7 +504,20 @@ static void hdd_nud_filter_netevent(struct neighbour *neigh)
|
|||
|
||||
case NUD_FAILED:
|
||||
hdd_debug("NUD_FAILED [0x%x]", neigh->nud_state);
|
||||
hdd_nud_process_failure_event(adapter);
|
||||
/*
|
||||
* This condition is to handle the scenario where NUD_FAILED
|
||||
* events are received without any NUD_PROBE/INCOMPLETE event
|
||||
* post roaming. Nud state is set to NONE as part of roaming.
|
||||
* NUD_FAILED is not honored when the curr state is any state
|
||||
* other than NUD_PROBE/INCOMPLETE so post roaming, nud state
|
||||
* is moved to NUD_PROBE to honor future NUD_FAILED events.
|
||||
*/
|
||||
if (adapter->nud_tracking.curr_state == NUD_NONE) {
|
||||
hdd_nud_capture_stats(adapter, NUD_PROBE);
|
||||
hdd_nud_set_tracking(adapter, NUD_PROBE, true);
|
||||
} else {
|
||||
hdd_nud_process_failure_event(adapter);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
hdd_debug("NUD Event For Other State [0x%x]",
|
||||
|
|
|
|||
Loading…
Reference in a new issue