qcacmn: Address synchronization issue in 11d state machine
Currently whenever host gets an indication for the cc event list, it starts 11d machine and inside 11d state machine, it decides that whether host needs to send start 11d scan command to fw or stop 11d scan command to fw, based on that it updates the enable_11d_supp variable of regulatory psoc private object and posts the message to scheduler. FW expects that host should not send back to back 11d start scan command, there should be one 11d stop scan command before next 11d start scan command is sent if already one 11d start scan command is sent. Host 11d state machine takes care of the above sequence of 11d scan command by using enable_11d_supp. 11d state machine sets enable_11d_supp whenever 11d scan start command needs to be sent and resets enable_11d_supp whenever 11d scan stop command needs to be sent and posts the message in the scheduler. There is a case where if host receives the 11d cc event from FW it sends the set country command to FW and at the same time if user command comes to set the country, host again sends the set country command to FW. FW processes both of these commands and sends the cc list event to host. when host receives cc events it starts the 11d machine. For the first cc event which is for 11d country which is processed as user country because of incorrect logic in reg process master channel list where it is assumed that at a time only one type of country set command can be pending and first priority is given to the user country pending, host resets enable_11d_supp and post the command to scheduler. When host receives the cc list event for the user country it is processed as 11d country and inside 11d state machine it sets enable_11d_supp and posts the command to scheduler. Now if scheduler schedules these commands it treats both the commands as start 11d scan commands as enable_11d_supp is set and sends start 11d scan command back to back. To avoid above issue, add enable_11d_supp also as part of the scheduler msg body pointer along with the psoc, in she scheduler callback use this local variable to decide whether 11d start scan needs to be sent or 11d stop scan needs to be sent. Change-Id: I60150da1475251a1c22778a0f924bdfbe1bb1140 CRs-Fixed: 2641803
Loading
Please register or sign in to comment