/** 
 *  @brief This function cleans module
 *  
 *  @return        n/a
 */
static void
wlan_cleanup_module(void)
{
    wlan_private *priv = wlanpriv;
    wlan_adapter *Adapter = NULL;

    ENTER();

    if (OS_ACQ_SEMAPHORE_BLOCK(&AddRemoveCardSem))
        goto exit_sem_err;

    if (!priv || !priv->adapter)
        goto exit;

    Adapter = priv->adapter;

    /* Exit deep sleep */
    wlan_exit_deep_sleep_timeout(priv);

    if (Adapter->MediaConnectStatus == WlanMediaStateConnected)
        wlan_disconnect(priv);

    wlan_prepare_cmd(priv, HostCmd_CMD_FUNC_SHUTDOWN,
                     0, HostCmd_OPTION_WAITFORRSP | HostCmd_OPTION_TIMEOUT,
                     0, NULL);

    /* Disable interrupts on the card */
    sbi_disable_host_int(priv);

  exit:
    OS_REL_SEMAPHORE(&AddRemoveCardSem);
  exit_sem_err:
    sbi_unregister();
    LEAVE();
}
Exemple #2
0
/** 
 *  @brief This function cleans module
 *  
 *  @param priv    n/a
 *  @return 	   n/a
 */
void
wlan_cleanup_module(void)
{
    ENTER();

    sbi_unregister();

    LEAVE();
}