Lines Matching refs:cmd
36 #include "cmd.h"
51 * return the cmd status code on success.
56 struct wl1271_cmd_header *cmd;
67 cmd = buf;
68 cmd->id = cpu_to_le16(id);
69 cmd->status = 0;
113 ret = wlcore_read(wl, wl->cmd_box_addr, cmd, res_len, false);
117 status = le16_to_cpu(cmd->status);
128 * send command to fw and return cmd status on success
229 struct wl12xx_cmd_role_enable *cmd;
232 wl1271_debug(DEBUG_CMD, "cmd role enable");
237 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
238 if (!cmd) {
244 cmd->role_id = find_first_zero_bit(wl->roles_map, WL12XX_MAX_ROLES);
245 if (cmd->role_id >= WL12XX_MAX_ROLES) {
250 memcpy(cmd->mac_address, addr, ETH_ALEN);
251 cmd->role_type = role_type;
253 ret = wl1271_cmd_send(wl, CMD_ROLE_ENABLE, cmd, sizeof(*cmd), 0);
255 wl1271_error("failed to initiate cmd role enable");
259 __set_bit(cmd->role_id, wl->roles_map);
260 *role_id = cmd->role_id;
263 kfree(cmd);
271 struct wl12xx_cmd_role_disable *cmd;
274 wl1271_debug(DEBUG_CMD, "cmd role disable");
279 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
280 if (!cmd) {
284 cmd->role_id = *role_id;
286 ret = wl1271_cmd_send(wl, CMD_ROLE_DISABLE, cmd, sizeof(*cmd), 0);
288 wl1271_error("failed to initiate cmd role disable");
296 kfree(cmd);
424 struct wl12xx_cmd_role_start *cmd;
427 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
428 if (!cmd) {
433 wl1271_debug(DEBUG_CMD, "cmd role start dev %d", wlvif->dev_role_id);
435 cmd->role_id = wlvif->dev_role_id;
437 cmd->band = WLCORE_BAND_5GHZ;
438 cmd->channel = channel;
445 cmd->device.hlid = wlvif->dev_hlid;
446 cmd->device.session = wl->session_ids[wlvif->dev_hlid];
449 cmd->role_id, cmd->device.hlid, cmd->device.session);
451 ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0);
453 wl1271_error("failed to initiate cmd role enable");
464 kfree(cmd);
473 struct wl12xx_cmd_role_stop *cmd;
479 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
480 if (!cmd) {
485 wl1271_debug(DEBUG_CMD, "cmd role stop dev");
487 cmd->role_id = wlvif->dev_role_id;
488 cmd->disc_type = DISCONNECT_IMMEDIATE;
489 cmd->reason = cpu_to_le16(WLAN_REASON_UNSPECIFIED);
491 ret = wl1271_cmd_send(wl, CMD_ROLE_STOP, cmd, sizeof(*cmd), 0);
493 wl1271_error("failed to initiate cmd role stop");
500 kfree(cmd);
509 struct wl12xx_cmd_role_start *cmd;
513 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
514 if (!cmd) {
519 wl1271_debug(DEBUG_CMD, "cmd role start sta %d", wlvif->role_id);
521 cmd->role_id = wlvif->role_id;
523 cmd->band = WLCORE_BAND_5GHZ;
524 cmd->channel = wlvif->channel;
525 cmd->sta.basic_rate_set = cpu_to_le32(wlvif->basic_rate_set);
526 cmd->sta.beacon_interval = cpu_to_le16(wlvif->beacon_int);
527 cmd->sta.ssid_type = WL12XX_SSID_TYPE_ANY;
528 cmd->sta.ssid_len = wlvif->ssid_len;
529 memcpy(cmd->sta.ssid, wlvif->ssid, wlvif->ssid_len);
530 memcpy(cmd->sta.bssid, vif->bss_conf.bssid, ETH_ALEN);
537 cmd->sta.local_rates = cpu_to_le32(supported_rates);
539 cmd->channel_type = wlcore_get_native_channel_type(wlvif->channel_type);
546 cmd->sta.hlid = wlvif->sta.hlid;
547 cmd->sta.session = wl->session_ids[wlvif->sta.hlid];
554 cmd->sta.remote_rates = cpu_to_le32(supported_rates);
558 wlvif->role_id, cmd->sta.hlid, cmd->sta.session,
561 ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0);
563 wl1271_error("failed to initiate cmd role start sta");
575 kfree(cmd);
584 struct wl12xx_cmd_role_stop *cmd;
590 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
591 if (!cmd) {
596 wl1271_debug(DEBUG_CMD, "cmd role stop sta %d", wlvif->role_id);
598 cmd->role_id = wlvif->role_id;
599 cmd->disc_type = DISCONNECT_IMMEDIATE;
600 cmd->reason = cpu_to_le16(WLAN_REASON_UNSPECIFIED);
602 ret = wl1271_cmd_send(wl, CMD_ROLE_STOP, cmd, sizeof(*cmd), 0);
604 wl1271_error("failed to initiate cmd role stop sta");
611 kfree(cmd);
619 struct wl12xx_cmd_role_start *cmd;
625 wl1271_debug(DEBUG_CMD, "cmd role start ap %d", wlvif->role_id);
634 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
635 if (!cmd) {
652 cmd->role_id = wlvif->role_id;
653 cmd->ap.aging_period = cpu_to_le16(wl->conf.tx.ap_aging_period);
654 cmd->ap.bss_index = WL1271_AP_BSS_INDEX;
655 cmd->ap.global_hlid = wlvif->ap.global_hlid;
656 cmd->ap.broadcast_hlid = wlvif->ap.bcast_hlid;
657 cmd->ap.global_session_id = wl->session_ids[wlvif->ap.global_hlid];
658 cmd->ap.bcast_session_id = wl->session_ids[wlvif->ap.bcast_hlid];
659 cmd->ap.basic_rate_set = cpu_to_le32(wlvif->basic_rate_set);
660 cmd->ap.beacon_interval = cpu_to_le16(wlvif->beacon_int);
661 cmd->ap.dtim_interval = bss_conf->dtim_period;
662 cmd->ap.beacon_expiry = WL1271_AP_DEF_BEACON_EXP;
664 cmd->ap.reset_tsf = 1; /* By default reset AP TSF */
665 cmd->ap.wmm = wlvif->wmm_enabled;
666 cmd->channel = wlvif->channel;
667 cmd->channel_type = wlcore_get_native_channel_type(wlvif->channel_type);
671 cmd->ap.ssid_type = WL12XX_SSID_TYPE_PUBLIC;
672 cmd->ap.ssid_len = wlvif->ssid_len;
673 memcpy(cmd->ap.ssid, wlvif->ssid, wlvif->ssid_len);
675 cmd->ap.ssid_type = WL12XX_SSID_TYPE_HIDDEN;
676 cmd->ap.ssid_len = bss_conf->ssid_len;
677 memcpy(cmd->ap.ssid, bss_conf->ssid, bss_conf->ssid_len);
685 wl1271_debug(DEBUG_CMD, "cmd role start ap with supported_rates 0x%08x",
688 cmd->ap.local_rates = cpu_to_le32(supported_rates);
692 cmd->band = WLCORE_BAND_2_4GHZ;
695 cmd->band = WLCORE_BAND_5GHZ;
699 cmd->band = WLCORE_BAND_2_4GHZ;
703 ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0);
705 wl1271_error("failed to initiate cmd role start ap");
718 kfree(cmd);
726 struct wl12xx_cmd_role_stop *cmd;
729 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
730 if (!cmd) {
735 wl1271_debug(DEBUG_CMD, "cmd role stop ap %d", wlvif->role_id);
737 cmd->role_id = wlvif->role_id;
739 ret = wl1271_cmd_send(wl, CMD_ROLE_STOP, cmd, sizeof(*cmd), 0);
741 wl1271_error("failed to initiate cmd role stop ap");
749 kfree(cmd);
758 struct wl12xx_cmd_role_start *cmd;
762 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
763 if (!cmd) {
768 wl1271_debug(DEBUG_CMD, "cmd role start ibss %d", wlvif->role_id);
770 cmd->role_id = wlvif->role_id;
772 cmd->band = WLCORE_BAND_5GHZ;
773 cmd->channel = wlvif->channel;
774 cmd->ibss.basic_rate_set = cpu_to_le32(wlvif->basic_rate_set);
775 cmd->ibss.beacon_interval = cpu_to_le16(wlvif->beacon_int);
776 cmd->ibss.dtim_interval = bss_conf->dtim_period;
777 cmd->ibss.ssid_type = WL12XX_SSID_TYPE_ANY;
778 cmd->ibss.ssid_len = wlvif->ssid_len;
779 memcpy(cmd->ibss.ssid, wlvif->ssid, wlvif->ssid_len);
780 memcpy(cmd->ibss.bssid, vif->bss_conf.bssid, ETH_ALEN);
781 cmd->sta.local_rates = cpu_to_le32(wlvif->rate_set);
788 cmd->ibss.hlid = wlvif->sta.hlid;
789 cmd->ibss.remote_rates = cpu_to_le32(wlvif->rate_set);
793 wlvif->role_id, cmd->sta.hlid, cmd->sta.session,
799 ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0);
801 wl1271_error("failed to initiate cmd role enable");
812 kfree(cmd);
832 wl1271_debug(DEBUG_CMD, "cmd test");
862 wl1271_debug(DEBUG_CMD, "cmd interrogate");
883 * @valid_rets: bitmap of valid cmd status codes (i.e. return values).
884 * return the cmd status on success.
892 wl1271_debug(DEBUG_CMD, "cmd configure (%d)", id);
925 struct cmd_enabledisable_path *cmd;
929 wl1271_debug(DEBUG_CMD, "cmd data path");
931 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
932 if (!cmd) {
938 cmd->channel = 1;
948 ret = wl1271_cmd_send(wl, cmd_rx, cmd, sizeof(*cmd), 0);
950 wl1271_error("rx %s cmd for channel %d failed",
951 enable ? "start" : "stop", cmd->channel);
955 wl1271_debug(DEBUG_BOOT, "rx %s cmd channel %d",
956 enable ? "start" : "stop", cmd->channel);
958 ret = wl1271_cmd_send(wl, cmd_tx, cmd, sizeof(*cmd), 0);
960 wl1271_error("tx %s cmd for channel %d failed",
961 enable ? "start" : "stop", cmd->channel);
965 wl1271_debug(DEBUG_BOOT, "tx %s cmd channel %d",
966 enable ? "start" : "stop", cmd->channel);
969 kfree(cmd);
980 wl1271_debug(DEBUG_CMD, "cmd set ps mode");
995 wl1271_error("cmd set_ps_mode failed");
1008 struct wl1271_cmd_template_set *cmd;
1011 wl1271_debug(DEBUG_CMD, "cmd template_set %d (role %d)",
1017 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1018 if (!cmd) {
1024 cmd->role_id = role_id;
1025 cmd->len = cpu_to_le16(buf_len);
1026 cmd->template_type = template_id;
1027 cmd->enabled_rates = cpu_to_le32(rates);
1028 cmd->short_retry_limit = wl->conf.tx.tmpl_short_retry_limit;
1029 cmd->long_retry_limit = wl->conf.tx.tmpl_long_retry_limit;
1030 cmd->index = index;
1033 memcpy(cmd->template_data, buf, buf_len);
1035 ret = wl1271_cmd_send(wl, CMD_SET_TEMPLATE, cmd, sizeof(*cmd), 0);
1037 wl1271_warning("cmd set_template failed: %d", ret);
1042 kfree(cmd);
1075 wl1271_warning("cmd buld null data failed %d", ret);
1100 wl1271_warning("cmd build klv null data failed %d", ret);
1324 struct wl1271_cmd_set_keys *cmd;
1327 wl1271_debug(DEBUG_CMD, "cmd set_default_wep_key %d", id);
1329 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1330 if (!cmd) {
1335 cmd->hlid = hlid;
1336 cmd->key_id = id;
1337 cmd->lid_key_type = WEP_DEFAULT_LID_TYPE;
1338 cmd->key_action = cpu_to_le16(KEY_SET_ID);
1339 cmd->key_type = KEY_WEP;
1341 ret = wl1271_cmd_send(wl, CMD_SET_KEYS, cmd, sizeof(*cmd), 0);
1343 wl1271_warning("cmd set_default_wep_key failed: %d", ret);
1348 kfree(cmd);
1358 struct wl1271_cmd_set_keys *cmd;
1365 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1366 if (!cmd) {
1371 cmd->hlid = wlvif->sta.hlid;
1374 cmd->lid_key_type = WEP_DEFAULT_LID_TYPE;
1376 cmd->lid_key_type = BROADCAST_LID_TYPE;
1378 cmd->lid_key_type = UNICAST_LID_TYPE;
1380 cmd->key_action = cpu_to_le16(action);
1381 cmd->key_size = key_size;
1382 cmd->key_type = key_type;
1384 cmd->ac_seq_num16[0] = cpu_to_le16(tx_seq_16);
1385 cmd->ac_seq_num32[0] = cpu_to_le32(tx_seq_32);
1387 cmd->key_id = id;
1396 memcpy(cmd->key, key, 16);
1397 memcpy(cmd->key + 16, key + 24, 8);
1398 memcpy(cmd->key + 24, key + 16, 8);
1401 memcpy(cmd->key, key, key_size);
1404 wl1271_dump(DEBUG_CRYPT, "TARGET KEY: ", cmd, sizeof(*cmd));
1406 ret = wl1271_cmd_send(wl, CMD_SET_KEYS, cmd, sizeof(*cmd), 0);
1413 kfree(cmd);
1427 struct wl1271_cmd_set_keys *cmd;
1431 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1432 if (!cmd)
1448 cmd->lid_key_type = lid_type;
1449 cmd->hlid = hlid;
1450 cmd->key_action = cpu_to_le16(action);
1451 cmd->key_size = key_size;
1452 cmd->key_type = key_type;
1453 cmd->key_id = id;
1454 cmd->ac_seq_num16[0] = cpu_to_le16(tx_seq_16);
1455 cmd->ac_seq_num32[0] = cpu_to_le32(tx_seq_32);
1464 memcpy(cmd->key, key, 16);
1465 memcpy(cmd->key + 16, key + 24, 8);
1466 memcpy(cmd->key + 24, key + 16, 8);
1468 memcpy(cmd->key, key, key_size);
1471 wl1271_dump(DEBUG_CRYPT, "TARGET AP KEY: ", cmd, sizeof(*cmd));
1473 ret = wl1271_cmd_send(wl, CMD_SET_KEYS, cmd, sizeof(*cmd), 0);
1480 kfree(cmd);
1487 struct wl12xx_cmd_set_peer_state *cmd;
1490 wl1271_debug(DEBUG_CMD, "cmd set peer state (hlid=%d)", hlid);
1492 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1493 if (!cmd) {
1498 cmd->hlid = hlid;
1499 cmd->state = WL1271_CMD_STA_STATE_CONNECTED;
1503 cmd->wmm = wlvif->wmm_enabled;
1505 ret = wl1271_cmd_send(wl, CMD_SET_PEER_STATE, cmd, sizeof(*cmd), 0);
1512 kfree(cmd);
1521 struct wl12xx_cmd_add_peer *cmd;
1525 wl1271_debug(DEBUG_CMD, "cmd add peer %d", (int)hlid);
1527 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1528 if (!cmd) {
1533 memcpy(cmd->addr, sta->addr, ETH_ALEN);
1534 cmd->bss_index = WL1271_AP_BSS_INDEX;
1535 cmd->aid = sta->aid;
1536 cmd->hlid = hlid;
1537 cmd->sp_len = sta->max_sp;
1538 cmd->wmm = sta->wme ? 1 : 0;
1539 cmd->session_id = wl->session_ids[hlid];
1540 cmd->role_id = wlvif->role_id;
1544 cmd->psd_type[NUM_ACCESS_CATEGORIES_COPY-1-i] =
1547 cmd->psd_type[NUM_ACCESS_CATEGORIES_COPY-1-i] =
1557 cmd->supported_rates =
1562 cmd->supported_rates, sta->uapsd_queues);
1564 ret = wl1271_cmd_send(wl, CMD_ADD_PEER, cmd, sizeof(*cmd), 0);
1566 wl1271_error("failed to initiate cmd add peer");
1571 kfree(cmd);
1580 struct wl12xx_cmd_remove_peer *cmd;
1584 wl1271_debug(DEBUG_CMD, "cmd remove peer %d", (int)hlid);
1586 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1587 if (!cmd) {
1592 cmd->hlid = hlid;
1594 cmd->reason_opcode = 0;
1595 cmd->send_deauth_flag = 0;
1596 cmd->role_id = wlvif->role_id;
1598 ret = wl1271_cmd_send(wl, CMD_REMOVE_PEER, cmd, sizeof(*cmd), 0);
1600 wl1271_error("failed to initiate cmd remove peer");
1617 kfree(cmd);
1680 struct wl12xx_cmd_regdomain_dfs_config *cmd = NULL;
1692 wl1271_debug(DEBUG_CMD, "cmd reg domain config");
1721 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1722 if (!cmd) {
1727 cmd->ch_bit_map1 = cpu_to_le32(tmp_ch_bitmap[0]);
1728 cmd->ch_bit_map2 = cpu_to_le32(tmp_ch_bitmap[1]);
1731 "cmd reg domain bitmap1: 0x%08x, bitmap2: 0x%08x",
1732 cmd->ch_bit_map1, cmd->ch_bit_map2);
1734 ret = wl1271_cmd_send(wl, CMD_DFS_CHANNEL_CONFIG, cmd, sizeof(*cmd), 0);
1754 kfree(cmd);
1760 struct wl12xx_cmd_config_fwlog *cmd;
1763 wl1271_debug(DEBUG_CMD, "cmd config firmware logger");
1765 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1766 if (!cmd) {
1771 cmd->logger_mode = wl->conf.fwlog.mode;
1772 cmd->log_severity = wl->conf.fwlog.severity;
1773 cmd->timestamp = wl->conf.fwlog.timestamp;
1774 cmd->output = wl->conf.fwlog.output;
1775 cmd->threshold = wl->conf.fwlog.threshold;
1777 ret = wl1271_cmd_send(wl, CMD_CONFIG_FWLOGGER, cmd, sizeof(*cmd), 0);
1784 kfree(cmd);
1792 struct wl12xx_cmd_start_fwlog *cmd;
1795 wl1271_debug(DEBUG_CMD, "cmd start firmware logger");
1797 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1798 if (!cmd) {
1803 ret = wl1271_cmd_send(wl, CMD_START_FWLOGGER, cmd, sizeof(*cmd), 0);
1810 kfree(cmd);
1818 struct wl12xx_cmd_stop_fwlog *cmd;
1821 wl1271_debug(DEBUG_CMD, "cmd stop firmware logger");
1823 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1824 if (!cmd) {
1829 ret = wl1271_cmd_send(wl, CMD_STOP_FWLOGGER, cmd, sizeof(*cmd), 0);
1836 kfree(cmd);
1845 struct wl12xx_cmd_roc *cmd;
1848 wl1271_debug(DEBUG_CMD, "cmd roc %d (%d)", channel, role_id);
1853 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1854 if (!cmd) {
1859 cmd->role_id = role_id;
1860 cmd->channel = channel;
1863 cmd->band = WLCORE_BAND_2_4GHZ;
1866 cmd->band = WLCORE_BAND_5GHZ;
1875 ret = wl1271_cmd_send(wl, CMD_REMAIN_ON_CHANNEL, cmd, sizeof(*cmd), 0);
1882 kfree(cmd);
1890 struct wl12xx_cmd_croc *cmd;
1893 wl1271_debug(DEBUG_CMD, "cmd croc (%d)", role_id);
1895 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1896 if (!cmd) {
1900 cmd->role_id = role_id;
1902 ret = wl1271_cmd_send(wl, CMD_CANCEL_REMAIN_ON_CHANNEL, cmd,
1903 sizeof(*cmd), 0);
1910 kfree(cmd);
1959 struct wl12xx_cmd_stop_channel_switch *cmd;
1962 wl1271_debug(DEBUG_ACX, "cmd stop channel switch");
1964 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
1965 if (!cmd) {
1970 cmd->role_id = wlvif->role_id;
1972 ret = wl1271_cmd_send(wl, CMD_STOP_CHANNEL_SWICTH, cmd, sizeof(*cmd), 0);
1979 kfree(cmd);