Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
[deliverable/linux.git] / drivers / net / wireless / mwifiex / sta_cmd.c
index 49422f2a53809fe0c241de93afb231c8011871c3..037adcd1f484abeb5f54478893ab7b1ff2b7ab76 100644 (file)
@@ -77,8 +77,8 @@ static int mwifiex_cmd_mac_control(struct mwifiex_private *priv,
        struct host_cmd_ds_mac_control *mac_ctrl = &cmd->params.mac_ctrl;
 
        if (cmd_action != HostCmd_ACT_GEN_SET) {
-               dev_err(priv->adapter->dev,
-                       "mac_control: only support set cmd\n");
+               mwifiex_dbg(priv->adapter, ERROR,
+                           "mac_control: only support set cmd\n");
                return -1;
        }
 
@@ -112,7 +112,8 @@ static int mwifiex_cmd_802_11_snmp_mib(struct mwifiex_private *priv,
 {
        struct host_cmd_ds_802_11_snmp_mib *snmp_mib = &cmd->params.smib;
 
-       dev_dbg(priv->adapter->dev, "cmd: SNMP_CMD: cmd_oid = 0x%x\n", cmd_oid);
+       mwifiex_dbg(priv->adapter, CMD,
+                   "cmd: SNMP_CMD: cmd_oid = 0x%x\n", cmd_oid);
        cmd->command = cpu_to_le16(HostCmd_CMD_802_11_SNMP_MIB);
        cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_802_11_snmp_mib)
                                - 1 + S_DS_GEN);
@@ -129,11 +130,11 @@ static int mwifiex_cmd_802_11_snmp_mib(struct mwifiex_private *priv,
                le16_add_cpu(&cmd->size, sizeof(u16));
        }
 
-       dev_dbg(priv->adapter->dev,
-               "cmd: SNMP_CMD: Action=0x%x, OID=0x%x, OIDSize=0x%x,"
-               " Value=0x%x\n",
-               cmd_action, cmd_oid, le16_to_cpu(snmp_mib->buf_size),
-               le16_to_cpu(*(__le16 *) snmp_mib->value));
+       mwifiex_dbg(priv->adapter, CMD,
+                   "cmd: SNMP_CMD: Action=0x%x, OID=0x%x,\t"
+                   "OIDSize=0x%x, Value=0x%x\n",
+                   cmd_action, cmd_oid, le16_to_cpu(snmp_mib->buf_size),
+                   le16_to_cpu(*(__le16 *)snmp_mib->value));
        return 0;
 }
 
