qcacld-3.0: Fix a beacon template update dead loop

When sap is started, a dead loop for beacon template updating
can happen due to the following conditions:

  1) before vdev start happens for sap, he_ops will be retrieved
     from the ie buffer imposed by upper layer, and bss color
     initial setup will also be retrieved here and then updated
     to session->he_op;

  2) and it happens at least in some cases, that session->he_op.
     bss_col_disabled will be set to true, but due to there is
     actually no bss color changing really happening here, no
     new color will be setup here;

  3) later when sap is running and starts to do beaconing, it
     will start to check if session->he_op.bss_col_disabled is
     setup to true, and if yes, new beacon template will be
     issued to fw;

  4) later on, fw finishes the beacon template setup and sends
     a notification to driver in beacon tx success event, and
     driver will go back to steps 3) to check
     session->he_op.bss_col_disabled again;

If no real bss color change happens here, step 3) and 4) will
loop forever.

Fix the above dead loop by introducing check of
session->he_bss_color_change.new_color before driver code starts
to inspect the bss color change countdown value and updating
beacon template to fw.

Change-Id: I4a32ce9f547e988087c769ad8fab2973582ce6e4
CRs-Fixed: 2764896
1 file changed