static void ath6kl_init_control_info(struct ath6kl *ar) { u8 ctr; clear_bit(WMI_ENABLED, &ar->flag); ath6kl_init_profile_info(ar); ar->def_txkey_index = 0; memset(ar->wep_key_list, 0, sizeof(ar->wep_key_list)); ar->ch_hint = 0; ar->listen_intvl_t = A_DEFAULT_LISTEN_INTERVAL; ar->listen_intvl_b = 0; ar->tx_pwr = 0; clear_bit(SKIP_SCAN, &ar->flag); set_bit(WMM_ENABLED, &ar->flag); ar->intra_bss = 1; memset(&ar->sc_params, 0, sizeof(ar->sc_params)); ar->sc_params.short_scan_ratio = WMI_SHORTSCANRATIO_DEFAULT; ar->sc_params.scan_ctrl_flags = DEFAULT_SCAN_CTRL_FLAGS; memset((u8 *)ar->sta_list, 0, AP_MAX_NUM_STA * sizeof(struct ath6kl_sta)); spin_lock_init(&ar->mcastpsq_lock); /* Init the PS queues */ for (ctr = 0; ctr < AP_MAX_NUM_STA; ctr++) { spin_lock_init(&ar->sta_list[ctr].psq_lock); skb_queue_head_init(&ar->sta_list[ctr].psq); } skb_queue_head_init(&ar->mcastpsq); memcpy(ar->ap_country_code, DEF_AP_COUNTRY_CODE, 3); }
void disconnect_timer_handler(unsigned long ptr) { struct net_device *dev = (struct net_device *)ptr; struct ath6kl_vif *vif = netdev_priv(dev); ath6kl_init_profile_info(vif); ath6kl_disconnect(vif); }