@@ -356,9 +357,9 @@ mwifiex_cmd_802_11_hs_cfg(struct mwifiex_private *priv,
            (hscfg_param->conditions != cpu_to_le32(HS_CFG_CANCEL)) &&
            ((adapter->arp_filter_size > 0) &&
             (adapter->arp_filter_size <= ARP_FILTER_MAX_BUF_SIZE))) {
-               dev_dbg(adapter->dev,
-                       "cmd: Attach %d bytes ArpFilter to HSCfg cmd\n",
-                       adapter->arp_filter_size);
+               mwifiex_dbg(adapter, CMD,
+                           "cmd: Attach %d bytes ArpFilter to HSCfg cmd\n",
+                           adapter->arp_filter_size);
                memcpy(((u8 *) hs_cfg) +
                       sizeof(struct host_cmd_ds_802_11_hs_cfg_enh),
                       adapter->arp_filter, adapter->arp_filter_size);
@@ -378,11 +379,11 @@ mwifiex_cmd_802_11_hs_cfg(struct mwifiex_private *priv,
                hs_cfg->params.hs_config.conditions = hscfg_param->conditions;
                hs_cfg->params.hs_config.gpio = hscfg_param->gpio;
                hs_cfg->params.hs_config.gap = hscfg_param->gap;
-               dev_dbg(adapter->dev,
-                       "cmd: HS_CFG_CMD: condition:0x%x gpio:0x%x gap:0x%x\n",
-                      hs_cfg->params.hs_config.conditions,
-                      hs_cfg->params.hs_config.gpio,
-                      hs_cfg->params.hs_config.gap);
+               mwifiex_dbg(adapter, CMD,
+                           "cmd: HS_CFG_CMD: condition:0x%x gpio:0x%x gap:0x%x\n",
+                           hs_cfg->params.hs_config.conditions,
+                           hs_cfg->params.hs_config.gpio,
+                           hs_cfg->params.hs_config.gap);
        }
 
        return 0;
@@ -462,7 +463,7 @@ static int mwifiex_cmd_802_11_deauthenticate(struct mwifiex_private *priv,
        /* Set AP MAC address */
        memcpy(deauth->mac_addr, mac, ETH_ALEN);
 
-       dev_dbg(priv->adapter->dev, "cmd: Deauth: %pM\n", deauth->mac_addr);
+       mwifiex_dbg(priv->adapter, CMD, "cmd: Deauth: %pM\n", deauth->mac_addr);
 
        deauth->reason_code = cpu_to_le16(WLAN_REASON_DEAUTH_LEAVING);
 
@@ -540,9 +541,9 @@ mwifiex_set_keyparamset_wep(struct mwifiex_private *priv,
                } else if (!priv->wep_key[i].key_length) {
                        continue;
                } else {
-                       dev_err(priv->adapter->dev,
-                               "key%d Length = %d is incorrect\n",
-                              (i + 1), priv->wep_key[i].key_length);
+                       mwifiex_dbg(priv->adapter, ERROR,
+                                   "key%d Length = %d is incorrect\n",
+                                   (i + 1), priv->wep_key[i].key_length);
                        return -1;
                }
        }
@@ -562,7 +563,8 @@ static int mwifiex_set_aes_key_v2(struct mwifiex_private *priv,
        u16 size, len = KEY_PARAMS_FIXED_LEN;
 
        if (enc_key->is_igtk_key) {
-               dev_dbg(adapter->dev, "%s: Set CMAC AES Key\n", __func__);
+               mwifiex_dbg(adapter, INFO,
+                           "%s: Set CMAC AES Key\n", __func__);
                if (enc_key->is_rx_seq_valid)
                        memcpy(km->key_param_set.key_params.cmac_aes.ipn,
                               enc_key->pn, enc_key->pn_len);
@@ -575,7 +577,8 @@ static int mwifiex_set_aes_key_v2(struct mwifiex_private *priv,
                       enc_key->key_material, enc_key->key_len);
                len += sizeof(struct mwifiex_cmac_aes_param);
        } else {
-               dev_dbg(adapter->dev, "%s: Set AES Key\n", __func__);
+               mwifiex_dbg(adapter, INFO,
+                           "%s: Set AES Key\n", __func__);
                if (enc_key->is_rx_seq_valid)
                        memcpy(km->key_param_set.key_params.aes.pn,
                               enc_key->pn, enc_key->pn_len);
@@ -619,7 +622,7 @@ mwifiex_cmd_802_11_key_material_v2(struct mwifiex_private *priv,
        km->action = cpu_to_le16(cmd_action);
 
        if (cmd_action == HostCmd_ACT_GEN_GET) {
-               dev_dbg(adapter->dev, "%s: Get key\n", __func__);
+               mwifiex_dbg(adapter, INFO, "%s: Get key\n", __func__);
                km->key_param_set.key_idx =
                                        enc_key->key_index & KEY_INDEX_MASK;
                km->key_param_set.type = cpu_to_le16(TLV_TYPE_KEY_PARAM_V2);
@@ -646,7 +649,7 @@ mwifiex_cmd_802_11_key_material_v2(struct mwifiex_private *priv,
               sizeof(struct mwifiex_ie_type_key_param_set_v2));
 
        if (enc_key->key_disable) {
-               dev_dbg(adapter->dev, "%s: Remove key\n", __func__);
+               mwifiex_dbg(adapter, INFO, "%s: Remove key\n", __func__);
                km->action = cpu_to_le16(HostCmd_ACT_GEN_REMOVE);
                km->key_param_set.type = cpu_to_le16(TLV_TYPE_KEY_PARAM_V2);
                km->key_param_set.len = cpu_to_le16(KEY_PARAMS_FIXED_LEN);
@@ -667,7 +670,7 @@ mwifiex_cmd_802_11_key_material_v2(struct mwifiex_private *priv,
        memcpy(km->key_param_set.mac_addr, mac, ETH_ALEN);
 
        if (enc_key->key_len <= WLAN_KEY_LEN_WEP104) {
-               dev_dbg(adapter->dev, "%s: Set WEP Key\n", __func__);
+               mwifiex_dbg(adapter, INFO, "%s: Set WEP Key\n", __func__);
                len += sizeof(struct mwifiex_wep_param);
                km->key_param_set.len = cpu_to_le16(len);
                km->key_param_set.key_type = KEY_TYPE_ID_WEP;
@@ -710,7 +713,7 @@ mwifiex_cmd_802_11_key_material_v2(struct mwifiex_private *priv,
                key_info |= KEY_UNICAST | KEY_TX_KEY | KEY_RX_KEY;
 
        if (enc_key->is_wapi_key) {
-               dev_dbg(adapter->dev, "%s: Set WAPI Key\n", __func__);
+               mwifiex_dbg(adapter, INFO, "%s: Set WAPI Key\n", __func__);
                km->key_param_set.key_type = KEY_TYPE_ID_WAPI;
                memcpy(km->key_param_set.key_params.wapi.pn, enc_key->pn,
                       PN_LEN);
@@ -750,7 +753,8 @@ mwifiex_cmd_802_11_key_material_v2(struct mwifiex_private *priv,
                return mwifiex_set_aes_key_v2(priv, cmd, enc_key, km);
 
        if (enc_key->key_len == WLAN_KEY_LEN_TKIP) {
-               dev_dbg(adapter->dev, "%s: Set TKIP Key\n", __func__);
+               mwifiex_dbg(adapter, INFO,
+                           "%s: Set TKIP Key\n", __func__);
                if (enc_key->is_rx_seq_valid)
                        memcpy(km->key_param_set.key_params.tkip.pn,
                               enc_key->pn, enc_key->pn_len);
@@ -814,7 +818,7 @@ mwifiex_cmd_802_11_key_material_v1(struct mwifiex_private *priv,
                memset(&key_material->key_param_set, 0,
                       sizeof(struct mwifiex_ie_type_key_param_set));
        if (enc_key->is_wapi_key) {
-               dev_dbg(priv->adapter->dev, "info: Set WAPI Key\n");
+               mwifiex_dbg(priv->adapter, INFO, "info: Set WAPI Key\n");
                key_material->key_param_set.key_type_id =
                                                cpu_to_le16(KEY_TYPE_ID_WAPI);
                if (cmd_oid == KEY_INFO_ENABLED)
@@ -860,7 +864,7 @@ mwifiex_cmd_802_11_key_material_v1(struct mwifiex_private *priv,
        }
        if (enc_key->key_len == WLAN_KEY_LEN_CCMP) {
                if (enc_key->is_igtk_key) {
-                       dev_dbg(priv->adapter->dev, "cmd: CMAC_AES\n");
+                       mwifiex_dbg(priv->adapter, CMD, "cmd: CMAC_AES\n");
                        key_material->key_param_set.key_type_id =
                                        cpu_to_le16(KEY_TYPE_ID_AES_CMAC);
                        if (cmd_oid == KEY_INFO_ENABLED)
@@ -873,7 +877,7 @@ mwifiex_cmd_802_11_key_material_v1(struct mwifiex_private *priv,
                        key_material->key_param_set.key_info |=
                                                        cpu_to_le16(KEY_IGTK);
                } else {
-                       dev_dbg(priv->adapter->dev, "cmd: WPA_AES\n");
+                       mwifiex_dbg(priv->adapter, CMD, "cmd: WPA_AES\n");
                        key_material->key_param_set.key_type_id =
                                                cpu_to_le16(KEY_TYPE_ID_AES);
                        if (cmd_oid == KEY_INFO_ENABLED)
@@ -892,7 +896,7 @@ mwifiex_cmd_802_11_key_material_v1(struct mwifiex_private *priv,
                                                        cpu_to_le16(KEY_MCAST);
                }
        } else if (enc_key->key_len == WLAN_KEY_LEN_TKIP) {
-               dev_dbg(priv->adapter->dev, "cmd: WPA_TKIP\n");
+               mwifiex_dbg(priv->adapter, CMD, "cmd: WPA_TKIP\n");
                key_material->key_param_set.key_type_id =
                                                cpu_to_le16(KEY_TYPE_ID_TKIP);
                key_material->key_param_set.key_info =
@@ -999,7 +1003,8 @@ static int mwifiex_cmd_802_11d_domain_info(struct mwifiex_private *priv,
                &domain_info->domain;
        u8 no_of_triplet = adapter->domain_reg.no_of_triplet;
 
-       dev_dbg(adapter->dev, "info: 11D: no_of_triplet=0x%x\n", no_of_triplet);
+       mwifiex_dbg(adapter, INFO,
+                   "info: 11D: no_of_triplet=0x%x\n", no_of_triplet);
 
        cmd->command = cpu_to_le16(HostCmd_CMD_802_11D_DOMAIN_INFO);
        domain_info->action = cpu_to_le16(cmd_action);
@@ -1071,6 +1076,26 @@ static int mwifiex_cmd_ibss_coalescing_status(struct host_cmd_ds_command *cmd,
        return 0;
 }
 
+/* This function prepares command buffer to get/set memory location value.
+ */
+static int
+mwifiex_cmd_mem_access(struct host_cmd_ds_command *cmd, u16 cmd_action,
+                      void *pdata_buf)
+{
+       struct mwifiex_ds_mem_rw *mem_rw = (void *)pdata_buf;
+       struct host_cmd_ds_mem_access *mem_access = (void *)&cmd->params.mem;
+
+       cmd->command = cpu_to_le16(HostCmd_CMD_MEM_ACCESS);
+       cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_mem_access) +
+                               S_DS_GEN);
+
+       mem_access->action = cpu_to_le16(cmd_action);
+       mem_access->addr = cpu_to_le32(mem_rw->addr);
+       mem_access->value = cpu_to_le32(mem_rw->value);
+
+       return 0;
+}
+
 /*
  * This function prepares command to set/get register value.
  *
@@ -1215,8 +1240,9 @@ mwifiex_cmd_pcie_host_spec(struct mwifiex_private *priv,
                                                (u32)(card->sleep_cookie_pbase);
                host_spec->sleep_cookie_addr_hi =
                                 (u32)(((u64)(card->sleep_cookie_pbase)) >> 32);
-               dev_dbg(priv->adapter->dev, "sleep_cook_lo phy addr: 0x%x\n",
-                       host_spec->sleep_cookie_addr_lo);
+               mwifiex_dbg(priv->adapter, INFO,
+                           "sleep_cook_lo phy addr: 0x%x\n",
+                           host_spec->sleep_cookie_addr_lo);
        }
 
        return 0;
@@ -1243,7 +1269,8 @@ mwifiex_cmd_802_11_subsc_evt(struct mwifiex_private *priv,
                                S_DS_GEN);
 
        subsc_evt->action = cpu_to_le16(subsc_evt_cfg->action);
-       dev_dbg(priv->adapter->dev, "cmd: action: %d\n", subsc_evt_cfg->action);
+       mwifiex_dbg(priv->adapter, CMD,
+                   "cmd: action: %d\n", subsc_evt_cfg->action);
 
        /*For query requests, no configuration TLV structures are to be added.*/
        if (subsc_evt_cfg->action == HostCmd_ACT_GEN_GET)
@@ -1252,14 +1279,15 @@ mwifiex_cmd_802_11_subsc_evt(struct mwifiex_private *priv,
        subsc_evt->events = cpu_to_le16(subsc_evt_cfg->events);
 
        event_bitmap = subsc_evt_cfg->events;
-       dev_dbg(priv->adapter->dev, "cmd: event bitmap : %16x\n",
-               event_bitmap);
+       mwifiex_dbg(priv->adapter, CMD, "cmd: event bitmap : %16x\n",
+                   event_bitmap);
 
        if (((subsc_evt_cfg->action == HostCmd_ACT_BITWISE_CLR) ||
             (subsc_evt_cfg->action == HostCmd_ACT_BITWISE_SET)) &&
            (event_bitmap == 0)) {
-               dev_dbg(priv->adapter->dev, "Error: No event specified "
-                       "for bitwise action type\n");
+               mwifiex_dbg(priv->adapter, ERROR,
+                           "Error: No event specified\t"
+                           "for bitwise action type\n");
                return -EINVAL;
        }
 
@@ -1284,10 +1312,11 @@ mwifiex_cmd_802_11_subsc_evt(struct mwifiex_private *priv,
                rssi_tlv->abs_value = subsc_evt_cfg->bcn_l_rssi_cfg.abs_value;
                rssi_tlv->evt_freq = subsc_evt_cfg->bcn_l_rssi_cfg.evt_freq;
 
-               dev_dbg(priv->adapter->dev, "Cfg Beacon Low Rssi event, "
-                       "RSSI:-%d dBm, Freq:%d\n",
-                       subsc_evt_cfg->bcn_l_rssi_cfg.abs_value,
-                       subsc_evt_cfg->bcn_l_rssi_cfg.evt_freq);
+               mwifiex_dbg(priv->adapter, EVENT,
+                           "Cfg Beacon Low Rssi event,\t"
+                           "RSSI:-%d dBm, Freq:%d\n",
+                           subsc_evt_cfg->bcn_l_rssi_cfg.abs_value,
+                           subsc_evt_cfg->bcn_l_rssi_cfg.evt_freq);
 
                pos += sizeof(struct mwifiex_ie_types_rssi_threshold);
                le16_add_cpu(&cmd->size,
@@ -1304,10 +1333,11 @@ mwifiex_cmd_802_11_subsc_evt(struct mwifiex_private *priv,
                rssi_tlv->abs_value = subsc_evt_cfg->bcn_h_rssi_cfg.abs_value;
                rssi_tlv->evt_freq = subsc_evt_cfg->bcn_h_rssi_cfg.evt_freq;
 
-               dev_dbg(priv->adapter->dev, "Cfg Beacon High Rssi event, "
-                       "RSSI:-%d dBm, Freq:%d\n",
-                       subsc_evt_cfg->bcn_h_rssi_cfg.abs_value,
-                       subsc_evt_cfg->bcn_h_rssi_cfg.evt_freq);
+               mwifiex_dbg(priv->adapter, EVENT,
+                           "Cfg Beacon High Rssi event,\t"
+                           "RSSI:-%d dBm, Freq:%d\n",
+                           subsc_evt_cfg->bcn_h_rssi_cfg.abs_value,
+                           subsc_evt_cfg->bcn_h_rssi_cfg.evt_freq);
 
                pos += sizeof(struct mwifiex_ie_types_rssi_threshold);
                le16_add_cpu(&cmd->size,
@@ -1463,12 +1493,14 @@ static int mwifiex_cmd_cfg_data(struct mwifiex_private *priv,
                                                data, len);
                if (ret)
                        return ret;
-               dev_dbg(adapter->dev,
-                       "download cfg_data from device tree: %s\n", prop->name);
+               mwifiex_dbg(adapter, INFO,
+                           "download cfg_data from device tree: %s\n",
+                           prop->name);
        } else if (adapter->cal_data->data && adapter->cal_data->size > 0) {
                len = mwifiex_parse_cal_cfg((u8 *)adapter->cal_data->data,
                                            adapter->cal_data->size, data);
-               dev_dbg(adapter->dev, "download cfg_data from config file\n");
+               mwifiex_dbg(adapter, INFO,
+                           "download cfg_data from config file\n");
        } else {
                return -1;
        }
@@ -1583,9 +1615,9 @@ mwifiex_cmd_tdls_oper(struct mwifiex_private *priv,
                tdls_oper->tdls_action = cpu_to_le16(ACT_TDLS_CONFIG);
 
                if (!params) {
-                       dev_err(priv->adapter->dev,
-                               "TDLS config params not available for %pM\n",
-                               oper->peer_mac);
+                       mwifiex_dbg(priv->adapter, ERROR,
+                                   "TDLS config params not available for %pM\n",
+                                   oper->peer_mac);
                        return -ENODATA;
                }
 
@@ -1663,7 +1695,7 @@ mwifiex_cmd_tdls_oper(struct mwifiex_private *priv,
 
                break;
        default:
-               dev_err(priv->adapter->dev, "Unknown TDLS operation\n");
+               mwifiex_dbg(priv->adapter, ERROR, "Unknown TDLS operation\n");
                return -ENOTSUPP;
        }
 
@@ -1870,8 +1902,8 @@ int mwifiex_sta_prepare_cmd(struct mwifiex_private *priv, uint16_t cmd_no,
                ret = mwifiex_cmd_11n_cfg(priv, cmd_ptr, cmd_action, data_buf);
                break;
        case HostCmd_CMD_WMM_GET_STATUS:
-               dev_dbg(priv->adapter->dev,
-                       "cmd: WMM: WMM_GET_STATUS cmd sent\n");
+               mwifiex_dbg(priv->adapter, CMD,
+                           "cmd: WMM: WMM_GET_STATUS cmd sent\n");
                cmd_ptr->command = cpu_to_le16(HostCmd_CMD_WMM_GET_STATUS);
                cmd_ptr->size =
                        cpu_to_le16(sizeof(struct host_cmd_ds_wmm_get_status) +
@@ -1885,6 +1917,9 @@ int mwifiex_sta_prepare_cmd(struct mwifiex_private *priv, uint16_t cmd_no,
        case HostCmd_CMD_802_11_SCAN_EXT:
                ret = mwifiex_cmd_802_11_scan_ext(priv, cmd_ptr, data_buf);
                break;
+       case HostCmd_CMD_MEM_ACCESS:
+               ret = mwifiex_cmd_mem_access(cmd_ptr, cmd_action, data_buf);
+               break;
        case HostCmd_CMD_MAC_REG_ACCESS:
        case HostCmd_CMD_BBP_REG_ACCESS:
        case HostCmd_CMD_RF_REG_ACCESS:
@@ -1932,8 +1967,8 @@ int mwifiex_sta_prepare_cmd(struct mwifiex_private *priv, uint16_t cmd_no,
                                                   data_buf);
                break;
        default:
-               dev_err(priv->adapter->dev,
-                       "PREP_CMD: unknown cmd- %#x\n", cmd_no);
+               mwifiex_dbg(priv->adapter, ERROR,
+                           "PREP_CMD: unknown cmd- %#x\n", cmd_no);
                ret = -1;
                break;
        }
@@ -2024,8 +2059,8 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta, bool init)
                                               &sdio_sp_rx_aggr_enable,
                                               true);
                        if (ret) {
-                               dev_err(priv->adapter->dev,
-                                       "error while enabling SP aggregation..disable it");
+                               mwifiex_dbg(priv->adapter, ERROR,
+                                           "error while enabling SP aggregation..disable it");
                                adapter->sdio_rx_aggr_enable = false;
                        }
                }
@@ -2108,8 +2143,8 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta, bool init)
                                       HostCmd_ACT_GEN_SET, DOT11D_I,
                                       &state_11d, true);
                if (ret)
-                       dev_err(priv->adapter->dev,
-                               "11D: failed to enable 11D\n");
+                       mwifiex_dbg(priv->adapter, ERROR,
+                                   "11D: failed to enable 11D\n");
        }
 
        /* Send cmd to FW to configure 11n specific configuration
This page took 0.038744 seconds and 5 git commands to generate.