• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/wireless/iwmc3200wifi/

Lines Matching defs:iwm

46 #include "iwm.h"
53 static int iwm_send_lmac_ptrough_cmd(struct iwm_priv *iwm,
68 return iwm_hal_send_host_cmd(iwm, &udma_cmd, &umac_cmd, &lmac_cmd,
72 int iwm_send_wifi_if_cmd(struct iwm_priv *iwm, void *payload, u16 payload_size,
81 if (!test_bit(IWM_STATUS_READY, &iwm->status)) {
82 IWM_ERR(iwm, "Interface is not ready yet");
89 ret = iwm_hal_send_umac_cmd(iwm, &udma_cmd, &umac_cmd,
93 ret = wait_event_interruptible_timeout(iwm->wifi_ntfy_queue,
94 test_and_clear_bit(oid, &iwm->wifi_ntfy[0]),
147 int iwm_send_prio_table(struct iwm_priv *iwm)
166 switch (iwm->conf.mode) {
191 IWM_ERR(iwm, "Invalid coex_mode 0x%x\n",
196 IWM_WARN(iwm, "coexistense disabled\n");
198 return iwm_send_lmac_ptrough_cmd(iwm, COEX_PRIORITY_TABLE_CMD,
203 int iwm_send_init_calib_cfg(struct iwm_priv *iwm, u8 calib_requested)
215 return iwm_send_lmac_ptrough_cmd(iwm, CALIBRATION_CFG_CMD, &cal_cfg_cmd,
219 int iwm_send_periodic_calib_cfg(struct iwm_priv *iwm, u8 calib_requested)
228 return iwm_send_lmac_ptrough_cmd(iwm, CALIBRATION_CFG_CMD, &cal_cfg_cmd,
232 int iwm_store_rxiq_calib_result(struct iwm_priv *iwm)
235 u8 *eeprom_rxiq = iwm_eeprom_access(iwm, IWM_EEPROM_CALIB_RXIQ);
240 IWM_ERR(iwm, "Couldn't alloc memory for RX IQ\n");
244 eeprom_rxiq = iwm_eeprom_access(iwm, IWM_EEPROM_CALIB_RXIQ);
246 IWM_ERR(iwm, "Couldn't access EEPROM RX IQ entry\n");
251 iwm->calib_res[SHILOH_PHY_CALIBRATE_RX_IQ_CMD].buf = (u8 *)rxiq;
252 iwm->calib_res[SHILOH_PHY_CALIBRATE_RX_IQ_CMD].size = sizeof(*rxiq);
265 int iwm_send_calib_results(struct iwm_priv *iwm)
271 &iwm->calib_done_map)) {
272 IWM_DBG_CMD(iwm, DBG,
274 ret |= iwm_send_lmac_ptrough_cmd(iwm,
276 iwm->calib_res[i].buf,
277 iwm->calib_res[i].size, 0);
279 kfree(iwm->calib_res[i].buf);
280 iwm->calib_res[i].buf = NULL;
281 iwm->calib_res[i].size = 0;
288 int iwm_send_ct_kill_cfg(struct iwm_priv *iwm, u8 entry, u8 exit)
295 return iwm_send_lmac_ptrough_cmd(iwm, REPLY_CT_KILL_CONFIG_CMD, &cmd,
299 int iwm_send_umac_reset(struct iwm_priv *iwm, __le32 reset_flags, bool resp)
310 return iwm_hal_send_umac_cmd(iwm, &udma_cmd, &umac_cmd, &reset,
314 int iwm_umac_set_config_fix(struct iwm_priv *iwm, u16 tbl, u16 key, u32 value)
331 return iwm_hal_send_umac_cmd(iwm, &udma_cmd, &umac_cmd, &param,
335 int iwm_umac_set_config_var(struct iwm_priv *iwm, u16 key,
347 IWM_ERR(iwm, "Couldn't allocate param\n");
362 ret = iwm_hal_send_umac_cmd(iwm, &udma_cmd, &umac_cmd, param,
370 int iwm_send_umac_config(struct iwm_priv *iwm, __le32 reset_flags)
375 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
376 CFG_POWER_INDEX, iwm->conf.power_index);
380 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_FA_CFG_FIX,
382 iwm->conf.frag_threshold);
386 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
388 iwm->conf.rts_threshold);
392 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
393 CFG_CTS_TO_SELF, iwm->conf.cts_to_self);
397 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
399 iwm->conf.wireless_mode);
403 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
409 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
411 iwm->conf.assoc_timeout);
415 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
417 iwm->conf.roam_timeout);
421 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
428 ret = iwm_umac_set_config_var(iwm, CFG_NET_ADDR,
429 iwm_to_ndev(iwm)->dev_addr, ETH_ALEN);
434 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
439 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
444 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
449 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
455 ret = iwm_send_umac_reset(iwm, reset_flags, 1);
459 ret = iwm_notif_handle(iwm, UMAC_CMD_OPCODE_RESET, IWM_SRC_UMAC,
462 IWM_ERR(iwm, "Wait for UMAC RESET timeout\n");
469 int iwm_send_packet(struct iwm_priv *iwm, struct sk_buff *skb, int pool_id)
484 return iwm_hal_send_umac_cmd(iwm, &udma_cmd, &umac_cmd,
488 static int iwm_target_read(struct iwm_priv *iwm, __le32 address,
504 ret = iwm_hal_send_target_cmd(iwm, &target_cmd, NULL);
506 IWM_ERR(iwm, "Couldn't send READ command\n");
513 ret = wait_event_interruptible_timeout(iwm->nonwifi_queue,
514 (cmd = iwm_get_pending_nonwifi_cmd(iwm, seq_num,
519 IWM_ERR(iwm, "Didn't receive a target READ answer\n");
531 int iwm_read_mac(struct iwm_priv *iwm, u8 *mac)
536 ret = iwm_target_read(iwm, cpu_to_le32(WICO_MAC_ADDRESS_ADDR),
544 IWM_ERR(iwm, "Invalid EEPROM MAC\n");
545 memcpy(mac, iwm->conf.mac_addr, ETH_ALEN);
552 static int iwm_check_profile(struct iwm_priv *iwm)
554 if (!iwm->umac_profile_active)
557 if (iwm->umac_profile->sec.ucast_cipher != UMAC_CIPHER_TYPE_WEP_40 &&
558 iwm->umac_profile->sec.ucast_cipher != UMAC_CIPHER_TYPE_WEP_104 &&
559 iwm->umac_profile->sec.ucast_cipher != UMAC_CIPHER_TYPE_TKIP &&
560 iwm->umac_profile->sec.ucast_cipher != UMAC_CIPHER_TYPE_CCMP) {
561 IWM_ERR(iwm, "Wrong unicast cipher: 0x%x\n",
562 iwm->umac_profile->sec.ucast_cipher);
566 if (iwm->umac_profile->sec.mcast_cipher != UMAC_CIPHER_TYPE_WEP_40 &&
567 iwm->umac_profile->sec.mcast_cipher != UMAC_CIPHER_TYPE_WEP_104 &&
568 iwm->umac_profile->sec.mcast_cipher != UMAC_CIPHER_TYPE_TKIP &&
569 iwm->umac_profile->sec.mcast_cipher != UMAC_CIPHER_TYPE_CCMP) {
570 IWM_ERR(iwm, "Wrong multicast cipher: 0x%x\n",
571 iwm->umac_profile->sec.mcast_cipher);
575 if ((iwm->umac_profile->sec.ucast_cipher == UMAC_CIPHER_TYPE_WEP_40 ||
576 iwm->umac_profile->sec.ucast_cipher == UMAC_CIPHER_TYPE_WEP_104) &&
577 (iwm->umac_profile->sec.ucast_cipher !=
578 iwm->umac_profile->sec.mcast_cipher)) {
579 IWM_ERR(iwm, "Unicast and multicast ciphers differ for WEP\n");
585 int iwm_set_tx_key(struct iwm_priv *iwm, u8 key_idx)
590 ret = iwm_check_profile(iwm);
596 if ((iwm->umac_profile->sec.ucast_cipher != UMAC_CIPHER_TYPE_WEP_40 &&
597 iwm->umac_profile->sec.ucast_cipher != UMAC_CIPHER_TYPE_WEP_104) ||
598 iwm->umac_profile->sec.auth_type == UMAC_AUTH_TYPE_8021X ||
599 iwm->umac_profile->sec.auth_type == UMAC_AUTH_TYPE_RSNA_PSK)
608 return iwm_send_wifi_if_cmd(iwm, &tx_key_id, sizeof(tx_key_id), 1);
611 int iwm_set_key(struct iwm_priv *iwm, bool remove, struct iwm_key *key)
624 ret = iwm_check_profile(iwm);
635 u8 auth_type = iwm->umac_profile->sec.auth_type;
637 IWM_DBG_WEXT(iwm, DBG, "key_idx:%d\n", key_idx);
638 IWM_DBG_WEXT(iwm, DBG, "key_len:%d\n", key_len);
639 IWM_DBG_WEXT(iwm, DBG, "MAC:%pM, idx:%d, multicast:%d\n",
642 IWM_DBG_WEXT(iwm, DBG, "profile: mcast:0x%x, ucast:0x%x\n",
643 iwm->umac_profile->sec.mcast_cipher,
644 iwm->umac_profile->sec.ucast_cipher);
645 IWM_DBG_WEXT(iwm, DBG, "profile: auth_type:0x%x, flags:0x%x\n",
646 iwm->umac_profile->sec.auth_type,
647 iwm->umac_profile->sec.flags);
738 ret = iwm_send_wifi_if_cmd(iwm, cmd, cmd_size, 1);
742 IWM_DBG_WEXT(iwm, ERR, "Removing key_idx:%d\n", key_idx);
751 ret = iwm_send_wifi_if_cmd(iwm, &key_remove,
757 iwm->keys[key_idx].key_len = 0;
764 int iwm_send_mlme_profile(struct iwm_priv *iwm)
769 memcpy(&profile, iwm->umac_profile, sizeof(profile));
775 ret = iwm_send_wifi_if_cmd(iwm, &profile, sizeof(profile), 1);
777 IWM_ERR(iwm, "Send profile command failed\n");
781 set_bit(IWM_STATUS_SME_CONNECTING, &iwm->status);
785 int __iwm_invalidate_mlme_profile(struct iwm_priv *iwm)
796 return iwm_send_wifi_if_cmd(iwm, &invalid, sizeof(invalid), 1);
799 int iwm_invalidate_mlme_profile(struct iwm_priv *iwm)
803 ret = __iwm_invalidate_mlme_profile(iwm);
807 ret = wait_event_interruptible_timeout(iwm->mlme_queue,
808 (iwm->umac_profile_active == 0), 5 * HZ);
813 int iwm_tx_power_trigger(struct iwm_priv *iwm)
823 return iwm_send_wifi_if_cmd(iwm, &pwr_trigger, sizeof(pwr_trigger), 1);
826 int iwm_send_umac_stats_req(struct iwm_priv *iwm, u32 flags)
837 return iwm_hal_send_umac_cmd(iwm, &udma_cmd, &umac_cmd, &stats_req,
841 int iwm_send_umac_channel_list(struct iwm_priv *iwm)
852 IWM_ERR(iwm, "Couldn't allocate channel list cmd\n");
877 ret = iwm_hal_send_umac_cmd(iwm, &udma_cmd, &umac_cmd, ch_list, size);
884 int iwm_scan_ssids(struct iwm_priv *iwm, struct cfg80211_ssid *ssids,
897 req.seq_num = iwm->scan_id;
905 ret = iwm_send_wifi_if_cmd(iwm, &req, sizeof(req), 0);
907 IWM_ERR(iwm, "Couldn't send scan request\n");
911 iwm->scan_id = iwm->scan_id++ % IWM_SCAN_ID_MAX;
916 int iwm_scan_one_ssid(struct iwm_priv *iwm, u8 *ssid, int ssid_len)
920 if (test_and_set_bit(IWM_STATUS_SCANNING, &iwm->status))
926 return iwm_scan_ssids(iwm, &one_ssid, 1);
929 int iwm_target_reset(struct iwm_priv *iwm)
941 return iwm_hal_send_target_cmd(iwm, &target_cmd, NULL);
944 int iwm_send_umac_stop_resume_tx(struct iwm_priv *iwm,
954 sta_info = &iwm->sta_table[sta_id];
956 IWM_ERR(iwm, "Invalid STA: %d\n", sta_id);
970 return iwm_hal_send_umac_cmd(iwm, &udma_cmd, &umac_cmd, &stp_res_cmd,
975 int iwm_send_pmkid_update(struct iwm_priv *iwm,
993 ret = iwm_send_wifi_if_cmd(iwm, &update,
996 IWM_ERR(iwm, "PMKID update command failed\n");