qcacld-3.0: Properly handle failures after pre-enable during module start

In hdd_wlan_start_modules() failures after cds_pre_enable are not handled
properly, this leads to freed data structures access during next module
start because driver state is still set to opened state. Add fix to
properly handle failures after cds_pre_enable by 1st doing cds_post_disable
such that FW is PDEV suspended, SoC is reset, ce tasklets are killed and
interrupts are disabled before calling cds_close() because cds_close()
frees host posted buffers to FW and if FW is not PDEV suspended and host
frees posted buffers this can lead to SNOC errors and unknown HLOS memory
corruptions. Also change the driver state to closed state before doing
cds_close such that when next hdd_wlan_start_modules() comes then driver
gets re-opened and re-enabled properly.

Change-Id: I5abfa3c782480d130d7fd3f9087f7a071e4a3f70
CRs-Fixed: 2007845
1 file changed
tree: 2a8e8a35fc68f32ce8b183d124745951267721c0
  1. core/
  2. uapi/
  3. Android.mk
  4. Kbuild
  5. Kconfig
  6. Makefile
  7. README.txt