Searched refs:cmd (Results 1 - 200 of 4069) sorted by relevance

1234567891011>>

/linux-4.1.27/include/linux/
H A Dfcntl.h12 #define IS_GETLK32(cmd) ((cmd) == F_GETLK)
13 #define IS_SETLK32(cmd) ((cmd) == F_SETLK)
14 #define IS_SETLKW32(cmd) ((cmd) == F_SETLKW)
15 #define IS_GETLK64(cmd) ((cmd) == F_GETLK64)
16 #define IS_SETLK64(cmd) ((cmd) == F_SETLK64)
17 #define IS_SETLKW64(cmd) ((cmd) == F_SETLKW64)
19 #define IS_GETLK32(cmd) (0)
20 #define IS_SETLK32(cmd) (0)
21 #define IS_SETLKW32(cmd) (0)
22 #define IS_GETLK64(cmd) ((cmd) == F_GETLK)
23 #define IS_SETLK64(cmd) ((cmd) == F_SETLK)
24 #define IS_SETLKW64(cmd) ((cmd) == F_SETLKW)
27 #define IS_GETLK(cmd) (IS_GETLK32(cmd) || IS_GETLK64(cmd))
28 #define IS_SETLK(cmd) (IS_SETLK32(cmd) || IS_SETLK64(cmd))
29 #define IS_SETLKW(cmd) (IS_SETLKW32(cmd) || IS_SETLKW64(cmd))
/linux-4.1.27/drivers/net/wireless/ti/wl18xx/
H A Dcmd.c22 #include "../wlcore/cmd.h"
26 #include "cmd.h"
32 struct wl18xx_cmd_channel_switch *cmd; wl18xx_cmd_channel_switch() local
36 wl1271_debug(DEBUG_ACX, "cmd channel switch (count=%d)", wl18xx_cmd_channel_switch()
39 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl18xx_cmd_channel_switch()
40 if (!cmd) { wl18xx_cmd_channel_switch()
45 cmd->role_id = wlvif->role_id; wl18xx_cmd_channel_switch()
46 cmd->channel = ch_switch->chandef.chan->hw_value; wl18xx_cmd_channel_switch()
47 cmd->switch_time = ch_switch->count; wl18xx_cmd_channel_switch()
48 cmd->stop_tx = ch_switch->block_tx; wl18xx_cmd_channel_switch()
52 cmd->band = WLCORE_BAND_2_4GHZ; wl18xx_cmd_channel_switch()
55 cmd->band = WLCORE_BAND_5GHZ; wl18xx_cmd_channel_switch()
72 cmd->local_supported_rates = cpu_to_le32(supported_rates); wl18xx_cmd_channel_switch()
73 cmd->channel_type = wlvif->channel_type; wl18xx_cmd_channel_switch()
75 ret = wl1271_cmd_send(wl, CMD_CHANNEL_SWITCH, cmd, sizeof(*cmd), 0); wl18xx_cmd_channel_switch()
82 kfree(cmd); wl18xx_cmd_channel_switch()
89 struct wl18xx_cmd_smart_config_start *cmd; wl18xx_cmd_smart_config_start() local
92 wl1271_debug(DEBUG_CMD, "cmd smart config start group_bitmap=0x%x", wl18xx_cmd_smart_config_start()
95 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl18xx_cmd_smart_config_start()
96 if (!cmd) { wl18xx_cmd_smart_config_start()
101 cmd->group_id_bitmask = cpu_to_le32(group_bitmap); wl18xx_cmd_smart_config_start()
103 ret = wl1271_cmd_send(wl, CMD_SMART_CONFIG_START, cmd, sizeof(*cmd), 0); wl18xx_cmd_smart_config_start()
110 kfree(cmd); wl18xx_cmd_smart_config_start()
117 struct wl1271_cmd_header *cmd; wl18xx_cmd_smart_config_stop() local
120 wl1271_debug(DEBUG_CMD, "cmd smart config stop"); wl18xx_cmd_smart_config_stop()
122 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl18xx_cmd_smart_config_stop()
123 if (!cmd) { wl18xx_cmd_smart_config_stop()
128 ret = wl1271_cmd_send(wl, CMD_SMART_CONFIG_STOP, cmd, sizeof(*cmd), 0); wl18xx_cmd_smart_config_stop()
135 kfree(cmd); wl18xx_cmd_smart_config_stop()
143 struct wl18xx_cmd_smart_config_set_group_key *cmd; wl18xx_cmd_smart_config_set_group_key() local
146 wl1271_debug(DEBUG_CMD, "cmd smart config set group key id=0x%x", wl18xx_cmd_smart_config_set_group_key()
149 if (key_len != sizeof(cmd->key)) { wl18xx_cmd_smart_config_set_group_key()
154 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl18xx_cmd_smart_config_set_group_key()
155 if (!cmd) { wl18xx_cmd_smart_config_set_group_key()
160 cmd->group_id = cpu_to_le32(group_id); wl18xx_cmd_smart_config_set_group_key()
161 memcpy(cmd->key, key, key_len); wl18xx_cmd_smart_config_set_group_key()
163 ret = wl1271_cmd_send(wl, CMD_SMART_CONFIG_SET_GROUP_KEY, cmd, wl18xx_cmd_smart_config_set_group_key()
164 sizeof(*cmd), 0); wl18xx_cmd_smart_config_set_group_key()
166 wl1271_error("failed to send smart config set group key cmd"); wl18xx_cmd_smart_config_set_group_key()
171 kfree(cmd); wl18xx_cmd_smart_config_set_group_key()
178 struct wlcore_cmd_cac_start *cmd; wl18xx_cmd_set_cac() local
181 wl1271_debug(DEBUG_CMD, "cmd cac (channel %d) %s", wl18xx_cmd_set_cac()
184 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl18xx_cmd_set_cac()
185 if (!cmd) wl18xx_cmd_set_cac()
188 cmd->role_id = wlvif->role_id; wl18xx_cmd_set_cac()
189 cmd->channel = wlvif->channel; wl18xx_cmd_set_cac()
191 cmd->band = WLCORE_BAND_5GHZ; wl18xx_cmd_set_cac()
192 cmd->bandwidth = wlcore_get_native_channel_type(wlvif->channel_type); wl18xx_cmd_set_cac()
196 cmd, sizeof(*cmd), 0); wl18xx_cmd_set_cac()
203 kfree(cmd); wl18xx_cmd_set_cac()
209 struct wl18xx_cmd_dfs_radar_debug *cmd; wl18xx_cmd_radar_detection_debug() local
212 wl1271_debug(DEBUG_CMD, "cmd radar detection debug (chan %d)", wl18xx_cmd_radar_detection_debug()
215 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl18xx_cmd_radar_detection_debug()
216 if (!cmd) wl18xx_cmd_radar_detection_debug()
219 cmd->channel = channel; wl18xx_cmd_radar_detection_debug()
222 cmd, sizeof(*cmd), 0); wl18xx_cmd_radar_detection_debug()
229 kfree(cmd); wl18xx_cmd_radar_detection_debug()
235 struct wl18xx_cmd_dfs_master_restart *cmd; wl18xx_cmd_dfs_master_restart() local
238 wl1271_debug(DEBUG_CMD, "cmd dfs master restart (role %d)", wl18xx_cmd_dfs_master_restart()
241 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl18xx_cmd_dfs_master_restart()
242 if (!cmd) wl18xx_cmd_dfs_master_restart()
245 cmd->role_id = wlvif->role_id; wl18xx_cmd_dfs_master_restart()
248 cmd, sizeof(*cmd), 0); wl18xx_cmd_dfs_master_restart()
254 kfree(cmd); wl18xx_cmd_dfs_master_restart()
H A Dscan.c26 static void wl18xx_adjust_channels(struct wl18xx_cmd_scan_params *cmd, wl18xx_adjust_channels() argument
29 memcpy(cmd->passive, cmd_channels->passive, sizeof(cmd->passive)); wl18xx_adjust_channels()
30 memcpy(cmd->active, cmd_channels->active, sizeof(cmd->active)); wl18xx_adjust_channels()
31 cmd->dfs = cmd_channels->dfs; wl18xx_adjust_channels()
32 cmd->passive_active = cmd_channels->passive_active; wl18xx_adjust_channels()
34 memcpy(cmd->channels_2, cmd_channels->channels_2, wl18xx_adjust_channels()
35 sizeof(cmd->channels_2)); wl18xx_adjust_channels()
36 memcpy(cmd->channels_5, cmd_channels->channels_5, wl18xx_adjust_channels()
37 sizeof(cmd->channels_5)); wl18xx_adjust_channels()
44 struct wl18xx_cmd_scan_params *cmd; wl18xx_scan_send() local
48 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl18xx_scan_send()
49 if (!cmd) { wl18xx_scan_send()
54 cmd->role_id = wlvif->role_id; wl18xx_scan_send()
56 if (WARN_ON(cmd->role_id == WL12XX_INVALID_ROLE_ID)) { wl18xx_scan_send()
61 cmd->scan_type = SCAN_TYPE_SEARCH; wl18xx_scan_send()
62 cmd->rssi_threshold = -127; wl18xx_scan_send()
63 cmd->snr_threshold = 0; wl18xx_scan_send()
65 cmd->bss_type = SCAN_BSS_TYPE_ANY; wl18xx_scan_send()
67 cmd->ssid_from_list = 0; wl18xx_scan_send()
68 cmd->filter = 0; wl18xx_scan_send()
69 cmd->add_broadcast = 0; wl18xx_scan_send()
71 cmd->urgency = 0; wl18xx_scan_send()
72 cmd->protect = 0; wl18xx_scan_send()
74 cmd->n_probe_reqs = wl->conf.scan.num_probe_reqs; wl18xx_scan_send()
75 cmd->terminate_after = 0; wl18xx_scan_send()
89 wl18xx_adjust_channels(cmd, cmd_channels); wl18xx_scan_send()
95 cmd->total_cycles = 1; wl18xx_scan_send()
98 cmd->rate = WL18XX_SCAN_RATE_6; wl18xx_scan_send()
100 cmd->tag = WL1271_SCAN_DEFAULT_TAG; wl18xx_scan_send()
103 cmd->ssid_len = req->ssids[0].ssid_len; wl18xx_scan_send()
104 memcpy(cmd->ssid, req->ssids[0].ssid, cmd->ssid_len); wl18xx_scan_send()
108 if (cmd->active[0]) { wl18xx_scan_send()
111 cmd->role_id, band, wl18xx_scan_send()
125 if (cmd->active[1] || cmd->dfs) { wl18xx_scan_send()
128 cmd->role_id, band, wl18xx_scan_send()
142 wl1271_dump(DEBUG_SCAN, "SCAN: ", cmd, sizeof(*cmd)); wl18xx_scan_send()
144 ret = wl1271_cmd_send(wl, CMD_SCAN, cmd, sizeof(*cmd), 0); wl18xx_scan_send()
152 kfree(cmd); wl18xx_scan_send()
170 struct wl18xx_cmd_scan_params *cmd; wl18xx_scan_sched_scan_config() local
176 wl1271_debug(DEBUG_CMD, "cmd sched_scan scan config"); wl18xx_scan_sched_scan_config()
182 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl18xx_scan_sched_scan_config()
183 if (!cmd) { wl18xx_scan_sched_scan_config()
188 cmd->role_id = wlvif->role_id; wl18xx_scan_sched_scan_config()
190 if (WARN_ON(cmd->role_id == WL12XX_INVALID_ROLE_ID)) { wl18xx_scan_sched_scan_config()
195 cmd->scan_type = SCAN_TYPE_PERIODIC; wl18xx_scan_sched_scan_config()
196 cmd->rssi_threshold = c->rssi_threshold; wl18xx_scan_sched_scan_config()
197 cmd->snr_threshold = c->snr_threshold; wl18xx_scan_sched_scan_config()
200 cmd->bss_type = SCAN_BSS_TYPE_ANY; wl18xx_scan_sched_scan_config()
202 cmd->ssid_from_list = 1; wl18xx_scan_sched_scan_config()
204 cmd->filter = 1; wl18xx_scan_sched_scan_config()
205 cmd->add_broadcast = 0; wl18xx_scan_sched_scan_config()
207 cmd->urgency = 0; wl18xx_scan_sched_scan_config()
208 cmd->protect = 0; wl18xx_scan_sched_scan_config()
210 cmd->n_probe_reqs = c->num_probe_reqs; wl18xx_scan_sched_scan_config()
212 cmd->terminate_after = 0; wl18xx_scan_sched_scan_config()
224 wl18xx_adjust_channels(cmd, cmd_channels); wl18xx_scan_sched_scan_config()
226 cmd->short_cycles_sec = 0; wl18xx_scan_sched_scan_config()
227 cmd->long_cycles_sec = cpu_to_le16(req->interval); wl18xx_scan_sched_scan_config()
228 cmd->short_cycles_count = 0; wl18xx_scan_sched_scan_config()
230 cmd->total_cycles = 0; wl18xx_scan_sched_scan_config()
232 cmd->tag = WL1271_SCAN_DEFAULT_TAG; wl18xx_scan_sched_scan_config()
235 cmd->report_threshold = 1; wl18xx_scan_sched_scan_config()
236 cmd->terminate_on_report = 0; wl18xx_scan_sched_scan_config()
238 if (cmd->active[0]) { wl18xx_scan_sched_scan_config()
241 cmd->role_id, band, wl18xx_scan_sched_scan_config()
255 if (cmd->active[1] || cmd->dfs) { wl18xx_scan_sched_scan_config()
258 cmd->role_id, band, wl18xx_scan_sched_scan_config()
272 wl1271_dump(DEBUG_SCAN, "SCAN: ", cmd, sizeof(*cmd)); wl18xx_scan_sched_scan_config()
274 ret = wl1271_cmd_send(wl, CMD_SCAN, cmd, sizeof(*cmd), 0); wl18xx_scan_sched_scan_config()
282 kfree(cmd); wl18xx_scan_sched_scan_config()
299 wl1271_debug(DEBUG_CMD, "cmd periodic scan stop"); __wl18xx_scan_stop()
H A DMakefile1 wl18xx-objs = main.o acx.o tx.o io.o debugfs.o scan.o cmd.o event.o
/linux-4.1.27/tools/perf/util/
H A Drun-command.c19 int start_command(struct child_process *cmd) start_command() argument
30 need_in = !cmd->no_stdin && cmd->in < 0; start_command()
33 if (cmd->out > 0) start_command()
34 close(cmd->out); start_command()
37 cmd->in = fdin[1]; start_command()
40 need_out = !cmd->no_stdout start_command()
41 && !cmd->stdout_to_stderr start_command()
42 && cmd->out < 0; start_command()
47 else if (cmd->in) start_command()
48 close(cmd->in); start_command()
51 cmd->out = fdout[0]; start_command()
54 need_err = !cmd->no_stderr && cmd->err < 0; start_command()
59 else if (cmd->in) start_command()
60 close(cmd->in); start_command()
63 else if (cmd->out) start_command()
64 close(cmd->out); start_command()
67 cmd->err = fderr[0]; start_command()
71 cmd->pid = fork(); start_command()
72 if (!cmd->pid) { start_command()
73 if (cmd->no_stdin) start_command()
78 } else if (cmd->in) { start_command()
79 dup2(cmd->in, 0); start_command()
80 close(cmd->in); start_command()
83 if (cmd->no_stderr) start_command()
90 if (cmd->no_stdout) start_command()
92 else if (cmd->stdout_to_stderr) start_command()
97 } else if (cmd->out > 1) { start_command()
98 dup2(cmd->out, 1); start_command()
99 close(cmd->out); start_command()
102 if (cmd->dir && chdir(cmd->dir)) start_command()
103 die("exec %s: cd to %s failed (%s)", cmd->argv[0], start_command()
104 cmd->dir, strerror_r(errno, sbuf, sizeof(sbuf))); start_command()
105 if (cmd->env) { start_command()
106 for (; *cmd->env; cmd->env++) { start_command()
107 if (strchr(*cmd->env, '=')) start_command()
108 putenv((char*)*cmd->env); start_command()
110 unsetenv(*cmd->env); start_command()
113 if (cmd->preexec_cb) start_command()
114 cmd->preexec_cb(); start_command()
115 if (cmd->perf_cmd) { start_command()
116 execv_perf_cmd(cmd->argv); start_command()
118 execvp(cmd->argv[0], (char *const*) cmd->argv); start_command()
123 if (cmd->pid < 0) { start_command()
127 else if (cmd->in) start_command()
128 close(cmd->in); start_command()
131 else if (cmd->out) start_command()
132 close(cmd->out); start_command()
142 else if (cmd->in) start_command()
143 close(cmd->in); start_command()
147 else if (cmd->out) start_command()
148 close(cmd->out); start_command()
190 int finish_command(struct child_process *cmd) finish_command() argument
192 return wait_or_whine(cmd->pid); finish_command()
195 int run_command(struct child_process *cmd) run_command() argument
197 int code = start_command(cmd); run_command()
200 return finish_command(cmd); run_command()
203 static void prepare_run_command_v_opt(struct child_process *cmd, prepare_run_command_v_opt() argument
207 memset(cmd, 0, sizeof(*cmd)); prepare_run_command_v_opt()
208 cmd->argv = argv; prepare_run_command_v_opt()
209 cmd->no_stdin = opt & RUN_COMMAND_NO_STDIN ? 1 : 0; prepare_run_command_v_opt()
210 cmd->perf_cmd = opt & RUN_PERF_CMD ? 1 : 0; prepare_run_command_v_opt()
211 cmd->stdout_to_stderr = opt & RUN_COMMAND_STDOUT_TO_STDERR ? 1 : 0; prepare_run_command_v_opt()
216 struct child_process cmd; run_command_v_opt() local
217 prepare_run_command_v_opt(&cmd, argv, opt); run_command_v_opt()
218 return run_command(&cmd); run_command_v_opt()
/linux-4.1.27/drivers/staging/fsl-mc/bus/
H A Ddprc.c33 #include "../include/mc-cmd.h"
35 #include "dprc-cmd.h"
39 struct mc_command cmd = { 0 }; dprc_open() local
43 cmd.header = mc_encode_cmd_header(DPRC_CMDID_OPEN, MC_CMD_PRI_LOW, dprc_open()
45 cmd.params[0] |= mc_enc(0, 32, container_id); dprc_open()
48 err = mc_send_command(mc_io, &cmd); dprc_open()
53 *token = MC_CMD_HDR_READ_TOKEN(cmd.header); dprc_open()
61 struct mc_command cmd = { 0 }; dprc_close() local
64 cmd.header = mc_encode_cmd_header(DPRC_CMDID_CLOSE, MC_CMD_PRI_HIGH, dprc_close()
68 return mc_send_command(mc_io, &cmd); dprc_close()
78 struct mc_command cmd = { 0 }; dprc_create_container() local
82 cmd.params[0] |= mc_enc(32, 16, cfg->icid); dprc_create_container()
83 cmd.params[0] |= mc_enc(0, 32, cfg->options); dprc_create_container()
84 cmd.params[1] |= mc_enc(32, 32, cfg->portal_id); dprc_create_container()
86 cmd.header = mc_encode_cmd_header(DPRC_CMDID_CREATE_CONT, dprc_create_container()
90 err = mc_send_command(mc_io, &cmd); dprc_create_container()
95 *child_container_id = mc_dec(cmd.params[1], 0, 32); dprc_create_container()
96 *child_portal_paddr = mc_dec(cmd.params[2], 0, 64); dprc_create_container()
105 struct mc_command cmd = { 0 }; dprc_destroy_container() local
108 cmd.header = mc_encode_cmd_header(DPRC_CMDID_DESTROY_CONT, dprc_destroy_container()
110 cmd.params[0] |= mc_enc(0, 32, child_container_id); dprc_destroy_container()
113 return mc_send_command(mc_io, &cmd); dprc_destroy_container()
120 struct mc_command cmd = { 0 }; dprc_reset_container() local
123 cmd.header = mc_encode_cmd_header(DPRC_CMDID_RESET_CONT, dprc_reset_container()
125 cmd.params[0] |= mc_enc(0, 32, child_container_id); dprc_reset_container()
128 return mc_send_command(mc_io, &cmd); dprc_reset_container()
139 struct mc_command cmd = { 0 }; dprc_get_irq() local
143 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_IRQ, dprc_get_irq()
146 cmd.params[0] |= mc_enc(32, 8, irq_index); dprc_get_irq()
149 err = mc_send_command(mc_io, &cmd); dprc_get_irq()
154 *irq_val = mc_dec(cmd.params[0], 0, 32); dprc_get_irq()
155 *irq_paddr = mc_dec(cmd.params[1], 0, 64); dprc_get_irq()
156 *user_irq_id = mc_dec(cmd.params[2], 0, 32); dprc_get_irq()
157 *type = mc_dec(cmd.params[2], 32, 32); dprc_get_irq()
169 struct mc_command cmd = { 0 }; dprc_set_irq() local
172 cmd.header = mc_encode_cmd_header(DPRC_CMDID_SET_IRQ, dprc_set_irq()
175 cmd.params[0] |= mc_enc(32, 8, irq_index); dprc_set_irq()
176 cmd.params[0] |= mc_enc(0, 32, irq_val); dprc_set_irq()
177 cmd.params[1] |= mc_enc(0, 64, irq_paddr); dprc_set_irq()
178 cmd.params[2] |= mc_enc(0, 32, user_irq_id); dprc_set_irq()
181 return mc_send_command(mc_io, &cmd); dprc_set_irq()
189 struct mc_command cmd = { 0 }; dprc_get_irq_enable() local
193 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_IRQ_ENABLE, dprc_get_irq_enable()
195 cmd.params[0] |= mc_enc(32, 8, irq_index); dprc_get_irq_enable()
198 err = mc_send_command(mc_io, &cmd); dprc_get_irq_enable()
203 *en = mc_dec(cmd.params[0], 0, 8); dprc_get_irq_enable()
213 struct mc_command cmd = { 0 }; dprc_set_irq_enable() local
216 cmd.header = mc_encode_cmd_header(DPRC_CMDID_SET_IRQ_ENABLE, dprc_set_irq_enable()
218 cmd.params[0] |= mc_enc(0, 8, en); dprc_set_irq_enable()
219 cmd.params[0] |= mc_enc(32, 8, irq_index); dprc_set_irq_enable()
222 return mc_send_command(mc_io, &cmd); dprc_set_irq_enable()
230 struct mc_command cmd = { 0 }; dprc_get_irq_mask() local
234 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_IRQ_MASK, dprc_get_irq_mask()
236 cmd.params[0] |= mc_enc(32, 8, irq_index); dprc_get_irq_mask()
239 err = mc_send_command(mc_io, &cmd); dprc_get_irq_mask()
244 *mask = mc_dec(cmd.params[0], 0, 32); dprc_get_irq_mask()
254 struct mc_command cmd = { 0 }; dprc_set_irq_mask() local
257 cmd.header = mc_encode_cmd_header(DPRC_CMDID_SET_IRQ_MASK, dprc_set_irq_mask()
259 cmd.params[0] |= mc_enc(0, 32, mask); dprc_set_irq_mask()
260 cmd.params[0] |= mc_enc(32, 8, irq_index); dprc_set_irq_mask()
263 return mc_send_command(mc_io, &cmd); dprc_set_irq_mask()
271 struct mc_command cmd = { 0 }; dprc_get_irq_status() local
275 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_IRQ_STATUS, dprc_get_irq_status()
277 cmd.params[0] |= mc_enc(32, 8, irq_index); dprc_get_irq_status()
280 err = mc_send_command(mc_io, &cmd); dprc_get_irq_status()
285 *status = mc_dec(cmd.params[0], 0, 32); dprc_get_irq_status()
295 struct mc_command cmd = { 0 }; dprc_clear_irq_status() local
298 cmd.header = mc_encode_cmd_header(DPRC_CMDID_CLEAR_IRQ_STATUS, dprc_clear_irq_status()
300 cmd.params[0] |= mc_enc(0, 32, status); dprc_clear_irq_status()
301 cmd.params[0] |= mc_enc(32, 8, irq_index); dprc_clear_irq_status()
304 return mc_send_command(mc_io, &cmd); dprc_clear_irq_status()
311 struct mc_command cmd = { 0 }; dprc_get_attributes() local
315 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_ATTR, dprc_get_attributes()
320 err = mc_send_command(mc_io, &cmd); dprc_get_attributes()
325 attr->container_id = mc_dec(cmd.params[0], 0, 32); dprc_get_attributes()
326 attr->icid = mc_dec(cmd.params[0], 32, 16); dprc_get_attributes()
327 attr->options = mc_dec(cmd.params[1], 0, 32); dprc_get_attributes()
328 attr->portal_id = mc_dec(cmd.params[1], 32, 32); dprc_get_attributes()
329 attr->version.major = mc_dec(cmd.params[2], 0, 16); dprc_get_attributes()
330 attr->version.minor = mc_dec(cmd.params[2], 16, 16); dprc_get_attributes()
341 struct mc_command cmd = { 0 }; dprc_set_res_quota() local
344 cmd.header = mc_encode_cmd_header(DPRC_CMDID_SET_RES_QUOTA, dprc_set_res_quota()
346 cmd.params[0] |= mc_enc(0, 32, child_container_id); dprc_set_res_quota()
347 cmd.params[0] |= mc_enc(32, 16, quota); dprc_set_res_quota()
348 cmd.params[1] |= mc_enc(0, 8, type[0]); dprc_set_res_quota()
349 cmd.params[1] |= mc_enc(8, 8, type[1]); dprc_set_res_quota()
350 cmd.params[1] |= mc_enc(16, 8, type[2]); dprc_set_res_quota()
351 cmd.params[1] |= mc_enc(24, 8, type[3]); dprc_set_res_quota()
352 cmd.params[1] |= mc_enc(32, 8, type[4]); dprc_set_res_quota()
353 cmd.params[1] |= mc_enc(40, 8, type[5]); dprc_set_res_quota()
354 cmd.params[1] |= mc_enc(48, 8, type[6]); dprc_set_res_quota()
355 cmd.params[1] |= mc_enc(56, 8, type[7]); dprc_set_res_quota()
356 cmd.params[2] |= mc_enc(0, 8, type[8]); dprc_set_res_quota()
357 cmd.params[2] |= mc_enc(8, 8, type[9]); dprc_set_res_quota()
358 cmd.params[2] |= mc_enc(16, 8, type[10]); dprc_set_res_quota()
359 cmd.params[2] |= mc_enc(24, 8, type[11]); dprc_set_res_quota()
360 cmd.params[2] |= mc_enc(32, 8, type[12]); dprc_set_res_quota()
361 cmd.params[2] |= mc_enc(40, 8, type[13]); dprc_set_res_quota()
362 cmd.params[2] |= mc_enc(48, 8, type[14]); dprc_set_res_quota()
363 cmd.params[2] |= mc_enc(56, 8, '\0'); dprc_set_res_quota()
366 return mc_send_command(mc_io, &cmd); dprc_set_res_quota()
375 struct mc_command cmd = { 0 }; dprc_get_res_quota() local
379 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_RES_QUOTA, dprc_get_res_quota()
381 cmd.params[0] |= mc_enc(0, 32, child_container_id); dprc_get_res_quota()
382 cmd.params[1] |= mc_enc(0, 8, type[0]); dprc_get_res_quota()
383 cmd.params[1] |= mc_enc(8, 8, type[1]); dprc_get_res_quota()
384 cmd.params[1] |= mc_enc(16, 8, type[2]); dprc_get_res_quota()
385 cmd.params[1] |= mc_enc(24, 8, type[3]); dprc_get_res_quota()
386 cmd.params[1] |= mc_enc(32, 8, type[4]); dprc_get_res_quota()
387 cmd.params[1] |= mc_enc(40, 8, type[5]); dprc_get_res_quota()
388 cmd.params[1] |= mc_enc(48, 8, type[6]); dprc_get_res_quota()
389 cmd.params[1] |= mc_enc(56, 8, type[7]); dprc_get_res_quota()
390 cmd.params[2] |= mc_enc(0, 8, type[8]); dprc_get_res_quota()
391 cmd.params[2] |= mc_enc(8, 8, type[9]); dprc_get_res_quota()
392 cmd.params[2] |= mc_enc(16, 8, type[10]); dprc_get_res_quota()
393 cmd.params[2] |= mc_enc(24, 8, type[11]); dprc_get_res_quota()
394 cmd.params[2] |= mc_enc(32, 8, type[12]); dprc_get_res_quota()
395 cmd.params[2] |= mc_enc(40, 8, type[13]); dprc_get_res_quota()
396 cmd.params[2] |= mc_enc(48, 8, type[14]); dprc_get_res_quota()
397 cmd.params[2] |= mc_enc(56, 8, '\0'); dprc_get_res_quota()
400 err = mc_send_command(mc_io, &cmd); dprc_get_res_quota()
405 *quota = mc_dec(cmd.params[0], 32, 16); dprc_get_res_quota()
415 struct mc_command cmd = { 0 }; dprc_assign() local
418 cmd.header = mc_encode_cmd_header(DPRC_CMDID_ASSIGN, dprc_assign()
420 cmd.params[0] |= mc_enc(0, 32, container_id); dprc_assign()
421 cmd.params[0] |= mc_enc(32, 32, res_req->options); dprc_assign()
422 cmd.params[1] |= mc_enc(0, 32, res_req->num); dprc_assign()
423 cmd.params[1] |= mc_enc(32, 32, res_req->id_base_align); dprc_assign()
424 cmd.params[2] |= mc_enc(0, 8, res_req->type[0]); dprc_assign()
425 cmd.params[2] |= mc_enc(8, 8, res_req->type[1]); dprc_assign()
426 cmd.params[2] |= mc_enc(16, 8, res_req->type[2]); dprc_assign()
427 cmd.params[2] |= mc_enc(24, 8, res_req->type[3]); dprc_assign()
428 cmd.params[2] |= mc_enc(32, 8, res_req->type[4]); dprc_assign()
429 cmd.params[2] |= mc_enc(40, 8, res_req->type[5]); dprc_assign()
430 cmd.params[2] |= mc_enc(48, 8, res_req->type[6]); dprc_assign()
431 cmd.params[2] |= mc_enc(56, 8, res_req->type[7]); dprc_assign()
432 cmd.params[3] |= mc_enc(0, 8, res_req->type[8]); dprc_assign()
433 cmd.params[3] |= mc_enc(8, 8, res_req->type[9]); dprc_assign()
434 cmd.params[3] |= mc_enc(16, 8, res_req->type[10]); dprc_assign()
435 cmd.params[3] |= mc_enc(24, 8, res_req->type[11]); dprc_assign()
436 cmd.params[3] |= mc_enc(32, 8, res_req->type[12]); dprc_assign()
437 cmd.params[3] |= mc_enc(40, 8, res_req->type[13]); dprc_assign()
438 cmd.params[3] |= mc_enc(48, 8, res_req->type[14]); dprc_assign()
439 cmd.params[3] |= mc_enc(56, 8, res_req->type[15]); dprc_assign()
442 return mc_send_command(mc_io, &cmd); dprc_assign()
450 struct mc_command cmd = { 0 }; dprc_unassign() local
453 cmd.header = mc_encode_cmd_header(DPRC_CMDID_UNASSIGN, dprc_unassign()
456 cmd.params[0] |= mc_enc(0, 32, child_container_id); dprc_unassign()
457 cmd.params[0] |= mc_enc(32, 32, res_req->options); dprc_unassign()
458 cmd.params[1] |= mc_enc(0, 32, res_req->num); dprc_unassign()
459 cmd.params[1] |= mc_enc(32, 32, res_req->id_base_align); dprc_unassign()
460 cmd.params[2] |= mc_enc(0, 8, res_req->type[0]); dprc_unassign()
461 cmd.params[2] |= mc_enc(8, 8, res_req->type[1]); dprc_unassign()
462 cmd.params[2] |= mc_enc(16, 8, res_req->type[2]); dprc_unassign()
463 cmd.params[2] |= mc_enc(24, 8, res_req->type[3]); dprc_unassign()
464 cmd.params[2] |= mc_enc(32, 8, res_req->type[4]); dprc_unassign()
465 cmd.params[2] |= mc_enc(40, 8, res_req->type[5]); dprc_unassign()
466 cmd.params[2] |= mc_enc(48, 8, res_req->type[6]); dprc_unassign()
467 cmd.params[2] |= mc_enc(56, 8, res_req->type[7]); dprc_unassign()
468 cmd.params[3] |= mc_enc(0, 8, res_req->type[8]); dprc_unassign()
469 cmd.params[3] |= mc_enc(8, 8, res_req->type[9]); dprc_unassign()
470 cmd.params[3] |= mc_enc(16, 8, res_req->type[10]); dprc_unassign()
471 cmd.params[3] |= mc_enc(24, 8, res_req->type[11]); dprc_unassign()
472 cmd.params[3] |= mc_enc(32, 8, res_req->type[12]); dprc_unassign()
473 cmd.params[3] |= mc_enc(40, 8, res_req->type[13]); dprc_unassign()
474 cmd.params[3] |= mc_enc(48, 8, res_req->type[14]); dprc_unassign()
475 cmd.params[3] |= mc_enc(56, 8, res_req->type[15]); dprc_unassign()
478 return mc_send_command(mc_io, &cmd); dprc_unassign()
485 struct mc_command cmd = { 0 }; dprc_get_pool_count() local
489 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_POOL_COUNT, dprc_get_pool_count()
493 err = mc_send_command(mc_io, &cmd); dprc_get_pool_count()
498 *pool_count = mc_dec(cmd.params[0], 0, 32); dprc_get_pool_count()
508 struct mc_command cmd = { 0 }; dprc_get_pool() local
512 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_POOL, dprc_get_pool()
515 cmd.params[0] |= mc_enc(0, 32, pool_index); dprc_get_pool()
518 err = mc_send_command(mc_io, &cmd); dprc_get_pool()
523 type[0] = mc_dec(cmd.params[1], 0, 8); dprc_get_pool()
524 type[1] = mc_dec(cmd.params[1], 8, 8); dprc_get_pool()
525 type[2] = mc_dec(cmd.params[1], 16, 8); dprc_get_pool()
526 type[3] = mc_dec(cmd.params[1], 24, 8); dprc_get_pool()
527 type[4] = mc_dec(cmd.params[1], 32, 8); dprc_get_pool()
528 type[5] = mc_dec(cmd.params[1], 40, 8); dprc_get_pool()
529 type[6] = mc_dec(cmd.params[1], 48, 8); dprc_get_pool()
530 type[7] = mc_dec(cmd.params[1], 56, 8); dprc_get_pool()
531 type[8] = mc_dec(cmd.params[2], 0, 8); dprc_get_pool()
532 type[9] = mc_dec(cmd.params[2], 8, 8); dprc_get_pool()
533 type[10] = mc_dec(cmd.params[2], 16, 8); dprc_get_pool()
534 type[11] = mc_dec(cmd.params[2], 24, 8); dprc_get_pool()
535 type[12] = mc_dec(cmd.params[2], 32, 8); dprc_get_pool()
536 type[13] = mc_dec(cmd.params[2], 40, 8); dprc_get_pool()
537 type[14] = mc_dec(cmd.params[2], 48, 8); dprc_get_pool()
545 struct mc_command cmd = { 0 }; dprc_get_obj_count() local
549 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_OBJ_COUNT, dprc_get_obj_count()
553 err = mc_send_command(mc_io, &cmd); dprc_get_obj_count()
558 *obj_count = mc_dec(cmd.params[0], 32, 32); dprc_get_obj_count()
569 struct mc_command cmd = { 0 }; dprc_get_obj() local
573 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_OBJ, dprc_get_obj()
576 cmd.params[0] |= mc_enc(0, 32, obj_index); dprc_get_obj()
579 err = mc_send_command(mc_io, &cmd); dprc_get_obj()
584 obj_desc->id = mc_dec(cmd.params[0], 32, 32); dprc_get_obj()
585 obj_desc->vendor = mc_dec(cmd.params[1], 0, 16); dprc_get_obj()
586 obj_desc->irq_count = mc_dec(cmd.params[1], 16, 8); dprc_get_obj()
587 obj_desc->region_count = mc_dec(cmd.params[1], 24, 8); dprc_get_obj()
588 obj_desc->state = mc_dec(cmd.params[1], 32, 32); dprc_get_obj()
589 obj_desc->ver_major = mc_dec(cmd.params[2], 0, 16); dprc_get_obj()
590 obj_desc->ver_minor = mc_dec(cmd.params[2], 16, 16); dprc_get_obj()
591 obj_desc->type[0] = mc_dec(cmd.params[3], 0, 8); dprc_get_obj()
592 obj_desc->type[1] = mc_dec(cmd.params[3], 8, 8); dprc_get_obj()
593 obj_desc->type[2] = mc_dec(cmd.params[3], 16, 8); dprc_get_obj()
594 obj_desc->type[3] = mc_dec(cmd.params[3], 24, 8); dprc_get_obj()
595 obj_desc->type[4] = mc_dec(cmd.params[3], 32, 8); dprc_get_obj()
596 obj_desc->type[5] = mc_dec(cmd.params[3], 40, 8); dprc_get_obj()
597 obj_desc->type[6] = mc_dec(cmd.params[3], 48, 8); dprc_get_obj()
598 obj_desc->type[7] = mc_dec(cmd.params[3], 56, 8); dprc_get_obj()
599 obj_desc->type[8] = mc_dec(cmd.params[4], 0, 8); dprc_get_obj()
600 obj_desc->type[9] = mc_dec(cmd.params[4], 8, 8); dprc_get_obj()
601 obj_desc->type[10] = mc_dec(cmd.params[4], 16, 8); dprc_get_obj()
602 obj_desc->type[11] = mc_dec(cmd.params[4], 24, 8); dprc_get_obj()
603 obj_desc->type[12] = mc_dec(cmd.params[4], 32, 8); dprc_get_obj()
604 obj_desc->type[13] = mc_dec(cmd.params[4], 40, 8); dprc_get_obj()
605 obj_desc->type[14] = mc_dec(cmd.params[4], 48, 8); dprc_get_obj()
617 struct mc_command cmd = { 0 }; dprc_get_res_count() local
623 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_RES_COUNT, dprc_get_res_count()
625 cmd.params[1] |= mc_enc(0, 8, type[0]); dprc_get_res_count()
626 cmd.params[1] |= mc_enc(8, 8, type[1]); dprc_get_res_count()
627 cmd.params[1] |= mc_enc(16, 8, type[2]); dprc_get_res_count()
628 cmd.params[1] |= mc_enc(24, 8, type[3]); dprc_get_res_count()
629 cmd.params[1] |= mc_enc(32, 8, type[4]); dprc_get_res_count()
630 cmd.params[1] |= mc_enc(40, 8, type[5]); dprc_get_res_count()
631 cmd.params[1] |= mc_enc(48, 8, type[6]); dprc_get_res_count()
632 cmd.params[1] |= mc_enc(56, 8, type[7]); dprc_get_res_count()
633 cmd.params[2] |= mc_enc(0, 8, type[8]); dprc_get_res_count()
634 cmd.params[2] |= mc_enc(8, 8, type[9]); dprc_get_res_count()
635 cmd.params[2] |= mc_enc(16, 8, type[10]); dprc_get_res_count()
636 cmd.params[2] |= mc_enc(24, 8, type[11]); dprc_get_res_count()
637 cmd.params[2] |= mc_enc(32, 8, type[12]); dprc_get_res_count()
638 cmd.params[2] |= mc_enc(40, 8, type[13]); dprc_get_res_count()
639 cmd.params[2] |= mc_enc(48, 8, type[14]); dprc_get_res_count()
640 cmd.params[2] |= mc_enc(56, 8, '\0'); dprc_get_res_count()
643 err = mc_send_command(mc_io, &cmd); dprc_get_res_count()
648 *res_count = mc_dec(cmd.params[0], 0, 32); dprc_get_res_count()
659 struct mc_command cmd = { 0 }; dprc_get_res_ids() local
663 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_RES_IDS, dprc_get_res_ids()
665 cmd.params[0] |= mc_enc(42, 7, range_desc->iter_status); dprc_get_res_ids()
666 cmd.params[1] |= mc_enc(0, 32, range_desc->base_id); dprc_get_res_ids()
667 cmd.params[1] |= mc_enc(32, 32, range_desc->last_id); dprc_get_res_ids()
668 cmd.params[2] |= mc_enc(0, 8, type[0]); dprc_get_res_ids()
669 cmd.params[2] |= mc_enc(8, 8, type[1]); dprc_get_res_ids()
670 cmd.params[2] |= mc_enc(16, 8, type[2]); dprc_get_res_ids()
671 cmd.params[2] |= mc_enc(24, 8, type[3]); dprc_get_res_ids()
672 cmd.params[2] |= mc_enc(32, 8, type[4]); dprc_get_res_ids()
673 cmd.params[2] |= mc_enc(40, 8, type[5]); dprc_get_res_ids()
674 cmd.params[2] |= mc_enc(48, 8, type[6]); dprc_get_res_ids()
675 cmd.params[2] |= mc_enc(56, 8, type[7]); dprc_get_res_ids()
676 cmd.params[3] |= mc_enc(0, 8, type[8]); dprc_get_res_ids()
677 cmd.params[3] |= mc_enc(8, 8, type[9]); dprc_get_res_ids()
678 cmd.params[3] |= mc_enc(16, 8, type[10]); dprc_get_res_ids()
679 cmd.params[3] |= mc_enc(24, 8, type[11]); dprc_get_res_ids()
680 cmd.params[3] |= mc_enc(32, 8, type[12]); dprc_get_res_ids()
681 cmd.params[3] |= mc_enc(40, 8, type[13]); dprc_get_res_ids()
682 cmd.params[3] |= mc_enc(48, 8, type[14]); dprc_get_res_ids()
683 cmd.params[3] |= mc_enc(56, 8, '\0'); dprc_get_res_ids()
686 err = mc_send_command(mc_io, &cmd); dprc_get_res_ids()
691 range_desc->iter_status = mc_dec(cmd.params[0], 42, 7); dprc_get_res_ids()
692 range_desc->base_id = mc_dec(cmd.params[1], 0, 32); dprc_get_res_ids()
693 range_desc->last_id = mc_dec(cmd.params[1], 32, 32); dprc_get_res_ids()
704 struct mc_command cmd = { 0 }; dprc_get_portal_paddr() local
708 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_PORTAL_PADDR, dprc_get_portal_paddr()
710 cmd.params[0] |= mc_enc(0, 32, portal_id); dprc_get_portal_paddr()
713 err = mc_send_command(mc_io, &cmd); dprc_get_portal_paddr()
718 *portal_addr = mc_dec(cmd.params[1], 0, 64); dprc_get_portal_paddr()
731 struct mc_command cmd = { 0 }; dprc_get_obj_region() local
735 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_OBJ_REG, dprc_get_obj_region()
737 cmd.params[0] |= mc_enc(0, 32, obj_id); dprc_get_obj_region()
738 cmd.params[0] |= mc_enc(48, 8, region_index); dprc_get_obj_region()
739 cmd.params[3] |= mc_enc(0, 8, obj_type[0]); dprc_get_obj_region()
740 cmd.params[3] |= mc_enc(8, 8, obj_type[1]); dprc_get_obj_region()
741 cmd.params[3] |= mc_enc(16, 8, obj_type[2]); dprc_get_obj_region()
742 cmd.params[3] |= mc_enc(24, 8, obj_type[3]); dprc_get_obj_region()
743 cmd.params[3] |= mc_enc(32, 8, obj_type[4]); dprc_get_obj_region()
744 cmd.params[3] |= mc_enc(40, 8, obj_type[5]); dprc_get_obj_region()
745 cmd.params[3] |= mc_enc(48, 8, obj_type[6]); dprc_get_obj_region()
746 cmd.params[3] |= mc_enc(56, 8, obj_type[7]); dprc_get_obj_region()
747 cmd.params[4] |= mc_enc(0, 8, obj_type[8]); dprc_get_obj_region()
748 cmd.params[4] |= mc_enc(8, 8, obj_type[9]); dprc_get_obj_region()
749 cmd.params[4] |= mc_enc(16, 8, obj_type[10]); dprc_get_obj_region()
750 cmd.params[4] |= mc_enc(24, 8, obj_type[11]); dprc_get_obj_region()
751 cmd.params[4] |= mc_enc(32, 8, obj_type[12]); dprc_get_obj_region()
752 cmd.params[4] |= mc_enc(40, 8, obj_type[13]); dprc_get_obj_region()
753 cmd.params[4] |= mc_enc(48, 8, obj_type[14]); dprc_get_obj_region()
754 cmd.params[4] |= mc_enc(56, 8, '\0'); dprc_get_obj_region()
757 err = mc_send_command(mc_io, &cmd); dprc_get_obj_region()
762 region_desc->base_paddr = mc_dec(cmd.params[1], 0, 64); dprc_get_obj_region()
763 region_desc->size = mc_dec(cmd.params[2], 0, 32); dprc_get_obj_region()
774 struct mc_command cmd = { 0 }; dprc_connect() local
777 cmd.header = mc_encode_cmd_header(DPRC_CMDID_CONNECT, dprc_connect()
780 cmd.params[0] |= mc_enc(0, 32, endpoint1->id); dprc_connect()
781 cmd.params[0] |= mc_enc(32, 32, endpoint1->interface_id); dprc_connect()
782 cmd.params[1] |= mc_enc(0, 32, endpoint2->id); dprc_connect()
783 cmd.params[1] |= mc_enc(32, 32, endpoint2->interface_id); dprc_connect()
784 cmd.params[2] |= mc_enc(0, 8, endpoint1->type[0]); dprc_connect()
785 cmd.params[2] |= mc_enc(8, 8, endpoint1->type[1]); dprc_connect()
786 cmd.params[2] |= mc_enc(16, 8, endpoint1->type[2]); dprc_connect()
787 cmd.params[2] |= mc_enc(24, 8, endpoint1->type[3]); dprc_connect()
788 cmd.params[2] |= mc_enc(32, 8, endpoint1->type[4]); dprc_connect()
789 cmd.params[2] |= mc_enc(40, 8, endpoint1->type[5]); dprc_connect()
790 cmd.params[2] |= mc_enc(48, 8, endpoint1->type[6]); dprc_connect()
791 cmd.params[2] |= mc_enc(56, 8, endpoint1->type[7]); dprc_connect()
792 cmd.params[3] |= mc_enc(0, 8, endpoint1->type[8]); dprc_connect()
793 cmd.params[3] |= mc_enc(8, 8, endpoint1->type[9]); dprc_connect()
794 cmd.params[3] |= mc_enc(16, 8, endpoint1->type[10]); dprc_connect()
795 cmd.params[3] |= mc_enc(24, 8, endpoint1->type[11]); dprc_connect()
796 cmd.params[3] |= mc_enc(32, 8, endpoint1->type[12]); dprc_connect()
797 cmd.params[3] |= mc_enc(40, 8, endpoint1->type[13]); dprc_connect()
798 cmd.params[3] |= mc_enc(48, 8, endpoint1->type[14]); dprc_connect()
799 cmd.params[3] |= mc_enc(56, 8, endpoint1->type[15]); dprc_connect()
800 cmd.params[5] |= mc_enc(0, 8, endpoint2->type[0]); dprc_connect()
801 cmd.params[5] |= mc_enc(8, 8, endpoint2->type[1]); dprc_connect()
802 cmd.params[5] |= mc_enc(16, 8, endpoint2->type[2]); dprc_connect()
803 cmd.params[5] |= mc_enc(24, 8, endpoint2->type[3]); dprc_connect()
804 cmd.params[5] |= mc_enc(32, 8, endpoint2->type[4]); dprc_connect()
805 cmd.params[5] |= mc_enc(40, 8, endpoint2->type[5]); dprc_connect()
806 cmd.params[5] |= mc_enc(48, 8, endpoint2->type[6]); dprc_connect()
807 cmd.params[5] |= mc_enc(56, 8, endpoint2->type[7]); dprc_connect()
808 cmd.params[6] |= mc_enc(0, 8, endpoint2->type[8]); dprc_connect()
809 cmd.params[6] |= mc_enc(8, 8, endpoint2->type[9]); dprc_connect()
810 cmd.params[6] |= mc_enc(16, 8, endpoint2->type[10]); dprc_connect()
811 cmd.params[6] |= mc_enc(24, 8, endpoint2->type[11]); dprc_connect()
812 cmd.params[6] |= mc_enc(32, 8, endpoint2->type[12]); dprc_connect()
813 cmd.params[6] |= mc_enc(40, 8, endpoint2->type[13]); dprc_connect()
814 cmd.params[6] |= mc_enc(48, 8, endpoint2->type[14]); dprc_connect()
815 cmd.params[6] |= mc_enc(56, 8, endpoint2->type[15]); dprc_connect()
818 return mc_send_command(mc_io, &cmd); dprc_connect()
825 struct mc_command cmd = { 0 }; dprc_disconnect() local
828 cmd.header = mc_encode_cmd_header(DPRC_CMDID_DISCONNECT, dprc_disconnect()
831 cmd.params[0] |= mc_enc(0, 32, endpoint->id); dprc_disconnect()
832 cmd.params[0] |= mc_enc(32, 32, endpoint->interface_id); dprc_disconnect()
833 cmd.params[1] |= mc_enc(0, 8, endpoint->type[0]); dprc_disconnect()
834 cmd.params[1] |= mc_enc(8, 8, endpoint->type[1]); dprc_disconnect()
835 cmd.params[1] |= mc_enc(16, 8, endpoint->type[2]); dprc_disconnect()
836 cmd.params[1] |= mc_enc(24, 8, endpoint->type[3]); dprc_disconnect()
837 cmd.params[1] |= mc_enc(32, 8, endpoint->type[4]); dprc_disconnect()
838 cmd.params[1] |= mc_enc(40, 8, endpoint->type[5]); dprc_disconnect()
839 cmd.params[1] |= mc_enc(48, 8, endpoint->type[6]); dprc_disconnect()
840 cmd.params[1] |= mc_enc(56, 8, endpoint->type[7]); dprc_disconnect()
841 cmd.params[2] |= mc_enc(0, 8, endpoint->type[8]); dprc_disconnect()
842 cmd.params[2] |= mc_enc(8, 8, endpoint->type[9]); dprc_disconnect()
843 cmd.params[2] |= mc_enc(16, 8, endpoint->type[10]); dprc_disconnect()
844 cmd.params[2] |= mc_enc(24, 8, endpoint->type[11]); dprc_disconnect()
845 cmd.params[2] |= mc_enc(32, 8, endpoint->type[12]); dprc_disconnect()
846 cmd.params[2] |= mc_enc(40, 8, endpoint->type[13]); dprc_disconnect()
847 cmd.params[2] |= mc_enc(48, 8, endpoint->type[14]); dprc_disconnect()
848 cmd.params[2] |= mc_enc(56, 8, endpoint->type[15]); dprc_disconnect()
851 return mc_send_command(mc_io, &cmd); dprc_disconnect()
860 struct mc_command cmd = { 0 }; dprc_get_connection() local
864 cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_CONNECTION, dprc_get_connection()
867 cmd.params[0] |= mc_enc(0, 32, endpoint1->id); dprc_get_connection()
868 cmd.params[0] |= mc_enc(32, 32, endpoint1->interface_id); dprc_get_connection()
869 cmd.params[1] |= mc_enc(0, 8, endpoint1->type[0]); dprc_get_connection()
870 cmd.params[1] |= mc_enc(8, 8, endpoint1->type[1]); dprc_get_connection()
871 cmd.params[1] |= mc_enc(16, 8, endpoint1->type[2]); dprc_get_connection()
872 cmd.params[1] |= mc_enc(24, 8, endpoint1->type[3]); dprc_get_connection()
873 cmd.params[1] |= mc_enc(32, 8, endpoint1->type[4]); dprc_get_connection()
874 cmd.params[1] |= mc_enc(40, 8, endpoint1->type[5]); dprc_get_connection()
875 cmd.params[1] |= mc_enc(48, 8, endpoint1->type[6]); dprc_get_connection()
876 cmd.params[1] |= mc_enc(56, 8, endpoint1->type[7]); dprc_get_connection()
877 cmd.params[2] |= mc_enc(0, 8, endpoint1->type[8]); dprc_get_connection()
878 cmd.params[2] |= mc_enc(8, 8, endpoint1->type[9]); dprc_get_connection()
879 cmd.params[2] |= mc_enc(16, 8, endpoint1->type[10]); dprc_get_connection()
880 cmd.params[2] |= mc_enc(24, 8, endpoint1->type[11]); dprc_get_connection()
881 cmd.params[2] |= mc_enc(32, 8, endpoint1->type[12]); dprc_get_connection()
882 cmd.params[2] |= mc_enc(40, 8, endpoint1->type[13]); dprc_get_connection()
883 cmd.params[2] |= mc_enc(48, 8, endpoint1->type[14]); dprc_get_connection()
884 cmd.params[2] |= mc_enc(56, 8, endpoint1->type[15]); dprc_get_connection()
887 err = mc_send_command(mc_io, &cmd); dprc_get_connection()
892 endpoint2->id = mc_dec(cmd.params[3], 0, 32); dprc_get_connection()
893 endpoint2->interface_id = mc_dec(cmd.params[3], 32, 32); dprc_get_connection()
894 endpoint2->type[0] = mc_dec(cmd.params[4], 0, 8); dprc_get_connection()
895 endpoint2->type[1] = mc_dec(cmd.params[4], 8, 8); dprc_get_connection()
896 endpoint2->type[2] = mc_dec(cmd.params[4], 16, 8); dprc_get_connection()
897 endpoint2->type[3] = mc_dec(cmd.params[4], 24, 8); dprc_get_connection()
898 endpoint2->type[4] = mc_dec(cmd.params[4], 32, 8); dprc_get_connection()
899 endpoint2->type[5] = mc_dec(cmd.params[4], 40, 8); dprc_get_connection()
900 endpoint2->type[6] = mc_dec(cmd.params[4], 48, 8); dprc_get_connection()
901 endpoint2->type[7] = mc_dec(cmd.params[4], 56, 8); dprc_get_connection()
902 endpoint2->type[8] = mc_dec(cmd.params[5], 0, 8); dprc_get_connection()
903 endpoint2->type[9] = mc_dec(cmd.params[5], 8, 8); dprc_get_connection()
904 endpoint2->type[10] = mc_dec(cmd.params[5], 16, 8); dprc_get_connection()
905 endpoint2->type[11] = mc_dec(cmd.params[5], 24, 8); dprc_get_connection()
906 endpoint2->type[12] = mc_dec(cmd.params[5], 32, 8); dprc_get_connection()
907 endpoint2->type[13] = mc_dec(cmd.params[5], 40, 8); dprc_get_connection()
908 endpoint2->type[14] = mc_dec(cmd.params[5], 48, 8); dprc_get_connection()
909 endpoint2->type[15] = mc_dec(cmd.params[5], 56, 8); dprc_get_connection()
910 *state = mc_dec(cmd.params[6], 0, 32); dprc_get_connection()
H A Ddpmcp-cmd.h57 /* cmd, param, offset, width, type, arg_name */
58 #define DPMCP_CMD_CREATE(cmd, cfg) \
59 MC_CMD_OP(cmd, 0, 0, 32, int, cfg->portal_id)
61 /* cmd, param, offset, width, type, arg_name */
62 #define DPMCP_CMD_SET_IRQ(cmd, irq_index, irq_addr, irq_val, user_irq_id) \
64 MC_CMD_OP(cmd, 0, 0, 8, uint8_t, irq_index);\
65 MC_CMD_OP(cmd, 0, 32, 32, uint32_t, irq_val);\
66 MC_CMD_OP(cmd, 1, 0, 64, uint64_t, irq_addr); \
67 MC_CMD_OP(cmd, 2, 0, 32, int, user_irq_id); \
70 /* cmd, param, offset, width, type, arg_name */
71 #define DPMCP_CMD_GET_IRQ(cmd, irq_index) \
72 MC_CMD_OP(cmd, 0, 32, 8, uint8_t, irq_index)
74 /* cmd, param, offset, width, type, arg_name */
75 #define DPMCP_RSP_GET_IRQ(cmd, type, irq_addr, irq_val, user_irq_id) \
77 MC_RSP_OP(cmd, 0, 0, 32, uint32_t, irq_val); \
78 MC_RSP_OP(cmd, 1, 0, 64, uint64_t, irq_addr); \
79 MC_RSP_OP(cmd, 2, 0, 32, int, user_irq_id); \
80 MC_RSP_OP(cmd, 2, 32, 32, int, type); \
83 /* cmd, param, offset, width, type, arg_name */
84 #define DPMCP_CMD_SET_IRQ_ENABLE(cmd, irq_index, en) \
86 MC_CMD_OP(cmd, 0, 0, 8, uint8_t, en); \
87 MC_CMD_OP(cmd, 0, 32, 8, uint8_t, irq_index);\
90 /* cmd, param, offset, width, type, arg_name */
91 #define DPMCP_CMD_GET_IRQ_ENABLE(cmd, irq_index) \
92 MC_CMD_OP(cmd, 0, 32, 8, uint8_t, irq_index)
94 /* cmd, param, offset, width, type, arg_name */
95 #define DPMCP_RSP_GET_IRQ_ENABLE(cmd, en) \
96 MC_RSP_OP(cmd, 0, 0, 8, uint8_t, en)
98 /* cmd, param, offset, width, type, arg_name */
99 #define DPMCP_CMD_SET_IRQ_MASK(cmd, irq_index, mask) \
101 MC_CMD_OP(cmd, 0, 0, 32, uint32_t, mask);\
102 MC_CMD_OP(cmd, 0, 32, 8, uint8_t, irq_index);\
105 /* cmd, param, offset, width, type, arg_name */
106 #define DPMCP_CMD_GET_IRQ_MASK(cmd, irq_index) \
107 MC_CMD_OP(cmd, 0, 32, 8, uint8_t, irq_index)
109 /* cmd, param, offset, width, type, arg_name */
110 #define DPMCP_RSP_GET_IRQ_MASK(cmd, mask) \
111 MC_RSP_OP(cmd, 0, 0, 32, uint32_t, mask)
113 /* cmd, param, offset, width, type, arg_name */
114 #define DPMCP_CMD_GET_IRQ_STATUS(cmd, irq_index) \
115 MC_CMD_OP(cmd, 0, 32, 8, uint8_t, irq_index)
117 /* cmd, param, offset, width, type, arg_name */
118 #define DPMCP_RSP_GET_IRQ_STATUS(cmd, status) \
119 MC_RSP_OP(cmd, 0, 0, 32, uint32_t, status)
121 /* cmd, param, offset, width, type, arg_name */
122 #define DPMCP_CMD_CLEAR_IRQ_STATUS(cmd, irq_index, status) \
124 MC_CMD_OP(cmd, 0, 0, 32, uint32_t, status); \
125 MC_CMD_OP(cmd, 0, 32, 8, uint8_t, irq_index);\
128 /* cmd, param, offset, width, type, arg_name */
129 #define DPMCP_RSP_GET_ATTRIBUTES(cmd, attr) \
131 MC_RSP_OP(cmd, 0, 32, 32, int, attr->id);\
132 MC_RSP_OP(cmd, 1, 0, 16, uint16_t, attr->version.major);\
133 MC_RSP_OP(cmd, 1, 16, 16, uint16_t, attr->version.minor);\
H A Ddpbp.c33 #include "../include/mc-cmd.h"
35 #include "../include/dpbp-cmd.h"
39 struct mc_command cmd = { 0 }; dpbp_open() local
43 cmd.header = mc_encode_cmd_header(DPBP_CMDID_OPEN, dpbp_open()
45 cmd.params[0] |= mc_enc(0, 32, dpbp_id); dpbp_open()
48 err = mc_send_command(mc_io, &cmd); dpbp_open()
53 *token = MC_CMD_HDR_READ_TOKEN(cmd.header); dpbp_open()
61 struct mc_command cmd = { 0 }; dpbp_close() local
64 cmd.header = mc_encode_cmd_header(DPBP_CMDID_CLOSE, MC_CMD_PRI_HIGH, dpbp_close()
68 return mc_send_command(mc_io, &cmd); dpbp_close()
76 struct mc_command cmd = { 0 }; dpbp_create() local
82 cmd.header = mc_encode_cmd_header(DPBP_CMDID_CREATE, dpbp_create()
86 err = mc_send_command(mc_io, &cmd); dpbp_create()
91 *token = MC_CMD_HDR_READ_TOKEN(cmd.header); dpbp_create()
98 struct mc_command cmd = { 0 }; dpbp_destroy() local
101 cmd.header = mc_encode_cmd_header(DPBP_CMDID_DESTROY, dpbp_destroy()
105 return mc_send_command(mc_io, &cmd); dpbp_destroy()
110 struct mc_command cmd = { 0 }; dpbp_enable() local
113 cmd.header = mc_encode_cmd_header(DPBP_CMDID_ENABLE, MC_CMD_PRI_LOW, dpbp_enable()
117 return mc_send_command(mc_io, &cmd); dpbp_enable()
123 struct mc_command cmd = { 0 }; dpbp_disable() local
126 cmd.header = mc_encode_cmd_header(DPBP_CMDID_DISABLE, dpbp_disable()
130 return mc_send_command(mc_io, &cmd); dpbp_disable()
136 struct mc_command cmd = { 0 }; dpbp_is_enabled() local
139 cmd.header = mc_encode_cmd_header(DPBP_CMDID_IS_ENABLED, MC_CMD_PRI_LOW, dpbp_is_enabled()
143 err = mc_send_command(mc_io, &cmd); dpbp_is_enabled()
148 *en = (int)mc_dec(cmd.params[0], 0, 1); dpbp_is_enabled()
155 struct mc_command cmd = { 0 }; dpbp_reset() local
158 cmd.header = mc_encode_cmd_header(DPBP_CMDID_RESET, dpbp_reset()
162 return mc_send_command(mc_io, &cmd); dpbp_reset()
172 struct mc_command cmd = { 0 }; dpbp_set_irq() local
175 cmd.header = mc_encode_cmd_header(DPBP_CMDID_SET_IRQ, dpbp_set_irq()
177 cmd.params[0] |= mc_enc(0, 8, irq_index); dpbp_set_irq()
178 cmd.params[0] |= mc_enc(32, 32, irq_val); dpbp_set_irq()
179 cmd.params[1] |= mc_enc(0, 64, irq_paddr); dpbp_set_irq()
180 cmd.params[2] |= mc_enc(0, 32, user_irq_id); dpbp_set_irq()
183 return mc_send_command(mc_io, &cmd); dpbp_set_irq()
194 struct mc_command cmd = { 0 }; dpbp_get_irq() local
198 cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_IRQ, dpbp_get_irq()
200 cmd.params[0] |= mc_enc(32, 8, irq_index); dpbp_get_irq()
203 err = mc_send_command(mc_io, &cmd); dpbp_get_irq()
208 *irq_val = (uint32_t)mc_dec(cmd.params[0], 0, 32); dpbp_get_irq()
209 *irq_paddr = (uint64_t)mc_dec(cmd.params[1], 0, 64); dpbp_get_irq()
210 *user_irq_id = (int)mc_dec(cmd.params[2], 0, 32); dpbp_get_irq()
211 *type = (int)mc_dec(cmd.params[2], 32, 32); dpbp_get_irq()
220 struct mc_command cmd = { 0 }; dpbp_set_irq_enable() local
223 cmd.header = mc_encode_cmd_header(DPBP_CMDID_SET_IRQ_ENABLE, dpbp_set_irq_enable()
225 cmd.params[0] |= mc_enc(0, 8, en); dpbp_set_irq_enable()
226 cmd.params[0] |= mc_enc(32, 8, irq_index); dpbp_set_irq_enable()
229 return mc_send_command(mc_io, &cmd); dpbp_set_irq_enable()
237 struct mc_command cmd = { 0 }; dpbp_get_irq_enable() local
241 cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_IRQ_ENABLE, dpbp_get_irq_enable()
243 cmd.params[0] |= mc_enc(32, 8, irq_index); dpbp_get_irq_enable()
246 err = mc_send_command(mc_io, &cmd); dpbp_get_irq_enable()
251 *en = (uint8_t)mc_dec(cmd.params[0], 0, 8); dpbp_get_irq_enable()
260 struct mc_command cmd = { 0 }; dpbp_set_irq_mask() local
263 cmd.header = mc_encode_cmd_header(DPBP_CMDID_SET_IRQ_MASK, dpbp_set_irq_mask()
265 cmd.params[0] |= mc_enc(0, 32, mask); dpbp_set_irq_mask()
266 cmd.params[0] |= mc_enc(32, 8, irq_index); dpbp_set_irq_mask()
269 return mc_send_command(mc_io, &cmd); dpbp_set_irq_mask()
277 struct mc_command cmd = { 0 }; dpbp_get_irq_mask() local
281 cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_IRQ_MASK, dpbp_get_irq_mask()
283 cmd.params[0] |= mc_enc(32, 8, irq_index); dpbp_get_irq_mask()
286 err = mc_send_command(mc_io, &cmd); dpbp_get_irq_mask()
291 *mask = (uint32_t)mc_dec(cmd.params[0], 0, 32); dpbp_get_irq_mask()
300 struct mc_command cmd = { 0 }; dpbp_get_irq_status() local
304 cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_IRQ_STATUS, dpbp_get_irq_status()
306 cmd.params[0] |= mc_enc(32, 8, irq_index); dpbp_get_irq_status()
309 err = mc_send_command(mc_io, &cmd); dpbp_get_irq_status()
314 *status = (uint32_t)mc_dec(cmd.params[0], 0, 32); dpbp_get_irq_status()
323 struct mc_command cmd = { 0 }; dpbp_clear_irq_status() local
326 cmd.header = mc_encode_cmd_header(DPBP_CMDID_CLEAR_IRQ_STATUS, dpbp_clear_irq_status()
328 cmd.params[0] |= mc_enc(0, 32, status); dpbp_clear_irq_status()
329 cmd.params[0] |= mc_enc(32, 8, irq_index); dpbp_clear_irq_status()
332 return mc_send_command(mc_io, &cmd); dpbp_clear_irq_status()
339 struct mc_command cmd = { 0 }; dpbp_get_attributes() local
343 cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_ATTR, dpbp_get_attributes()
347 err = mc_send_command(mc_io, &cmd); dpbp_get_attributes()
352 attr->bpid = (uint16_t)mc_dec(cmd.params[0], 16, 16); dpbp_get_attributes()
353 attr->id = (int)mc_dec(cmd.params[0], 32, 32); dpbp_get_attributes()
354 attr->version.major = (uint16_t)mc_dec(cmd.params[1], 0, 16); dpbp_get_attributes()
355 attr->version.minor = (uint16_t)mc_dec(cmd.params[1], 16, 16); dpbp_get_attributes()
H A Ddpmcp.c33 #include "../include/mc-cmd.h"
35 #include "dpmcp-cmd.h"
39 struct mc_command cmd = { 0 }; dpmcp_open() local
43 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_OPEN, dpmcp_open()
45 cmd.params[0] |= mc_enc(0, 32, dpmcp_id); dpmcp_open()
48 err = mc_send_command(mc_io, &cmd); dpmcp_open()
53 *token = MC_CMD_HDR_READ_TOKEN(cmd.header); dpmcp_open()
60 struct mc_command cmd = { 0 }; dpmcp_close() local
63 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_CLOSE, MC_CMD_PRI_HIGH, dpmcp_close()
67 return mc_send_command(mc_io, &cmd); dpmcp_close()
74 struct mc_command cmd = { 0 }; dpmcp_create() local
78 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_CREATE, dpmcp_create()
80 cmd.params[0] |= mc_enc(0, 32, cfg->portal_id); dpmcp_create()
83 err = mc_send_command(mc_io, &cmd); dpmcp_create()
88 *token = MC_CMD_HDR_READ_TOKEN(cmd.header); dpmcp_create()
95 struct mc_command cmd = { 0 }; dpmcp_destroy() local
98 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_DESTROY, dpmcp_destroy()
102 return mc_send_command(mc_io, &cmd); dpmcp_destroy()
107 struct mc_command cmd = { 0 }; dpmcp_reset() local
110 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_RESET, dpmcp_reset()
114 return mc_send_command(mc_io, &cmd); dpmcp_reset()
124 struct mc_command cmd = { 0 }; dpmcp_set_irq() local
127 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_SET_IRQ, dpmcp_set_irq()
129 cmd.params[0] |= mc_enc(0, 8, irq_index); dpmcp_set_irq()
130 cmd.params[0] |= mc_enc(32, 32, irq_val); dpmcp_set_irq()
131 cmd.params[1] |= mc_enc(0, 64, irq_addr); dpmcp_set_irq()
132 cmd.params[2] |= mc_enc(0, 32, user_irq_id); dpmcp_set_irq()
135 return mc_send_command(mc_io, &cmd); dpmcp_set_irq()
146 struct mc_command cmd = { 0 }; dpmcp_get_irq() local
150 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_GET_IRQ, dpmcp_get_irq()
152 cmd.params[0] |= mc_enc(32, 8, irq_index); dpmcp_get_irq()
155 err = mc_send_command(mc_io, &cmd); dpmcp_get_irq()
160 *irq_val = (uint32_t)mc_dec(cmd.params[0], 0, 32); dpmcp_get_irq()
161 *irq_addr = (uint64_t)mc_dec(cmd.params[1], 0, 64); dpmcp_get_irq()
162 *user_irq_id = (int)mc_dec(cmd.params[2], 0, 32); dpmcp_get_irq()
163 *type = (int)mc_dec(cmd.params[2], 32, 32); dpmcp_get_irq()
172 struct mc_command cmd = { 0 }; dpmcp_set_irq_enable() local
175 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_SET_IRQ_ENABLE, dpmcp_set_irq_enable()
177 cmd.params[0] |= mc_enc(0, 8, en); dpmcp_set_irq_enable()
178 cmd.params[0] |= mc_enc(32, 8, irq_index); dpmcp_set_irq_enable()
181 return mc_send_command(mc_io, &cmd); dpmcp_set_irq_enable()
189 struct mc_command cmd = { 0 }; dpmcp_get_irq_enable() local
193 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_GET_IRQ_ENABLE, dpmcp_get_irq_enable()
195 cmd.params[0] |= mc_enc(32, 8, irq_index); dpmcp_get_irq_enable()
198 err = mc_send_command(mc_io, &cmd); dpmcp_get_irq_enable()
203 *en = (uint8_t)mc_dec(cmd.params[0], 0, 8); dpmcp_get_irq_enable()
212 struct mc_command cmd = { 0 }; dpmcp_set_irq_mask() local
215 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_SET_IRQ_MASK, dpmcp_set_irq_mask()
217 cmd.params[0] |= mc_enc(0, 32, mask); dpmcp_set_irq_mask()
218 cmd.params[0] |= mc_enc(32, 8, irq_index); dpmcp_set_irq_mask()
221 return mc_send_command(mc_io, &cmd); dpmcp_set_irq_mask()
229 struct mc_command cmd = { 0 }; dpmcp_get_irq_mask() local
233 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_GET_IRQ_MASK, dpmcp_get_irq_mask()
235 cmd.params[0] |= mc_enc(32, 8, irq_index); dpmcp_get_irq_mask()
238 err = mc_send_command(mc_io, &cmd); dpmcp_get_irq_mask()
243 *mask = (uint32_t)mc_dec(cmd.params[0], 0, 32); dpmcp_get_irq_mask()
252 struct mc_command cmd = { 0 }; dpmcp_get_irq_status() local
256 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_GET_IRQ_STATUS, dpmcp_get_irq_status()
258 cmd.params[0] |= mc_enc(32, 8, irq_index); dpmcp_get_irq_status()
261 err = mc_send_command(mc_io, &cmd); dpmcp_get_irq_status()
266 *status = (uint32_t)mc_dec(cmd.params[0], 0, 32); dpmcp_get_irq_status()
275 struct mc_command cmd = { 0 }; dpmcp_clear_irq_status() local
278 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_CLEAR_IRQ_STATUS, dpmcp_clear_irq_status()
280 cmd.params[0] |= mc_enc(0, 32, status); dpmcp_clear_irq_status()
281 cmd.params[0] |= mc_enc(32, 8, irq_index); dpmcp_clear_irq_status()
284 return mc_send_command(mc_io, &cmd); dpmcp_clear_irq_status()
291 struct mc_command cmd = { 0 }; dpmcp_get_attributes() local
295 cmd.header = mc_encode_cmd_header(DPMCP_CMDID_GET_ATTR, dpmcp_get_attributes()
299 err = mc_send_command(mc_io, &cmd); dpmcp_get_attributes()
304 attr->id = (int)mc_dec(cmd.params[0], 32, 32); dpmcp_get_attributes()
305 attr->version.major = (uint16_t)mc_dec(cmd.params[1], 0, 16); dpmcp_get_attributes()
306 attr->version.minor = (uint16_t)mc_dec(cmd.params[1], 16, 16); dpmcp_get_attributes()
H A Ddpmng.c33 #include "../include/mc-cmd.h"
35 #include "dpmng-cmd.h"
39 struct mc_command cmd = { 0 }; mc_get_version() local
43 cmd.header = mc_encode_cmd_header(DPMNG_CMDID_GET_VERSION, mc_get_version()
47 err = mc_send_command(mc_io, &cmd); mc_get_version()
52 mc_ver_info->revision = mc_dec(cmd.params[0], 0, 32); mc_get_version()
53 mc_ver_info->major = mc_dec(cmd.params[0], 32, 32); mc_get_version()
54 mc_ver_info->minor = mc_dec(cmd.params[1], 0, 32); mc_get_version()
61 struct mc_command cmd = { 0 }; dpmng_get_container_id() local
65 cmd.header = mc_encode_cmd_header(DPMNG_CMDID_GET_CONT_ID, dpmng_get_container_id()
69 err = mc_send_command(mc_io, &cmd); dpmng_get_container_id()
74 *container_id = mc_dec(cmd.params[0], 0, 32); dpmng_get_container_id()
/linux-4.1.27/drivers/md/
H A Ddm-cache-metadata.c205 static int superblock_read_lock(struct dm_cache_metadata *cmd, superblock_read_lock() argument
208 return dm_bm_read_lock(cmd->bm, CACHE_SUPERBLOCK_LOCATION, superblock_read_lock()
212 static int superblock_lock_zero(struct dm_cache_metadata *cmd, superblock_lock_zero() argument
215 return dm_bm_write_lock_zero(cmd->bm, CACHE_SUPERBLOCK_LOCATION, superblock_lock_zero()
219 static int superblock_lock(struct dm_cache_metadata *cmd, superblock_lock() argument
222 return dm_bm_write_lock(cmd->bm, CACHE_SUPERBLOCK_LOCATION, superblock_lock()
255 static void __setup_mapping_info(struct dm_cache_metadata *cmd) __setup_mapping_info() argument
264 dm_array_info_init(&cmd->info, cmd->tm, &vt); __setup_mapping_info()
266 if (cmd->policy_hint_size) { __setup_mapping_info()
268 dm_array_info_init(&cmd->hint_info, cmd->tm, &vt); __setup_mapping_info()
272 static int __save_sm_root(struct dm_cache_metadata *cmd) __save_sm_root() argument
277 r = dm_sm_root_size(cmd->metadata_sm, &metadata_len); __save_sm_root()
281 return dm_sm_copy_root(cmd->metadata_sm, &cmd->metadata_space_map_root, __save_sm_root()
285 static void __copy_sm_root(struct dm_cache_metadata *cmd, __copy_sm_root() argument
289 &cmd->metadata_space_map_root, __copy_sm_root()
290 sizeof(cmd->metadata_space_map_root)); __copy_sm_root()
293 static int __write_initial_superblock(struct dm_cache_metadata *cmd) __write_initial_superblock() argument
298 sector_t bdev_size = i_size_read(cmd->bdev->bd_inode) >> SECTOR_SHIFT; __write_initial_superblock()
304 r = dm_tm_pre_commit(cmd->tm); __write_initial_superblock()
312 r = __save_sm_root(cmd); __write_initial_superblock()
316 r = superblock_lock_zero(cmd, &sblock); __write_initial_superblock()
329 __copy_sm_root(cmd, disk_super); __write_initial_superblock()
331 disk_super->mapping_root = cpu_to_le64(cmd->root); __write_initial_superblock()
332 disk_super->hint_root = cpu_to_le64(cmd->hint_root); __write_initial_superblock()
333 disk_super->discard_root = cpu_to_le64(cmd->discard_root); __write_initial_superblock()
334 disk_super->discard_block_size = cpu_to_le64(cmd->discard_block_size); __write_initial_superblock()
335 disk_super->discard_nr_blocks = cpu_to_le64(from_dblock(cmd->discard_nr_blocks)); __write_initial_superblock()
337 disk_super->data_block_size = cpu_to_le32(cmd->data_block_size); __write_initial_superblock()
345 return dm_tm_commit(cmd->tm, sblock); __write_initial_superblock()
348 static int __format_metadata(struct dm_cache_metadata *cmd) __format_metadata() argument
352 r = dm_tm_create_with_sm(cmd->bm, CACHE_SUPERBLOCK_LOCATION, __format_metadata()
353 &cmd->tm, &cmd->metadata_sm); __format_metadata()
359 __setup_mapping_info(cmd); __format_metadata()
361 r = dm_array_empty(&cmd->info, &cmd->root); __format_metadata()
365 dm_disk_bitset_init(cmd->tm, &cmd->discard_info); __format_metadata()
367 r = dm_bitset_empty(&cmd->discard_info, &cmd->discard_root); __format_metadata()
371 cmd->discard_block_size = 0; __format_metadata()
372 cmd->discard_nr_blocks = 0; __format_metadata()
374 r = __write_initial_superblock(cmd); __format_metadata()
378 cmd->clean_when_opened = true; __format_metadata()
382 dm_tm_destroy(cmd->tm); __format_metadata()
383 dm_sm_destroy(cmd->metadata_sm); __format_metadata()
389 struct dm_cache_metadata *cmd) __check_incompat_features()
403 if (get_disk_ro(cmd->bdev->bd_disk)) __check_incompat_features()
416 static int __open_metadata(struct dm_cache_metadata *cmd) __open_metadata() argument
423 r = superblock_read_lock(cmd, &sblock); __open_metadata()
432 if (le32_to_cpu(disk_super->data_block_size) != cmd->data_block_size) { __open_metadata()
435 (unsigned long long)cmd->data_block_size); __open_metadata()
440 r = __check_incompat_features(disk_super, cmd); __open_metadata()
444 r = dm_tm_open_with_sm(cmd->bm, CACHE_SUPERBLOCK_LOCATION, __open_metadata()
447 &cmd->tm, &cmd->metadata_sm); __open_metadata()
453 __setup_mapping_info(cmd); __open_metadata()
454 dm_disk_bitset_init(cmd->tm, &cmd->discard_info); __open_metadata()
456 cmd->clean_when_opened = test_bit(CLEAN_SHUTDOWN, &sb_flags); __open_metadata()
464 static int __open_or_format_metadata(struct dm_cache_metadata *cmd, __open_or_format_metadata() argument
470 r = __superblock_all_zeroes(cmd->bm, &unformatted); __open_or_format_metadata()
475 return format_device ? __format_metadata(cmd) : -EPERM; __open_or_format_metadata()
477 return __open_metadata(cmd); __open_or_format_metadata()
480 static int __create_persistent_data_objects(struct dm_cache_metadata *cmd, __create_persistent_data_objects() argument
484 cmd->bm = dm_block_manager_create(cmd->bdev, DM_CACHE_METADATA_BLOCK_SIZE << SECTOR_SHIFT, __create_persistent_data_objects()
487 if (IS_ERR(cmd->bm)) { __create_persistent_data_objects()
489 return PTR_ERR(cmd->bm); __create_persistent_data_objects()
492 r = __open_or_format_metadata(cmd, may_format_device); __create_persistent_data_objects()
494 dm_block_manager_destroy(cmd->bm); __create_persistent_data_objects()
499 static void __destroy_persistent_data_objects(struct dm_cache_metadata *cmd) __destroy_persistent_data_objects() argument
501 dm_sm_destroy(cmd->metadata_sm); __destroy_persistent_data_objects()
502 dm_tm_destroy(cmd->tm); __destroy_persistent_data_objects()
503 dm_block_manager_destroy(cmd->bm); __destroy_persistent_data_objects()
527 static void read_superblock_fields(struct dm_cache_metadata *cmd, read_superblock_fields() argument
530 cmd->root = le64_to_cpu(disk_super->mapping_root); read_superblock_fields()
531 cmd->hint_root = le64_to_cpu(disk_super->hint_root); read_superblock_fields()
532 cmd->discard_root = le64_to_cpu(disk_super->discard_root); read_superblock_fields()
533 cmd->discard_block_size = le64_to_cpu(disk_super->discard_block_size); read_superblock_fields()
534 cmd->discard_nr_blocks = to_dblock(le64_to_cpu(disk_super->discard_nr_blocks)); read_superblock_fields()
535 cmd->data_block_size = le32_to_cpu(disk_super->data_block_size); read_superblock_fields()
536 cmd->cache_blocks = to_cblock(le32_to_cpu(disk_super->cache_blocks)); read_superblock_fields()
537 strncpy(cmd->policy_name, disk_super->policy_name, sizeof(cmd->policy_name)); read_superblock_fields()
538 cmd->policy_version[0] = le32_to_cpu(disk_super->policy_version[0]); read_superblock_fields()
539 cmd->policy_version[1] = le32_to_cpu(disk_super->policy_version[1]); read_superblock_fields()
540 cmd->policy_version[2] = le32_to_cpu(disk_super->policy_version[2]); read_superblock_fields()
541 cmd->policy_hint_size = le32_to_cpu(disk_super->policy_hint_size); read_superblock_fields()
543 cmd->stats.read_hits = le32_to_cpu(disk_super->read_hits); read_superblock_fields()
544 cmd->stats.read_misses = le32_to_cpu(disk_super->read_misses); read_superblock_fields()
545 cmd->stats.write_hits = le32_to_cpu(disk_super->write_hits); read_superblock_fields()
546 cmd->stats.write_misses = le32_to_cpu(disk_super->write_misses); read_superblock_fields()
548 cmd->changed = false; read_superblock_fields()
554 static int __begin_transaction_flags(struct dm_cache_metadata *cmd, __begin_transaction_flags() argument
561 r = superblock_lock(cmd, &sblock); __begin_transaction_flags()
567 read_superblock_fields(cmd, disk_super); __begin_transaction_flags()
570 return dm_bm_flush(cmd->bm); __begin_transaction_flags()
573 static int __begin_transaction(struct dm_cache_metadata *cmd) __begin_transaction() argument
583 r = superblock_read_lock(cmd, &sblock); __begin_transaction()
588 read_superblock_fields(cmd, disk_super); __begin_transaction()
594 static int __commit_transaction(struct dm_cache_metadata *cmd, __commit_transaction() argument
606 r = dm_bitset_flush(&cmd->discard_info, cmd->discard_root, __commit_transaction()
607 &cmd->discard_root); __commit_transaction()
611 r = dm_tm_pre_commit(cmd->tm); __commit_transaction()
615 r = __save_sm_root(cmd); __commit_transaction()
619 r = superblock_lock(cmd, &sblock); __commit_transaction()
628 disk_super->mapping_root = cpu_to_le64(cmd->root); __commit_transaction()
629 disk_super->hint_root = cpu_to_le64(cmd->hint_root); __commit_transaction()
630 disk_super->discard_root = cpu_to_le64(cmd->discard_root); __commit_transaction()
631 disk_super->discard_block_size = cpu_to_le64(cmd->discard_block_size); __commit_transaction()
632 disk_super->discard_nr_blocks = cpu_to_le64(from_dblock(cmd->discard_nr_blocks)); __commit_transaction()
633 disk_super->cache_blocks = cpu_to_le32(from_cblock(cmd->cache_blocks)); __commit_transaction()
634 strncpy(disk_super->policy_name, cmd->policy_name, sizeof(disk_super->policy_name)); __commit_transaction()
635 disk_super->policy_version[0] = cpu_to_le32(cmd->policy_version[0]); __commit_transaction()
636 disk_super->policy_version[1] = cpu_to_le32(cmd->policy_version[1]); __commit_transaction()
637 disk_super->policy_version[2] = cpu_to_le32(cmd->policy_version[2]); __commit_transaction()
639 disk_super->read_hits = cpu_to_le32(cmd->stats.read_hits); __commit_transaction()
640 disk_super->read_misses = cpu_to_le32(cmd->stats.read_misses); __commit_transaction()
641 disk_super->write_hits = cpu_to_le32(cmd->stats.write_hits); __commit_transaction()
642 disk_super->write_misses = cpu_to_le32(cmd->stats.write_misses); __commit_transaction()
643 __copy_sm_root(cmd, disk_super); __commit_transaction()
645 return dm_tm_commit(cmd->tm, sblock); __commit_transaction()
681 struct dm_cache_metadata *cmd; metadata_open() local
683 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); metadata_open()
684 if (!cmd) { metadata_open()
689 atomic_set(&cmd->ref_count, 1); metadata_open()
690 init_rwsem(&cmd->root_lock); metadata_open()
691 cmd->bdev = bdev; metadata_open()
692 cmd->data_block_size = data_block_size; metadata_open()
693 cmd->cache_blocks = 0; metadata_open()
694 cmd->policy_hint_size = policy_hint_size; metadata_open()
695 cmd->changed = true; metadata_open()
697 r = __create_persistent_data_objects(cmd, may_format_device); metadata_open()
699 kfree(cmd); metadata_open()
703 r = __begin_transaction_flags(cmd, clear_clean_shutdown); metadata_open()
705 dm_cache_metadata_close(cmd); metadata_open()
709 return cmd; metadata_open()
722 struct dm_cache_metadata *cmd; lookup() local
724 list_for_each_entry(cmd, &table, list) lookup()
725 if (cmd->bdev == bdev) { lookup()
726 atomic_inc(&cmd->ref_count); lookup()
727 return cmd; lookup()
738 struct dm_cache_metadata *cmd, *cmd2; lookup_or_open() local
741 cmd = lookup(bdev); lookup_or_open()
744 if (cmd) lookup_or_open()
745 return cmd; lookup_or_open()
747 cmd = metadata_open(bdev, data_block_size, may_format_device, policy_hint_size); lookup_or_open()
748 if (!IS_ERR(cmd)) { lookup_or_open()
753 __destroy_persistent_data_objects(cmd); lookup_or_open()
754 kfree(cmd); lookup_or_open()
757 list_add(&cmd->list, &table); lookup_or_open()
761 return cmd; lookup_or_open()
764 static bool same_params(struct dm_cache_metadata *cmd, sector_t data_block_size) same_params() argument
766 if (cmd->data_block_size != data_block_size) { same_params()
769 (unsigned long long) cmd->data_block_size); same_params()
781 struct dm_cache_metadata *cmd = lookup_or_open(bdev, data_block_size, dm_cache_metadata_open() local
784 if (!IS_ERR(cmd) && !same_params(cmd, data_block_size)) { dm_cache_metadata_open()
785 dm_cache_metadata_close(cmd); dm_cache_metadata_open()
789 return cmd; dm_cache_metadata_open()
792 void dm_cache_metadata_close(struct dm_cache_metadata *cmd) dm_cache_metadata_close() argument
794 if (atomic_dec_and_test(&cmd->ref_count)) { dm_cache_metadata_close()
796 list_del(&cmd->list); dm_cache_metadata_close()
799 __destroy_persistent_data_objects(cmd); dm_cache_metadata_close()
800 kfree(cmd); dm_cache_metadata_close()
807 static int block_unmapped_or_clean(struct dm_cache_metadata *cmd, dm_cblock_t b, block_unmapped_or_clean() argument
815 r = dm_array_get_value(&cmd->info, cmd->root, from_cblock(b), &value); block_unmapped_or_clean()
827 static int blocks_are_unmapped_or_clean(struct dm_cache_metadata *cmd, blocks_are_unmapped_or_clean() argument
835 r = block_unmapped_or_clean(cmd, begin, result); blocks_are_unmapped_or_clean()
851 int dm_cache_resize(struct dm_cache_metadata *cmd, dm_cblock_t new_cache_size) dm_cache_resize() argument
857 down_write(&cmd->root_lock); dm_cache_resize()
860 if (from_cblock(new_cache_size) < from_cblock(cmd->cache_blocks)) { dm_cache_resize()
861 r = blocks_are_unmapped_or_clean(cmd, new_cache_size, cmd->cache_blocks, &clean); dm_cache_resize()
875 r = dm_array_resize(&cmd->info, cmd->root, from_cblock(cmd->cache_blocks), dm_cache_resize()
877 &null_mapping, &cmd->root); dm_cache_resize()
879 cmd->cache_blocks = new_cache_size; dm_cache_resize()
880 cmd->changed = true; dm_cache_resize()
883 up_write(&cmd->root_lock); dm_cache_resize()
888 int dm_cache_discard_bitset_resize(struct dm_cache_metadata *cmd, dm_cache_discard_bitset_resize() argument
894 down_write(&cmd->root_lock); dm_cache_discard_bitset_resize()
895 r = dm_bitset_resize(&cmd->discard_info, dm_cache_discard_bitset_resize()
896 cmd->discard_root, dm_cache_discard_bitset_resize()
897 from_dblock(cmd->discard_nr_blocks), dm_cache_discard_bitset_resize()
899 false, &cmd->discard_root); dm_cache_discard_bitset_resize()
901 cmd->discard_block_size = discard_block_size; dm_cache_discard_bitset_resize()
902 cmd->discard_nr_blocks = new_nr_entries; dm_cache_discard_bitset_resize()
905 cmd->changed = true; dm_cache_discard_bitset_resize()
906 up_write(&cmd->root_lock); dm_cache_discard_bitset_resize()
911 static int __set_discard(struct dm_cache_metadata *cmd, dm_dblock_t b) __set_discard() argument
913 return dm_bitset_set_bit(&cmd->discard_info, cmd->discard_root, __set_discard()
914 from_dblock(b), &cmd->discard_root); __set_discard()
917 static int __clear_discard(struct dm_cache_metadata *cmd, dm_dblock_t b) __clear_discard() argument
919 return dm_bitset_clear_bit(&cmd->discard_info, cmd->discard_root, __clear_discard()
920 from_dblock(b), &cmd->discard_root); __clear_discard()
923 static int __is_discarded(struct dm_cache_metadata *cmd, dm_dblock_t b, __is_discarded() argument
926 return dm_bitset_test_bit(&cmd->discard_info, cmd->discard_root, __is_discarded()
927 from_dblock(b), &cmd->discard_root, __is_discarded()
931 static int __discard(struct dm_cache_metadata *cmd, __discard() argument
936 r = (discard ? __set_discard : __clear_discard)(cmd, dblock); __discard()
940 cmd->changed = true; __discard()
944 int dm_cache_set_discard(struct dm_cache_metadata *cmd, dm_cache_set_discard() argument
949 down_write(&cmd->root_lock); dm_cache_set_discard()
950 r = __discard(cmd, dblock, discard); dm_cache_set_discard()
951 up_write(&cmd->root_lock); dm_cache_set_discard()
956 static int __load_discards(struct dm_cache_metadata *cmd, __load_discards() argument
963 for (b = 0; b < from_dblock(cmd->discard_nr_blocks); b++) { __load_discards()
966 if (cmd->clean_when_opened) { __load_discards()
967 r = __is_discarded(cmd, dblock, &discard); __load_discards()
973 r = fn(context, cmd->discard_block_size, dblock, discard); __load_discards()
981 int dm_cache_load_discards(struct dm_cache_metadata *cmd, dm_cache_load_discards() argument
986 down_read(&cmd->root_lock); dm_cache_load_discards()
987 r = __load_discards(cmd, fn, context); dm_cache_load_discards()
988 up_read(&cmd->root_lock); dm_cache_load_discards()
993 dm_cblock_t dm_cache_size(struct dm_cache_metadata *cmd) dm_cache_size() argument
997 down_read(&cmd->root_lock); dm_cache_size()
998 r = cmd->cache_blocks; dm_cache_size()
999 up_read(&cmd->root_lock); dm_cache_size()
1004 static int __remove(struct dm_cache_metadata *cmd, dm_cblock_t cblock) __remove() argument
1010 r = dm_array_set_value(&cmd->info, cmd->root, from_cblock(cblock), __remove()
1011 &value, &cmd->root); __remove()
1015 cmd->changed = true; __remove()
1019 int dm_cache_remove_mapping(struct dm_cache_metadata *cmd, dm_cblock_t cblock) dm_cache_remove_mapping() argument
1023 down_write(&cmd->root_lock); dm_cache_remove_mapping()
1024 r = __remove(cmd, cblock); dm_cache_remove_mapping()
1025 up_write(&cmd->root_lock); dm_cache_remove_mapping()
1030 static int __insert(struct dm_cache_metadata *cmd, __insert() argument
1037 r = dm_array_set_value(&cmd->info, cmd->root, from_cblock(cblock), __insert()
1038 &value, &cmd->root); __insert()
1042 cmd->changed = true; __insert()
1046 int dm_cache_insert_mapping(struct dm_cache_metadata *cmd, dm_cache_insert_mapping() argument
1051 down_write(&cmd->root_lock); dm_cache_insert_mapping()
1052 r = __insert(cmd, cblock, oblock); dm_cache_insert_mapping()
1053 up_write(&cmd->root_lock); dm_cache_insert_mapping()
1062 struct dm_cache_metadata *cmd; member in struct:thunk
1067 static bool policy_unchanged(struct dm_cache_metadata *cmd, policy_unchanged() argument
1077 if (strncmp(cmd->policy_name, policy_name, sizeof(cmd->policy_name))) policy_unchanged()
1083 if (cmd->policy_version[0] != policy_version[0]) policy_unchanged()
1089 if (cmd->policy_hint_size != policy_hint_size) policy_unchanged()
1095 static bool hints_array_initialized(struct dm_cache_metadata *cmd) hints_array_initialized() argument
1097 return cmd->hint_root && cmd->policy_hint_size; hints_array_initialized()
1100 static bool hints_array_available(struct dm_cache_metadata *cmd, hints_array_available() argument
1103 return cmd->clean_when_opened && policy_unchanged(cmd, policy) && hints_array_available()
1104 hints_array_initialized(cmd); hints_array_available()
1116 struct dm_cache_metadata *cmd = thunk->cmd; __load_mapping() local
1123 r = dm_array_get_value(&cmd->hint_info, cmd->hint_root, __load_mapping()
1137 static int __load_mappings(struct dm_cache_metadata *cmd, __load_mappings() argument
1146 thunk.cmd = cmd; __load_mappings()
1147 thunk.respect_dirty_flags = cmd->clean_when_opened; __load_mappings()
1148 thunk.hints_valid = hints_array_available(cmd, policy); __load_mappings()
1150 return dm_array_walk(&cmd->info, cmd->root, __load_mapping, &thunk); __load_mappings()
1153 int dm_cache_load_mappings(struct dm_cache_metadata *cmd, dm_cache_load_mappings() argument
1159 down_read(&cmd->root_lock); dm_cache_load_mappings()
1160 r = __load_mappings(cmd, policy, fn, context); dm_cache_load_mappings()
1161 up_read(&cmd->root_lock); dm_cache_load_mappings()
1179 static int __dump_mappings(struct dm_cache_metadata *cmd) __dump_mappings() argument
1181 return dm_array_walk(&cmd->info, cmd->root, __dump_mapping, NULL); __dump_mappings()
1184 void dm_cache_dump(struct dm_cache_metadata *cmd) dm_cache_dump() argument
1186 down_read(&cmd->root_lock); dm_cache_dump()
1187 __dump_mappings(cmd); dm_cache_dump()
1188 up_read(&cmd->root_lock); dm_cache_dump()
1191 int dm_cache_changed_this_transaction(struct dm_cache_metadata *cmd) dm_cache_changed_this_transaction() argument
1195 down_read(&cmd->root_lock); dm_cache_changed_this_transaction()
1196 r = cmd->changed; dm_cache_changed_this_transaction()
1197 up_read(&cmd->root_lock); dm_cache_changed_this_transaction()
1202 static int __dirty(struct dm_cache_metadata *cmd, dm_cblock_t cblock, bool dirty) __dirty() argument
1209 r = dm_array_get_value(&cmd->info, cmd->root, from_cblock(cblock), &value); __dirty()
1222 r = dm_array_set_value(&cmd->info, cmd->root, from_cblock(cblock), __dirty()
1223 &value, &cmd->root); __dirty()
1227 cmd->changed = true; __dirty()
1232 int dm_cache_set_dirty(struct dm_cache_metadata *cmd, dm_cache_set_dirty() argument
1237 down_write(&cmd->root_lock); dm_cache_set_dirty()
1238 r = __dirty(cmd, cblock, dirty); dm_cache_set_dirty()
1239 up_write(&cmd->root_lock); dm_cache_set_dirty()
1244 void dm_cache_metadata_get_stats(struct dm_cache_metadata *cmd, dm_cache_metadata_get_stats() argument
1247 down_read(&cmd->root_lock); dm_cache_metadata_get_stats()
1248 *stats = cmd->stats; dm_cache_metadata_get_stats()
1249 up_read(&cmd->root_lock); dm_cache_metadata_get_stats()
1252 void dm_cache_metadata_set_stats(struct dm_cache_metadata *cmd, dm_cache_metadata_set_stats() argument
1255 down_write(&cmd->root_lock); dm_cache_metadata_set_stats()
1256 cmd->stats = *stats; dm_cache_metadata_set_stats()
1257 up_write(&cmd->root_lock); dm_cache_metadata_set_stats()
1260 int dm_cache_commit(struct dm_cache_metadata *cmd, bool clean_shutdown) dm_cache_commit() argument
1266 down_write(&cmd->root_lock); dm_cache_commit()
1267 r = __commit_transaction(cmd, mutator); dm_cache_commit()
1271 r = __begin_transaction(cmd); dm_cache_commit()
1274 up_write(&cmd->root_lock); dm_cache_commit()
1278 int dm_cache_get_free_metadata_block_count(struct dm_cache_metadata *cmd, dm_cache_get_free_metadata_block_count() argument
1283 down_read(&cmd->root_lock); dm_cache_get_free_metadata_block_count()
1284 r = dm_sm_get_nr_free(cmd->metadata_sm, result); dm_cache_get_free_metadata_block_count()
1285 up_read(&cmd->root_lock); dm_cache_get_free_metadata_block_count()
1290 int dm_cache_get_metadata_dev_size(struct dm_cache_metadata *cmd, dm_cache_get_metadata_dev_size() argument
1295 down_read(&cmd->root_lock); dm_cache_get_metadata_dev_size()
1296 r = dm_sm_get_nr_blocks(cmd->metadata_sm, result); dm_cache_get_metadata_dev_size()
1297 up_read(&cmd->root_lock); dm_cache_get_metadata_dev_size()
1304 static int begin_hints(struct dm_cache_metadata *cmd, struct dm_cache_policy *policy) begin_hints() argument
1313 (strlen(policy_name) > sizeof(cmd->policy_name) - 1)) begin_hints()
1316 if (!policy_unchanged(cmd, policy)) { begin_hints()
1317 strncpy(cmd->policy_name, policy_name, sizeof(cmd->policy_name)); begin_hints()
1318 memcpy(cmd->policy_version, policy_version, sizeof(cmd->policy_version)); begin_hints()
1323 cmd->policy_hint_size = hint_size; begin_hints()
1325 if (cmd->hint_root) { begin_hints()
1326 r = dm_array_del(&cmd->hint_info, cmd->hint_root); begin_hints()
1331 r = dm_array_empty(&cmd->hint_info, &cmd->hint_root); begin_hints()
1337 r = dm_array_resize(&cmd->hint_info, cmd->hint_root, 0, begin_hints()
1338 from_cblock(cmd->cache_blocks), begin_hints()
1339 &value, &cmd->hint_root); begin_hints()
1349 struct dm_cache_metadata *cmd = context; save_hint() local
1355 r = dm_array_set_value(&cmd->hint_info, cmd->hint_root, save_hint()
1356 from_cblock(cblock), &value, &cmd->hint_root); save_hint()
1357 cmd->changed = true; save_hint()
1362 static int write_hints(struct dm_cache_metadata *cmd, struct dm_cache_policy *policy) write_hints() argument
1366 r = begin_hints(cmd, policy); write_hints()
1372 return policy_walk_mappings(policy, save_hint, cmd); write_hints()
1375 int dm_cache_write_hints(struct dm_cache_metadata *cmd, struct dm_cache_policy *policy) dm_cache_write_hints() argument
1379 down_write(&cmd->root_lock); dm_cache_write_hints()
1380 r = write_hints(cmd, policy); dm_cache_write_hints()
1381 up_write(&cmd->root_lock); dm_cache_write_hints()
1386 int dm_cache_metadata_all_clean(struct dm_cache_metadata *cmd, bool *result) dm_cache_metadata_all_clean() argument
1388 return blocks_are_unmapped_or_clean(cmd, 0, cmd->cache_blocks, result); dm_cache_metadata_all_clean()
388 __check_incompat_features(struct cache_disk_superblock *disk_super, struct dm_cache_metadata *cmd) __check_incompat_features() argument
H A Ddm-cache-metadata.h61 void dm_cache_metadata_close(struct dm_cache_metadata *cmd);
68 int dm_cache_resize(struct dm_cache_metadata *cmd, dm_cblock_t new_cache_size);
69 dm_cblock_t dm_cache_size(struct dm_cache_metadata *cmd);
71 int dm_cache_discard_bitset_resize(struct dm_cache_metadata *cmd,
77 int dm_cache_load_discards(struct dm_cache_metadata *cmd,
80 int dm_cache_set_discard(struct dm_cache_metadata *cmd, dm_dblock_t dblock, bool discard);
82 int dm_cache_remove_mapping(struct dm_cache_metadata *cmd, dm_cblock_t cblock);
83 int dm_cache_insert_mapping(struct dm_cache_metadata *cmd, dm_cblock_t cblock, dm_oblock_t oblock);
84 int dm_cache_changed_this_transaction(struct dm_cache_metadata *cmd);
89 int dm_cache_load_mappings(struct dm_cache_metadata *cmd,
94 int dm_cache_set_dirty(struct dm_cache_metadata *cmd, dm_cblock_t cblock, bool dirty);
103 void dm_cache_metadata_get_stats(struct dm_cache_metadata *cmd,
105 void dm_cache_metadata_set_stats(struct dm_cache_metadata *cmd,
108 int dm_cache_commit(struct dm_cache_metadata *cmd, bool clean_shutdown);
110 int dm_cache_get_free_metadata_block_count(struct dm_cache_metadata *cmd,
113 int dm_cache_get_metadata_dev_size(struct dm_cache_metadata *cmd,
116 void dm_cache_dump(struct dm_cache_metadata *cmd);
129 int dm_cache_write_hints(struct dm_cache_metadata *cmd, struct dm_cache_policy *p);
134 int dm_cache_metadata_all_clean(struct dm_cache_metadata *cmd, bool *result);
/linux-4.1.27/drivers/scsi/
H A Dscsi_lib_dma.c17 * @cmd: scsi command
22 int scsi_dma_map(struct scsi_cmnd *cmd) scsi_dma_map() argument
26 if (scsi_sg_count(cmd)) { scsi_dma_map()
27 struct device *dev = cmd->device->host->dma_dev; scsi_dma_map()
29 nseg = dma_map_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd), scsi_dma_map()
30 cmd->sc_data_direction); scsi_dma_map()
40 * @cmd: scsi command
42 void scsi_dma_unmap(struct scsi_cmnd *cmd) scsi_dma_unmap() argument
44 if (scsi_sg_count(cmd)) { scsi_dma_unmap()
45 struct device *dev = cmd->device->host->dma_dev; scsi_dma_unmap()
47 dma_unmap_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd), scsi_dma_unmap()
48 cmd->sc_data_direction); scsi_dma_unmap()
H A Dps3rom.c97 struct scsi_cmnd *cmd) ps3rom_atapi_request()
100 unsigned char opcode = cmd->cmnd[0]; ps3rom_atapi_request()
108 memcpy(&atapi_cmnd.pkt, cmd->cmnd, 12); ps3rom_atapi_request()
111 atapi_cmnd.blocks = atapi_cmnd.arglen = scsi_bufflen(cmd); ps3rom_atapi_request()
114 switch (cmd->sc_data_direction) { ps3rom_atapi_request()
116 if (scsi_bufflen(cmd) >= CD_FRAMESIZE) ps3rom_atapi_request()
124 if (scsi_bufflen(cmd) >= CD_FRAMESIZE) ps3rom_atapi_request()
129 scsi_sg_copy_to_buffer(cmd, dev->bounce_buf, dev->bounce_size); ps3rom_atapi_request()
160 static inline unsigned int srb10_lba(const struct scsi_cmnd *cmd) srb10_lba() argument
162 return cmd->cmnd[2] << 24 | cmd->cmnd[3] << 16 | cmd->cmnd[4] << 8 | srb10_lba()
163 cmd->cmnd[5]; srb10_lba()
166 static inline unsigned int srb10_len(const struct scsi_cmnd *cmd) srb10_len() argument
168 return cmd->cmnd[7] << 8 | cmd->cmnd[8]; srb10_len()
172 struct scsi_cmnd *cmd, u32 start_sector, ps3rom_read_request()
193 struct scsi_cmnd *cmd, u32 start_sector, ps3rom_write_request()
201 scsi_sg_copy_to_buffer(cmd, dev->bounce_buf, dev->bounce_size); ps3rom_write_request()
215 static int ps3rom_queuecommand_lck(struct scsi_cmnd *cmd, ps3rom_queuecommand_lck() argument
218 struct ps3rom_private *priv = shost_priv(cmd->device->host); ps3rom_queuecommand_lck()
223 priv->curr_cmd = cmd; ps3rom_queuecommand_lck()
224 cmd->scsi_done = done; ps3rom_queuecommand_lck()
226 opcode = cmd->cmnd[0]; ps3rom_queuecommand_lck()
234 res = ps3rom_read_request(dev, cmd, srb10_lba(cmd), ps3rom_queuecommand_lck()
235 srb10_len(cmd)); ps3rom_queuecommand_lck()
239 res = ps3rom_write_request(dev, cmd, srb10_lba(cmd), ps3rom_queuecommand_lck()
240 srb10_len(cmd)); ps3rom_queuecommand_lck()
244 res = ps3rom_atapi_request(dev, cmd); ps3rom_queuecommand_lck()
249 memset(cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE); ps3rom_queuecommand_lck()
250 cmd->result = res; ps3rom_queuecommand_lck()
251 cmd->sense_buffer[0] = 0x70; ps3rom_queuecommand_lck()
252 cmd->sense_buffer[2] = ILLEGAL_REQUEST; ps3rom_queuecommand_lck()
254 cmd->scsi_done(cmd); ps3rom_queuecommand_lck()
279 struct scsi_cmnd *cmd; ps3rom_interrupt() local
304 cmd = priv->curr_cmd; ps3rom_interrupt()
308 if (cmd->sc_data_direction == DMA_FROM_DEVICE) { ps3rom_interrupt()
311 len = scsi_sg_copy_from_buffer(cmd, ps3rom_interrupt()
315 scsi_set_resid(cmd, scsi_bufflen(cmd) - len); ps3rom_interrupt()
317 cmd->result = DID_OK << 16; ps3rom_interrupt()
321 if (cmd->cmnd[0] == REQUEST_SENSE) { ps3rom_interrupt()
325 cmd->result = DID_ERROR << 16 | SAM_STAT_CHECK_CONDITION; ps3rom_interrupt()
330 cmd->result = DID_ERROR << 16; ps3rom_interrupt()
334 scsi_build_sense_buffer(0, cmd->sense_buffer, sense_key, asc, ascq); ps3rom_interrupt()
335 cmd->result = SAM_STAT_CHECK_CONDITION; ps3rom_interrupt()
339 cmd->scsi_done(cmd); ps3rom_interrupt()
96 ps3rom_atapi_request(struct ps3_storage_device *dev, struct scsi_cmnd *cmd) ps3rom_atapi_request() argument
171 ps3rom_read_request(struct ps3_storage_device *dev, struct scsi_cmnd *cmd, u32 start_sector, u32 sectors) ps3rom_read_request() argument
192 ps3rom_write_request(struct ps3_storage_device *dev, struct scsi_cmnd *cmd, u32 start_sector, u32 sectors) ps3rom_write_request() argument
H A Dch.c185 ch_do_scsi(scsi_changer *ch, unsigned char *cmd, int cmd_len, ch_do_scsi() argument
192 timeout = (cmd[0] == INITIALIZE_ELEMENT_STATUS) ch_do_scsi()
197 result = scsi_execute_req(ch->device, cmd, direction, buffer, ch_do_scsi()
236 u_char cmd[12]; ch_read_element_status() local
245 memset(cmd,0,sizeof(cmd)); ch_read_element_status()
246 cmd[0] = READ_ELEMENT_STATUS; ch_read_element_status()
247 cmd[1] = ((ch->device->lun & 0x7) << 5) | ch_read_element_status()
250 cmd[2] = (elem >> 8) & 0xff; ch_read_element_status()
251 cmd[3] = elem & 0xff; ch_read_element_status()
252 cmd[5] = 1; ch_read_element_status()
253 cmd[9] = 255; ch_read_element_status()
254 if (0 == (result = ch_do_scsi(ch, cmd, 12, ch_read_element_status()
279 u_char cmd[6]; ch_init_elem() local
282 memset(cmd,0,sizeof(cmd)); ch_init_elem()
283 cmd[0] = INITIALIZE_ELEMENT_STATUS; ch_init_elem()
284 cmd[1] = (ch->device->lun & 0x7) << 5; ch_init_elem()
285 err = ch_do_scsi(ch, cmd, 6, NULL, 0, DMA_NONE); ch_init_elem()
293 u_char cmd[10], data[16]; ch_readconfig() local
302 memset(cmd,0,sizeof(cmd)); ch_readconfig()
303 cmd[0] = MODE_SENSE; ch_readconfig()
304 cmd[1] = (ch->device->lun & 0x7) << 5; ch_readconfig()
305 cmd[2] = 0x1d; ch_readconfig()
306 cmd[4] = 255; ch_readconfig()
307 result = ch_do_scsi(ch, cmd, 10, buffer, 255, DMA_FROM_DEVICE); ch_readconfig()
309 cmd[1] |= (1<<3); ch_readconfig()
310 result = ch_do_scsi(ch, cmd, 10, buffer, 255, DMA_FROM_DEVICE); ch_readconfig()
422 u_char cmd[10]; ch_position() local
427 memset(cmd,0,sizeof(cmd)); ch_position()
428 cmd[0] = POSITION_TO_ELEMENT; ch_position()
429 cmd[1] = (ch->device->lun & 0x7) << 5; ch_position()
430 cmd[2] = (trans >> 8) & 0xff; ch_position()
431 cmd[3] = trans & 0xff; ch_position()
432 cmd[4] = (elem >> 8) & 0xff; ch_position()
433 cmd[5] = elem & 0xff; ch_position()
434 cmd[8] = rotate ? 1 : 0; ch_position()
435 return ch_do_scsi(ch, cmd, 10, NULL, 0, DMA_NONE); ch_position()
441 u_char cmd[12]; ch_move() local
446 memset(cmd,0,sizeof(cmd)); ch_move()
447 cmd[0] = MOVE_MEDIUM; ch_move()
448 cmd[1] = (ch->device->lun & 0x7) << 5; ch_move()
449 cmd[2] = (trans >> 8) & 0xff; ch_move()
450 cmd[3] = trans & 0xff; ch_move()
451 cmd[4] = (src >> 8) & 0xff; ch_move()
452 cmd[5] = src & 0xff; ch_move()
453 cmd[6] = (dest >> 8) & 0xff; ch_move()
454 cmd[7] = dest & 0xff; ch_move()
455 cmd[10] = rotate ? 1 : 0; ch_move()
456 return ch_do_scsi(ch, cmd, 12, NULL,0, DMA_NONE); ch_move()
463 u_char cmd[12]; ch_exchange() local
469 memset(cmd,0,sizeof(cmd)); ch_exchange()
470 cmd[0] = EXCHANGE_MEDIUM; ch_exchange()
471 cmd[1] = (ch->device->lun & 0x7) << 5; ch_exchange()
472 cmd[2] = (trans >> 8) & 0xff; ch_exchange()
473 cmd[3] = trans & 0xff; ch_exchange()
474 cmd[4] = (src >> 8) & 0xff; ch_exchange()
475 cmd[5] = src & 0xff; ch_exchange()
476 cmd[6] = (dest1 >> 8) & 0xff; ch_exchange()
477 cmd[7] = dest1 & 0xff; ch_exchange()
478 cmd[8] = (dest2 >> 8) & 0xff; ch_exchange()
479 cmd[9] = dest2 & 0xff; ch_exchange()
480 cmd[10] = (rotate1 ? 1 : 0) | (rotate2 ? 2 : 0); ch_exchange()
482 return ch_do_scsi(ch, cmd, 12, NULL, 0, DMA_NONE); ch_exchange()
505 u_char cmd[12]; ch_set_voltag() local
517 memset(cmd,0,sizeof(cmd)); ch_set_voltag()
518 cmd[0] = SEND_VOLUME_TAG; ch_set_voltag()
519 cmd[1] = ((ch->device->lun & 0x7) << 5) | ch_set_voltag()
521 cmd[2] = (elem >> 8) & 0xff; ch_set_voltag()
522 cmd[3] = elem & 0xff; ch_set_voltag()
523 cmd[5] = clear ch_set_voltag()
527 cmd[9] = 255; ch_set_voltag()
532 result = ch_do_scsi(ch, cmd, 12, buffer, 256, DMA_TO_DEVICE); ch_set_voltag()
607 unsigned int cmd, unsigned long arg) ch_ioctl()
613 retval = scsi_ioctl_block_when_processing_errors(ch->device, cmd, ch_ioctl()
618 switch (cmd) { ch_ioctl()
846 return scsi_ioctl(ch->device, cmd, argp); ch_ioctl()
860 unsigned int cmd, unsigned long arg) ch_ioctl_compat()
864 switch (cmd) { ch_ioctl_compat()
874 return ch_ioctl(file, cmd, arg); ch_ioctl_compat()
889 // return scsi_ioctl_compat(ch->device, cmd, (void*)arg); ch_ioctl_compat()
606 ch_ioctl(struct file *file, unsigned int cmd, unsigned long arg) ch_ioctl() argument
859 ch_ioctl_compat(struct file * file, unsigned int cmd, unsigned long arg) ch_ioctl_compat() argument
H A Dmac53c94.c69 static int mac53c94_queue_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)) mac53c94_queue_lck() argument
74 if (cmd->sc_data_direction == DMA_TO_DEVICE) { mac53c94_queue_lck()
76 printk(KERN_DEBUG "mac53c94_queue %p: command is", cmd); mac53c94_queue_lck()
77 for (i = 0; i < cmd->cmd_len; ++i) mac53c94_queue_lck()
78 printk(KERN_CONT " %.2x", cmd->cmnd[i]); mac53c94_queue_lck()
81 scsi_sg_count(cmd), scsi_bufflen(cmd), scsi_sglist(cmd)); mac53c94_queue_lck()
85 cmd->scsi_done = done; mac53c94_queue_lck()
86 cmd->host_scribble = NULL; mac53c94_queue_lck()
88 state = (struct fsc_state *) cmd->device->host->hostdata; mac53c94_queue_lck()
91 state->request_q = cmd; mac53c94_queue_lck()
93 state->request_qtail->host_scribble = (void *) cmd; mac53c94_queue_lck()
94 state->request_qtail = cmd; mac53c94_queue_lck()
104 static int mac53c94_host_reset(struct scsi_cmnd *cmd) mac53c94_host_reset() argument
106 struct fsc_state *state = (struct fsc_state *) cmd->device->host->hostdata; mac53c94_host_reset()
111 spin_lock_irqsave(cmd->device->host->host_lock, flags); mac53c94_host_reset()
121 spin_unlock_irqrestore(cmd->device->host->host_lock, flags); mac53c94_host_reset()
148 struct scsi_cmnd *cmd; mac53c94_start() local
156 state->current_req = cmd = state->request_q; mac53c94_start()
157 state->request_q = (struct scsi_cmnd *) cmd->host_scribble; mac53c94_start()
167 writeb(cmd->device->id, &regs->dest_id); mac53c94_start()
172 for (i = 0; i < cmd->cmd_len; ++i) mac53c94_start()
173 writeb(cmd->cmnd[i], &regs->fifo); mac53c94_start()
179 set_dma_cmds(state, cmd); mac53c94_start()
198 struct scsi_cmnd *cmd = state->current_req; mac53c94_interrupt() local
224 printk(KERN_ERR "53c94: invalid cmd, intr=%x stat=%x seq=%x phase=%d\n", mac53c94_interrupt()
238 if (cmd == 0) { mac53c94_interrupt()
267 && (scsi_sg_count(cmd) > 0 || scsi_bufflen(cmd))) { mac53c94_interrupt()
268 nb = cmd->SCp.this_residual; mac53c94_interrupt()
271 cmd->SCp.this_residual -= nb; mac53c94_interrupt()
285 printk(KERN_DEBUG "in unexpected phase %x after cmd\n", mac53c94_interrupt()
298 if (cmd->SCp.this_residual != 0 mac53c94_interrupt()
301 nb = cmd->SCp.this_residual; mac53c94_interrupt()
304 cmd->SCp.this_residual -= nb; mac53c94_interrupt()
315 scsi_dma_unmap(cmd); mac53c94_interrupt()
326 cmd->SCp.Status = readb(&regs->fifo); mac53c94_interrupt()
327 cmd->SCp.Message = readb(&regs->fifo); mac53c94_interrupt()
328 cmd->result = CMD_ACCEPT_MSG; mac53c94_interrupt()
336 cmd_done(state, (DID_OK << 16) + (cmd->SCp.Message << 8) mac53c94_interrupt()
337 + cmd->SCp.Status); mac53c94_interrupt()
346 struct scsi_cmnd *cmd; cmd_done() local
348 cmd = state->current_req; cmd_done()
349 if (cmd != 0) { cmd_done()
350 cmd->result = result; cmd_done()
351 (*cmd->scsi_done)(cmd); cmd_done()
361 static void set_dma_cmds(struct fsc_state *state, struct scsi_cmnd *cmd) set_dma_cmds() argument
369 nseg = scsi_dma_map(cmd); set_dma_cmds()
374 dma_cmd = cmd->sc_data_direction == DMA_TO_DEVICE ? set_dma_cmds()
379 scsi_for_each_sg(cmd, scl, nseg, i) { scsi_for_each_sg()
395 cmd->SCp.this_residual = total;
H A Dscsi_lib.c84 scsi_set_blocked(struct scsi_cmnd *cmd, int reason) scsi_set_blocked() argument
86 struct Scsi_Host *host = cmd->device->host; scsi_set_blocked()
87 struct scsi_device *device = cmd->device; scsi_set_blocked()
119 static void scsi_mq_requeue_cmd(struct scsi_cmnd *cmd) scsi_mq_requeue_cmd() argument
121 struct scsi_device *sdev = cmd->device; scsi_mq_requeue_cmd()
122 struct request_queue *q = cmd->request->q; scsi_mq_requeue_cmd()
124 blk_mq_requeue_request(cmd->request); scsi_mq_requeue_cmd()
131 * @cmd: The SCSI command being requeued
141 static void __scsi_queue_insert(struct scsi_cmnd *cmd, int reason, int unbusy) __scsi_queue_insert() argument
143 struct scsi_device *device = cmd->device; __scsi_queue_insert()
147 SCSI_LOG_MLQUEUE(1, scmd_printk(KERN_INFO, cmd, __scsi_queue_insert()
148 "Inserting command %p into mlqueue\n", cmd)); __scsi_queue_insert()
150 scsi_set_blocked(cmd, reason); __scsi_queue_insert()
165 cmd->result = 0; __scsi_queue_insert()
167 scsi_mq_requeue_cmd(cmd); __scsi_queue_insert()
171 blk_requeue_request(q, cmd->request); __scsi_queue_insert()
181 * Arguments: cmd - command that we are adding to queue.
195 void scsi_queue_insert(struct scsi_cmnd *cmd, int reason) scsi_queue_insert() argument
197 __scsi_queue_insert(cmd, reason, 1); scsi_queue_insert()
202 * @cmd: scsi command
215 int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, scsi_execute() argument
233 req->cmd_len = COMMAND_SIZE(cmd[0]); scsi_execute()
234 memcpy(req->cmd, cmd, req->cmd_len); scsi_execute()
265 int scsi_execute_req_flags(struct scsi_device *sdev, const unsigned char *cmd, scsi_execute_req_flags() argument
278 result = scsi_execute(sdev, cmd, data_direction, buffer, bufflen, scsi_execute_req_flags()
291 * Purpose: Initialize cmd fields related to error handling.
293 * Arguments: cmd - command that is ready to be queued.
299 static void scsi_init_cmd_errh(struct scsi_cmnd *cmd) scsi_init_cmd_errh() argument
301 cmd->serial_number = 0; scsi_init_cmd_errh()
302 scsi_set_resid(cmd, 0); scsi_init_cmd_errh()
303 memset(cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE); scsi_init_cmd_errh()
304 if (cmd->cmd_len == 0) scsi_init_cmd_errh()
305 cmd->cmd_len = scsi_command_size(cmd->cmnd); scsi_init_cmd_errh()
516 * cmd - command that may need to be requeued.
526 * Notes: Upon return, cmd is a stale pointer.
528 static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd) scsi_requeue_command() argument
530 struct scsi_device *sdev = cmd->device; scsi_requeue_command()
531 struct request *req = cmd->request; scsi_requeue_command()
537 scsi_put_command(cmd); scsi_requeue_command()
614 static void scsi_uninit_cmd(struct scsi_cmnd *cmd) scsi_uninit_cmd() argument
616 if (cmd->request->cmd_type == REQ_TYPE_FS) { scsi_uninit_cmd()
617 struct scsi_driver *drv = scsi_cmd_to_driver(cmd); scsi_uninit_cmd()
620 drv->uninit_command(cmd); scsi_uninit_cmd()
624 static void scsi_mq_free_sgtables(struct scsi_cmnd *cmd) scsi_mq_free_sgtables() argument
626 if (cmd->sdb.table.nents) scsi_mq_free_sgtables()
627 scsi_free_sgtable(&cmd->sdb, true); scsi_mq_free_sgtables()
628 if (cmd->request->next_rq && cmd->request->next_rq->special) scsi_mq_free_sgtables()
629 scsi_free_sgtable(cmd->request->next_rq->special, true); scsi_mq_free_sgtables()
630 if (scsi_prot_sg_count(cmd)) scsi_mq_free_sgtables()
631 scsi_free_sgtable(cmd->prot_sdb, true); scsi_mq_free_sgtables()
634 static void scsi_mq_uninit_cmd(struct scsi_cmnd *cmd) scsi_mq_uninit_cmd() argument
636 struct scsi_device *sdev = cmd->device; scsi_mq_uninit_cmd()
640 scsi_mq_free_sgtables(cmd); scsi_mq_uninit_cmd()
641 scsi_uninit_cmd(cmd); scsi_mq_uninit_cmd()
644 BUG_ON(list_empty(&cmd->list)); scsi_mq_uninit_cmd()
646 list_del_init(&cmd->list); scsi_mq_uninit_cmd()
656 * Arguments: cmd - command that we are bailing.
667 static void scsi_release_buffers(struct scsi_cmnd *cmd) scsi_release_buffers() argument
669 if (cmd->sdb.table.nents) scsi_release_buffers()
670 scsi_free_sgtable(&cmd->sdb, false); scsi_release_buffers()
672 memset(&cmd->sdb, 0, sizeof(cmd->sdb)); scsi_release_buffers()
674 if (scsi_prot_sg_count(cmd)) scsi_release_buffers()
675 scsi_free_sgtable(cmd->prot_sdb, false); scsi_release_buffers()
678 static void scsi_release_bidi_buffers(struct scsi_cmnd *cmd) scsi_release_bidi_buffers() argument
680 struct scsi_data_buffer *bidi_sdb = cmd->request->next_rq->special; scsi_release_bidi_buffers()
684 cmd->request->next_rq->special = NULL; scsi_release_bidi_buffers()
690 struct scsi_cmnd *cmd = req->special; scsi_end_request() local
691 struct scsi_device *sdev = cmd->device; scsi_end_request()
713 scsi_mq_uninit_cmd(cmd); scsi_end_request()
726 scsi_release_bidi_buffers(cmd); scsi_end_request()
732 scsi_release_buffers(cmd); scsi_end_request()
734 scsi_put_command(cmd); scsi_end_request()
744 * @cmd: SCSI command (unused)
756 static int __scsi_error_from_host_byte(struct scsi_cmnd *cmd, int result) __scsi_error_from_host_byte() argument
765 set_host_byte(cmd, DID_OK); __scsi_error_from_host_byte()
769 set_host_byte(cmd, DID_OK); __scsi_error_from_host_byte()
773 set_host_byte(cmd, DID_OK); __scsi_error_from_host_byte()
777 set_host_byte(cmd, DID_OK); __scsi_error_from_host_byte()
793 * Arguments: cmd - command that is finished.
817 void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) scsi_io_completion() argument
819 int result = cmd->result; scsi_io_completion()
820 struct request_queue *q = cmd->device->request_queue; scsi_io_completion()
821 struct request *req = cmd->request; scsi_io_completion()
828 unsigned long wait_for = (cmd->allowed + 1) * req->timeout; scsi_io_completion()
831 sense_valid = scsi_command_normalize_sense(cmd, &sshdr); scsi_io_completion()
842 int len = 8 + cmd->sense_buffer[7]; scsi_io_completion()
846 memcpy(req->sense, cmd->sense_buffer, len); scsi_io_completion()
850 error = __scsi_error_from_host_byte(cmd, result); scsi_io_completion()
855 req->errors = cmd->result; scsi_io_completion()
857 req->resid_len = scsi_get_resid(cmd); scsi_io_completion()
859 if (scsi_bidi_cmnd(cmd)) { scsi_io_completion()
864 req->next_rq->resid_len = scsi_in(cmd)->resid; scsi_io_completion()
877 error = __scsi_error_from_host_byte(cmd, result); scsi_io_completion()
887 SCSI_LOG_HLCOMPLETE(1, scmd_printk(KERN_INFO, cmd, scsi_io_completion()
905 scsi_print_sense(cmd); scsi_io_completion()
923 if (error && scsi_noretry_cmd(cmd)) { scsi_io_completion()
936 error = __scsi_error_from_host_byte(cmd, result); scsi_io_completion()
947 if (cmd->device->removable) { scsi_io_completion()
951 cmd->device->changed = 1; scsi_io_completion()
971 if ((cmd->device->use_10_for_rw && scsi_io_completion()
973 (cmd->cmnd[0] == READ_10 || scsi_io_completion()
974 cmd->cmnd[0] == WRITE_10)) { scsi_io_completion()
976 cmd->device->use_10_for_rw = 0; scsi_io_completion()
1028 time_before(cmd->jiffies_at_alloc + wait_for, jiffies)) scsi_io_completion()
1048 scsi_print_result(cmd, NULL, FAILED); scsi_io_completion()
1050 scsi_print_sense(cmd); scsi_io_completion()
1051 scsi_print_command(cmd); scsi_io_completion()
1063 cmd->request->cmd_flags &= ~REQ_DONTPREP; scsi_io_completion()
1064 scsi_mq_uninit_cmd(cmd); scsi_io_completion()
1065 scsi_mq_requeue_cmd(cmd); scsi_io_completion()
1067 scsi_release_buffers(cmd); scsi_io_completion()
1068 scsi_requeue_command(q, cmd); scsi_io_completion()
1073 __scsi_queue_insert(cmd, SCSI_MLQUEUE_EH_RETRY, 0); scsi_io_completion()
1077 __scsi_queue_insert(cmd, SCSI_MLQUEUE_DEVICE_BUSY, 0); scsi_io_completion()
1109 * Arguments: cmd - Command descriptor we wish to initialize
1115 int scsi_init_io(struct scsi_cmnd *cmd) scsi_init_io() argument
1117 struct scsi_device *sdev = cmd->device; scsi_init_io()
1118 struct request *rq = cmd->request; scsi_init_io()
1124 error = scsi_init_sgtable(rq, &cmd->sdb); scsi_init_io()
1146 struct scsi_data_buffer *prot_sdb = cmd->prot_sdb; scsi_init_io()
1172 cmd->prot_sdb = prot_sdb; scsi_init_io()
1173 cmd->prot_sdb->table.nents = count; scsi_init_io()
1179 scsi_mq_free_sgtables(cmd); scsi_init_io()
1181 scsi_release_buffers(cmd); scsi_init_io()
1182 cmd->request->special = NULL; scsi_init_io()
1183 scsi_put_command(cmd); scsi_init_io()
1193 struct scsi_cmnd *cmd; scsi_get_cmd_from_req() local
1200 cmd = scsi_get_command(sdev, GFP_ATOMIC); scsi_get_cmd_from_req()
1201 if (unlikely(!cmd)) { scsi_get_cmd_from_req()
1205 req->special = cmd; scsi_get_cmd_from_req()
1207 cmd = req->special; scsi_get_cmd_from_req()
1211 cmd->tag = req->tag; scsi_get_cmd_from_req()
1212 cmd->request = req; scsi_get_cmd_from_req()
1214 cmd->cmnd = req->cmd; scsi_get_cmd_from_req()
1215 cmd->prot_op = SCSI_PROT_NORMAL; scsi_get_cmd_from_req()
1217 return cmd; scsi_get_cmd_from_req()
1222 struct scsi_cmnd *cmd = req->special; scsi_setup_blk_pc_cmnd() local
1231 int ret = scsi_init_io(cmd); scsi_setup_blk_pc_cmnd()
1237 memset(&cmd->sdb, 0, sizeof(cmd->sdb)); scsi_setup_blk_pc_cmnd()
1240 cmd->cmd_len = req->cmd_len; scsi_setup_blk_pc_cmnd()
1241 cmd->transfersize = blk_rq_bytes(req); scsi_setup_blk_pc_cmnd()
1242 cmd->allowed = req->retries; scsi_setup_blk_pc_cmnd()
1252 struct scsi_cmnd *cmd = req->special; scsi_setup_fs_cmnd() local
1261 memset(cmd->cmnd, 0, BLK_MAX_CDB); scsi_setup_fs_cmnd()
1262 return scsi_cmd_to_driver(cmd)->init_command(cmd); scsi_setup_fs_cmnd()
1267 struct scsi_cmnd *cmd = req->special; scsi_setup_cmnd() local
1270 cmd->sc_data_direction = DMA_NONE; scsi_setup_cmnd()
1272 cmd->sc_data_direction = DMA_TO_DEVICE; scsi_setup_cmnd()
1274 cmd->sc_data_direction = DMA_FROM_DEVICE; scsi_setup_cmnd()
1352 struct scsi_cmnd *cmd = req->special; scsi_prep_return() local
1353 scsi_release_buffers(cmd); scsi_prep_return()
1354 scsi_put_command(cmd); scsi_prep_return()
1378 struct scsi_cmnd *cmd; scsi_prep_fn() local
1385 cmd = scsi_get_cmd_from_req(sdev, req); scsi_prep_fn()
1386 if (unlikely(!cmd)) { scsi_prep_fn()
1589 struct scsi_cmnd *cmd = req->special; scsi_kill_request() local
1596 scmd_printk(KERN_INFO, cmd, "killing request\n"); scsi_kill_request()
1598 sdev = cmd->device; scsi_kill_request()
1601 scsi_init_cmd_errh(cmd); scsi_kill_request()
1602 cmd->result = DID_NO_CONNECT << 16; scsi_kill_request()
1603 atomic_inc(&cmd->device->iorequest_cnt); scsi_kill_request()
1620 struct scsi_cmnd *cmd = rq->special; scsi_softirq_done() local
1621 unsigned long wait_for = (cmd->allowed + 1) * rq->timeout; scsi_softirq_done()
1624 INIT_LIST_HEAD(&cmd->eh_entry); scsi_softirq_done()
1626 atomic_inc(&cmd->device->iodone_cnt); scsi_softirq_done()
1627 if (cmd->result) scsi_softirq_done()
1628 atomic_inc(&cmd->device->ioerr_cnt); scsi_softirq_done()
1630 disposition = scsi_decide_disposition(cmd); scsi_softirq_done()
1632 time_before(cmd->jiffies_at_alloc + wait_for, jiffies)) { scsi_softirq_done()
1633 sdev_printk(KERN_ERR, cmd->device, scsi_softirq_done()
1639 scsi_log_completion(cmd, disposition); scsi_softirq_done()
1643 scsi_finish_command(cmd); scsi_softirq_done()
1646 scsi_queue_insert(cmd, SCSI_MLQUEUE_EH_RETRY); scsi_softirq_done()
1649 scsi_queue_insert(cmd, SCSI_MLQUEUE_DEVICE_BUSY); scsi_softirq_done()
1652 if (!scsi_eh_scmd_add(cmd, 0)) scsi_softirq_done()
1653 scsi_finish_command(cmd); scsi_softirq_done()
1659 * @cmd: command block we are dispatching.
1664 static int scsi_dispatch_cmd(struct scsi_cmnd *cmd) scsi_dispatch_cmd() argument
1666 struct Scsi_Host *host = cmd->device->host; scsi_dispatch_cmd()
1669 atomic_inc(&cmd->device->iorequest_cnt); scsi_dispatch_cmd()
1672 if (unlikely(cmd->device->sdev_state == SDEV_DEL)) { scsi_dispatch_cmd()
1676 cmd->result = DID_NO_CONNECT << 16; scsi_dispatch_cmd()
1681 if (unlikely(scsi_device_blocked(cmd->device))) { scsi_dispatch_cmd()
1689 SCSI_LOG_MLQUEUE(3, scmd_printk(KERN_INFO, cmd, scsi_dispatch_cmd()
1695 if (cmd->device->lun_in_cdb) scsi_dispatch_cmd()
1696 cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) | scsi_dispatch_cmd()
1697 (cmd->device->lun << 5 & 0xe0); scsi_dispatch_cmd()
1699 scsi_log_send(cmd); scsi_dispatch_cmd()
1705 if (cmd->cmd_len > cmd->device->host->max_cmd_len) { scsi_dispatch_cmd()
1706 SCSI_LOG_MLQUEUE(3, scmd_printk(KERN_INFO, cmd, scsi_dispatch_cmd()
1709 cmd->cmd_len, cmd->device->host->max_cmd_len)); scsi_dispatch_cmd()
1710 cmd->result = (DID_ABORT << 16); scsi_dispatch_cmd()
1715 cmd->result = (DID_NO_CONNECT << 16); scsi_dispatch_cmd()
1720 trace_scsi_dispatch_cmd_start(cmd); scsi_dispatch_cmd()
1721 rtn = host->hostt->queuecommand(host, cmd); scsi_dispatch_cmd()
1723 trace_scsi_dispatch_cmd_error(cmd, rtn); scsi_dispatch_cmd()
1728 SCSI_LOG_MLQUEUE(3, scmd_printk(KERN_INFO, cmd, scsi_dispatch_cmd()
1734 cmd->scsi_done(cmd); scsi_dispatch_cmd()
1740 * @cmd: The SCSI Command for which a low-level device driver (LLDD) gives
1749 static void scsi_done(struct scsi_cmnd *cmd) scsi_done() argument
1751 trace_scsi_dispatch_cmd_done(cmd); scsi_done()
1752 blk_complete_request(cmd->request); scsi_done()
1772 struct scsi_cmnd *cmd; variable in typeref:struct:scsi_cmnd
1808 cmd = req->special;
1809 if (unlikely(cmd == NULL)) {
1842 cmd->flags |= SCMD_TAGGED;
1844 cmd->flags &= ~SCMD_TAGGED;
1850 scsi_init_cmd_errh(cmd); variable
1855 cmd->scsi_done = scsi_done;
1856 rtn = scsi_dispatch_cmd(cmd);
1858 scsi_queue_insert(cmd, rtn);
1901 struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(req); scsi_mq_prep_fn() local
1904 unsigned char *sense_buf = cmd->sense_buffer; scsi_mq_prep_fn()
1907 memset(cmd, 0, sizeof(struct scsi_cmnd)); scsi_mq_prep_fn()
1909 req->special = cmd; scsi_mq_prep_fn()
1911 cmd->request = req; scsi_mq_prep_fn()
1912 cmd->device = sdev; scsi_mq_prep_fn()
1913 cmd->sense_buffer = sense_buf; scsi_mq_prep_fn()
1915 cmd->tag = req->tag; scsi_mq_prep_fn()
1917 cmd->cmnd = req->cmd; scsi_mq_prep_fn()
1918 cmd->prot_op = SCSI_PROT_NORMAL; scsi_mq_prep_fn()
1920 INIT_LIST_HEAD(&cmd->list); scsi_mq_prep_fn()
1921 INIT_DELAYED_WORK(&cmd->abort_work, scmd_eh_abort_handler); scsi_mq_prep_fn()
1922 cmd->jiffies_at_alloc = jiffies; scsi_mq_prep_fn()
1926 list_add_tail(&cmd->list, &sdev->cmd_list); scsi_mq_prep_fn()
1930 sg = (void *)cmd + sizeof(struct scsi_cmnd) + shost->hostt->cmd_size; scsi_mq_prep_fn()
1931 cmd->sdb.table.sgl = sg; scsi_mq_prep_fn()
1934 cmd->prot_sdb = (void *)sg + scsi_mq_prep_fn()
1938 memset(cmd->prot_sdb, 0, sizeof(struct scsi_data_buffer)); scsi_mq_prep_fn()
1940 cmd->prot_sdb->table.sgl = scsi_mq_prep_fn()
1941 (struct scatterlist *)(cmd->prot_sdb + 1); scsi_mq_prep_fn()
1960 static void scsi_mq_done(struct scsi_cmnd *cmd) scsi_mq_done() argument
1962 trace_scsi_dispatch_cmd_done(cmd); scsi_mq_done()
1963 blk_mq_complete_request(cmd->request); scsi_mq_done()
1973 struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(req); scsi_queue_rq() local
2003 cmd->flags |= SCMD_TAGGED; scsi_queue_rq()
2005 cmd->flags &= ~SCMD_TAGGED; scsi_queue_rq()
2007 scsi_init_cmd_errh(cmd); scsi_queue_rq()
2008 cmd->scsi_done = scsi_mq_done; scsi_queue_rq()
2010 reason = scsi_dispatch_cmd(cmd); scsi_queue_rq()
2012 scsi_set_blocked(cmd, reason); scsi_queue_rq()
2043 scsi_mq_uninit_cmd(cmd); scsi_queue_rq()
2063 struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(rq); scsi_init_request() local
2065 cmd->sense_buffer = kzalloc_node(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL, scsi_init_request()
2067 if (!cmd->sense_buffer) scsi_init_request()
2075 struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(rq); scsi_exit_request() local
2077 kfree(cmd->sense_buffer); scsi_exit_request()
2350 unsigned char cmd[10]; scsi_mode_select() local
2354 memset(cmd, 0, sizeof(cmd)); scsi_mode_select()
2355 cmd[1] = (pf ? 0x10 : 0) | (sp ? 0x01 : 0); scsi_mode_select()
2374 cmd[0] = MODE_SELECT_10; scsi_mode_select()
2375 cmd[7] = len >> 8; scsi_mode_select()
2376 cmd[8] = len; scsi_mode_select()
2393 cmd[0] = MODE_SELECT; scsi_mode_select()
2394 cmd[4] = len; scsi_mode_select()
2397 ret = scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, real_buffer, len, scsi_mode_select()
2426 unsigned char cmd[12]; scsi_mode_sense() local
2433 memset(&cmd[0], 0, 12); scsi_mode_sense()
2434 cmd[1] = dbd & 0x18; /* allows DBD and LLBA bits */ scsi_mode_sense()
2435 cmd[2] = modepage; scsi_mode_sense()
2448 cmd[0] = MODE_SENSE_10; scsi_mode_sense()
2449 cmd[8] = len; scsi_mode_sense()
2455 cmd[0] = MODE_SENSE; scsi_mode_sense()
2456 cmd[4] = len; scsi_mode_sense()
2462 result = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buffer, len, scsi_mode_sense()
2530 char cmd[] = { scsi_test_unit_ready() local
2543 result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL, 0, sshdr, scsi_test_unit_ready()
H A Din2000.c207 static inline void write_3393_cmd(struct IN2000_hostdata *hostdata, uchar cmd) write_3393_cmd() argument
212 write1_io(cmd, IO_WD_DATA); write_3393_cmd()
257 static int is_dir_out(Scsi_Cmnd * cmd) is_dir_out() argument
259 switch (cmd->cmnd[0]) { is_dir_out()
336 static int in2000_queuecommand_lck(Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *)) in2000_queuecommand_lck() argument
342 instance = cmd->device->host; in2000_queuecommand_lck()
345 DB(DB_QUEUE_COMMAND, scmd_printk(KERN_DEBUG, cmd, "Q-%02x(", cmd->cmnd[0])) in2000_queuecommand_lck()
348 * - host_scribble is the pointer to the next cmd in the input queue in2000_queuecommand_lck()
349 * - scsi_done points to the routine we call when a cmd is finished in2000_queuecommand_lck()
352 cmd->host_scribble = NULL; in2000_queuecommand_lck()
353 cmd->scsi_done = done; in2000_queuecommand_lck()
354 cmd->result = 0; in2000_queuecommand_lck()
359 * cmd, and are preserved across disconnect-reselect. This means we in2000_queuecommand_lck()
371 if (scsi_bufflen(cmd)) { in2000_queuecommand_lck()
372 cmd->SCp.buffer = scsi_sglist(cmd); in2000_queuecommand_lck()
373 cmd->SCp.buffers_residual = scsi_sg_count(cmd) - 1; in2000_queuecommand_lck()
374 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); in2000_queuecommand_lck()
375 cmd->SCp.this_residual = cmd->SCp.buffer->length; in2000_queuecommand_lck()
377 cmd->SCp.buffer = NULL; in2000_queuecommand_lck()
378 cmd->SCp.buffers_residual = 0; in2000_queuecommand_lck()
379 cmd->SCp.ptr = NULL; in2000_queuecommand_lck()
380 cmd->SCp.this_residual = 0; in2000_queuecommand_lck()
382 cmd->SCp.have_data_in = 0; in2000_queuecommand_lck()
403 cmd->SCp.Status = ILLEGAL_STATUS_BYTE; in2000_queuecommand_lck()
410 * Add the cmd to the end of 'input_Q'. Note that REQUEST_SENSE in2000_queuecommand_lck()
415 if (!(hostdata->input_Q) || (cmd->cmnd[0] == REQUEST_SENSE)) { in2000_queuecommand_lck()
416 cmd->host_scribble = (uchar *) hostdata->input_Q; in2000_queuecommand_lck()
417 hostdata->input_Q = cmd; in2000_queuecommand_lck()
420 tmp->host_scribble = (uchar *) cmd; in2000_queuecommand_lck()
427 in2000_execute(cmd->device->host); in2000_queuecommand_lck()
448 Scsi_Cmnd *cmd, *prev; in2000_execute() local
471 cmd = (Scsi_Cmnd *) hostdata->input_Q; in2000_execute()
473 while (cmd) { in2000_execute()
474 if (!(hostdata->busy[cmd->device->id] & (1 << cmd->device->lun))) in2000_execute()
476 prev = cmd; in2000_execute()
477 cmd = (Scsi_Cmnd *) cmd->host_scribble; in2000_execute()
482 if (!cmd) { in2000_execute()
492 prev->host_scribble = cmd->host_scribble; in2000_execute()
494 hostdata->input_Q = (Scsi_Cmnd *) cmd->host_scribble; in2000_execute()
497 hostdata->cmd_cnt[cmd->device->id]++; in2000_execute()
504 if (is_dir_out(cmd)) in2000_execute()
505 write_3393(hostdata, WD_DESTINATION_ID, cmd->device->id); in2000_execute()
507 write_3393(hostdata, WD_DESTINATION_ID, cmd->device->id | DSTID_DPD); in2000_execute()
532 cmd->SCp.phase = 0; /* assume no disconnect */ in2000_execute()
537 if (cmd->device->type == 1) /* tape drive? */ in2000_execute()
544 if ((prev->device->id != cmd->device->id) || (prev->device->lun != cmd->device->lun)) { in2000_execute()
553 cmd->SCp.phase = 1; in2000_execute()
556 hostdata->disc_allowed_cnt[cmd->device->id]++; in2000_execute()
560 write_3393(hostdata, WD_SOURCE_ID, ((cmd->SCp.phase) ? SRCID_ER : 0)); in2000_execute()
562 write_3393(hostdata, WD_TARGET_LUN, cmd->device->lun); in2000_execute()
563 write_3393(hostdata, WD_SYNCHRONOUS_TRANSFER, hostdata->sync_xfer[cmd->device->id]); in2000_execute()
564 hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun); in2000_execute()
566 if ((hostdata->level2 <= L2_NONE) || (hostdata->sync_stat[cmd->device->id] == SS_UNSET)) { in2000_execute()
576 hostdata->selecting = cmd; in2000_execute()
588 if (hostdata->sync_stat[cmd->device->id] == SS_UNSET) { in2000_execute()
589 if (hostdata->sync_off & (1 << cmd->device->id)) in2000_execute()
590 hostdata->sync_stat[cmd->device->id] = SS_SET; in2000_execute()
592 hostdata->sync_stat[cmd->device->id] = SS_FIRST; in2000_execute()
609 hostdata->connected = cmd; in2000_execute()
617 for (i = 0; i < cmd->cmd_len; i++) in2000_execute()
618 write1_io(cmd->cmnd[i], IO_WD_DATA); in2000_execute()
626 write_3393(hostdata, WD_OWN_ID, cmd->cmd_len); in2000_execute()
646 if (!(cmd->SCp.phase)) { in2000_execute()
647 write_3393_count(hostdata, cmd->SCp.this_residual); in2000_execute()
651 if (is_dir_out(cmd)) { in2000_execute()
653 if ((i = cmd->SCp.this_residual) > (IN2000_FIFO_SIZE - 16)) in2000_execute()
655 cmd->SCp.have_data_in = i; /* this much data in fifo */ in2000_execute()
657 sp = (unsigned short *) cmd->SCp.ptr; in2000_execute()
671 if (cmd->SCp.have_data_in <= ((IN2000_FIFO_SIZE - 16) - 32)) { in2000_execute()
690 cmd->SCp.have_data_in = 0; /* nothing transferred yet */ in2000_execute()
707 DB(DB_EXECUTE, printk("%s)EX-2 ", (cmd->SCp.phase) ? "d:" : "")) in2000_execute()
747 static void transfer_bytes(Scsi_Cmnd * cmd, int data_in_dir) transfer_bytes() argument
754 hostdata = (struct IN2000_hostdata *) cmd->device->host->hostdata; transfer_bytes()
764 if (!cmd->SCp.this_residual && cmd->SCp.buffers_residual) { transfer_bytes()
765 ++cmd->SCp.buffer; transfer_bytes()
766 --cmd->SCp.buffers_residual; transfer_bytes()
767 cmd->SCp.this_residual = cmd->SCp.buffer->length; transfer_bytes()
768 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); transfer_bytes()
773 write_3393(hostdata, WD_SYNCHRONOUS_TRANSFER, hostdata->sync_xfer[cmd->device->id]); transfer_bytes()
774 write_3393_count(hostdata, cmd->SCp.this_residual); transfer_bytes()
784 if ((hostdata->level2 >= L2_DATA) || (hostdata->level2 == L2_BASIC && cmd->SCp.phase == 0)) { transfer_bytes()
791 cmd->SCp.have_data_in = 0; transfer_bytes()
800 if ((hostdata->level2 >= L2_DATA) || (hostdata->level2 == L2_BASIC && cmd->SCp.phase == 0)) { transfer_bytes()
807 sp = (unsigned short *) cmd->SCp.ptr; transfer_bytes()
809 if ((i = cmd->SCp.this_residual) > IN2000_FIFO_SIZE) transfer_bytes()
811 cmd->SCp.have_data_in = i; transfer_bytes()
837 Scsi_Cmnd *patch, *cmd; in2000_intr() local
913 cmd = (Scsi_Cmnd *) hostdata->connected; /* assume we're connected */ in2000_intr()
914 CHECK_NULL(cmd, "fifo_int") in2000_intr()
920 sp = (unsigned short *) (cmd->SCp.ptr + cmd->SCp.have_data_in); in2000_intr()
934 i = sp - (unsigned short *) (cmd->SCp.ptr + cmd->SCp.have_data_in); in2000_intr()
936 cmd->SCp.have_data_in += i; in2000_intr()
953 if (cmd->SCp.this_residual == cmd->SCp.have_data_in) { in2000_intr()
964 sp = (unsigned short *) (cmd->SCp.ptr + cmd->SCp.have_data_in); in2000_intr()
965 i = cmd->SCp.this_residual - cmd->SCp.have_data_in; /* bytes yet to go */ in2000_intr()
973 i = sp - (unsigned short *) (cmd->SCp.ptr + cmd->SCp.have_data_in); in2000_intr()
975 cmd->SCp.have_data_in += i; in2000_intr()
995 cmd = (Scsi_Cmnd *) hostdata->connected; /* assume we're connected */ in2000_intr()
999 if (!cmd && (sr != CSR_RESEL_AM && sr != CSR_TIMEOUT && sr != CSR_SELECT)) { in2000_intr()
1026 sp = (unsigned short *) (cmd->SCp.ptr + cmd->SCp.have_data_in); in2000_intr()
1030 i = (cmd->SCp.this_residual - read_3393_count(hostdata)) - cmd->SCp.have_data_in; in2000_intr()
1044 length = cmd->SCp.this_residual; in2000_intr()
1045 cmd->SCp.this_residual = read_3393_count(hostdata); in2000_intr()
1046 cmd->SCp.ptr += (length - cmd->SCp.this_residual); in2000_intr()
1048 DB(DB_TRANSFER, printk("(%p,%d)", cmd->SCp.ptr, cmd->SCp.this_residual)) in2000_intr()
1054 length = cmd->SCp.this_residual; in2000_intr()
1055 cmd->SCp.this_residual = read_3393_count(hostdata); in2000_intr()
1056 cmd->SCp.ptr += (length - cmd->SCp.this_residual); in2000_intr()
1058 DB(DB_TRANSFER, printk("(%p,%d)", cmd->SCp.ptr, cmd->SCp.this_residual)) in2000_intr()
1072 cmd = (Scsi_Cmnd *) hostdata->selecting; /* get a valid cmd */ in2000_intr()
1073 CHECK_NULL(cmd, "csr_timeout") in2000_intr()
1077 cmd->result = DID_NO_CONNECT << 16; in2000_intr()
1078 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in2000_intr()
1080 cmd->scsi_done(cmd); in2000_intr()
1094 hostdata->connected = cmd = (Scsi_Cmnd *) hostdata->selecting; in2000_intr()
1095 CHECK_NULL(cmd, "csr_select") in2000_intr()
1100 hostdata->outgoing_msg[0] = (0x80 | 0x00 | cmd->device->lun); in2000_intr()
1101 if (cmd->SCp.phase) in2000_intr()
1104 if (hostdata->sync_stat[cmd->device->id] == SS_FIRST) { in2000_intr()
1109 hostdata->sync_stat[cmd->device->id] = SS_WAITING; in2000_intr()
1129 DB(DB_INTR, printk("IN-%d.%d", cmd->SCp.this_residual, cmd->SCp.buffers_residual)) in2000_intr()
1130 transfer_bytes(cmd, DATA_IN_DIR); in2000_intr()
1139 DB(DB_INTR, printk("OUT-%d.%d", cmd->SCp.this_residual, cmd->SCp.buffers_residual)) in2000_intr()
1140 transfer_bytes(cmd, DATA_OUT_DIR); in2000_intr()
1151 DB(DB_INTR, printk("CMND-%02x", cmd->cmnd[0])) in2000_intr()
1152 transfer_pio(cmd->cmnd, cmd->cmd_len, DATA_OUT_DIR, hostdata); in2000_intr()
1162 cmd->SCp.Status = read_1_byte(hostdata); in2000_intr()
1163 DB(DB_INTR, printk("%02x", cmd->SCp.Status)) in2000_intr()
1189 cmd->SCp.Message = msg; in2000_intr()
1218 cmd->device->disconnect = 1; in2000_intr()
1228 if (hostdata->sync_stat[cmd->device->id] == SS_WAITING) in2000_intr()
1229 hostdata->sync_stat[cmd->device->id] = SS_SET; in2000_intr()
1249 if (hostdata->sync_stat[cmd->device->id] != SS_WAITING) { in2000_intr()
1267 hostdata->sync_xfer[cmd->device->id] = calc_sync_xfer(hostdata->default_sx_per / 4, 0); in2000_intr()
1269 hostdata->sync_xfer[cmd->device->id] = id; in2000_intr()
1272 printk("sync_xfer=%02x", hostdata->sync_xfer[cmd->device->id]); in2000_intr()
1274 hostdata->sync_stat[cmd->device->id] = SS_SET; in2000_intr()
1332 cmd->SCp.Message = COMMAND_COMPLETE; in2000_intr()
1334 DB(DB_INTR, printk(":%d.%d", cmd->SCp.Status, lun)) in2000_intr()
1336 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in2000_intr()
1338 if (cmd->SCp.Status == ILLEGAL_STATUS_BYTE) in2000_intr()
1339 cmd->SCp.Status = lun; in2000_intr()
1340 if (cmd->cmnd[0] == REQUEST_SENSE && cmd->SCp.Status != GOOD) in2000_intr()
1341 cmd->result = (cmd->result & 0x00ffff) | (DID_ERROR << 16); in2000_intr()
1343 cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8); in2000_intr()
1344 cmd->scsi_done(cmd); in2000_intr()
1411 if (cmd == NULL) { in2000_intr()
1421 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in2000_intr()
1423 if (cmd->cmnd[0] == REQUEST_SENSE && cmd->SCp.Status != GOOD) in2000_intr()
1424 cmd->result = (cmd->result & 0x00ffff) | (DID_ERROR << 16); in2000_intr()
1426 cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8); in2000_intr()
1427 cmd->scsi_done(cmd); in2000_intr()
1445 if (cmd == NULL) { in2000_intr()
1452 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in2000_intr()
1454 DB(DB_INTR, printk(":%d", cmd->SCp.Status)) in2000_intr()
1455 if (cmd->cmnd[0] == REQUEST_SENSE && cmd->SCp.Status != GOOD) in2000_intr()
1456 cmd->result = (cmd->result & 0x00ffff) | (DID_ERROR << 16); in2000_intr()
1458 cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8); in2000_intr()
1459 cmd->scsi_done(cmd); in2000_intr()
1463 cmd->host_scribble = (uchar *) hostdata->disconnected_Q; in2000_intr()
1464 hostdata->disconnected_Q = cmd; in2000_intr()
1469 hostdata->disc_done_cnt[cmd->device->id]++; in2000_intr()
1495 cmd = (Scsi_Cmnd *) hostdata->selecting; in2000_intr()
1497 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in2000_intr()
1498 cmd->host_scribble = (uchar *) hostdata->input_Q; in2000_intr()
1499 hostdata->input_Q = cmd; in2000_intr()
1505 if (cmd) { in2000_intr()
1507 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in2000_intr()
1508 cmd->host_scribble = (uchar *) hostdata->input_Q; in2000_intr()
1509 hostdata->input_Q = cmd; in2000_intr()
1536 cmd = (Scsi_Cmnd *) hostdata->disconnected_Q; in2000_intr()
1538 while (cmd) { in2000_intr()
1539 if (id == cmd->device->id && lun == cmd->device->lun) in2000_intr()
1541 patch = cmd; in2000_intr()
1542 cmd = (Scsi_Cmnd *) cmd->host_scribble; in2000_intr()
1547 if (!cmd) { in2000_intr()
1555 patch->host_scribble = cmd->host_scribble; in2000_intr()
1557 hostdata->disconnected_Q = (Scsi_Cmnd *) cmd->host_scribble; in2000_intr()
1558 hostdata->connected = cmd; in2000_intr()
1565 if (is_dir_out(cmd)) in2000_intr()
1566 write_3393(hostdata, WD_DESTINATION_ID, cmd->device->id); in2000_intr()
1568 write_3393(hostdata, WD_DESTINATION_ID, cmd->device->id | DSTID_DPD); in2000_intr()
1642 static int in2000_bus_reset(Scsi_Cmnd * cmd) in2000_bus_reset() argument
1649 instance = cmd->device->host; in2000_bus_reset()
1672 cmd->result = DID_RESET << 16; in2000_bus_reset()
1678 static int __in2000_abort(Scsi_Cmnd * cmd) __in2000_abort() argument
1686 instance = cmd->device->host; __in2000_abort()
1690 printk("(asr=%02x,count=%ld,resid=%d,buf_resid=%d,have_data=%d,FC=%02x)- ", READ_AUX_STAT(), read_3393_count(hostdata), cmd->SCp.this_residual, cmd->SCp.buffers_residual, cmd->SCp.have_data_in, read1_io(IO_FIFO_COUNT)); __in2000_abort()
1700 if (tmp == cmd) { __in2000_abort()
1702 prev->host_scribble = cmd->host_scribble; __in2000_abort()
1703 cmd->host_scribble = NULL; __in2000_abort()
1704 cmd->result = DID_ABORT << 16; __in2000_abort()
1706 cmd->scsi_done(cmd); __in2000_abort()
1724 if (hostdata->connected == cmd) { __in2000_abort()
1760 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); __in2000_abort()
1763 cmd->result = DID_ABORT << 16; __in2000_abort()
1764 cmd->scsi_done(cmd); __in2000_abort()
1778 if (cmd == tmp) { __in2000_abort()
1799 static int in2000_abort(Scsi_Cmnd * cmd) in2000_abort() argument
1803 spin_lock_irq(cmd->device->host->host_lock); in2000_abort()
1804 rc = __in2000_abort(cmd); in2000_abort()
1805 spin_unlock_irq(cmd->device->host->host_lock); in2000_abort()
2218 Scsi_Cmnd *cmd; in2000_show_info() local
2253 cmd = (Scsi_Cmnd *) hd->connected; in2000_show_info()
2254 seq_printf(m, " %d:%llu(%02x)", cmd->device->id, cmd->device->lun, cmd->cmnd[0]); in2000_show_info()
2259 cmd = (Scsi_Cmnd *) hd->input_Q; in2000_show_info()
2260 while (cmd) { in2000_show_info()
2261 seq_printf(m, " %d:%llu(%02x)", cmd->device->id, cmd->device->lun, cmd->cmnd[0]); in2000_show_info()
2262 cmd = (Scsi_Cmnd *) cmd->host_scribble; in2000_show_info()
2267 cmd = (Scsi_Cmnd *) hd->disconnected_Q; in2000_show_info()
2268 while (cmd) { in2000_show_info()
2269 seq_printf(m, " %d:%llu(%02x)", cmd->device->id, cmd->device->lun, cmd->cmnd[0]); in2000_show_info()
2270 cmd = (Scsi_Cmnd *) cmd->host_scribble; in2000_show_info()
H A Dscsi.c175 * @cmd: command to release
181 scsi_host_free_command(struct Scsi_Host *shost, struct scsi_cmnd *cmd) scsi_host_free_command() argument
185 if (cmd->prot_sdb) scsi_host_free_command()
186 kmem_cache_free(scsi_sdb_cache, cmd->prot_sdb); scsi_host_free_command()
187 kmem_cache_free(pool->sense_slab, cmd->sense_buffer); scsi_host_free_command()
188 kmem_cache_free(pool->cmd_slab, cmd); scsi_host_free_command()
203 struct scsi_cmnd *cmd; scsi_host_alloc_command() local
205 cmd = kmem_cache_zalloc(pool->cmd_slab, gfp_mask | pool->gfp_mask); scsi_host_alloc_command()
206 if (!cmd) scsi_host_alloc_command()
209 cmd->sense_buffer = kmem_cache_alloc(pool->sense_slab, scsi_host_alloc_command()
211 if (!cmd->sense_buffer) scsi_host_alloc_command()
215 cmd->prot_sdb = kmem_cache_zalloc(scsi_sdb_cache, gfp_mask); scsi_host_alloc_command()
216 if (!cmd->prot_sdb) scsi_host_alloc_command()
220 return cmd; scsi_host_alloc_command()
223 kmem_cache_free(pool->sense_slab, cmd->sense_buffer); scsi_host_alloc_command()
225 kmem_cache_free(pool->cmd_slab, cmd); scsi_host_alloc_command()
241 struct scsi_cmnd *cmd = scsi_host_alloc_command(shost, gfp_mask); __scsi_get_command() local
243 if (unlikely(!cmd)) { __scsi_get_command()
248 cmd = list_entry(shost->free_list.next, __scsi_get_command()
250 list_del_init(&cmd->list); __scsi_get_command()
254 if (cmd) { __scsi_get_command()
257 buf = cmd->sense_buffer; __scsi_get_command()
258 prot = cmd->prot_sdb; __scsi_get_command()
260 memset(cmd, 0, sizeof(*cmd)); __scsi_get_command()
262 cmd->sense_buffer = buf; __scsi_get_command()
263 cmd->prot_sdb = prot; __scsi_get_command()
267 return cmd; __scsi_get_command()
279 struct scsi_cmnd *cmd = __scsi_get_command(dev->host, gfp_mask); scsi_get_command() local
282 if (unlikely(cmd == NULL)) scsi_get_command()
285 cmd->device = dev; scsi_get_command()
286 INIT_LIST_HEAD(&cmd->list); scsi_get_command()
287 INIT_DELAYED_WORK(&cmd->abort_work, scmd_eh_abort_handler); scsi_get_command()
289 list_add_tail(&cmd->list, &dev->cmd_list); scsi_get_command()
291 cmd->jiffies_at_alloc = jiffies; scsi_get_command()
292 return cmd; scsi_get_command()
298 * @cmd: Command to free
300 static void __scsi_put_command(struct Scsi_Host *shost, struct scsi_cmnd *cmd) __scsi_put_command() argument
307 list_add(&cmd->list, &shost->free_list); __scsi_put_command()
308 cmd = NULL; __scsi_put_command()
313 if (likely(cmd != NULL)) __scsi_put_command()
314 scsi_host_free_command(shost, cmd); __scsi_put_command()
319 * @cmd: command block to free
325 void scsi_put_command(struct scsi_cmnd *cmd) scsi_put_command() argument
330 spin_lock_irqsave(&cmd->device->list_lock, flags); scsi_put_command()
331 BUG_ON(list_empty(&cmd->list)); scsi_put_command()
332 list_del_init(&cmd->list); scsi_put_command()
333 spin_unlock_irqrestore(&cmd->device->list_lock, flags); scsi_put_command()
335 BUG_ON(delayed_work_pending(&cmd->abort_work)); scsi_put_command()
337 __scsi_put_command(cmd->device->host, cmd); scsi_put_command()
474 struct scsi_cmnd *cmd; scsi_setup_command_freelist() local
486 cmd = scsi_host_alloc_command(shost, gfp_mask); scsi_setup_command_freelist()
487 if (!cmd) { scsi_setup_command_freelist()
492 list_add(&cmd->list, &shost->free_list); scsi_setup_command_freelist()
510 struct scsi_cmnd *cmd; scsi_destroy_command_freelist() local
512 cmd = list_entry(shost->free_list.next, struct scsi_cmnd, list); scsi_destroy_command_freelist()
513 list_del_init(&cmd->list); scsi_destroy_command_freelist()
514 scsi_host_free_command(shost, cmd); scsi_destroy_command_freelist()
521 void scsi_log_send(struct scsi_cmnd *cmd) scsi_log_send() argument
530 * 2: log opcode + command of all commands + cmd address scsi_log_send()
540 scmd_printk(KERN_INFO, cmd, scsi_log_send()
541 "Send: scmd 0x%p\n", cmd); scsi_log_send()
542 scsi_print_command(cmd); scsi_log_send()
547 void scsi_log_completion(struct scsi_cmnd *cmd, int disposition) scsi_log_completion() argument
566 if (((level > 0) && (cmd->result || disposition != SUCCESS)) || scsi_log_completion()
568 scsi_print_result(cmd, "Done", disposition); scsi_log_completion()
569 scsi_print_command(cmd); scsi_log_completion()
570 if (status_byte(cmd->result) & CHECK_CONDITION) scsi_log_completion()
571 scsi_print_sense(cmd); scsi_log_completion()
573 scmd_printk(KERN_INFO, cmd, scsi_log_completion()
575 atomic_read(&cmd->device->host->host_busy), scsi_log_completion()
576 cmd->device->host->host_failed); scsi_log_completion()
585 * @cmd: command to assign serial number to
590 void scsi_cmd_get_serial(struct Scsi_Host *host, struct scsi_cmnd *cmd) scsi_cmd_get_serial() argument
592 cmd->serial_number = host->cmd_serial_number++; scsi_cmd_get_serial()
593 if (cmd->serial_number == 0) scsi_cmd_get_serial()
594 cmd->serial_number = host->cmd_serial_number++; scsi_cmd_get_serial()
600 * @cmd: the command
606 void scsi_finish_command(struct scsi_cmnd *cmd) scsi_finish_command() argument
608 struct scsi_device *sdev = cmd->device; scsi_finish_command()
631 if (SCSI_SENSE_VALID(cmd)) scsi_finish_command()
632 cmd->result |= (DRIVER_SENSE << 24); scsi_finish_command()
636 "(result %x)\n", cmd->result)); scsi_finish_command()
638 good_bytes = scsi_bufflen(cmd); scsi_finish_command()
639 if (cmd->request->cmd_type != REQ_TYPE_BLOCK_PC) { scsi_finish_command()
641 drv = scsi_cmd_to_driver(cmd); scsi_finish_command()
643 good_bytes = drv->done(cmd); scsi_finish_command()
651 good_bytes -= scsi_get_resid(cmd); scsi_finish_command()
653 scsi_io_completion(cmd, good_bytes); scsi_finish_command()
756 unsigned char cmd[16]; scsi_vpd_inquiry() local
761 cmd[0] = INQUIRY; scsi_vpd_inquiry()
762 cmd[1] = 1; /* EVPD */ scsi_vpd_inquiry()
763 cmd[2] = page; scsi_vpd_inquiry()
764 cmd[3] = len >> 8; scsi_vpd_inquiry()
765 cmd[4] = len & 0xff; scsi_vpd_inquiry()
766 cmd[5] = 0; /* Control byte */ scsi_vpd_inquiry()
772 result = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buffer, scsi_vpd_inquiry()
938 unsigned char cmd[16]; scsi_report_opcode() local
945 memset(cmd, 0, 16); scsi_report_opcode()
946 cmd[0] = MAINTENANCE_IN; scsi_report_opcode()
947 cmd[1] = MI_REPORT_SUPPORTED_OPERATION_CODES; scsi_report_opcode()
948 cmd[2] = 1; /* One command format */ scsi_report_opcode()
949 cmd[3] = opcode; scsi_report_opcode()
950 put_unaligned_be32(len, &cmd[6]); scsi_report_opcode()
953 result = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buffer, len, scsi_report_opcode()
H A Dsr_ioctl.c53 cgc.cmd[0] = GPCMD_READ_TOC_PMA_ATIP; sr_read_tochdr()
54 cgc.cmd[8] = 12; /* LSB of length */ sr_read_tochdr()
83 cgc.cmd[0] = GPCMD_READ_TOC_PMA_ATIP; sr_read_tocentry()
84 cgc.cmd[1] |= (tocentry->cdte_format == CDROM_MSF) ? 0x02 : 0; sr_read_tocentry()
85 cgc.cmd[6] = tocentry->cdte_track; sr_read_tocentry()
86 cgc.cmd[8] = 12; /* LSB of length */ sr_read_tocentry()
145 cgc.cmd[0] = GPCMD_PLAY_AUDIO_MSF; sr_fake_playtrkind()
146 cgc.cmd[3] = trk0_te.cdte_addr.msf.minute; sr_fake_playtrkind()
147 cgc.cmd[4] = trk0_te.cdte_addr.msf.second; sr_fake_playtrkind()
148 cgc.cmd[5] = trk0_te.cdte_addr.msf.frame; sr_fake_playtrkind()
149 cgc.cmd[6] = trk1_te.cdte_addr.msf.minute; sr_fake_playtrkind()
150 cgc.cmd[7] = trk1_te.cdte_addr.msf.second; sr_fake_playtrkind()
151 cgc.cmd[8] = trk1_te.cdte_addr.msf.frame; sr_fake_playtrkind()
167 cgc.cmd[0] = GPCMD_PLAYAUDIO_TI; sr_play_trkind()
168 cgc.cmd[4] = ti->cdti_trk0; sr_play_trkind()
169 cgc.cmd[5] = ti->cdti_ind0; sr_play_trkind()
170 cgc.cmd[7] = ti->cdti_trk1; sr_play_trkind()
171 cgc.cmd[8] = ti->cdti_ind1; sr_play_trkind()
209 result = scsi_execute(SDev, cgc->cmd, cgc->data_direction, sr_do_ioctl()
279 cgc.cmd[0] = GPCMD_START_STOP_UNIT; sr_tray_move()
280 cgc.cmd[4] = (pos == 0) ? 0x03 /* close */ : 0x02 /* eject */ ; sr_tray_move()
404 cgc.cmd[0] = GPCMD_READ_SUBCHANNEL; sr_get_mcn()
405 cgc.cmd[2] = 0x40; /* I do want the subchannel info */ sr_get_mcn()
406 cgc.cmd[3] = 0x02; /* Give me medium catalog number info */ sr_get_mcn()
407 cgc.cmd[8] = 24; sr_get_mcn()
437 cgc.cmd[0] = GPCMD_SET_SPEED; /* SET CD SPEED */ sr_select_speed()
438 cgc.cmd[2] = (speed >> 8) & 0xff; /* MSB for speed (in kbytes/sec) */ sr_select_speed()
439 cgc.cmd[3] = speed & 0xff; /* LSB */ sr_select_speed()
454 int sr_audio_ioctl(struct cdrom_device_info *cdi, unsigned int cmd, void *arg) sr_audio_ioctl() argument
456 switch (cmd) { sr_audio_ioctl()
492 cgc.cmd[0] = GPCMD_READ_CD; /* READ_CD */ sr_read_cd()
493 cgc.cmd[1] = ((format & 7) << 2); sr_read_cd()
494 cgc.cmd[2] = (unsigned char) (lba >> 24) & 0xff; sr_read_cd()
495 cgc.cmd[3] = (unsigned char) (lba >> 16) & 0xff; sr_read_cd()
496 cgc.cmd[4] = (unsigned char) (lba >> 8) & 0xff; sr_read_cd()
497 cgc.cmd[5] = (unsigned char) lba & 0xff; sr_read_cd()
498 cgc.cmd[8] = 1; sr_read_cd()
501 cgc.cmd[9] = 0x58; sr_read_cd()
504 cgc.cmd[9] = 0x78; sr_read_cd()
507 cgc.cmd[9] = 0xf8; sr_read_cd()
510 cgc.cmd[9] = 0x10; sr_read_cd()
550 cgc.cmd[0] = GPCMD_READ_10; sr_read_sector()
551 cgc.cmd[2] = (unsigned char) (lba >> 24) & 0xff; sr_read_sector()
552 cgc.cmd[3] = (unsigned char) (lba >> 16) & 0xff; sr_read_sector()
553 cgc.cmd[4] = (unsigned char) (lba >> 8) & 0xff; sr_read_sector()
554 cgc.cmd[5] = (unsigned char) lba & 0xff; sr_read_sector()
555 cgc.cmd[8] = 1; sr_read_sector()
H A Datari_NCR5380.c230 #define NEXT(cmd) ((struct scsi_cmnd *)(cmd)->host_scribble)
231 #define SET_NEXT(cmd,next) ((cmd)->host_scribble = (void *)(next))
232 #define NEXTADDR(cmd) ((struct scsi_cmnd **)&(cmd)->host_scribble)
235 #define H_NO(cmd) (cmd)->device->host->host_no
304 static int is_lun_busy(struct scsi_cmnd *cmd, int should_be_tagged) is_lun_busy() argument
306 u8 lun = cmd->device->lun; is_lun_busy()
307 SETUP_HOSTDATA(cmd->device->host); is_lun_busy()
309 if (hostdata->busy[cmd->device->id] & (1 << lun)) is_lun_busy()
313 !cmd->device->tagged_supported) is_lun_busy()
315 if (hostdata->TagAlloc[scmd_id(cmd)][lun].nr_allocated >= is_lun_busy()
316 hostdata->TagAlloc[scmd_id(cmd)][lun].queue_size) { is_lun_busy()
318 H_NO(cmd), cmd->device->id, lun); is_lun_busy()
330 static void cmd_get_tag(struct scsi_cmnd *cmd, int should_be_tagged) cmd_get_tag() argument
332 u8 lun = cmd->device->lun; cmd_get_tag()
333 SETUP_HOSTDATA(cmd->device->host); cmd_get_tag()
340 !cmd->device->tagged_supported) { cmd_get_tag()
341 cmd->tag = TAG_NONE; cmd_get_tag()
342 hostdata->busy[cmd->device->id] |= (1 << lun); cmd_get_tag()
344 "command\n", H_NO(cmd), cmd->device->id, lun); cmd_get_tag()
346 struct tag_alloc *ta = &hostdata->TagAlloc[scmd_id(cmd)][lun]; cmd_get_tag()
348 cmd->tag = find_first_zero_bit(ta->allocated, MAX_TAGS); cmd_get_tag()
349 set_bit(cmd->tag, ta->allocated); cmd_get_tag()
353 H_NO(cmd), cmd->tag, cmd->device->id, cmd_get_tag()
359 /* Mark the tag of command 'cmd' as free, or in case of an untagged command,
363 static void cmd_free_tag(struct scsi_cmnd *cmd) cmd_free_tag() argument
365 u8 lun = cmd->device->lun; cmd_free_tag()
366 SETUP_HOSTDATA(cmd->device->host); cmd_free_tag()
368 if (cmd->tag == TAG_NONE) { cmd_free_tag()
369 hostdata->busy[cmd->device->id] &= ~(1 << lun); cmd_free_tag()
370 dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d untagged cmd finished\n", cmd_free_tag()
371 H_NO(cmd), cmd->device->id, lun); cmd_free_tag()
372 } else if (cmd->tag >= MAX_TAGS) { cmd_free_tag()
374 H_NO(cmd), cmd->tag); cmd_free_tag()
376 struct tag_alloc *ta = &hostdata->TagAlloc[scmd_id(cmd)][lun]; cmd_free_tag()
377 clear_bit(cmd->tag, ta->allocated); cmd_free_tag()
380 H_NO(cmd), cmd->tag, cmd->device->id, lun); cmd_free_tag()
406 * Function: void merge_contiguous_buffers( struct scsi_cmnd *cmd )
412 * Parameters: struct scsi_cmnd *cmd
417 static void merge_contiguous_buffers(struct scsi_cmnd *cmd) merge_contiguous_buffers() argument
422 unsigned long oldlen = cmd->SCp.this_residual; merge_contiguous_buffers()
426 for (endaddr = virt_to_phys(cmd->SCp.ptr + cmd->SCp.this_residual - 1) + 1; merge_contiguous_buffers()
427 cmd->SCp.buffers_residual && merge_contiguous_buffers()
428 virt_to_phys(sg_virt(&cmd->SCp.buffer[1])) == endaddr;) { merge_contiguous_buffers()
430 page_address(sg_page(&cmd->SCp.buffer[1])), endaddr); merge_contiguous_buffers()
434 ++cmd->SCp.buffer; merge_contiguous_buffers()
435 --cmd->SCp.buffers_residual; merge_contiguous_buffers()
436 cmd->SCp.this_residual += cmd->SCp.buffer->length; merge_contiguous_buffers()
437 endaddr += cmd->SCp.buffer->length; merge_contiguous_buffers()
440 if (oldlen != cmd->SCp.this_residual) merge_contiguous_buffers()
442 cnt, cmd->SCp.ptr, cmd->SCp.this_residual); merge_contiguous_buffers()
449 * @cmd: command block to set up
454 static inline void initialize_SCp(struct scsi_cmnd *cmd) initialize_SCp() argument
461 if (scsi_bufflen(cmd)) { initialize_SCp()
462 cmd->SCp.buffer = scsi_sglist(cmd); initialize_SCp()
463 cmd->SCp.buffers_residual = scsi_sg_count(cmd) - 1; initialize_SCp()
464 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); initialize_SCp()
465 cmd->SCp.this_residual = cmd->SCp.buffer->length; initialize_SCp()
469 merge_contiguous_buffers(cmd); initialize_SCp()
471 cmd->SCp.buffer = NULL; initialize_SCp()
472 cmd->SCp.buffers_residual = 0; initialize_SCp()
473 cmd->SCp.ptr = NULL; initialize_SCp()
474 cmd->SCp.this_residual = 0; initialize_SCp()
663 static void lprint_Scsi_Cmnd(struct scsi_cmnd *cmd) lprint_Scsi_Cmnd() argument
668 H_NO(cmd), cmd->device->id, cmd->device->lun); lprint_Scsi_Cmnd()
670 command = cmd->cmnd; lprint_Scsi_Cmnd()
708 static void show_Scsi_Cmnd(struct scsi_cmnd *cmd, struct seq_file *m) show_Scsi_Cmnd() argument
713 H_NO(cmd), cmd->device->id, cmd->device->lun); show_Scsi_Cmnd()
715 command = cmd->cmnd; show_Scsi_Cmnd()
820 * @cmd: SCSI command
822 * cmd is added to the per instance issue_queue, with minor
823 * twiddling done to the host specific fields of cmd. If the
828 struct scsi_cmnd *cmd) NCR5380_queue_command()
835 switch (cmd->cmnd[0]) { NCR5380_queue_command()
839 H_NO(cmd)); NCR5380_queue_command()
840 cmd->result = (DID_ERROR << 16); NCR5380_queue_command()
841 cmd->scsi_done(cmd); NCR5380_queue_command()
851 SET_NEXT(cmd, NULL); NCR5380_queue_command()
852 cmd->result = 0; NCR5380_queue_command()
855 * Insert the cmd into the issue queue. Note that REQUEST SENSE NCR5380_queue_command()
879 * Insert the cmd into the issue queue. Note that REQUEST SENSE NCR5380_queue_command()
885 if (!(hostdata->issue_queue) || (cmd->cmnd[0] == REQUEST_SENSE)) { NCR5380_queue_command()
886 LIST(cmd, hostdata->issue_queue); NCR5380_queue_command()
887 SET_NEXT(cmd, hostdata->issue_queue); NCR5380_queue_command()
888 hostdata->issue_queue = cmd; NCR5380_queue_command()
893 LIST(cmd, tmp); NCR5380_queue_command()
894 SET_NEXT(tmp, cmd); NCR5380_queue_command()
898 dprintk(NDEBUG_QUEUES, "scsi%d: command added to %s of queue\n", H_NO(cmd), NCR5380_queue_command()
899 (cmd->cmnd[0] == REQUEST_SENSE) ? "head" : "tail"); NCR5380_queue_command()
1116 "no connected cmd\n", HOSTNO); NCR5380_dma_complete()
1280 * struct scsi_cmnd *cmd)
1287 * target lives, cmd - SCSI command to execute.
1300 * instance->connected will be set to cmd.
1303 * If failed (no target) : cmd->scsi_done() will be called, and the
1304 * cmd->result host byte set to DID_BAD_TARGET.
1307 static int NCR5380_select(struct Scsi_Host *instance, struct scsi_cmnd *cmd) NCR5380_select() argument
1429 NCR5380_write(OUTPUT_DATA_REG, (hostdata->id_mask | (1 << cmd->device->id))); NCR5380_select()
1482 dprintk(NDEBUG_SELECTION, "scsi%d: selecting target %d\n", HOSTNO, cmd->device->id); NCR5380_select()
1534 if (hostdata->targets_present & (1 << cmd->device->id)) { NCR5380_select()
1542 cmd->result = DID_BAD_TARGET << 16; NCR5380_select()
1544 cmd_free_tag(cmd); NCR5380_select()
1546 cmd->scsi_done(cmd); NCR5380_select()
1553 hostdata->targets_present |= (1 << cmd->device->id); NCR5380_select()
1575 HOSTNO, cmd->device->id); NCR5380_select()
1576 tmp[0] = IDENTIFY(1, cmd->device->lun); NCR5380_select()
1579 if (cmd->tag != TAG_NONE) { NCR5380_select()
1581 tmp[2] = cmd->tag; NCR5380_select()
1587 cmd->tag = 0; NCR5380_select()
1596 hostdata->connected = cmd; NCR5380_select()
1598 hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun); NCR5380_select()
1604 initialize_SCp(cmd); NCR5380_select()
1956 struct scsi_cmnd *cmd = (struct scsi_cmnd *) hostdata->connected; NCR5380_information_transfer() local
1977 if (!cmd->SCp.this_residual && cmd->SCp.buffers_residual) { NCR5380_information_transfer()
1978 count = cmd->SCp.buffer->length; NCR5380_information_transfer()
1979 d = sg_virt(cmd->SCp.buffer); NCR5380_information_transfer()
1981 count = cmd->SCp.this_residual; NCR5380_information_transfer()
1982 d = cmd->SCp.ptr; NCR5380_information_transfer()
1985 if ((count >= DMA_MIN_SIZE) && (sun3_dma_setup_done != cmd)) { NCR5380_information_transfer()
1986 if (cmd->request->cmd_type == REQ_TYPE_FS) { NCR5380_information_transfer()
1988 rq_data_dir(cmd->request)); NCR5380_information_transfer()
1989 sun3_dma_setup_done = cmd; NCR5380_information_transfer()
2019 cmd->result = DID_ERROR << 16; NCR5380_information_transfer()
2020 cmd->scsi_done(cmd); NCR5380_information_transfer()
2029 if (!cmd->SCp.this_residual && cmd->SCp.buffers_residual) { NCR5380_information_transfer()
2030 ++cmd->SCp.buffer; NCR5380_information_transfer()
2031 --cmd->SCp.buffers_residual; NCR5380_information_transfer()
2032 cmd->SCp.this_residual = cmd->SCp.buffer->length; NCR5380_information_transfer()
2033 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); NCR5380_information_transfer()
2037 merge_contiguous_buffers(cmd); NCR5380_information_transfer()
2039 HOSTNO, cmd->SCp.this_residual, NCR5380_information_transfer()
2040 cmd->SCp.buffers_residual); NCR5380_information_transfer()
2061 !cmd->device->borken && NCR5380_information_transfer()
2063 (transfersize = NCR5380_dma_xfer_len(instance, cmd, phase)) >= DMA_MIN_SIZE) { NCR5380_information_transfer()
2065 cmd->SCp.phase = phase; NCR5380_information_transfer()
2067 &len, (unsigned char **)&cmd->SCp.ptr)) { NCR5380_information_transfer()
2072 scmd_printk(KERN_INFO, cmd, NCR5380_information_transfer()
2074 cmd->device->borken = 1; NCR5380_information_transfer()
2079 cmd->result = DID_ERROR << 16; NCR5380_information_transfer()
2080 cmd->scsi_done(cmd); NCR5380_information_transfer()
2091 cmd->SCp.this_residual -= transfersize - len; NCR5380_information_transfer()
2097 (int *)&cmd->SCp.this_residual, NCR5380_information_transfer()
2098 (unsigned char **)&cmd->SCp.ptr); NCR5380_information_transfer()
2101 if (sun3_dma_setup_done == cmd) NCR5380_information_transfer()
2110 cmd->SCp.Message = tmp; NCR5380_information_transfer()
2130 "complete.\n", HOSTNO, cmd->device->id, cmd->device->lun); NCR5380_information_transfer()
2140 if (!cmd->next_link) { NCR5380_information_transfer()
2143 HOSTNO, cmd->device->id, cmd->device->lun); NCR5380_information_transfer()
2149 initialize_SCp(cmd->next_link); NCR5380_information_transfer()
2152 cmd->next_link->tag = cmd->tag; NCR5380_information_transfer()
2153 cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8); NCR5380_information_transfer()
2156 HOSTNO, cmd->device->id, cmd->device->lun); NCR5380_information_transfer()
2157 cmd->scsi_done(cmd); NCR5380_information_transfer()
2158 cmd = hostdata->connected; NCR5380_information_transfer()
2166 "completed\n", HOSTNO, cmd->device->id, cmd->device->lun); NCR5380_information_transfer()
2172 cmd_free_tag(cmd); NCR5380_information_transfer()
2173 if (status_byte(cmd->SCp.Status) == QUEUE_FULL) { NCR5380_information_transfer()
2182 struct tag_alloc *ta = &hostdata->TagAlloc[scmd_id(cmd)][cmd->device->lun]; NCR5380_information_transfer()
2185 HOSTNO, cmd->device->id, cmd->device->lun, NCR5380_information_transfer()
2191 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); NCR5380_information_transfer()
2212 if (cmd->cmnd[0] != REQUEST_SENSE) NCR5380_information_transfer()
2213 cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8); NCR5380_information_transfer()
2214 else if (status_byte(cmd->SCp.Status) != GOOD) NCR5380_information_transfer()
2215 cmd->result = (cmd->result & 0x00ffff) | (DID_ERROR << 16); NCR5380_information_transfer()
2217 if ((cmd->cmnd[0] == REQUEST_SENSE) && NCR5380_information_transfer()
2219 scsi_eh_restore_cmnd(cmd, &hostdata->ses); NCR5380_information_transfer()
2223 if ((cmd->cmnd[0] != REQUEST_SENSE) && NCR5380_information_transfer()
2224 (status_byte(cmd->SCp.Status) == CHECK_CONDITION)) { NCR5380_information_transfer()
2225 scsi_eh_prep_cmnd(cmd, &hostdata->ses, NULL, 0, ~0); NCR5380_information_transfer()
2229 LIST(cmd,hostdata->issue_queue); NCR5380_information_transfer()
2230 SET_NEXT(cmd, hostdata->issue_queue); NCR5380_information_transfer()
2231 hostdata->issue_queue = (struct scsi_cmnd *) cmd; NCR5380_information_transfer()
2233 "issue queue\n", H_NO(cmd)); NCR5380_information_transfer()
2235 cmd->scsi_done(cmd); NCR5380_information_transfer()
2274 cmd->device->tagged_supported = 0; NCR5380_information_transfer()
2275 hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun); NCR5380_information_transfer()
2276 cmd->tag = TAG_NONE; NCR5380_information_transfer()
2280 HOSTNO, cmd->device->id, cmd->device->lun); NCR5380_information_transfer()
2288 cmd->device->disconnect = 1; NCR5380_information_transfer()
2289 LIST(cmd,hostdata->disconnected_queue); NCR5380_information_transfer()
2290 SET_NEXT(cmd, hostdata->disconnected_queue); NCR5380_information_transfer()
2292 hostdata->disconnected_queue = cmd; NCR5380_information_transfer()
2297 cmd->device->id, cmd->device->lun); NCR5380_information_transfer()
2398 scmd_printk(KERN_INFO, cmd, NCR5380_information_transfer()
2402 scmd_printk(KERN_INFO, cmd, NCR5380_information_transfer()
2419 cmd_free_tag(cmd); NCR5380_information_transfer()
2421 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); NCR5380_information_transfer()
2424 cmd->result = DID_ERROR << 16; NCR5380_information_transfer()
2428 cmd->scsi_done(cmd); NCR5380_information_transfer()
2434 len = cmd->cmd_len; NCR5380_information_transfer()
2435 data = cmd->cmnd; NCR5380_information_transfer()
2447 cmd->SCp.Status = tmp; NCR5380_information_transfer()
2654 * Function : int NCR5380_abort (struct scsi_cmnd *cmd)
2658 * Inputs : cmd - the scsi_cmnd to abort, code - code to set the
2671 int NCR5380_abort(struct scsi_cmnd *cmd) NCR5380_abort() argument
2673 struct Scsi_Host *instance = cmd->device->host; NCR5380_abort()
2678 scmd_printk(KERN_NOTICE, cmd, "aborting command\n"); NCR5380_abort()
2695 if (hostdata->connected == cmd) { NCR5380_abort()
2718 cmd->result = DID_ABORT << 16; NCR5380_abort()
2720 cmd_free_tag(cmd); NCR5380_abort()
2722 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); NCR5380_abort()
2726 cmd->scsi_done(cmd); NCR5380_abort()
2743 if (cmd == tmp) { NCR5380_abort()
2803 if (cmd == tmp) { NCR5380_abort()
2807 if (NCR5380_select(instance, cmd)) NCR5380_abort()
2818 if (cmd == tmp) { NCR5380_abort()
2830 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); NCR5380_abort()
2865 * Function : int NCR5380_reset (struct scsi_cmnd *cmd)
2873 static int NCR5380_bus_reset(struct scsi_cmnd *cmd) NCR5380_bus_reset() argument
2875 struct Scsi_Host *instance = cmd->device->host; NCR5380_bus_reset()
2904 dprintk(NDEBUG_ABORT, "scsi%d: reset aborted issued command(s)\n", H_NO(cmd)); NCR5380_bus_reset()
2906 dprintk(NDEBUG_ABORT, "scsi%d: reset aborted a connected command\n", H_NO(cmd)); NCR5380_bus_reset()
2908 dprintk(NDEBUG_ABORT, "scsi%d: reset aborted disconnected command(s)\n", H_NO(cmd)); NCR5380_bus_reset()
827 NCR5380_queue_command(struct Scsi_Host *instance, struct scsi_cmnd *cmd) NCR5380_queue_command() argument
H A Dvmw_pvscsi.c60 struct scsi_cmnd *cmd; member in struct:pvscsi_ctx
160 pvscsi_find_context(const struct pvscsi_adapter *adapter, struct scsi_cmnd *cmd) pvscsi_find_context() argument
166 if (ctx->cmd == cmd) pvscsi_find_context()
173 pvscsi_acquire_context(struct pvscsi_adapter *adapter, struct scsi_cmnd *cmd) pvscsi_acquire_context() argument
181 ctx->cmd = cmd; pvscsi_acquire_context()
190 ctx->cmd = NULL; pvscsi_release_context()
251 u32 cmd, const void *desc, size_t len) pvscsi_write_cmd_desc()
257 pvscsi_reg_write(adapter, PVSCSI_REG_OFFSET_COMMAND, cmd); pvscsi_write_cmd_desc()
266 struct PVSCSICmdDescAbortCmd cmd = { 0 }; pvscsi_abort_cmd() local
268 cmd.target = ctx->cmd->device->id; pvscsi_abort_cmd()
269 cmd.context = pvscsi_map_context(adapter, ctx); pvscsi_abort_cmd()
271 pvscsi_write_cmd_desc(adapter, PVSCSI_CMD_ABORT_CMD, &cmd, sizeof(cmd)); pvscsi_abort_cmd()
322 struct PVSCSICmdDescResetDevice cmd = { 0 }; ll_device_reset() local
326 cmd.target = target; ll_device_reset()
329 &cmd, sizeof(cmd)); ll_device_reset()
353 struct pvscsi_ctx *ctx, struct scsi_cmnd *cmd, pvscsi_map_buffers()
357 unsigned bufflen = scsi_bufflen(cmd); pvscsi_map_buffers()
365 sg = scsi_sglist(cmd); pvscsi_map_buffers()
366 count = scsi_sg_count(cmd); pvscsi_map_buffers()
368 int segs = scsi_dma_map(cmd); pvscsi_map_buffers()
384 cmd->sc_data_direction); pvscsi_map_buffers()
392 struct scsi_cmnd *cmd; pvscsi_unmap_buffers() local
395 cmd = ctx->cmd; pvscsi_unmap_buffers()
396 bufflen = scsi_bufflen(cmd); pvscsi_unmap_buffers()
399 unsigned count = scsi_sg_count(cmd); pvscsi_unmap_buffers()
402 scsi_dma_unmap(cmd); pvscsi_unmap_buffers()
410 cmd->sc_data_direction); pvscsi_unmap_buffers()
412 if (cmd->sense_buffer) pvscsi_unmap_buffers()
463 struct PVSCSICmdDescSetupRings cmd = { 0 }; pvscsi_setup_all_rings() local
467 cmd.ringsStatePPN = adapter->ringStatePA >> PAGE_SHIFT; pvscsi_setup_all_rings()
468 cmd.reqRingNumPages = adapter->req_pages; pvscsi_setup_all_rings()
469 cmd.cmpRingNumPages = adapter->cmp_pages; pvscsi_setup_all_rings()
473 cmd.reqRingPPNs[i] = base >> PAGE_SHIFT; pvscsi_setup_all_rings()
479 cmd.cmpRingPPNs[i] = base >> PAGE_SHIFT; pvscsi_setup_all_rings()
488 &cmd, sizeof(cmd)); pvscsi_setup_all_rings()
522 struct scsi_cmnd *cmd; pvscsi_complete_request() local
528 cmd = ctx->cmd; pvscsi_complete_request()
535 * the request completed and swallow the actual cmd completion pvscsi_complete_request()
543 cmd->result = 0; pvscsi_complete_request()
548 cmd->result = (DID_OK << 16) | sdstat; pvscsi_complete_request()
549 if (sdstat == SAM_STAT_CHECK_CONDITION && cmd->sense_buffer) pvscsi_complete_request()
550 cmd->result |= (DRIVER_SENSE << 24); pvscsi_complete_request()
557 cmd->result = (DID_OK << 16); pvscsi_complete_request()
563 scsi_set_resid(cmd, scsi_bufflen(cmd) - e->dataLen); pvscsi_complete_request()
564 cmd->result = (DID_ERROR << 16); pvscsi_complete_request()
569 cmd->result = (DID_BAD_TARGET << 16); pvscsi_complete_request()
575 cmd->result = (DRIVER_INVALID << 24); pvscsi_complete_request()
586 cmd->result |= (DID_ERROR << 16); pvscsi_complete_request()
592 cmd->result = (DID_RESET << 16); pvscsi_complete_request()
596 cmd->result = (DID_ABORT << 16); pvscsi_complete_request()
600 cmd->result = (DID_PARITY << 16); pvscsi_complete_request()
604 cmd->result = (DID_ERROR << 16); pvscsi_complete_request()
605 scmd_printk(KERN_DEBUG, cmd, pvscsi_complete_request()
610 dev_dbg(&cmd->device->sdev_gendev, pvscsi_complete_request()
611 "cmd=%p %x ctx=%p result=0x%x status=0x%x,%x\n", pvscsi_complete_request()
612 cmd, cmd->cmnd[0], ctx, cmd->result, btstat, sdstat); pvscsi_complete_request()
614 cmd->scsi_done(cmd); pvscsi_complete_request()
656 struct pvscsi_ctx *ctx, struct scsi_cmnd *cmd) pvscsi_queue_ring()
664 sdev = cmd->device; pvscsi_queue_ring()
676 scmd_printk(KERN_ERR, cmd, "vmw_pvscsi: " pvscsi_queue_ring()
689 if (cmd->sense_buffer) { pvscsi_queue_ring()
690 ctx->sensePA = pci_map_single(adapter->dev, cmd->sense_buffer, pvscsi_queue_ring()
699 e->cdbLen = cmd->cmd_len; pvscsi_queue_ring()
701 memcpy(e->cdb, cmd->cmnd, e->cdbLen); pvscsi_queue_ring()
705 if (cmd->sc_data_direction == DMA_FROM_DEVICE) pvscsi_queue_ring()
707 else if (cmd->sc_data_direction == DMA_TO_DEVICE) pvscsi_queue_ring()
709 else if (cmd->sc_data_direction == DMA_NONE) pvscsi_queue_ring()
714 pvscsi_map_buffers(adapter, ctx, cmd, e); pvscsi_queue_ring()
725 static int pvscsi_queue_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)) pvscsi_queue_lck() argument
727 struct Scsi_Host *host = cmd->device->host; pvscsi_queue_lck()
734 ctx = pvscsi_acquire_context(adapter, cmd); pvscsi_queue_lck()
735 if (!ctx || pvscsi_queue_ring(adapter, ctx, cmd) != 0) { pvscsi_queue_lck()
742 cmd->scsi_done = done; pvscsi_queue_lck()
744 dev_dbg(&cmd->device->sdev_gendev, pvscsi_queue_lck()
745 "queued cmd %p, ctx %p, op=%x\n", cmd, ctx, cmd->cmnd[0]); pvscsi_queue_lck()
749 pvscsi_kick_io(adapter, cmd->cmnd[0]); pvscsi_queue_lck()
756 static int pvscsi_abort(struct scsi_cmnd *cmd) pvscsi_abort() argument
758 struct pvscsi_adapter *adapter = shost_priv(cmd->device->host); pvscsi_abort()
764 scmd_printk(KERN_DEBUG, cmd, "task abort on host %u, %p\n", pvscsi_abort()
765 adapter->host->host_no, cmd); pvscsi_abort()
779 ctx = pvscsi_find_context(adapter, cmd); pvscsi_abort()
781 scmd_printk(KERN_DEBUG, cmd, "Failed to abort cmd %p\n", cmd); pvscsi_abort()
804 scmd_printk(KERN_DEBUG, cmd, pvscsi_abort()
805 "Failed to get completion for aborted cmd %p\n", pvscsi_abort()
806 cmd); pvscsi_abort()
813 cmd->result = (DID_ABORT << 16); pvscsi_abort()
814 cmd->scsi_done(cmd); pvscsi_abort()
833 struct scsi_cmnd *cmd = ctx->cmd; pvscsi_reset_all() local
834 if (cmd) { pvscsi_reset_all()
835 scmd_printk(KERN_ERR, cmd, pvscsi_reset_all()
836 "Forced reset on cmd %p\n", cmd); pvscsi_reset_all()
839 cmd->result = (DID_RESET << 16); pvscsi_reset_all()
840 cmd->scsi_done(cmd); pvscsi_reset_all()
845 static int pvscsi_host_reset(struct scsi_cmnd *cmd) pvscsi_host_reset() argument
847 struct Scsi_Host *host = cmd->device->host; pvscsi_host_reset()
852 scmd_printk(KERN_INFO, cmd, "SCSI Host reset\n"); pvscsi_host_reset()
899 static int pvscsi_bus_reset(struct scsi_cmnd *cmd) pvscsi_bus_reset() argument
901 struct Scsi_Host *host = cmd->device->host; pvscsi_bus_reset()
905 scmd_printk(KERN_INFO, cmd, "SCSI Bus reset\n"); pvscsi_bus_reset()
924 static int pvscsi_device_reset(struct scsi_cmnd *cmd) pvscsi_device_reset() argument
926 struct Scsi_Host *host = cmd->device->host; pvscsi_device_reset()
930 scmd_printk(KERN_INFO, cmd, "SCSI device reset on scsi%u:%u\n", pvscsi_device_reset()
931 host->host_no, cmd->device->id); pvscsi_device_reset()
941 ll_device_reset(adapter, cmd->device->id); pvscsi_device_reset()
1278 struct PVSCSICmdDescConfigCmd cmd; pvscsi_get_max_targets() local
1295 cmd.configPageAddress = ((u64)PVSCSI_CONFIG_CONTROLLER_ADDRESS) << 32; pvscsi_get_max_targets()
1296 cmd.configPageNum = PVSCSI_CONFIG_PAGE_CONTROLLER; pvscsi_get_max_targets()
1297 cmd.cmpAddr = configPagePA; pvscsi_get_max_targets()
1298 cmd._pad = 0; pvscsi_get_max_targets()
1310 pvscsi_write_cmd_desc(adapter, PVSCSI_CMD_CONFIG, &cmd, sizeof cmd); pvscsi_get_max_targets()
250 pvscsi_write_cmd_desc(const struct pvscsi_adapter *adapter, u32 cmd, const void *desc, size_t len) pvscsi_write_cmd_desc() argument
352 pvscsi_map_buffers(struct pvscsi_adapter *adapter, struct pvscsi_ctx *ctx, struct scsi_cmnd *cmd, struct PVSCSIRingReqDesc *e) pvscsi_map_buffers() argument
655 pvscsi_queue_ring(struct pvscsi_adapter *adapter, struct pvscsi_ctx *ctx, struct scsi_cmnd *cmd) pvscsi_queue_ring() argument
H A Dmvumi.c250 static int mvumi_internal_cmd_sgl(struct mvumi_hba *mhba, struct mvumi_cmd *cmd, mvumi_internal_cmd_sgl() argument
264 m_sg = (struct mvumi_sgl *) &cmd->frame->payload[0]; mvumi_internal_cmd_sgl()
265 cmd->frame->sg_counts = 1; mvumi_internal_cmd_sgl()
266 cmd->data_buf = virt_addr; mvumi_internal_cmd_sgl()
279 struct mvumi_cmd *cmd; mvumi_create_internal_cmd() local
281 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mvumi_create_internal_cmd()
282 if (!cmd) { mvumi_create_internal_cmd()
283 dev_err(&mhba->pdev->dev, "failed to create a internal cmd\n"); mvumi_create_internal_cmd()
286 INIT_LIST_HEAD(&cmd->queue_pointer); mvumi_create_internal_cmd()
288 cmd->frame = pci_alloc_consistent(mhba->pdev, mvumi_create_internal_cmd()
289 mhba->ib_max_size, &cmd->frame_phys); mvumi_create_internal_cmd()
290 if (!cmd->frame) { mvumi_create_internal_cmd()
293 kfree(cmd); mvumi_create_internal_cmd()
298 if (mvumi_internal_cmd_sgl(mhba, cmd, buf_size)) { mvumi_create_internal_cmd()
302 cmd->frame, cmd->frame_phys); mvumi_create_internal_cmd()
303 kfree(cmd); mvumi_create_internal_cmd()
307 cmd->frame->sg_counts = 0; mvumi_create_internal_cmd()
309 return cmd; mvumi_create_internal_cmd()
313 struct mvumi_cmd *cmd) mvumi_delete_internal_cmd()
319 if (cmd && cmd->frame) { mvumi_delete_internal_cmd()
320 if (cmd->frame->sg_counts) { mvumi_delete_internal_cmd()
321 m_sg = (struct mvumi_sgl *) &cmd->frame->payload[0]; mvumi_delete_internal_cmd()
327 pci_free_consistent(mhba->pdev, size, cmd->data_buf, mvumi_delete_internal_cmd()
331 cmd->frame, cmd->frame_phys); mvumi_delete_internal_cmd()
332 kfree(cmd); mvumi_delete_internal_cmd()
344 struct mvumi_cmd *cmd = NULL; mvumi_get_cmd() local
347 cmd = list_entry((&mhba->cmd_pool)->next, mvumi_get_cmd()
349 list_del_init(&cmd->queue_pointer); mvumi_get_cmd()
353 return cmd; mvumi_get_cmd()
357 * mvumi_return_cmd - Return a cmd to free command pool
359 * @cmd: Command packet to be returned to free command pool
362 struct mvumi_cmd *cmd) mvumi_return_cmd()
364 cmd->scmd = NULL; mvumi_return_cmd()
365 list_add_tail(&cmd->queue_pointer, &mhba->cmd_pool); mvumi_return_cmd()
369 * mvumi_free_cmds - Free all the cmds in the free cmd pool
374 struct mvumi_cmd *cmd; mvumi_free_cmds() local
377 cmd = list_first_entry(&mhba->cmd_pool, struct mvumi_cmd, mvumi_free_cmds()
379 list_del(&cmd->queue_pointer); mvumi_free_cmds()
381 kfree(cmd->frame); mvumi_free_cmds()
382 kfree(cmd); mvumi_free_cmds()
394 struct mvumi_cmd *cmd; mvumi_alloc_cmds() local
397 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mvumi_alloc_cmds()
398 if (!cmd) mvumi_alloc_cmds()
401 INIT_LIST_HEAD(&cmd->queue_pointer); mvumi_alloc_cmds()
402 list_add_tail(&cmd->queue_pointer, &mhba->cmd_pool); mvumi_alloc_cmds()
404 cmd->frame = mhba->ib_frame + i * mhba->ib_max_size; mvumi_alloc_cmds()
405 cmd->frame_phys = mhba->ib_frame_phys mvumi_alloc_cmds()
408 cmd->frame = kzalloc(mhba->ib_max_size, GFP_KERNEL); mvumi_alloc_cmds()
409 if (!cmd->frame) mvumi_alloc_cmds()
416 "failed to allocate memory for cmd[0x%x].\n", i); mvumi_alloc_cmds()
418 cmd = list_first_entry(&mhba->cmd_pool, struct mvumi_cmd, mvumi_alloc_cmds()
420 list_del(&cmd->queue_pointer); mvumi_alloc_cmds()
422 kfree(cmd->frame); mvumi_alloc_cmds()
423 kfree(cmd); mvumi_alloc_cmds()
507 "cmd request ID:0x%x\n", request_id, mvumi_check_ob_frame()
729 scmd_printk(KERN_NOTICE, scmd, "RESET -%ld cmd=%x retries=%x\n", mvumi_host_reset()
736 struct mvumi_cmd *cmd) mvumi_issue_blocked_cmd()
740 cmd->cmd_status = REQ_STATUS_PENDING; mvumi_issue_blocked_cmd()
742 if (atomic_read(&cmd->sync_cmd)) { mvumi_issue_blocked_cmd()
744 "last blocked cmd not finished, sync_cmd = %d\n", mvumi_issue_blocked_cmd()
745 atomic_read(&cmd->sync_cmd)); mvumi_issue_blocked_cmd()
749 atomic_inc(&cmd->sync_cmd); mvumi_issue_blocked_cmd()
751 mhba->instancet->fire_cmd(mhba, cmd); mvumi_issue_blocked_cmd()
755 (cmd->cmd_status != REQ_STATUS_PENDING), mvumi_issue_blocked_cmd()
759 if (atomic_read(&cmd->sync_cmd)) { mvumi_issue_blocked_cmd()
761 atomic_dec(&cmd->sync_cmd); mvumi_issue_blocked_cmd()
762 if (mhba->tag_cmd[cmd->frame->tag]) { mvumi_issue_blocked_cmd()
763 mhba->tag_cmd[cmd->frame->tag] = 0; mvumi_issue_blocked_cmd()
765 cmd->frame->tag); mvumi_issue_blocked_cmd()
766 tag_release_one(mhba, &mhba->tag_pool, cmd->frame->tag); mvumi_issue_blocked_cmd()
768 if (!list_empty(&cmd->queue_pointer)) { mvumi_issue_blocked_cmd()
771 list_del_init(&cmd->queue_pointer); mvumi_issue_blocked_cmd()
793 struct mvumi_cmd *cmd; mvumi_flush_cache() local
802 get_cmd: cmd = mvumi_create_internal_cmd(mhba, 0); mvumi_flush_cache()
803 if (!cmd) { mvumi_flush_cache()
806 " for internal flush cache cmd for " mvumi_flush_cache()
813 cmd->scmd = NULL; mvumi_flush_cache()
814 cmd->cmd_status = REQ_STATUS_PENDING; mvumi_flush_cache()
815 atomic_set(&cmd->sync_cmd, 0); mvumi_flush_cache()
816 frame = cmd->frame; mvumi_flush_cache()
827 mvumi_issue_blocked_cmd(mhba, cmd); mvumi_flush_cache()
828 if (cmd->cmd_status != SAM_STAT_GOOD) { mvumi_flush_cache()
831 device_id, cmd->cmd_status); mvumi_flush_cache()
834 mvumi_delete_internal_cmd(mhba, cmd); mvumi_flush_cache()
1323 * @cmd: Command to be completed
1325 static void mvumi_complete_cmd(struct mvumi_hba *mhba, struct mvumi_cmd *cmd, mvumi_complete_cmd() argument
1328 struct scsi_cmnd *scmd = cmd->scmd; mvumi_complete_cmd()
1330 cmd->scmd->SCp.ptr = NULL; mvumi_complete_cmd()
1343 memcpy(cmd->scmd->sense_buffer, ob_frame->payload, mvumi_complete_cmd()
1368 cmd->scmd->scsi_done(scmd); mvumi_complete_cmd()
1369 mvumi_return_cmd(mhba, cmd); mvumi_complete_cmd()
1373 struct mvumi_cmd *cmd, mvumi_complete_internal_cmd()
1376 if (atomic_read(&cmd->sync_cmd)) { mvumi_complete_internal_cmd()
1377 cmd->cmd_status = ob_frame->req_status; mvumi_complete_internal_cmd()
1381 cmd->data_buf) { mvumi_complete_internal_cmd()
1382 memcpy(cmd->data_buf, ob_frame->payload, mvumi_complete_internal_cmd()
1385 atomic_dec(&cmd->sync_cmd); mvumi_complete_internal_cmd()
1449 unsigned int id, struct mvumi_cmd *cmd) mvumi_inquiry()
1456 if (!cmd) { mvumi_inquiry()
1457 cmd = mvumi_create_internal_cmd(mhba, data_buf_len); mvumi_inquiry()
1458 if (cmd) mvumi_inquiry()
1463 memset(cmd->data_buf, 0, data_buf_len); mvumi_inquiry()
1465 cmd->scmd = NULL; mvumi_inquiry()
1466 cmd->cmd_status = REQ_STATUS_PENDING; mvumi_inquiry()
1467 atomic_set(&cmd->sync_cmd, 0); mvumi_inquiry()
1468 frame = cmd->frame; mvumi_inquiry()
1478 mvumi_issue_blocked_cmd(mhba, cmd); mvumi_inquiry()
1480 if (cmd->cmd_status == SAM_STAT_GOOD) { mvumi_inquiry()
1485 (cmd->data_buf + MVUMI_INQUIRY_UUID_OFF), mvumi_inquiry()
1493 mvumi_delete_internal_cmd(mhba, cmd); mvumi_inquiry()
1590 struct mvumi_cmd *cmd = NULL; mvumi_probe_devices() local
1593 cmd = mvumi_create_internal_cmd(mhba, 64); mvumi_probe_devices()
1594 if (!cmd) mvumi_probe_devices()
1603 wwid = mvumi_inquiry(mhba, id, cmd); mvumi_probe_devices()
1636 if (cmd) mvumi_probe_devices()
1637 mvumi_delete_internal_cmd(mhba, cmd); mvumi_probe_devices()
1738 struct mvumi_cmd *cmd; mvumi_get_event() local
1741 cmd = mvumi_create_internal_cmd(mhba, 512); mvumi_get_event()
1742 if (!cmd) mvumi_get_event()
1744 cmd->scmd = NULL; mvumi_get_event()
1745 cmd->cmd_status = REQ_STATUS_PENDING; mvumi_get_event()
1746 atomic_set(&cmd->sync_cmd, 0); mvumi_get_event()
1747 frame = cmd->frame; mvumi_get_event()
1756 mvumi_issue_blocked_cmd(mhba, cmd); mvumi_get_event()
1758 if (cmd->cmd_status != SAM_STAT_GOOD) mvumi_get_event()
1760 cmd->cmd_status); mvumi_get_event()
1762 mvumi_notification(mhba, cmd->frame->cdb[1], cmd->data_buf); mvumi_get_event()
1764 mvumi_delete_internal_cmd(mhba, cmd); mvumi_get_event()
1804 struct mvumi_cmd *cmd; mvumi_handle_clob() local
1814 cmd = mhba->tag_cmd[ob_frame->tag]; mvumi_handle_clob()
1819 if (cmd->scmd) mvumi_handle_clob()
1820 mvumi_complete_cmd(mhba, cmd, ob_frame); mvumi_handle_clob()
1822 mvumi_complete_internal_cmd(mhba, cmd, ob_frame); mvumi_handle_clob()
1860 struct mvumi_cmd *cmd) mvumi_send_command()
1866 ib_frame = cmd->frame; mvumi_send_command()
1877 cmd->frame->tag = tag_get_one(mhba, &mhba->tag_pool); mvumi_send_command()
1878 cmd->frame->request_id = mhba->io_seq++; mvumi_send_command()
1879 cmd->request_id = cmd->frame->request_id; mvumi_send_command()
1880 mhba->tag_cmd[cmd->frame->tag] = cmd; mvumi_send_command()
1887 cpu_to_le32(lower_32_bits(cmd->frame_phys)); mvumi_send_command()
1889 cpu_to_le32(upper_32_bits(cmd->frame_phys)); mvumi_send_command()
1897 static void mvumi_fire_cmd(struct mvumi_hba *mhba, struct mvumi_cmd *cmd) mvumi_fire_cmd() argument
1903 if (cmd) mvumi_fire_cmd()
1904 list_add_tail(&cmd->queue_pointer, &mhba->waiting_req_list); mvumi_fire_cmd()
1910 cmd = list_first_entry(&mhba->waiting_req_list, mvumi_fire_cmd()
1912 list_del_init(&cmd->queue_pointer); mvumi_fire_cmd()
1913 result = mvumi_send_command(mhba, cmd); mvumi_fire_cmd()
1919 list_add(&cmd->queue_pointer, &mhba->waiting_req_list); mvumi_fire_cmd()
2057 * @cmd: Command to be prepared in
2063 struct scsi_cmnd *scmd, struct mvumi_cmd *cmd) mvumi_build_frame()
2067 cmd->scmd = scmd; mvumi_build_frame()
2068 cmd->cmd_status = REQ_STATUS_PENDING; mvumi_build_frame()
2069 pframe = cmd->frame; mvumi_build_frame()
2087 "cmd[0x%x]\n", scmd->sc_data_direction, scmd->cmnd[0]); mvumi_build_frame()
2122 struct mvumi_cmd *cmd; mvumi_queue_command() local
2131 cmd = mvumi_get_cmd(mhba); mvumi_queue_command()
2132 if (unlikely(!cmd)) { mvumi_queue_command()
2137 if (unlikely(mvumi_build_frame(mhba, scmd, cmd))) mvumi_queue_command()
2140 cmd->scmd = scmd; mvumi_queue_command()
2141 scmd->SCp.ptr = (char *) cmd; mvumi_queue_command()
2142 mhba->instancet->fire_cmd(mhba, cmd); mvumi_queue_command()
2147 mvumi_return_cmd(mhba, cmd); mvumi_queue_command()
2155 struct mvumi_cmd *cmd = (struct mvumi_cmd *) scmd->SCp.ptr; mvumi_timed_out() local
2162 if (mhba->tag_cmd[cmd->frame->tag]) { mvumi_timed_out()
2163 mhba->tag_cmd[cmd->frame->tag] = 0; mvumi_timed_out()
2164 tag_release_one(mhba, &mhba->tag_pool, cmd->frame->tag); mvumi_timed_out()
2166 if (!list_empty(&cmd->queue_pointer)) mvumi_timed_out()
2167 list_del_init(&cmd->queue_pointer); mvumi_timed_out()
2188 mvumi_return_cmd(mhba, cmd); mvumi_timed_out()
312 mvumi_delete_internal_cmd(struct mvumi_hba *mhba, struct mvumi_cmd *cmd) mvumi_delete_internal_cmd() argument
361 mvumi_return_cmd(struct mvumi_hba *mhba, struct mvumi_cmd *cmd) mvumi_return_cmd() argument
735 mvumi_issue_blocked_cmd(struct mvumi_hba *mhba, struct mvumi_cmd *cmd) mvumi_issue_blocked_cmd() argument
1372 mvumi_complete_internal_cmd(struct mvumi_hba *mhba, struct mvumi_cmd *cmd, struct mvumi_rsp_frame *ob_frame) mvumi_complete_internal_cmd() argument
1448 mvumi_inquiry(struct mvumi_hba *mhba, unsigned int id, struct mvumi_cmd *cmd) mvumi_inquiry() argument
1859 mvumi_send_command(struct mvumi_hba *mhba, struct mvumi_cmd *cmd) mvumi_send_command() argument
2062 mvumi_build_frame(struct mvumi_hba *mhba, struct scsi_cmnd *scmd, struct mvumi_cmd *cmd) mvumi_build_frame() argument
H A Dwd33c93.c219 #define write_wd33c93_cmd(regs, cmd) \
220 write_wd33c93((regs), WD_COMMAND, (cmd))
282 write_wd33c93_cmd(const wd33c93_regs regs, uchar cmd) write_wd33c93_cmd() argument
286 *regs.SCMD = cmd; write_wd33c93_cmd()
375 wd33c93_queuecommand_lck(struct scsi_cmnd *cmd, wd33c93_queuecommand_lck() argument
381 hostdata = (struct WD33C93_hostdata *) cmd->device->host->hostdata; wd33c93_queuecommand_lck()
384 printk("Q-%d-%02x( ", cmd->device->id, cmd->cmnd[0])) wd33c93_queuecommand_lck()
387 * - host_scribble is the pointer to the next cmd in the input queue wd33c93_queuecommand_lck()
388 * - scsi_done points to the routine we call when a cmd is finished wd33c93_queuecommand_lck()
391 cmd->host_scribble = NULL; wd33c93_queuecommand_lck()
392 cmd->scsi_done = done; wd33c93_queuecommand_lck()
393 cmd->result = 0; wd33c93_queuecommand_lck()
398 * cmd, and are preserved across disconnect-reselect. This means we wd33c93_queuecommand_lck()
410 if (scsi_bufflen(cmd)) { wd33c93_queuecommand_lck()
411 cmd->SCp.buffer = scsi_sglist(cmd); wd33c93_queuecommand_lck()
412 cmd->SCp.buffers_residual = scsi_sg_count(cmd) - 1; wd33c93_queuecommand_lck()
413 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); wd33c93_queuecommand_lck()
414 cmd->SCp.this_residual = cmd->SCp.buffer->length; wd33c93_queuecommand_lck()
416 cmd->SCp.buffer = NULL; wd33c93_queuecommand_lck()
417 cmd->SCp.buffers_residual = 0; wd33c93_queuecommand_lck()
418 cmd->SCp.ptr = NULL; wd33c93_queuecommand_lck()
419 cmd->SCp.this_residual = 0; wd33c93_queuecommand_lck()
439 cmd->SCp.Status = ILLEGAL_STATUS_BYTE; wd33c93_queuecommand_lck()
442 * Add the cmd to the end of 'input_Q'. Note that REQUEST SENSE wd33c93_queuecommand_lck()
449 if (!(hostdata->input_Q) || (cmd->cmnd[0] == REQUEST_SENSE)) { wd33c93_queuecommand_lck()
450 cmd->host_scribble = (uchar *) hostdata->input_Q; wd33c93_queuecommand_lck()
451 hostdata->input_Q = cmd; wd33c93_queuecommand_lck()
456 tmp->host_scribble = (uchar *) cmd; wd33c93_queuecommand_lck()
463 wd33c93_execute(cmd->device->host); wd33c93_queuecommand_lck()
489 struct scsi_cmnd *cmd, *prev; wd33c93_execute() local
502 cmd = (struct scsi_cmnd *) hostdata->input_Q; wd33c93_execute()
504 while (cmd) { wd33c93_execute()
505 if (!(hostdata->busy[cmd->device->id] & wd33c93_execute()
506 (1 << (cmd->device->lun & 0xff)))) wd33c93_execute()
508 prev = cmd; wd33c93_execute()
509 cmd = (struct scsi_cmnd *) cmd->host_scribble; wd33c93_execute()
514 if (!cmd) { wd33c93_execute()
522 prev->host_scribble = cmd->host_scribble; wd33c93_execute()
524 hostdata->input_Q = (struct scsi_cmnd *) cmd->host_scribble; wd33c93_execute()
527 hostdata->cmd_cnt[cmd->device->id]++; wd33c93_execute()
534 if (cmd->sc_data_direction == DMA_TO_DEVICE) wd33c93_execute()
535 write_wd33c93(regs, WD_DESTINATION_ID, cmd->device->id); wd33c93_execute()
537 write_wd33c93(regs, WD_DESTINATION_ID, cmd->device->id | DSTID_DPD); wd33c93_execute()
562 cmd->SCp.phase = 0; /* assume no disconnect */ wd33c93_execute()
567 if (cmd->device->type == 1) /* tape drive? */ wd33c93_execute()
575 if ((prev->device->id != cmd->device->id) || wd33c93_execute()
576 (prev->device->lun != cmd->device->lun)) { wd33c93_execute()
587 cmd->SCp.phase = 1; wd33c93_execute()
590 hostdata->disc_allowed_cnt[cmd->device->id]++; wd33c93_execute()
595 write_wd33c93(regs, WD_SOURCE_ID, ((cmd->SCp.phase) ? SRCID_ER : 0)); wd33c93_execute()
597 write_wd33c93(regs, WD_TARGET_LUN, (u8)cmd->device->lun); wd33c93_execute()
599 hostdata->sync_xfer[cmd->device->id]); wd33c93_execute()
600 hostdata->busy[cmd->device->id] |= (1 << (cmd->device->lun & 0xFF)); wd33c93_execute()
603 (hostdata->sync_stat[cmd->device->id] == SS_UNSET)) { wd33c93_execute()
613 hostdata->selecting = cmd; wd33c93_execute()
627 if (hostdata->sync_stat[cmd->device->id] == SS_UNSET) wd33c93_execute()
628 hostdata->sync_stat[cmd->device->id] = SS_FIRST; wd33c93_execute()
642 hostdata->connected = cmd; wd33c93_execute()
649 write_wd33c93_cdb(regs, cmd->cmd_len, cmd->cmnd); wd33c93_execute()
657 write_wd33c93(regs, WD_OWN_ID, cmd->cmd_len); wd33c93_execute()
664 if ((cmd->SCp.phase == 0) && (hostdata->no_dma == 0)) { wd33c93_execute()
665 if (hostdata->dma_setup(cmd, wd33c93_execute()
666 (cmd->sc_data_direction == DMA_TO_DEVICE) ? wd33c93_execute()
671 cmd->SCp.this_residual); wd33c93_execute()
691 printk("%s)EX-2 ", (cmd->SCp.phase) ? "d:" : "")) wd33c93_execute()
730 transfer_bytes(const wd33c93_regs regs, struct scsi_cmnd *cmd, transfer_bytes() argument
736 hostdata = (struct WD33C93_hostdata *) cmd->device->host->hostdata; transfer_bytes()
746 if (!cmd->SCp.this_residual && cmd->SCp.buffers_residual) { transfer_bytes()
747 ++cmd->SCp.buffer; transfer_bytes()
748 --cmd->SCp.buffers_residual; transfer_bytes()
749 cmd->SCp.this_residual = cmd->SCp.buffer->length; transfer_bytes()
750 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); transfer_bytes()
752 if (!cmd->SCp.this_residual) /* avoid bogus setups */ transfer_bytes()
756 hostdata->sync_xfer[cmd->device->id]); transfer_bytes()
762 if (hostdata->no_dma || hostdata->dma_setup(cmd, data_in_dir)) { transfer_bytes()
766 transfer_pio(regs, (uchar *) cmd->SCp.ptr, transfer_bytes()
767 cmd->SCp.this_residual, data_in_dir, hostdata); transfer_bytes()
768 length = cmd->SCp.this_residual; transfer_bytes()
769 cmd->SCp.this_residual = read_wd33c93_count(regs); transfer_bytes()
770 cmd->SCp.ptr += (length - cmd->SCp.this_residual); transfer_bytes()
787 write_wd33c93_count(regs, cmd->SCp.this_residual); transfer_bytes()
790 (hostdata->level2 == L2_BASIC && cmd->SCp.phase == 0)) { transfer_bytes()
807 struct scsi_cmnd *patch, *cmd; wd33c93_intr() local
821 cmd = (struct scsi_cmnd *) hostdata->connected; /* assume we're connected */ wd33c93_intr()
843 printk("[%p/%d:", cmd->SCp.ptr, cmd->SCp.this_residual)) wd33c93_intr()
844 hostdata->dma_stop(cmd->device->host, cmd, 1); wd33c93_intr()
846 length = cmd->SCp.this_residual; wd33c93_intr()
847 cmd->SCp.this_residual = read_wd33c93_count(regs); wd33c93_intr()
848 cmd->SCp.ptr += (length - cmd->SCp.this_residual); wd33c93_intr()
850 printk("%p/%d]", cmd->SCp.ptr, cmd->SCp.this_residual)) wd33c93_intr()
861 cmd = (struct scsi_cmnd *) hostdata->selecting; /* get a valid cmd */ wd33c93_intr()
865 cmd->result = DID_NO_CONNECT << 16; wd33c93_intr()
866 hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff)); wd33c93_intr()
868 cmd->scsi_done(cmd); wd33c93_intr()
893 hostdata->connected = cmd = wd33c93_intr()
899 hostdata->outgoing_msg[0] = IDENTIFY(0, cmd->device->lun); wd33c93_intr()
900 if (cmd->SCp.phase) wd33c93_intr()
903 if (hostdata->sync_stat[cmd->device->id] == SS_FIRST) { wd33c93_intr()
905 hostdata->sync_stat[cmd->device->id] = SS_WAITING; wd33c93_intr()
916 if (hostdata->no_sync & (1 << cmd->device->id)) { wd33c93_intr()
942 printk("IN-%d.%d", cmd->SCp.this_residual, wd33c93_intr()
943 cmd->SCp.buffers_residual)) wd33c93_intr()
944 transfer_bytes(regs, cmd, DATA_IN_DIR); wd33c93_intr()
954 printk("OUT-%d.%d", cmd->SCp.this_residual, wd33c93_intr()
955 cmd->SCp.buffers_residual)) wd33c93_intr()
956 transfer_bytes(regs, cmd, DATA_OUT_DIR); wd33c93_intr()
967 DB(DB_INTR, printk("CMND-%02x", cmd->cmnd[0])) wd33c93_intr()
968 transfer_pio(regs, cmd->cmnd, cmd->cmd_len, DATA_OUT_DIR, wd33c93_intr()
978 cmd->SCp.Status = read_1_byte(regs); wd33c93_intr()
979 DB(DB_INTR, printk("%02x", cmd->SCp.Status)) wd33c93_intr()
1007 cmd->SCp.Message = msg; wd33c93_intr()
1036 cmd->device->disconnect = 1; wd33c93_intr()
1046 if (hostdata->sync_stat[cmd->device->id] == SS_WAITING) { wd33c93_intr()
1047 hostdata->sync_stat[cmd->device->id] = SS_SET; wd33c93_intr()
1049 hostdata->sync_xfer[cmd->device->id] = wd33c93_intr()
1076 if (hostdata->sync_stat[cmd->device->id] != wd33c93_intr()
1107 hostdata->sync_xfer[cmd->device->id] = id; wd33c93_intr()
1110 hostdata->sync_xfer[cmd->device->id]); wd33c93_intr()
1112 hostdata->sync_stat[cmd->device->id] = wd33c93_intr()
1179 cmd->SCp.Message = COMMAND_COMPLETE; wd33c93_intr()
1181 DB(DB_INTR, printk(":%d.%d", cmd->SCp.Status, lun)) wd33c93_intr()
1183 hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff)); wd33c93_intr()
1185 if (cmd->SCp.Status == ILLEGAL_STATUS_BYTE) wd33c93_intr()
1186 cmd->SCp.Status = lun; wd33c93_intr()
1187 if (cmd->cmnd[0] == REQUEST_SENSE wd33c93_intr()
1188 && cmd->SCp.Status != GOOD) wd33c93_intr()
1189 cmd->result = wd33c93_intr()
1190 (cmd-> wd33c93_intr()
1193 cmd->result = wd33c93_intr()
1194 cmd->SCp.Status | (cmd->SCp.Message << 8); wd33c93_intr()
1195 cmd->scsi_done(cmd); wd33c93_intr()
1264 if (cmd == NULL) { wd33c93_intr()
1272 hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff)); wd33c93_intr()
1274 if (cmd->cmnd[0] == REQUEST_SENSE && cmd->SCp.Status != GOOD) wd33c93_intr()
1275 cmd->result = wd33c93_intr()
1276 (cmd->result & 0x00ffff) | (DID_ERROR << 16); wd33c93_intr()
1278 cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8); wd33c93_intr()
1279 cmd->scsi_done(cmd); wd33c93_intr()
1297 if (cmd == NULL) { wd33c93_intr()
1304 hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff)); wd33c93_intr()
1306 DB(DB_INTR, printk(":%d", cmd->SCp.Status)) wd33c93_intr()
1307 if (cmd->cmnd[0] == REQUEST_SENSE wd33c93_intr()
1308 && cmd->SCp.Status != GOOD) wd33c93_intr()
1309 cmd->result = wd33c93_intr()
1310 (cmd-> wd33c93_intr()
1313 cmd->result = wd33c93_intr()
1314 cmd->SCp.Status | (cmd->SCp.Message << 8); wd33c93_intr()
1315 cmd->scsi_done(cmd); wd33c93_intr()
1319 cmd->host_scribble = (uchar *) hostdata->disconnected_Q; wd33c93_intr()
1320 hostdata->disconnected_Q = cmd; wd33c93_intr()
1325 hostdata->disc_done_cnt[cmd->device->id]++; wd33c93_intr()
1355 cmd = (struct scsi_cmnd *) hostdata->selecting; wd33c93_intr()
1357 hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff)); wd33c93_intr()
1358 cmd->host_scribble = wd33c93_intr()
1360 hostdata->input_Q = cmd; wd33c93_intr()
1366 if (cmd) { wd33c93_intr()
1368 hostdata->busy[cmd->device->id] &= wd33c93_intr()
1369 ~(1 << (cmd->device->lun & 0xff)); wd33c93_intr()
1370 cmd->host_scribble = wd33c93_intr()
1372 hostdata->input_Q = cmd; wd33c93_intr()
1449 cmd = (struct scsi_cmnd *) hostdata->disconnected_Q; wd33c93_intr()
1451 while (cmd) { wd33c93_intr()
1452 if (id == cmd->device->id && lun == (u8)cmd->device->lun) wd33c93_intr()
1454 patch = cmd; wd33c93_intr()
1455 cmd = (struct scsi_cmnd *) cmd->host_scribble; wd33c93_intr()
1460 if (!cmd) { wd33c93_intr()
1471 patch->host_scribble = cmd->host_scribble; wd33c93_intr()
1474 (struct scsi_cmnd *) cmd->host_scribble; wd33c93_intr()
1475 hostdata->connected = cmd; wd33c93_intr()
1482 if (cmd->sc_data_direction == DMA_TO_DEVICE) wd33c93_intr()
1483 write_wd33c93(regs, WD_DESTINATION_ID, cmd->device->id); wd33c93_intr()
1486 cmd->device->id | DSTID_DPD); wd33c93_intr()
1610 wd33c93_abort(struct scsi_cmnd * cmd) wd33c93_abort() argument
1617 disable_irq(cmd->device->host->irq); wd33c93_abort()
1619 instance = cmd->device->host; wd33c93_abort()
1631 if (tmp == cmd) { wd33c93_abort()
1633 prev->host_scribble = cmd->host_scribble; wd33c93_abort()
1636 (struct scsi_cmnd *) cmd->host_scribble; wd33c93_abort()
1637 cmd->host_scribble = NULL; wd33c93_abort()
1638 cmd->result = DID_ABORT << 16; wd33c93_abort()
1642 enable_irq(cmd->device->host->irq); wd33c93_abort()
1643 cmd->scsi_done(cmd); wd33c93_abort()
1661 if (hostdata->connected == cmd) { wd33c93_abort()
1670 hostdata->dma_stop(instance, cmd, 0); wd33c93_abort()
1709 hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff)); wd33c93_abort()
1712 cmd->result = DID_ABORT << 16; wd33c93_abort()
1717 enable_irq(cmd->device->host->irq); wd33c93_abort()
1718 cmd->scsi_done(cmd); wd33c93_abort()
1730 if (tmp == cmd) { wd33c93_abort()
1735 enable_irq(cmd->device->host->irq); wd33c93_abort()
1754 enable_irq(cmd->device->host->irq); wd33c93_abort()
2132 struct scsi_cmnd *cmd; wd33c93_show_info() local
2172 cmd = (struct scsi_cmnd *) hd->connected; wd33c93_show_info()
2174 cmd->device->id, cmd->device->lun, cmd->cmnd[0]); wd33c93_show_info()
2179 cmd = (struct scsi_cmnd *) hd->input_Q; wd33c93_show_info()
2180 while (cmd) { wd33c93_show_info()
2182 cmd->device->id, cmd->device->lun, cmd->cmnd[0]); wd33c93_show_info()
2183 cmd = (struct scsi_cmnd *) cmd->host_scribble; wd33c93_show_info()
2188 cmd = (struct scsi_cmnd *) hd->disconnected_Q; wd33c93_show_info()
2189 while (cmd) { wd33c93_show_info()
2191 cmd->device->id, cmd->device->lun, cmd->cmnd[0]); wd33c93_show_info()
2192 cmd = (struct scsi_cmnd *) cmd->host_scribble; wd33c93_show_info()
H A Dpmcraid.c302 * @cmd: pointer to struct pmcraid_cmd to be initialized
308 void pmcraid_init_cmdblk(struct pmcraid_cmd *cmd, int index) pmcraid_init_cmdblk() argument
310 struct pmcraid_ioarcb *ioarcb = &(cmd->ioa_cb->ioarcb); pmcraid_init_cmdblk()
311 dma_addr_t dma_addr = cmd->ioa_cb_bus_addr; pmcraid_init_cmdblk()
318 cmd->index = index; pmcraid_init_cmdblk()
327 memset(&cmd->ioa_cb->ioarcb.cdb, 0, PMCRAID_MAX_CDB_LEN); pmcraid_init_cmdblk()
338 cmd->ioa_cb->ioasa.ioasc = 0; pmcraid_init_cmdblk()
339 cmd->ioa_cb->ioasa.residual_data_length = 0; pmcraid_init_cmdblk()
340 cmd->time_left = 0; pmcraid_init_cmdblk()
343 cmd->cmd_done = NULL; pmcraid_init_cmdblk()
344 cmd->scsi_cmd = NULL; pmcraid_init_cmdblk()
345 cmd->release = 0; pmcraid_init_cmdblk()
346 cmd->completion_req = 0; pmcraid_init_cmdblk()
347 cmd->sense_buffer = 0; pmcraid_init_cmdblk()
348 cmd->sense_buffer_dma = 0; pmcraid_init_cmdblk()
349 cmd->dma_handle = 0; pmcraid_init_cmdblk()
350 init_timer(&cmd->timer); pmcraid_init_cmdblk()
356 * @cmd: pointer to struct pmcraid_cmd to be reinitialized
361 static void pmcraid_reinit_cmdblk(struct pmcraid_cmd *cmd) pmcraid_reinit_cmdblk() argument
363 pmcraid_init_cmdblk(cmd, -1); pmcraid_reinit_cmdblk()
367 * pmcraid_get_free_cmd - get a free cmd block from command block pool
371 * returns pointer to cmd block or NULL if no blocks are available
377 struct pmcraid_cmd *cmd = NULL; pmcraid_get_free_cmd() local
380 /* free cmd block list is protected by free_pool_lock */ pmcraid_get_free_cmd()
384 cmd = list_entry(pinstance->free_cmd_pool.next, pmcraid_get_free_cmd()
386 list_del(&cmd->free_list); pmcraid_get_free_cmd()
391 if (cmd != NULL) pmcraid_get_free_cmd()
392 pmcraid_reinit_cmdblk(cmd); pmcraid_get_free_cmd()
393 return cmd; pmcraid_get_free_cmd()
398 * @cmd: pointer to the command block
403 void pmcraid_return_cmd(struct pmcraid_cmd *cmd) pmcraid_return_cmd() argument
405 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_return_cmd()
409 list_add_tail(&cmd->free_list, &pinstance->free_cmd_pool); pmcraid_return_cmd()
552 * @cmd: pointer to reset command
559 static void pmcraid_bist_done(struct pmcraid_cmd *cmd) pmcraid_bist_done() argument
561 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_bist_done()
570 cmd->time_left > 0) { pmcraid_bist_done()
572 cmd->timer.expires = jiffies + cmd->time_left; pmcraid_bist_done()
573 cmd->time_left = 0; pmcraid_bist_done()
574 cmd->timer.data = (unsigned long)cmd; pmcraid_bist_done()
575 cmd->timer.function = pmcraid_bist_done()
577 add_timer(&cmd->timer); pmcraid_bist_done()
579 cmd->time_left = 0; pmcraid_bist_done()
582 pmcraid_ioa_reset(cmd); pmcraid_bist_done()
589 * @cmd: pointer to reset cmd
593 static void pmcraid_start_bist(struct pmcraid_cmd *cmd) pmcraid_start_bist() argument
595 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_start_bist()
606 cmd->time_left = msecs_to_jiffies(PMCRAID_BIST_TIMEOUT); pmcraid_start_bist()
607 cmd->timer.data = (unsigned long)cmd; pmcraid_start_bist()
608 cmd->timer.expires = jiffies + msecs_to_jiffies(PMCRAID_BIST_TIMEOUT); pmcraid_start_bist()
609 cmd->timer.function = (void (*)(unsigned long))pmcraid_bist_done; pmcraid_start_bist()
610 add_timer(&cmd->timer); pmcraid_start_bist()
615 * @cmd: pointer to command block used in reset sequence
619 static void pmcraid_reset_alert_done(struct pmcraid_cmd *cmd) pmcraid_reset_alert_done() argument
621 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_reset_alert_done()
630 cmd->time_left <= 0) { pmcraid_reset_alert_done()
633 pmcraid_ioa_reset(cmd); pmcraid_reset_alert_done()
638 cmd->time_left -= PMCRAID_CHECK_FOR_RESET_TIMEOUT; pmcraid_reset_alert_done()
639 cmd->timer.data = (unsigned long)cmd; pmcraid_reset_alert_done()
640 cmd->timer.expires = jiffies + PMCRAID_CHECK_FOR_RESET_TIMEOUT; pmcraid_reset_alert_done()
641 cmd->timer.function = pmcraid_reset_alert_done()
643 add_timer(&cmd->timer); pmcraid_reset_alert_done()
649 * @cmd : command block to be used for reset sequence.
657 static void pmcraid_reset_alert(struct pmcraid_cmd *cmd) pmcraid_reset_alert() argument
659 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_reset_alert()
677 cmd->time_left = PMCRAID_RESET_TIMEOUT; pmcraid_reset_alert()
678 cmd->timer.data = (unsigned long)cmd; pmcraid_reset_alert()
679 cmd->timer.expires = jiffies + PMCRAID_CHECK_FOR_RESET_TIMEOUT; pmcraid_reset_alert()
680 cmd->timer.function = pmcraid_reset_alert()
682 add_timer(&cmd->timer); pmcraid_reset_alert()
692 pmcraid_start_bist(cmd); pmcraid_reset_alert()
699 * @cmd : pointer to command structure, that got timedout
706 static void pmcraid_timeout_handler(struct pmcraid_cmd *cmd) pmcraid_timeout_handler() argument
708 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_timeout_handler()
712 "Adapter being reset due to cmd(CDB[0] = %x) timeout\n", pmcraid_timeout_handler()
713 cmd->ioa_cb->ioarcb.cdb[0]); pmcraid_timeout_handler()
724 cmd = pmcraid_get_free_cmd(pinstance); pmcraid_timeout_handler()
729 if (cmd == NULL) { pmcraid_timeout_handler()
736 pinstance->reset_cmd = cmd; pmcraid_timeout_handler()
741 if (pinstance->reset_cmd != cmd) { pmcraid_timeout_handler()
746 pmcraid_err("cmd is pending but reset in progress\n"); pmcraid_timeout_handler()
754 if (cmd == pinstance->reset_cmd) pmcraid_timeout_handler()
755 cmd->cmd_done = pmcraid_ioa_reset; pmcraid_timeout_handler()
766 pmcraid_reset_alert(cmd); pmcraid_timeout_handler()
773 * @cmd: command that got response from IOA
778 static void pmcraid_internal_done(struct pmcraid_cmd *cmd) pmcraid_internal_done() argument
780 pmcraid_info("response internal cmd CDB[0] = %x ioasc = %x\n", pmcraid_internal_done()
781 cmd->ioa_cb->ioarcb.cdb[0], pmcraid_internal_done()
782 le32_to_cpu(cmd->ioa_cb->ioasa.ioasc)); pmcraid_internal_done()
785 * response. Same will be indicated as part of cmd->completion_req pmcraid_internal_done()
786 * field. Response path needs to wake up any waiters waiting for cmd pmcraid_internal_done()
789 if (cmd->completion_req) { pmcraid_internal_done()
790 cmd->completion_req = 0; pmcraid_internal_done()
791 complete(&cmd->wait_for_completion); pmcraid_internal_done()
798 if (cmd->release) { pmcraid_internal_done()
799 cmd->release = 0; pmcraid_internal_done()
800 pmcraid_return_cmd(cmd); pmcraid_internal_done()
807 * @cmd: command that got response from IOA
816 static void pmcraid_reinit_cfgtable_done(struct pmcraid_cmd *cmd) pmcraid_reinit_cfgtable_done() argument
818 pmcraid_info("response internal cmd CDB[0] = %x ioasc = %x\n", pmcraid_reinit_cfgtable_done()
819 cmd->ioa_cb->ioarcb.cdb[0], pmcraid_reinit_cfgtable_done()
820 le32_to_cpu(cmd->ioa_cb->ioasa.ioasc)); pmcraid_reinit_cfgtable_done()
822 if (cmd->release) { pmcraid_reinit_cfgtable_done()
823 cmd->release = 0; pmcraid_reinit_cfgtable_done()
824 pmcraid_return_cmd(cmd); pmcraid_reinit_cfgtable_done()
827 schedule_work(&cmd->drv_inst->worker_q); pmcraid_reinit_cfgtable_done()
832 * @cmd: pmcraid_command
840 static void pmcraid_erp_done(struct pmcraid_cmd *cmd) pmcraid_erp_done() argument
842 struct scsi_cmnd *scsi_cmd = cmd->scsi_cmd; pmcraid_erp_done()
843 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_erp_done()
844 u32 ioasc = le32_to_cpu(cmd->ioa_cb->ioasa.ioasc); pmcraid_erp_done()
850 cmd->ioa_cb->ioarcb.cdb[0], ioasc); pmcraid_erp_done()
856 if (cmd->sense_buffer != NULL) { pmcraid_erp_done()
858 cmd->sense_buffer, pmcraid_erp_done()
862 cmd->sense_buffer, cmd->sense_buffer_dma); pmcraid_erp_done()
863 cmd->sense_buffer = NULL; pmcraid_erp_done()
864 cmd->sense_buffer_dma = 0; pmcraid_erp_done()
868 pmcraid_return_cmd(cmd); pmcraid_erp_done()
878 * @cmd : command to be sent to the device
883 static void _pmcraid_fire_command(struct pmcraid_cmd *cmd) _pmcraid_fire_command() argument
885 struct pmcraid_instance *pinstance = cmd->drv_inst; _pmcraid_fire_command()
888 /* Add this command block to pending cmd pool. We do this prior to _pmcraid_fire_command()
891 * (isr/tasklet) looks for cmd block in the pending pending list. _pmcraid_fire_command()
894 list_add_tail(&cmd->free_list, &pinstance->pending_cmd_pool); _pmcraid_fire_command()
900 iowrite32(le32_to_cpu(cmd->ioa_cb->ioarcb.ioarcb_bus_addr), _pmcraid_fire_command()
910 * @cmd: pointer to the command block to be fired to IOA
919 struct pmcraid_cmd *cmd, pmcraid_send_cmd()
926 cmd->cmd_done = cmd_done; pmcraid_send_cmd()
930 cmd->timer.data = (unsigned long)cmd; pmcraid_send_cmd()
931 cmd->timer.expires = jiffies + timeout; pmcraid_send_cmd()
932 cmd->timer.function = (void (*)(unsigned long))timeout_func; pmcraid_send_cmd()
933 add_timer(&cmd->timer); pmcraid_send_cmd()
937 _pmcraid_fire_command(cmd); pmcraid_send_cmd()
942 * @cmd: pointer to the command block used for sending IOA shutdown command
947 static void pmcraid_ioa_shutdown_done(struct pmcraid_cmd *cmd) pmcraid_ioa_shutdown_done() argument
949 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_ioa_shutdown_done()
953 pmcraid_ioa_reset(cmd); pmcraid_ioa_shutdown_done()
960 * @cmd: pointer to the command block used as part of reset sequence
965 static void pmcraid_ioa_shutdown(struct pmcraid_cmd *cmd) pmcraid_ioa_shutdown() argument
968 cmd->ioa_cb->ioarcb.cdb[0], pmcraid_ioa_shutdown()
969 le32_to_cpu(cmd->ioa_cb->ioasa.ioasc)); pmcraid_ioa_shutdown()
974 pmcraid_reinit_cmdblk(cmd); pmcraid_ioa_shutdown()
975 cmd->ioa_cb->ioarcb.request_type = REQ_TYPE_IOACMD; pmcraid_ioa_shutdown()
976 cmd->ioa_cb->ioarcb.resource_handle = pmcraid_ioa_shutdown()
978 cmd->ioa_cb->ioarcb.cdb[0] = PMCRAID_IOA_SHUTDOWN; pmcraid_ioa_shutdown()
979 cmd->ioa_cb->ioarcb.cdb[1] = PMCRAID_SHUTDOWN_NORMAL; pmcraid_ioa_shutdown()
983 le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle)); pmcraid_ioa_shutdown()
985 pmcraid_notify_ioastate(cmd->drv_inst, PMC_DEVICE_EVENT_SHUTDOWN_START); pmcraid_ioa_shutdown()
987 pmcraid_send_cmd(cmd, pmcraid_ioa_shutdown_done, pmcraid_ioa_shutdown()
995 * @cmd: pointer to command block used to send INQUIRY command
1002 static void pmcraid_get_fwversion_done(struct pmcraid_cmd *cmd) pmcraid_get_fwversion_done() argument
1004 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_get_fwversion_done()
1005 u32 ioasc = le32_to_cpu(cmd->ioa_cb->ioasa.ioasc); pmcraid_get_fwversion_done()
1016 pmcraid_reset_alert(cmd); pmcraid_get_fwversion_done()
1019 pmcraid_querycfg(cmd); pmcraid_get_fwversion_done()
1026 * @cmd: pointer to command block used to send INQUIRY command
1031 static void pmcraid_get_fwversion(struct pmcraid_cmd *cmd) pmcraid_get_fwversion() argument
1033 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_get_fwversion()
1035 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_get_fwversion()
1038 pmcraid_reinit_cmdblk(cmd); pmcraid_get_fwversion()
1049 ioarcb->ioadl_bus_addr = cpu_to_le64((cmd->ioa_cb_bus_addr) + pmcraid_get_fwversion()
1062 pmcraid_send_cmd(cmd, pmcraid_get_fwversion_done, pmcraid_get_fwversion()
1068 * @cmd: pointer to command block to be used for identify hrrq
1073 static void pmcraid_identify_hrrq(struct pmcraid_cmd *cmd) pmcraid_identify_hrrq() argument
1075 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_identify_hrrq()
1076 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_identify_hrrq()
1077 int index = cmd->hrrq_index; pmcraid_identify_hrrq()
1082 pmcraid_reinit_cmdblk(cmd); pmcraid_identify_hrrq()
1083 cmd->hrrq_index = index + 1; pmcraid_identify_hrrq()
1085 if (cmd->hrrq_index < pinstance->num_hrrq) { pmcraid_identify_hrrq()
1088 cmd->hrrq_index = 0; pmcraid_identify_hrrq()
1114 pmcraid_send_cmd(cmd, done_function, pmcraid_identify_hrrq()
1119 static void pmcraid_process_ccn(struct pmcraid_cmd *cmd);
1120 static void pmcraid_process_ldn(struct pmcraid_cmd *cmd);
1125 * @cmd: initialized command block pointer
1130 static void pmcraid_send_hcam_cmd(struct pmcraid_cmd *cmd) pmcraid_send_hcam_cmd() argument
1132 if (cmd->ioa_cb->ioarcb.cdb[1] == PMCRAID_HCAM_CODE_CONFIG_CHANGE) pmcraid_send_hcam_cmd()
1133 atomic_set(&(cmd->drv_inst->ccn.ignore), 0); pmcraid_send_hcam_cmd()
1135 atomic_set(&(cmd->drv_inst->ldn.ignore), 0); pmcraid_send_hcam_cmd()
1137 pmcraid_send_cmd(cmd, cmd->cmd_done, 0, NULL); pmcraid_send_hcam_cmd()
1155 struct pmcraid_cmd *cmd; pmcraid_init_hcam() local
1163 cmd = pmcraid_get_free_cmd(pinstance); pmcraid_init_hcam()
1165 if (!cmd) { pmcraid_init_hcam()
1167 return cmd; pmcraid_init_hcam()
1183 hcam->cmd = cmd; pmcraid_init_hcam()
1185 ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_init_hcam()
1186 ioarcb->ioadl_bus_addr = cpu_to_le64((cmd->ioa_cb_bus_addr) + pmcraid_init_hcam()
1206 cmd->cmd_done = cmd_done; pmcraid_init_hcam()
1207 return cmd; pmcraid_init_hcam()
1222 struct pmcraid_cmd *cmd = pmcraid_init_hcam(pinstance, type); pmcraid_send_hcam() local
1223 pmcraid_send_hcam_cmd(cmd); pmcraid_send_hcam()
1230 * @cmd: pointer to cmd that is used as cancelling command
1234 struct pmcraid_cmd *cmd, pmcraid_prepare_cancel_cmd()
1238 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_prepare_cancel_cmd()
1260 * @cmd: command to be used as cancelling command
1265 struct pmcraid_cmd *cmd, pmcraid_cancel_hcam()
1273 pinstance = cmd->drv_inst; pmcraid_cancel_hcam()
1278 * currently not pending with IOA, we would have hcam->cmd as non-null pmcraid_cancel_hcam()
1280 if (hcam->cmd == NULL) pmcraid_cancel_hcam()
1283 pmcraid_prepare_cancel_cmd(cmd, hcam->cmd); pmcraid_cancel_hcam()
1288 pmcraid_send_cmd(cmd, cmd_done, pmcraid_cancel_hcam()
1296 * @cmd: command block to be used for cancelling the HCAM
1298 static void pmcraid_cancel_ccn(struct pmcraid_cmd *cmd) pmcraid_cancel_ccn() argument
1301 cmd->ioa_cb->ioarcb.cdb[0], pmcraid_cancel_ccn()
1302 le32_to_cpu(cmd->ioa_cb->ioasa.ioasc)); pmcraid_cancel_ccn()
1304 pmcraid_reinit_cmdblk(cmd); pmcraid_cancel_ccn()
1306 pmcraid_cancel_hcam(cmd, pmcraid_cancel_ccn()
1314 * @cmd: command block to be used for cancelling the HCAM
1316 static void pmcraid_cancel_ldn(struct pmcraid_cmd *cmd) pmcraid_cancel_ldn() argument
1318 pmcraid_cancel_hcam(cmd, pmcraid_cancel_ldn()
1547 struct pmcraid_cmd *cmd; pmcraid_handle_config_change() local
1590 pmcraid_err("lost CCN, no free cmd for querycfg\n"); pmcraid_handle_config_change()
1686 cmd = pmcraid_init_hcam(pinstance, PMCRAID_HCAM_CODE_CONFIG_CHANGE); pmcraid_handle_config_change()
1687 if (cmd) pmcraid_handle_config_change()
1688 pmcraid_send_hcam_cmd(cmd); pmcraid_handle_config_change()
1710 * @cmd: pointer to command that resulted in 'ioasc'
1712 void pmcraid_ioasc_logger(u32 ioasc, struct pmcraid_cmd *cmd) pmcraid_ioasc_logger() argument
1717 cmd->drv_inst->current_log_level < error_info->log_level) pmcraid_ioasc_logger()
1721 pmcraid_err("cmd [%x] for resource %x failed with %x(%s)\n", pmcraid_ioasc_logger()
1722 cmd->ioa_cb->ioarcb.cdb[0], pmcraid_ioasc_logger()
1723 cmd->ioa_cb->ioarcb.resource_handle, pmcraid_ioasc_logger()
1776 * @cmd: pointer to command struct
1784 static void pmcraid_process_ccn(struct pmcraid_cmd *cmd) pmcraid_process_ccn() argument
1786 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_process_ccn()
1787 u32 ioasc = le32_to_cpu(cmd->ioa_cb->ioasa.ioasc); pmcraid_process_ccn()
1790 pinstance->ccn.cmd = NULL; pmcraid_process_ccn()
1791 pmcraid_return_cmd(cmd); pmcraid_process_ccn()
1813 * @cmd: pointer to command block
1819 static void pmcraid_set_timestamp(struct pmcraid_cmd *cmd);
1821 static void pmcraid_process_ldn(struct pmcraid_cmd *cmd) pmcraid_process_ldn() argument
1823 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_process_ldn()
1826 u32 ioasc = le32_to_cpu(cmd->ioa_cb->ioasa.ioasc); pmcraid_process_ldn()
1831 pinstance->ldn.cmd = NULL; pmcraid_process_ldn()
1832 pmcraid_return_cmd(cmd); pmcraid_process_ldn()
1853 pmcraid_set_timestamp(cmd); pmcraid_process_ldn()
1863 cmd = pmcraid_init_hcam(pinstance, PMCRAID_HCAM_CODE_LOG_DATA); pmcraid_process_ldn()
1864 if (cmd) pmcraid_process_ldn()
1865 pmcraid_send_hcam_cmd(cmd); pmcraid_process_ldn()
1884 * @cmd: pointer to command used as part of reset sequence
1886 static void pmcraid_unregister_hcams(struct pmcraid_cmd *cmd) pmcraid_unregister_hcams() argument
1888 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_unregister_hcams()
1907 pmcraid_reset_alert(cmd); pmcraid_unregister_hcams()
1915 pmcraid_cancel_ldn(cmd); pmcraid_unregister_hcams()
1951 * @cmd : pointer to reset command block
1956 static void pmcraid_soft_reset(struct pmcraid_cmd *cmd) pmcraid_soft_reset() argument
1958 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_soft_reset()
1966 cmd->cmd_done = pmcraid_ioa_reset; pmcraid_soft_reset()
1967 cmd->timer.data = (unsigned long)cmd; pmcraid_soft_reset()
1968 cmd->timer.expires = jiffies + pmcraid_soft_reset()
1970 cmd->timer.function = (void (*)(unsigned long))pmcraid_timeout_handler; pmcraid_soft_reset()
1972 if (!timer_pending(&cmd->timer)) pmcraid_soft_reset()
1973 add_timer(&cmd->timer); pmcraid_soft_reset()
2018 * otherwise just completes the commands and returns the cmd blocks to free
2026 struct pmcraid_cmd *cmd, *temp; pmcraid_fail_outstanding_cmds() local
2033 list_for_each_entry_safe(cmd, temp, &pinstance->pending_cmd_pool, pmcraid_fail_outstanding_cmds()
2035 list_del(&cmd->free_list); pmcraid_fail_outstanding_cmds()
2038 cmd->ioa_cb->ioasa.ioasc = pmcraid_fail_outstanding_cmds()
2040 cmd->ioa_cb->ioasa.ilid = pmcraid_fail_outstanding_cmds()
2044 del_timer(&cmd->timer); pmcraid_fail_outstanding_cmds()
2051 if (cmd->scsi_cmd) { pmcraid_fail_outstanding_cmds()
2053 struct scsi_cmnd *scsi_cmd = cmd->scsi_cmd; pmcraid_fail_outstanding_cmds()
2054 __le32 resp = cmd->ioa_cb->ioarcb.response_handle; pmcraid_fail_outstanding_cmds()
2059 pmcraid_return_cmd(cmd); pmcraid_fail_outstanding_cmds()
2063 cmd->ioa_cb->ioarcb.cdb[0], pmcraid_fail_outstanding_cmds()
2066 } else if (cmd->cmd_done == pmcraid_internal_done || pmcraid_fail_outstanding_cmds()
2067 cmd->cmd_done == pmcraid_erp_done) { pmcraid_fail_outstanding_cmds()
2068 cmd->cmd_done(cmd); pmcraid_fail_outstanding_cmds()
2069 } else if (cmd->cmd_done != pmcraid_ioa_reset && pmcraid_fail_outstanding_cmds()
2070 cmd->cmd_done != pmcraid_ioa_shutdown_done) { pmcraid_fail_outstanding_cmds()
2071 pmcraid_return_cmd(cmd); pmcraid_fail_outstanding_cmds()
2084 * @cmd: pointer to the cmd block to be used for entire reset process
2096 static void pmcraid_ioa_reset(struct pmcraid_cmd *cmd) pmcraid_ioa_reset() argument
2098 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_ioa_reset()
2103 if (pinstance->reset_cmd != cmd) { pmcraid_ioa_reset()
2105 pinstance->reset_cmd = cmd; pmcraid_ioa_reset()
2109 pinstance->ioa_state, cmd); pmcraid_ioa_reset()
2129 pmcraid_reset_alert(cmd); pmcraid_ioa_reset()
2147 pmcraid_reinit_cmdblk(cmd); pmcraid_ioa_reset()
2148 pmcraid_identify_hrrq(cmd); pmcraid_ioa_reset()
2151 pmcraid_soft_reset(cmd); pmcraid_ioa_reset()
2158 pmcraid_reset_alert(cmd); pmcraid_ioa_reset()
2169 pmcraid_start_bist(cmd); pmcraid_ioa_reset()
2206 pmcraid_reset_alert(cmd); pmcraid_ioa_reset()
2230 pmcraid_reinit_cmdblk(cmd); pmcraid_ioa_reset()
2231 pmcraid_identify_hrrq(cmd); pmcraid_ioa_reset()
2234 pmcraid_soft_reset(cmd); pmcraid_ioa_reset()
2250 pmcraid_identify_hrrq(cmd); pmcraid_ioa_reset()
2276 pmcraid_reinit_cmdblk(cmd); pmcraid_ioa_reset()
2277 pmcraid_unregister_hcams(cmd); pmcraid_ioa_reset()
2293 pmcraid_return_cmd(cmd); pmcraid_ioa_reset()
2320 struct pmcraid_cmd *cmd; pmcraid_initiate_reset() local
2327 cmd = pmcraid_get_free_cmd(pinstance); pmcraid_initiate_reset()
2329 if (cmd == NULL) { pmcraid_initiate_reset()
2335 pinstance->reset_cmd = cmd; pmcraid_initiate_reset()
2339 pmcraid_ioa_reset(cmd); pmcraid_initiate_reset()
2457 * @cmd: pmcraid command struct
2462 static void pmcraid_request_sense(struct pmcraid_cmd *cmd) pmcraid_request_sense() argument
2464 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_request_sense()
2468 cmd->sense_buffer = pci_alloc_consistent(cmd->drv_inst->pdev, pmcraid_request_sense()
2470 &cmd->sense_buffer_dma); pmcraid_request_sense()
2472 if (cmd->sense_buffer == NULL) { pmcraid_request_sense()
2475 pmcraid_erp_done(cmd); pmcraid_request_sense()
2480 memset(&cmd->ioa_cb->ioasa, 0, sizeof(struct pmcraid_ioasa)); pmcraid_request_sense()
2489 ioarcb->ioadl_bus_addr = cpu_to_le64((cmd->ioa_cb_bus_addr) + pmcraid_request_sense()
2496 ioadl->address = cpu_to_le64(cmd->sense_buffer_dma); pmcraid_request_sense()
2505 pmcraid_send_cmd(cmd, pmcraid_erp_done, pmcraid_request_sense()
2512 * @cmd: command that failed
2517 static void pmcraid_cancel_all(struct pmcraid_cmd *cmd, u32 sense) pmcraid_cancel_all() argument
2519 struct scsi_cmnd *scsi_cmd = cmd->scsi_cmd; pmcraid_cancel_all()
2520 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_cancel_all()
2541 pmcraid_send_cmd(cmd, cmd_done, pmcraid_cancel_all()
2549 * @cmd: pointer to failing command block
2554 static void pmcraid_frame_auto_sense(struct pmcraid_cmd *cmd) pmcraid_frame_auto_sense() argument
2556 u8 *sense_buf = cmd->scsi_cmd->sense_buffer; pmcraid_frame_auto_sense()
2557 struct pmcraid_resource_entry *res = cmd->scsi_cmd->device->hostdata; pmcraid_frame_auto_sense()
2558 struct pmcraid_ioasa *ioasa = &cmd->ioa_cb->ioasa; pmcraid_frame_auto_sense()
2563 cmd->scsi_cmd->result = SAM_STAT_CHECK_CONDITION; pmcraid_frame_auto_sense()
2616 * @cmd: pointer to pmcraid_cmd that has failed
2626 static int pmcraid_error_handler(struct pmcraid_cmd *cmd) pmcraid_error_handler() argument
2628 struct scsi_cmnd *scsi_cmd = cmd->scsi_cmd; pmcraid_error_handler()
2630 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_error_handler()
2631 struct pmcraid_ioasa *ioasa = &cmd->ioa_cb->ioasa; pmcraid_error_handler()
2649 pmcraid_frame_auto_sense(cmd); pmcraid_error_handler()
2653 pmcraid_ioasc_logger(ioasc, cmd); pmcraid_error_handler()
2710 pmcraid_cancel_all(cmd, sense_copied); pmcraid_error_handler()
2712 pmcraid_erp_done(cmd); pmcraid_error_handler()
2714 pmcraid_request_sense(cmd); pmcraid_error_handler()
2748 struct pmcraid_cmd *cmd; pmcraid_reset_device() local
2782 /* get a free cmd block */ pmcraid_reset_device()
2783 cmd = pmcraid_get_free_cmd(pinstance); pmcraid_reset_device()
2785 if (cmd == NULL) { pmcraid_reset_device()
2787 pmcraid_err("%s: no cmd blocks are available\n", __func__); pmcraid_reset_device()
2791 ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_reset_device()
2802 init_completion(&cmd->wait_for_completion); pmcraid_reset_device()
2803 cmd->completion_req = 1; pmcraid_reset_device()
2805 pmcraid_info("cmd(CDB[0] = %x) for %x with index = %d\n", pmcraid_reset_device()
2806 cmd->ioa_cb->ioarcb.cdb[0], pmcraid_reset_device()
2807 le32_to_cpu(cmd->ioa_cb->ioarcb.resource_handle), pmcraid_reset_device()
2808 le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle) >> 2); pmcraid_reset_device()
2810 pmcraid_send_cmd(cmd, pmcraid_reset_device()
2821 wait_for_completion(&cmd->wait_for_completion); pmcraid_reset_device()
2826 pmcraid_return_cmd(cmd); pmcraid_reset_device()
2828 ioasc = le32_to_cpu(cmd->ioa_cb->ioasa.ioasc); pmcraid_reset_device()
2837 * @cmd: pointer to pmcraid command struct
2850 static int _pmcraid_io_done(struct pmcraid_cmd *cmd, int reslen, int ioasc) _pmcraid_io_done() argument
2852 struct scsi_cmnd *scsi_cmd = cmd->scsi_cmd; _pmcraid_io_done()
2858 le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle) >> 2, _pmcraid_io_done()
2859 cmd->ioa_cb->ioarcb.cdb[0], _pmcraid_io_done()
2863 rc = pmcraid_error_handler(cmd); _pmcraid_io_done()
2876 * @cmd: pointer to pmcraid command struct
2885 static void pmcraid_io_done(struct pmcraid_cmd *cmd) pmcraid_io_done() argument
2887 u32 ioasc = le32_to_cpu(cmd->ioa_cb->ioasa.ioasc); pmcraid_io_done()
2888 u32 reslen = le32_to_cpu(cmd->ioa_cb->ioasa.residual_data_length); pmcraid_io_done()
2890 if (_pmcraid_io_done(cmd, reslen, ioasc) == 0) pmcraid_io_done()
2891 pmcraid_return_cmd(cmd); pmcraid_io_done()
2897 * @cmd: command block of the command to be aborted
2900 * returns pointer to command structure used as cancelling cmd
2902 static struct pmcraid_cmd *pmcraid_abort_cmd(struct pmcraid_cmd *cmd) pmcraid_abort_cmd() argument
2908 pinstance = (struct pmcraid_instance *)cmd->drv_inst; pmcraid_abort_cmd()
2909 res = cmd->scsi_cmd->device->hostdata; pmcraid_abort_cmd()
2914 pmcraid_err("%s: no cmd blocks are available\n", __func__); pmcraid_abort_cmd()
2918 pmcraid_prepare_cancel_cmd(cancel_cmd, cmd); pmcraid_abort_cmd()
2921 cmd->ioa_cb->ioarcb.cdb[0], pmcraid_abort_cmd()
2922 cmd->ioa_cb->ioarcb.response_handle >> 2); pmcraid_abort_cmd()
2988 struct pmcraid_cmd *cmd; pmcraid_eh_abort_handler() local
3021 /* loop over pending cmd list to find cmd corresponding to this pmcraid_eh_abort_handler()
3027 list_for_each_entry(cmd, &pinstance->pending_cmd_pool, free_list) { pmcraid_eh_abort_handler()
3029 if (cmd->scsi_cmd == scsi_cmd) { pmcraid_eh_abort_handler()
3042 cancel_cmd = pmcraid_abort_cmd(cmd); pmcraid_eh_abort_handler()
3048 cancel_cmd->res = cmd->scsi_cmd->device->hostdata; pmcraid_eh_abort_handler()
3132 * @cmd: pmcraid command struct
3140 pmcraid_init_ioadls(struct pmcraid_cmd *cmd, int sgcount) pmcraid_init_ioadls() argument
3143 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_init_ioadls()
3159 cpu_to_le64((cmd->ioa_cb_bus_addr) + pmcraid_init_ioadls()
3165 cpu_to_le64((cmd->ioa_cb_bus_addr) + pmcraid_init_ioadls()
3180 * @cmd: pmcraid command struct
3190 struct pmcraid_cmd *cmd pmcraid_build_ioadl()
3196 struct scsi_cmnd *scsi_cmd = cmd->scsi_cmd; pmcraid_build_ioadl()
3197 struct pmcraid_ioarcb *ioarcb = &(cmd->ioa_cb->ioarcb); pmcraid_build_ioadl()
3223 ioadl = pmcraid_init_ioadls(cmd, nseg); pmcraid_build_ioadl()
3403 * would use cmd block queue locks (free_pool_lock and pending_pool_lock)
3418 struct pmcraid_cmd *cmd; pmcraid_queuecommand_lck() local
3453 cmd = pmcraid_get_free_cmd(pinstance); pmcraid_queuecommand_lck()
3455 if (cmd == NULL) { pmcraid_queuecommand_lck()
3460 cmd->scsi_cmd = scsi_cmd; pmcraid_queuecommand_lck()
3461 ioarcb = &(cmd->ioa_cb->ioarcb); pmcraid_queuecommand_lck()
3467 * generated internally uses hrrq_id 0, exception to this is the cmd pmcraid_queuecommand_lck()
3473 cmd->cmd_done = pmcraid_io_done; pmcraid_queuecommand_lck()
3493 rc = pmcraid_build_ioadl(pinstance, cmd); pmcraid_queuecommand_lck()
3508 _pmcraid_fire_command(cmd); pmcraid_queuecommand_lck()
3511 pmcraid_return_cmd(cmd); pmcraid_queuecommand_lck()
3561 * @cmd : pointer to struct pmcraid_cmd
3569 struct pmcraid_cmd *cmd, pmcraid_build_passthrough_ioadls()
3576 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_build_passthrough_ioadls()
3587 sglist->num_dma_sg = pci_map_sg(cmd->drv_inst->pdev, pmcraid_build_passthrough_ioadls()
3592 dev_err(&cmd->drv_inst->pdev->dev, pmcraid_build_passthrough_ioadls()
3598 cmd->sglist = sglist; pmcraid_build_passthrough_ioadls()
3601 ioadl = pmcraid_init_ioadls(cmd, sglist->num_dma_sg); pmcraid_build_passthrough_ioadls()
3620 * @cmd: pointer to struct pmcraid_cmd for which ioadls were allocated
3628 struct pmcraid_cmd *cmd, pmcraid_release_passthrough_ioadls()
3633 struct pmcraid_sglist *sglist = cmd->sglist; pmcraid_release_passthrough_ioadls()
3636 pci_unmap_sg(cmd->drv_inst->pdev, pmcraid_release_passthrough_ioadls()
3641 cmd->sglist = NULL; pmcraid_release_passthrough_ioadls()
3649 * @cmd: ioctl code
3664 struct pmcraid_cmd *cmd; pmcraid_ioctl_passthrough() local
3750 cmd = pmcraid_get_free_cmd(pinstance); pmcraid_ioctl_passthrough()
3752 if (!cmd) { pmcraid_ioctl_passthrough()
3758 cmd->scsi_cmd = NULL; pmcraid_ioctl_passthrough()
3759 ioarcb = &(cmd->ioa_cb->ioarcb); pmcraid_ioctl_passthrough()
3781 * generated internally uses hrrq_id 0, exception to this is the cmd pmcraid_ioctl_passthrough()
3789 rc = pmcraid_build_passthrough_ioadls(cmd, pmcraid_ioctl_passthrough()
3805 rc = pmcraid_copy_sglist(cmd->sglist, pmcraid_ioctl_passthrough()
3818 cmd->cmd_done = pmcraid_internal_done; pmcraid_ioctl_passthrough()
3819 init_completion(&cmd->wait_for_completion); pmcraid_ioctl_passthrough()
3820 cmd->completion_req = 1; pmcraid_ioctl_passthrough()
3823 le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle) >> 2, pmcraid_ioctl_passthrough()
3824 cmd->ioa_cb->ioarcb.cdb[0], pmcraid_ioctl_passthrough()
3825 le32_to_cpu(cmd->ioa_cb->ioarcb.resource_handle)); pmcraid_ioctl_passthrough()
3828 _pmcraid_fire_command(cmd); pmcraid_ioctl_passthrough()
3844 wait_for_completion(&cmd->wait_for_completion); pmcraid_ioctl_passthrough()
3846 &cmd->wait_for_completion, pmcraid_ioctl_passthrough()
3849 pmcraid_info("aborting cmd %d (CDB[0] = %x) due to timeout\n", pmcraid_ioctl_passthrough()
3850 le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle >> 2), pmcraid_ioctl_passthrough()
3851 cmd->ioa_cb->ioarcb.cdb[0]); pmcraid_ioctl_passthrough()
3854 cancel_cmd = pmcraid_abort_cmd(cmd); pmcraid_ioctl_passthrough()
3881 &cmd->wait_for_completion, pmcraid_ioctl_passthrough()
3883 pmcraid_reset_bringup(cmd->drv_inst); pmcraid_ioctl_passthrough()
3893 if (copy_to_user(ioasa, &cmd->ioa_cb->ioasa, pmcraid_ioctl_passthrough()
3903 rc = pmcraid_copy_sglist(cmd->sglist, pmcraid_ioctl_passthrough()
3914 pmcraid_release_passthrough_ioadls(cmd, request_size, direction); pmcraid_ioctl_passthrough()
3915 pmcraid_return_cmd(cmd); pmcraid_ioctl_passthrough()
3930 * @cmd: ioctl command passed in
3939 unsigned int cmd, pmcraid_ioctl_driver()
3946 if (!access_ok(VERIFY_READ, user_buffer, _IOC_SIZE(cmd))) { pmcraid_ioctl_driver()
3951 switch (cmd) { pmcraid_ioctl_driver()
3967 * @cmd: ioctl command
3977 int cmd, pmcraid_check_ioctl_buffer()
4000 if ((_IOC_DIR(cmd) & _IOC_READ) == _IOC_READ) pmcraid_check_ioctl_buffer()
4020 unsigned int cmd, pmcraid_chr_ioctl()
4035 retval = pmcraid_check_ioctl_buffer(cmd, (void *)arg, hdr); pmcraid_chr_ioctl()
4051 switch (_IOC_TYPE(cmd)) { pmcraid_chr_ioctl()
4057 if (cmd == PMCRAID_IOCTL_DOWNLOAD_MICROCODE) pmcraid_chr_ioctl()
4061 cmd, pmcraid_chr_ioctl()
4065 if (cmd == PMCRAID_IOCTL_DOWNLOAD_MICROCODE) pmcraid_chr_ioctl()
4072 cmd, pmcraid_chr_ioctl()
4536 struct pmcraid_cmd *cmd = NULL; pmcraid_tasklet_function() local
4552 cmd = pinstance->cmd_list[cmd_index]; pmcraid_tasklet_function()
4557 list_del(&cmd->free_list); pmcraid_tasklet_function()
4560 del_timer(&cmd->timer); pmcraid_tasklet_function()
4563 if (cmd->cmd_done == pmcraid_ioa_reset) { pmcraid_tasklet_function()
4566 cmd->cmd_done(cmd); pmcraid_tasklet_function()
4569 } else if (cmd->cmd_done != NULL) { pmcraid_tasklet_function()
4570 cmd->cmd_done(cmd); pmcraid_tasklet_function()
4726 * pmcraid_allocate_cmd_blocks - allocate memory for cmd block structures
5110 pmcraid_err("couldn't allocate memory for cmd blocks\n"); pmcraid_init_buffers()
5496 * @cmd: pointer to reset command block
5498 static void pmcraid_complete_ioa_reset(struct pmcraid_cmd *cmd) pmcraid_complete_ioa_reset() argument
5500 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_complete_ioa_reset()
5504 pmcraid_ioa_reset(cmd); pmcraid_complete_ioa_reset()
5513 * @cmd: pointer to pmcraid_cmd structure
5518 static void pmcraid_set_supported_devs(struct pmcraid_cmd *cmd) pmcraid_set_supported_devs() argument
5520 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_set_supported_devs()
5523 pmcraid_reinit_cmdblk(cmd); pmcraid_set_supported_devs()
5534 if (cmd->drv_inst->reinit_cfg_table) { pmcraid_set_supported_devs()
5535 cmd->drv_inst->reinit_cfg_table = 0; pmcraid_set_supported_devs()
5536 cmd->release = 1; pmcraid_set_supported_devs()
5544 pmcraid_send_cmd(cmd, pmcraid_set_supported_devs()
5554 * @cmd: pointer to pmcraid_cmd structure
5559 static void pmcraid_set_timestamp(struct pmcraid_cmd *cmd) pmcraid_set_timestamp() argument
5561 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_set_timestamp()
5562 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_set_timestamp()
5579 pmcraid_reinit_cmdblk(cmd); pmcraid_set_timestamp()
5586 ioarcb->ioadl_bus_addr = cpu_to_le64((cmd->ioa_cb_bus_addr) + pmcraid_set_timestamp()
5603 pmcraid_send_cmd(cmd, pmcraid_set_supported_devs, pmcraid_set_timestamp()
5606 pmcraid_send_cmd(cmd, pmcraid_return_cmd, pmcraid_set_timestamp()
5615 * @cmd: pointer to pmcraid command struct
5625 static void pmcraid_init_res_table(struct pmcraid_cmd *cmd) pmcraid_init_res_table() argument
5627 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_init_res_table()
5724 pmcraid_set_timestamp(cmd); pmcraid_init_res_table()
5729 * @cmd: pointer pmcraid_cmd struct
5737 static void pmcraid_querycfg(struct pmcraid_cmd *cmd) pmcraid_querycfg() argument
5739 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; pmcraid_querycfg()
5741 struct pmcraid_instance *pinstance = cmd->drv_inst; pmcraid_querycfg()
5763 ioarcb->ioadl_bus_addr = cpu_to_le64((cmd->ioa_cb_bus_addr) + pmcraid_querycfg()
5778 pmcraid_send_cmd(cmd, pmcraid_init_res_table, pmcraid_querycfg()
918 pmcraid_send_cmd( struct pmcraid_cmd *cmd, void (*cmd_done) (struct pmcraid_cmd *), unsigned long timeout, void (*timeout_func) (struct pmcraid_cmd *) ) pmcraid_send_cmd() argument
1233 pmcraid_prepare_cancel_cmd( struct pmcraid_cmd *cmd, struct pmcraid_cmd *cmd_to_cancel ) pmcraid_prepare_cancel_cmd() argument
1264 pmcraid_cancel_hcam( struct pmcraid_cmd *cmd, u8 type, void (*cmd_done) (struct pmcraid_cmd *) ) pmcraid_cancel_hcam() argument
3568 pmcraid_build_passthrough_ioadls( struct pmcraid_cmd *cmd, int buflen, int direction ) pmcraid_build_passthrough_ioadls() argument
3627 pmcraid_release_passthrough_ioadls( struct pmcraid_cmd *cmd, int buflen, int direction ) pmcraid_release_passthrough_ioadls() argument
3937 pmcraid_ioctl_driver( struct pmcraid_instance *pinstance, unsigned int cmd, unsigned int buflen, void __user *user_buffer ) pmcraid_ioctl_driver() argument
3976 pmcraid_check_ioctl_buffer( int cmd, void __user *arg, struct pmcraid_ioctl_header *hdr ) pmcraid_check_ioctl_buffer() argument
4018 pmcraid_chr_ioctl( struct file *filep, unsigned int cmd, unsigned long arg ) pmcraid_chr_ioctl() argument
H A Deata_pio.c161 struct scsi_cmnd *cmd; eata_pio_int_handler() local
184 cmd = cp->cmd; eata_pio_int_handler()
185 base = cmd->device->host->base; eata_pio_int_handler()
193 while ((cmd->SCp.Status) && ((z > 0) || (odd))) { eata_pio_int_handler()
195 *(cmd->SCp.ptr) = zwickel >> 8; eata_pio_int_handler()
196 IncStat(&cmd->SCp, 1); eata_pio_int_handler()
199 x = min_t(unsigned int, z, cmd->SCp.this_residual / 2); eata_pio_int_handler()
200 insw(base + HA_RDATA, cmd->SCp.ptr, x); eata_pio_int_handler()
202 IncStat(&cmd->SCp, 2 * x); eata_pio_int_handler()
203 if ((z > 0) && (cmd->SCp.this_residual == 1)) { eata_pio_int_handler()
205 *(cmd->SCp.ptr) = zwickel & 0xff; eata_pio_int_handler()
206 IncStat(&cmd->SCp, 1); eata_pio_int_handler()
219 while ((cmd->SCp.Status) && ((z > 0) || (odd))) { eata_pio_int_handler()
221 zwickel += *(cmd->SCp.ptr) << 8; eata_pio_int_handler()
222 IncStat(&cmd->SCp, 1); eata_pio_int_handler()
227 x = min_t(unsigned int, z, cmd->SCp.this_residual / 2); eata_pio_int_handler()
228 outsw(base + HA_RDATA, cmd->SCp.ptr, x); eata_pio_int_handler()
230 IncStat(&cmd->SCp, 2 * x); eata_pio_int_handler()
231 if ((z > 0) && (cmd->SCp.this_residual == 1)) { eata_pio_int_handler()
232 zwickel = *(cmd->SCp.ptr); eata_pio_int_handler()
234 IncStat(&cmd->SCp, 1); eata_pio_int_handler()
258 cmd->result = (DID_OK << 16); eata_pio_int_handler()
261 cmd->result = (DID_OK << 16) + 0x02; eata_pio_int_handler()
263 cmd->result = (DID_NO_CONNECT << 16); eata_pio_int_handler()
273 printk(KERN_DEBUG "stat: %#.2x, result: %#.8x\n", stat, cmd->result); eata_pio_int_handler()
278 cmd->scsi_done(cmd); eata_pio_int_handler()
302 static int eata_pio_queue_lck(struct scsi_cmnd *cmd, eata_pio_queue_lck() argument
314 hd = HD(cmd); eata_pio_queue_lck()
315 sh = cmd->device->host; eata_pio_queue_lck()
318 /* use only slot 0, as 2001 can handle only one cmd at a time */ eata_pio_queue_lck()
338 DBG(DBG_QUEUE, scmd_printk(KERN_DEBUG, cmd, eata_pio_queue_lck()
339 "eata_pio_queue 0x%p, y %d\n", cmd, y)); eata_pio_queue_lck()
341 cmd->scsi_done = (void *) done; eata_pio_queue_lck()
343 if (cmd->sc_data_direction == DMA_TO_DEVICE) eata_pio_queue_lck()
348 cp->Interpret = (cmd->device->id == hd->hostid); eata_pio_queue_lck()
349 cp->cp_datalen = cpu_to_be32(scsi_bufflen(cmd)); eata_pio_queue_lck()
354 cp->cp_id = cmd->device->id; eata_pio_queue_lck()
355 cp->cp_lun = cmd->device->lun; eata_pio_queue_lck()
358 memcpy(cp->cp_cdb, cmd->cmnd, COMMAND_SIZE(*cmd->cmnd)); eata_pio_queue_lck()
363 cp->cmd = cmd; eata_pio_queue_lck()
364 cmd->host_scribble = (char *) &hd->ccb[y]; eata_pio_queue_lck()
366 if (!scsi_bufflen(cmd)) { eata_pio_queue_lck()
367 cmd->SCp.buffers_residual = 1; eata_pio_queue_lck()
368 cmd->SCp.ptr = NULL; eata_pio_queue_lck()
369 cmd->SCp.this_residual = 0; eata_pio_queue_lck()
370 cmd->SCp.buffer = NULL; eata_pio_queue_lck()
372 cmd->SCp.buffer = scsi_sglist(cmd); eata_pio_queue_lck()
373 cmd->SCp.buffers_residual = scsi_sg_count(cmd); eata_pio_queue_lck()
374 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); eata_pio_queue_lck()
375 cmd->SCp.this_residual = cmd->SCp.buffer->length; eata_pio_queue_lck()
377 cmd->SCp.Status = (cmd->SCp.this_residual != 0); /* TRUE as long as bytes eata_pio_queue_lck()
381 cmd->result = DID_BUS_BUSY << 16; eata_pio_queue_lck()
382 scmd_printk(KERN_NOTICE, cmd, eata_pio_queue_lck()
384 "returning DID_BUS_BUSY, done.\n", cmd); eata_pio_queue_lck()
385 done(cmd); eata_pio_queue_lck()
397 DBG(DBG_QUEUE, scmd_printk(KERN_DEBUG, cmd, eata_pio_queue_lck()
398 "Queued base %#.4lx cmd: 0x%p " eata_pio_queue_lck()
399 "slot %d irq %d\n", sh->base, cmd, y, sh->irq)); eata_pio_queue_lck()
406 static int eata_pio_abort(struct scsi_cmnd *cmd) eata_pio_abort() argument
410 DBG(DBG_ABNORM, scmd_printk(KERN_WARNING, cmd, eata_pio_abort()
411 "eata_pio_abort called pid: 0x%p\n", cmd)); eata_pio_abort()
413 while (inb(cmd->device->host->base + HA_RAUXSTAT) & HA_ABUSY) eata_pio_abort()
418 if (CD(cmd)->status == FREE) { eata_pio_abort()
422 if (CD(cmd)->status == USED) { eata_pio_abort()
427 if (CD(cmd)->status == RESET) { eata_pio_abort()
431 if (CD(cmd)->status == LOCKED) { eata_pio_abort()
438 static int eata_pio_host_reset(struct scsi_cmnd *cmd) eata_pio_host_reset() argument
443 struct Scsi_Host *host = cmd->device->host; eata_pio_host_reset()
445 DBG(DBG_ABNORM, scmd_printk(KERN_WARNING, cmd, eata_pio_host_reset()
450 if (HD(cmd)->state == RESET) { eata_pio_host_reset()
458 for (x = 0; x < cmd->device->host->can_queue; x++) { eata_pio_host_reset()
460 if (HD(cmd)->ccb[x].status == FREE) eata_pio_host_reset()
463 sp = HD(cmd)->ccb[x].cmd; eata_pio_host_reset()
464 HD(cmd)->ccb[x].status = RESET; eata_pio_host_reset()
472 outb(EATA_CMD_RESET, cmd->device->host->base + HA_WCOMMAND); eata_pio_host_reset()
475 HD(cmd)->state = RESET; eata_pio_host_reset()
483 for (x = 0; x < cmd->device->host->can_queue; x++) { eata_pio_host_reset()
486 if (HD(cmd)->ccb[x].status != RESET) eata_pio_host_reset()
489 sp = HD(cmd)->ccb[x].cmd; eata_pio_host_reset()
494 HD(cmd)->ccb[x].status = FREE; eata_pio_host_reset()
499 HD(cmd)->state = 0; eata_pio_host_reset()
H A Dmvme147.c30 static int dma_setup(struct scsi_cmnd *cmd, int dir_in) dma_setup() argument
32 struct Scsi_Host *instance = cmd->device->host; dma_setup()
35 unsigned long addr = virt_to_bus(cmd->SCp.ptr); dma_setup()
46 cache_clear(addr, cmd->SCp.this_residual); dma_setup()
49 cache_push(addr, cmd->SCp.this_residual); dma_setup()
53 m147_pcc->dma_bcr = cmd->SCp.this_residual | (1 << 24); dma_setup()
124 static int mvme147_bus_reset(struct scsi_cmnd *cmd) mvme147_bus_reset() argument
131 spin_lock_irq(cmd->device->host->host_lock); mvme147_bus_reset()
132 wd33c93_host_reset(cmd); mvme147_bus_reset()
133 spin_unlock_irq(cmd->device->host->host_lock); mvme147_bus_reset()
H A Dscsi_logging.c220 void scsi_print_command(struct scsi_cmnd *cmd) scsi_print_command() argument
226 if (!cmd->cmnd) scsi_print_command()
234 scmd_name(cmd), cmd->request->tag); scsi_print_command()
242 cmd->cmnd); scsi_print_command()
247 if (cmd->cmd_len > 16) { scsi_print_command()
250 dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", logbuf); scsi_print_command()
252 for (k = 0; k < cmd->cmd_len; k += 16) { scsi_print_command()
253 size_t linelen = min(cmd->cmd_len - k, 16); scsi_print_command()
259 scmd_name(cmd), scsi_print_command()
260 cmd->request->tag); scsi_print_command()
264 hex_dump_to_buffer(&cmd->cmnd[k], linelen, scsi_print_command()
268 dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", scsi_print_command()
276 hex_dump_to_buffer(cmd->cmnd, cmd->cmd_len, 16, 1, scsi_print_command()
281 dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", logbuf); scsi_print_command()
421 void scsi_print_sense(const struct scsi_cmnd *cmd) scsi_print_sense() argument
423 scsi_log_print_sense(cmd->device, scmd_name(cmd), cmd->request->tag, scsi_print_sense()
424 cmd->sense_buffer, SCSI_SENSE_BUFFERSIZE); scsi_print_sense()
428 void scsi_print_result(const struct scsi_cmnd *cmd, const char *msg, scsi_print_result() argument
434 const char *hb_string = scsi_hostbyte_string(cmd->result); scsi_print_result()
435 const char *db_string = scsi_driverbyte_string(cmd->result); scsi_print_result()
442 scmd_name(cmd), cmd->request->tag); scsi_print_result()
471 "hostbyte=0x%02x ", host_byte(cmd->result)); scsi_print_result()
480 "driverbyte=0x%02x", driver_byte(cmd->result)); scsi_print_result()
482 dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", logbuf); scsi_print_result()
/linux-4.1.27/drivers/ide/
H A Dide-taskfile.c27 void ide_tf_readback(ide_drive_t *drive, struct ide_cmd *cmd) ide_tf_readback() argument
35 tp_ops->tf_read(drive, &cmd->tf, cmd->valid.in.tf); ide_tf_readback()
37 if (cmd->tf_flags & IDE_TFLAG_LBA48) { ide_tf_readback()
40 tp_ops->tf_read(drive, &cmd->hob, cmd->valid.in.hob); ide_tf_readback()
44 void ide_tf_dump(const char *s, struct ide_cmd *cmd) ide_tf_dump() argument
48 "lbam 0x%02x lbah 0x%02x dev 0x%02x cmd 0x%02x\n", ide_tf_dump()
49 s, cmd->tf.feature, cmd->tf.nsect, ide_tf_dump()
50 cmd->tf.lbal, cmd->tf.lbam, cmd->tf.lbah, ide_tf_dump()
51 cmd->tf.device, cmd->tf.command); ide_tf_dump()
53 s, cmd->hob.nsect, cmd->hob.lbal, cmd->hob.lbam, cmd->hob.lbah); ide_tf_dump()
59 struct ide_cmd cmd; taskfile_lib_get_identify() local
61 memset(&cmd, 0, sizeof(cmd)); taskfile_lib_get_identify()
62 cmd.tf.nsect = 0x01; taskfile_lib_get_identify()
64 cmd.tf.command = ATA_CMD_ID_ATA; taskfile_lib_get_identify()
66 cmd.tf.command = ATA_CMD_ID_ATAPI; taskfile_lib_get_identify()
67 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; taskfile_lib_get_identify()
68 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; taskfile_lib_get_identify()
69 cmd.protocol = ATA_PROT_PIO; taskfile_lib_get_identify()
71 return ide_raw_taskfile(drive, &cmd, buf, 1); taskfile_lib_get_identify()
81 struct ide_cmd *cmd = &hwif->cmd; do_rw_taskfile() local
82 struct ide_taskfile *tf = &cmd->tf; do_rw_taskfile()
97 memcpy(cmd, orig_cmd, sizeof(*cmd)); do_rw_taskfile()
99 if ((cmd->tf_flags & IDE_TFLAG_DMA_PIO_FALLBACK) == 0) { do_rw_taskfile()
100 ide_tf_dump(drive->name, cmd); do_rw_taskfile()
103 if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) { do_rw_taskfile()
104 u8 data[2] = { cmd->tf.data, cmd->hob.data }; do_rw_taskfile()
106 tp_ops->output_data(drive, cmd, data, 2); do_rw_taskfile()
109 if (cmd->valid.out.tf & IDE_VALID_DEVICE) { do_rw_taskfile()
110 u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? do_rw_taskfile()
113 if (!(cmd->ftf_flags & IDE_FTFLAG_FLAGGED)) do_rw_taskfile()
114 cmd->tf.device &= HIHI; do_rw_taskfile()
115 cmd->tf.device |= drive->select; do_rw_taskfile()
118 tp_ops->tf_load(drive, &cmd->hob, cmd->valid.out.hob); do_rw_taskfile()
119 tp_ops->tf_load(drive, &cmd->tf, cmd->valid.out.tf); do_rw_taskfile()
122 switch (cmd->protocol) { do_rw_taskfile()
124 if (cmd->tf_flags & IDE_TFLAG_WRITE) { do_rw_taskfile()
127 return pre_task_out_intr(drive, cmd); do_rw_taskfile()
134 ide_execute_command(drive, cmd, handler, WAIT_WORSTCASE); do_rw_taskfile()
137 if (ide_dma_prepare(drive, cmd)) do_rw_taskfile()
140 ide_execute_command(drive, cmd, ide_dma_intr, 2 * WAIT_CMD); do_rw_taskfile()
151 struct ide_cmd *cmd = &hwif->cmd; task_no_data_intr() local
152 struct ide_taskfile *tf = &cmd->tf; task_no_data_intr()
153 int custom = (cmd->tf_flags & IDE_TFLAG_CUSTOM_HANDLER) ? 1 : 0; task_no_data_intr()
192 ide_finish_cmd(drive, cmd, stat); task_no_data_intr()
223 void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd, ide_pio_bytes() argument
228 struct scatterlist *cursg = cmd->cursg; ide_pio_bytes()
234 cursg = cmd->cursg; ide_pio_bytes()
236 cursg = cmd->cursg = sg; ide_pio_bytes()
239 unsigned nr_bytes = min(len, cursg->length - cmd->cursg_ofs); ide_pio_bytes()
243 offset = cursg->offset + cmd->cursg_ofs; ide_pio_bytes()
257 cmd->nleft -= nr_bytes; ide_pio_bytes()
258 cmd->cursg_ofs += nr_bytes; ide_pio_bytes()
260 if (cmd->cursg_ofs == cursg->length) { ide_pio_bytes()
261 cursg = cmd->cursg = sg_next(cmd->cursg); ide_pio_bytes()
262 cmd->cursg_ofs = 0; ide_pio_bytes()
267 hwif->tp_ops->output_data(drive, cmd, buf, nr_bytes); ide_pio_bytes()
269 hwif->tp_ops->input_data(drive, cmd, buf, nr_bytes); ide_pio_bytes()
281 static void ide_pio_datablock(ide_drive_t *drive, struct ide_cmd *cmd, ide_pio_datablock() argument
288 if (cmd->tf_flags & IDE_TFLAG_FS) ide_pio_datablock()
289 cmd->rq->errors = 0; ide_pio_datablock()
291 if (cmd->tf_flags & IDE_TFLAG_IO_16BIT) ide_pio_datablock()
296 if (cmd->tf_flags & IDE_TFLAG_MULTI_PIO) ide_pio_datablock()
297 nr_bytes = min_t(unsigned, cmd->nleft, drive->mult_count << 9); ide_pio_datablock()
301 ide_pio_bytes(drive, cmd, write, nr_bytes); ide_pio_datablock()
306 static void ide_error_cmd(ide_drive_t *drive, struct ide_cmd *cmd) ide_error_cmd() argument
308 if (cmd->tf_flags & IDE_TFLAG_FS) { ide_error_cmd()
309 int nr_bytes = cmd->nbytes - cmd->nleft; ide_error_cmd()
311 if (cmd->protocol == ATA_PROT_PIO && ide_error_cmd()
312 ((cmd->tf_flags & IDE_TFLAG_WRITE) || cmd->nleft == 0)) { ide_error_cmd()
313 if (cmd->tf_flags & IDE_TFLAG_MULTI_PIO) ide_error_cmd()
324 void ide_finish_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 stat) ide_finish_cmd() argument
327 u8 err = ide_read_error(drive), nsect = cmd->tf.nsect; ide_finish_cmd()
328 u8 set_xfer = !!(cmd->tf_flags & IDE_TFLAG_SET_XFER); ide_finish_cmd()
330 ide_complete_cmd(drive, cmd, stat, err); ide_finish_cmd()
347 struct ide_cmd *cmd = &drive->hwif->cmd; task_pio_intr() local
349 u8 write = !!(cmd->tf_flags & IDE_TFLAG_WRITE); task_pio_intr()
370 if (((stat & ATA_DRQ) == 0) ^ (cmd->nleft == 0)) task_pio_intr()
374 if (write && cmd->nleft == 0) task_pio_intr()
378 ide_pio_datablock(drive, cmd, write); task_pio_intr()
381 if (write == 0 && cmd->nleft == 0) { task_pio_intr()
393 if ((cmd->tf_flags & IDE_TFLAG_FS) == 0) task_pio_intr()
394 ide_finish_cmd(drive, cmd, stat); task_pio_intr()
396 ide_complete_rq(drive, 0, blk_rq_sectors(cmd->rq) << 9); task_pio_intr()
399 ide_error_cmd(drive, cmd); task_pio_intr()
404 struct ide_cmd *cmd) pre_task_out_intr()
411 (cmd->tf_flags & IDE_TFLAG_MULTI_PIO) ? "MULT" : "", pre_task_out_intr()
421 ide_pio_datablock(drive, cmd, 1); pre_task_out_intr()
426 int ide_raw_taskfile(ide_drive_t *drive, struct ide_cmd *cmd, u8 *buf, ide_raw_taskfile() argument
431 int rw = !(cmd->tf_flags & IDE_TFLAG_WRITE) ? READ : WRITE; ide_raw_taskfile()
449 rq->special = cmd; ide_raw_taskfile()
450 cmd->rq = rq; ide_raw_taskfile()
460 int ide_no_data_taskfile(ide_drive_t *drive, struct ide_cmd *cmd) ide_no_data_taskfile() argument
462 cmd->protocol = ATA_PROT_NODATA; ide_no_data_taskfile()
464 return ide_raw_taskfile(drive, cmd, NULL, 0); ide_no_data_taskfile()
472 struct ide_cmd cmd; ide_taskfile_ioctl() local
521 memset(&cmd, 0, sizeof(cmd)); ide_taskfile_ioctl()
523 memcpy(&cmd.hob, req_task->hob_ports, HDIO_DRIVE_HOB_HDR_SIZE - 2); ide_taskfile_ioctl()
524 memcpy(&cmd.tf, req_task->io_ports, HDIO_DRIVE_TASK_HDR_SIZE); ide_taskfile_ioctl()
526 cmd.valid.out.tf = IDE_VALID_DEVICE; ide_taskfile_ioctl()
527 cmd.valid.in.tf = IDE_VALID_DEVICE | IDE_VALID_IN_TF; ide_taskfile_ioctl()
528 cmd.tf_flags = IDE_TFLAG_IO_16BIT; ide_taskfile_ioctl()
531 cmd.tf_flags |= IDE_TFLAG_LBA48; ide_taskfile_ioctl()
532 cmd.valid.in.hob = IDE_VALID_IN_HOB; ide_taskfile_ioctl()
536 cmd.ftf_flags |= IDE_FTFLAG_FLAGGED; ide_taskfile_ioctl()
539 cmd.ftf_flags |= IDE_FTFLAG_OUT_DATA; ide_taskfile_ioctl()
542 cmd.valid.out.hob |= IDE_VALID_NSECT; ide_taskfile_ioctl()
544 cmd.valid.out.hob |= IDE_VALID_LBAL; ide_taskfile_ioctl()
546 cmd.valid.out.hob |= IDE_VALID_LBAM; ide_taskfile_ioctl()
548 cmd.valid.out.hob |= IDE_VALID_LBAH; ide_taskfile_ioctl()
551 cmd.valid.out.tf |= IDE_VALID_FEATURE; ide_taskfile_ioctl()
553 cmd.valid.out.tf |= IDE_VALID_NSECT; ide_taskfile_ioctl()
555 cmd.valid.out.tf |= IDE_VALID_LBAL; ide_taskfile_ioctl()
557 cmd.valid.out.tf |= IDE_VALID_LBAM; ide_taskfile_ioctl()
559 cmd.valid.out.tf |= IDE_VALID_LBAH; ide_taskfile_ioctl()
561 cmd.valid.out.tf |= IDE_VALID_OUT_TF; ide_taskfile_ioctl()
562 if (cmd.tf_flags & IDE_TFLAG_LBA48) ide_taskfile_ioctl()
563 cmd.valid.out.hob |= IDE_VALID_OUT_HOB; ide_taskfile_ioctl()
567 cmd.ftf_flags |= IDE_FTFLAG_IN_DATA; ide_taskfile_ioctl()
573 cmd.tf_flags |= IDE_TFLAG_WRITE; ide_taskfile_ioctl()
576 cmd.protocol = ATA_PROT_DMA; ide_taskfile_ioctl()
587 cmd.tf_flags |= IDE_TFLAG_MULTI_PIO; ide_taskfile_ioctl()
590 cmd.protocol = ATA_PROT_PIO; ide_taskfile_ioctl()
594 cmd.tf_flags |= IDE_TFLAG_WRITE; ide_taskfile_ioctl()
606 cmd.tf_flags |= IDE_TFLAG_MULTI_PIO; ide_taskfile_ioctl()
609 cmd.protocol = ATA_PROT_PIO; ide_taskfile_ioctl()
617 cmd.protocol = ATA_PROT_NODATA; ide_taskfile_ioctl()
627 nsect = (cmd.hob.nsect << 8) | cmd.tf.nsect; ide_taskfile_ioctl()
637 err = ide_raw_taskfile(drive, &cmd, data_buf, nsect); ide_taskfile_ioctl()
639 memcpy(req_task->hob_ports, &cmd.hob, HDIO_DRIVE_HOB_HDR_SIZE - 2); ide_taskfile_ioctl()
640 memcpy(req_task->io_ports, &cmd.tf, HDIO_DRIVE_TASK_HDR_SIZE); ide_taskfile_ioctl()
642 if ((cmd.ftf_flags & IDE_FTFLAG_SET_IN_FLAGS) && ide_taskfile_ioctl()
403 pre_task_out_intr(ide_drive_t *drive, struct ide_cmd *cmd) pre_task_out_intr() argument
H A Dide-disk_ioctl.c19 unsigned int cmd, unsigned long arg) ide_disk_ioctl()
24 err = ide_setting_ioctl(drive, bdev, cmd, arg, ide_disk_ioctl_settings); ide_disk_ioctl()
28 err = generic_ide_ioctl(drive, bdev, cmd, arg); ide_disk_ioctl()
18 ide_disk_ioctl(ide_drive_t *drive, struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg) ide_disk_ioctl() argument
H A Dide-disk.c55 static void ide_tf_set_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 dma) ide_tf_set_cmd() argument
59 lba48 = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 2 : 0; ide_tf_set_cmd()
60 write = (cmd->tf_flags & IDE_TFLAG_WRITE) ? 1 : 0; ide_tf_set_cmd()
63 cmd->protocol = ATA_PROT_DMA; ide_tf_set_cmd()
66 cmd->protocol = ATA_PROT_PIO; ide_tf_set_cmd()
68 cmd->tf_flags |= IDE_TFLAG_MULTI_PIO; ide_tf_set_cmd()
74 cmd->tf.command = ide_rw_cmds[index + lba48 + write]; ide_tf_set_cmd()
88 struct ide_cmd cmd; __ide_do_rw_disk() local
89 struct ide_taskfile *tf = &cmd.tf; __ide_do_rw_disk()
99 memset(&cmd, 0, sizeof(cmd)); __ide_do_rw_disk()
100 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; __ide_do_rw_disk()
101 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; __ide_do_rw_disk()
114 tf = &cmd.hob; __ide_do_rw_disk()
122 cmd.valid.out.hob = IDE_VALID_OUT_HOB; __ide_do_rw_disk()
123 cmd.valid.in.hob = IDE_VALID_IN_HOB; __ide_do_rw_disk()
124 cmd.tf_flags |= IDE_TFLAG_LBA48; __ide_do_rw_disk()
149 cmd.tf_flags |= IDE_TFLAG_FS; __ide_do_rw_disk()
152 cmd.tf_flags |= IDE_TFLAG_WRITE; __ide_do_rw_disk()
154 ide_tf_set_cmd(drive, &cmd, dma); __ide_do_rw_disk()
155 cmd.rq = rq; __ide_do_rw_disk()
158 ide_init_sg_cmd(&cmd, nsectors << 9); __ide_do_rw_disk()
159 ide_map_sg(drive, &cmd); __ide_do_rw_disk()
162 rc = do_rw_taskfile(drive, &cmd); __ide_do_rw_disk()
166 cmd.tf_flags |= IDE_TFLAG_DMA_PIO_FALLBACK; __ide_do_rw_disk()
167 ide_tf_set_cmd(drive, &cmd, 0); __ide_do_rw_disk()
168 ide_init_sg_cmd(&cmd, nsectors << 9); __ide_do_rw_disk()
169 rc = do_rw_taskfile(drive, &cmd); __ide_do_rw_disk()
207 struct ide_cmd cmd; idedisk_read_native_max_address() local
208 struct ide_taskfile *tf = &cmd.tf; idedisk_read_native_max_address()
211 memset(&cmd, 0, sizeof(cmd)); idedisk_read_native_max_address()
218 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; idedisk_read_native_max_address()
219 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; idedisk_read_native_max_address()
221 cmd.valid.out.hob = IDE_VALID_OUT_HOB; idedisk_read_native_max_address()
222 cmd.valid.in.hob = IDE_VALID_IN_HOB; idedisk_read_native_max_address()
223 cmd.tf_flags = IDE_TFLAG_LBA48; idedisk_read_native_max_address()
226 ide_no_data_taskfile(drive, &cmd); idedisk_read_native_max_address()
230 addr = ide_get_lba_addr(&cmd, lba48) + 1; idedisk_read_native_max_address()
241 struct ide_cmd cmd; idedisk_set_max_address() local
242 struct ide_taskfile *tf = &cmd.tf; idedisk_set_max_address()
247 memset(&cmd, 0, sizeof(cmd)); idedisk_set_max_address()
252 cmd.hob.lbal = (addr_req >>= 8) & 0xff; idedisk_set_max_address()
253 cmd.hob.lbam = (addr_req >>= 8) & 0xff; idedisk_set_max_address()
254 cmd.hob.lbah = (addr_req >>= 8) & 0xff; idedisk_set_max_address()
262 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; idedisk_set_max_address()
263 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; idedisk_set_max_address()
265 cmd.valid.out.hob = IDE_VALID_OUT_HOB; idedisk_set_max_address()
266 cmd.valid.in.hob = IDE_VALID_IN_HOB; idedisk_set_max_address()
267 cmd.tf_flags = IDE_TFLAG_LBA48; idedisk_set_max_address()
270 ide_no_data_taskfile(drive, &cmd); idedisk_set_max_address()
274 addr_set = ide_get_lba_addr(&cmd, lba48) + 1; idedisk_set_max_address()
432 struct ide_cmd *cmd; idedisk_prep_fn() local
438 cmd = rq->special; idedisk_prep_fn()
439 memset(cmd, 0, sizeof(*cmd)); idedisk_prep_fn()
441 cmd = kzalloc(sizeof(*cmd), GFP_ATOMIC); idedisk_prep_fn()
444 /* FIXME: map struct ide_taskfile on rq->cmd[] */ idedisk_prep_fn()
445 BUG_ON(cmd == NULL); idedisk_prep_fn()
449 cmd->tf.command = ATA_CMD_FLUSH_EXT; idedisk_prep_fn()
451 cmd->tf.command = ATA_CMD_FLUSH; idedisk_prep_fn()
452 cmd->valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; idedisk_prep_fn()
453 cmd->tf_flags = IDE_TFLAG_DYN; idedisk_prep_fn()
454 cmd->protocol = ATA_PROT_NODATA; idedisk_prep_fn()
457 rq->special = cmd; idedisk_prep_fn()
458 cmd->rq = rq; idedisk_prep_fn()
510 struct ide_cmd cmd; ide_do_setfeature() local
512 memset(&cmd, 0, sizeof(cmd)); ide_do_setfeature()
513 cmd.tf.feature = feature; ide_do_setfeature()
514 cmd.tf.nsect = nsect; ide_do_setfeature()
515 cmd.tf.command = ATA_CMD_SET_FEATURES; ide_do_setfeature()
516 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; ide_do_setfeature()
517 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; ide_do_setfeature()
519 return ide_no_data_taskfile(drive, &cmd); ide_do_setfeature()
584 struct ide_cmd cmd; do_idedisk_flushcache() local
586 memset(&cmd, 0, sizeof(cmd)); do_idedisk_flushcache()
588 cmd.tf.command = ATA_CMD_FLUSH_EXT; do_idedisk_flushcache()
590 cmd.tf.command = ATA_CMD_FLUSH; do_idedisk_flushcache()
591 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; do_idedisk_flushcache()
592 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; do_idedisk_flushcache()
594 return ide_no_data_taskfile(drive, &cmd); do_idedisk_flushcache()
768 struct ide_cmd cmd; ide_disk_set_doorlock() local
774 memset(&cmd, 0, sizeof(cmd)); ide_disk_set_doorlock()
775 cmd.tf.command = on ? ATA_CMD_MEDIA_LOCK : ATA_CMD_MEDIA_UNLOCK; ide_disk_set_doorlock()
776 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; ide_disk_set_doorlock()
777 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; ide_disk_set_doorlock()
779 ret = ide_no_data_taskfile(drive, &cmd); ide_disk_set_doorlock()
H A Dide-disk_proc.c11 struct ide_cmd cmd; smart_enable() local
12 struct ide_taskfile *tf = &cmd.tf; smart_enable()
14 memset(&cmd, 0, sizeof(cmd)); smart_enable()
19 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; smart_enable()
20 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; smart_enable()
22 return ide_no_data_taskfile(drive, &cmd); smart_enable()
27 struct ide_cmd cmd; get_smart_data() local
28 struct ide_taskfile *tf = &cmd.tf; get_smart_data()
30 memset(&cmd, 0, sizeof(cmd)); get_smart_data()
36 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; get_smart_data()
37 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; get_smart_data()
38 cmd.protocol = ATA_PROT_PIO; get_smart_data()
40 return ide_raw_taskfile(drive, &cmd, buf, 1); get_smart_data()
H A Dide-ioctls.c20 unsigned int cmd, unsigned long arg, ide_setting_ioctl()
27 if (ds->get && s->get_ioctl == cmd) ide_setting_ioctl()
29 else if (ds->set && s->set_ioctl == cmd) ide_setting_ioctl()
57 static int ide_get_identity_ioctl(ide_drive_t *drive, unsigned int cmd, ide_get_identity_ioctl() argument
61 int size = (cmd == HDIO_GET_IDENTITY) ? (ATA_ID_WORDS * 2) : 142; ide_get_identity_ioctl()
122 struct ide_cmd cmd; ide_cmd_ioctl() local
123 struct ide_taskfile *tf = &cmd.tf; ide_cmd_ioctl()
139 memset(&cmd, 0, sizeof(cmd)); ide_cmd_ioctl()
146 cmd.valid.out.tf = IDE_VALID_OUT_TF; ide_cmd_ioctl()
147 cmd.valid.in.tf = IDE_VALID_NSECT; ide_cmd_ioctl()
150 cmd.valid.out.tf = IDE_VALID_FEATURE | IDE_VALID_NSECT; ide_cmd_ioctl()
151 cmd.valid.in.tf = IDE_VALID_NSECT; ide_cmd_ioctl()
154 cmd.protocol = args[3] ? ATA_PROT_PIO : ATA_PROT_NODATA; ide_cmd_ioctl()
157 cmd.tf_flags |= IDE_TFLAG_IO_16BIT; ide_cmd_ioctl()
173 cmd.tf_flags |= IDE_TFLAG_SET_XFER; ide_cmd_ioctl()
176 err = ide_raw_taskfile(drive, &cmd, buf, args[3]); ide_cmd_ioctl()
197 struct ide_cmd cmd; ide_task_ioctl() local
202 memset(&cmd, 0, sizeof(cmd)); ide_task_ioctl()
203 memcpy(&cmd.tf.feature, &args[1], 6); ide_task_ioctl()
204 cmd.tf.command = args[0]; ide_task_ioctl()
205 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; ide_task_ioctl()
206 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; ide_task_ioctl()
208 err = ide_no_data_taskfile(drive, &cmd); ide_task_ioctl()
210 args[0] = cmd.tf.command; ide_task_ioctl()
211 memcpy(&args[1], &cmd.tf.feature, 6); ide_task_ioctl()
227 rq->cmd[0] = REQ_DRIVE_RESET; generic_drive_reset()
235 unsigned int cmd, unsigned long arg) generic_ide_ioctl()
239 err = ide_setting_ioctl(drive, bdev, cmd, arg, ide_ioctl_settings); generic_ide_ioctl()
243 switch (cmd) { generic_ide_ioctl()
248 return ide_get_identity_ioctl(drive, cmd, arg); generic_ide_ioctl()
19 ide_setting_ioctl(ide_drive_t *drive, struct block_device *bdev, unsigned int cmd, unsigned long arg, const struct ide_ioctl_devset *s) ide_setting_ioctl() argument
234 generic_ide_ioctl(ide_drive_t *drive, struct block_device *bdev, unsigned int cmd, unsigned long arg) generic_ide_ioctl() argument
H A Dide-park.c35 rq->cmd[0] = REQ_PARK_HEADS; issue_park_cmd()
52 rq->cmd[0] = REQ_UNPARK_HEADS; issue_park_cmd()
63 struct ide_cmd cmd; ide_do_park_unpark() local
64 struct ide_taskfile *tf = &cmd.tf; ide_do_park_unpark()
66 memset(&cmd, 0, sizeof(cmd)); ide_do_park_unpark()
67 if (rq->cmd[0] == REQ_PARK_HEADS) { ide_do_park_unpark()
75 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; ide_do_park_unpark()
76 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; ide_do_park_unpark()
77 } else /* cmd == REQ_UNPARK_HEADS */ ide_do_park_unpark()
80 cmd.tf_flags |= IDE_TFLAG_CUSTOM_HANDLER; ide_do_park_unpark()
81 cmd.protocol = ATA_PROT_NODATA; ide_do_park_unpark()
83 cmd.rq = rq; ide_do_park_unpark()
85 return do_rw_taskfile(drive, &cmd); ide_do_park_unpark()
H A Dide-cd_ioctl.c113 unsigned char cmd[BLK_MAX_CDB]; cdrom_eject() local
126 memset(cmd, 0, BLK_MAX_CDB); cdrom_eject()
128 cmd[0] = GPCMD_START_STOP_UNIT; cdrom_eject()
129 cmd[4] = loej | (ejectflag != 0); cdrom_eject()
131 return ide_cd_queue_pc(drive, cmd, 0, NULL, NULL, sense, 0, 0); cdrom_eject()
149 unsigned char cmd[BLK_MAX_CDB]; ide_cd_lockdoor() local
151 memset(cmd, 0, BLK_MAX_CDB); ide_cd_lockdoor()
153 cmd[0] = GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL; ide_cd_lockdoor()
154 cmd[4] = lockflag ? 1 : 0; ide_cd_lockdoor()
156 stat = ide_cd_queue_pc(drive, cmd, 0, NULL, NULL, ide_cd_lockdoor()
218 unsigned char cmd[BLK_MAX_CDB]; ide_cdrom_select_speed() local
225 memset(cmd, 0, BLK_MAX_CDB); ide_cdrom_select_speed()
227 cmd[0] = GPCMD_SET_SPEED; ide_cdrom_select_speed()
229 cmd[2] = (speed >> 8) & 0xff; ide_cdrom_select_speed()
230 cmd[3] = speed & 0xff; ide_cdrom_select_speed()
234 cmd[4] = (speed >> 8) & 0xff; ide_cdrom_select_speed()
235 cmd[5] = speed & 0xff; ide_cdrom_select_speed()
238 stat = ide_cd_queue_pc(drive, cmd, 0, NULL, NULL, &sense, 0, 0); ide_cdrom_select_speed()
276 unsigned char cmd[BLK_MAX_CDB]; ide_cdrom_get_mcn() local
279 memset(cmd, 0, BLK_MAX_CDB); ide_cdrom_get_mcn()
281 cmd[0] = GPCMD_READ_SUBCHANNEL; ide_cdrom_get_mcn()
282 cmd[1] = 2; /* MSF addressing */ ide_cdrom_get_mcn()
283 cmd[2] = 0x40; /* request subQ data */ ide_cdrom_get_mcn()
284 cmd[3] = 2; /* format */ ide_cdrom_get_mcn()
285 cmd[8] = len; ide_cdrom_get_mcn()
287 stat = ide_cd_queue_pc(drive, cmd, 0, buf, &len, NULL, 0, 0); ide_cdrom_get_mcn()
357 unsigned char cmd[BLK_MAX_CDB]; ide_cd_fake_play_trkind() local
375 memset(cmd, 0, BLK_MAX_CDB); ide_cd_fake_play_trkind()
377 cmd[0] = GPCMD_PLAY_AUDIO_MSF; ide_cd_fake_play_trkind()
378 lba_to_msf(lba_start, &cmd[3], &cmd[4], &cmd[5]); ide_cd_fake_play_trkind()
379 lba_to_msf(lba_end - 1, &cmd[6], &cmd[7], &cmd[8]); ide_cd_fake_play_trkind()
381 return ide_cd_queue_pc(drive, cmd, 0, NULL, NULL, &sense, 0, 0); ide_cd_fake_play_trkind()
427 unsigned int cmd, void *arg) ide_cdrom_audio_ioctl()
431 switch (cmd) { ide_cdrom_audio_ioctl()
471 cgc->stat = ide_cd_queue_pc(drive, cgc->cmd, ide_cdrom_packet()
426 ide_cdrom_audio_ioctl(struct cdrom_device_info *cdi, unsigned int cmd, void *arg) ide_cdrom_audio_ioctl() argument
H A Dide-lib.c35 u64 ide_get_lba_addr(struct ide_cmd *cmd, int lba48) ide_get_lba_addr() argument
37 struct ide_taskfile *tf = &cmd->tf; ide_get_lba_addr()
42 tf = &cmd->hob; ide_get_lba_addr()
53 struct ide_cmd cmd; ide_dump_sector() local
54 struct ide_taskfile *tf = &cmd.tf; ide_dump_sector()
57 memset(&cmd, 0, sizeof(cmd)); ide_dump_sector()
59 cmd.valid.in.tf = IDE_VALID_LBA; ide_dump_sector()
60 cmd.valid.in.hob = IDE_VALID_LBA; ide_dump_sector()
61 cmd.tf_flags = IDE_TFLAG_LBA48; ide_dump_sector()
63 cmd.valid.in.tf = IDE_VALID_LBA | IDE_VALID_DEVICE; ide_dump_sector()
65 ide_tf_readback(drive, &cmd); ide_dump_sector()
69 (unsigned long long)ide_get_lba_addr(&cmd, lba48)); ide_dump_sector()
167 drive->name, drive->hwif->cmd.tf.command); ide_dump_status()
/linux-4.1.27/drivers/net/wireless/ti/wl1251/
H A Dcmd.c1 #include "cmd.h"
23 struct wl1251_cmd_header *cmd; wl1251_cmd_send() local
28 cmd = buf; wl1251_cmd_send()
29 cmd->id = id; wl1251_cmd_send()
30 cmd->status = 0; wl1251_cmd_send()
72 wl1251_debug(DEBUG_CMD, "cmd test"); wl1251_cmd_test()
114 wl1251_debug(DEBUG_CMD, "cmd interrogate"); wl1251_cmd_interrogate()
131 if (acx->cmd.status != CMD_STATUS_SUCCESS) wl1251_cmd_interrogate()
133 acx->cmd.status); wl1251_cmd_interrogate()
152 wl1251_debug(DEBUG_CMD, "cmd configure"); wl1251_cmd_configure()
174 wl1251_debug(DEBUG_CMD, "cmd vbm"); wl1251_cmd_vbm()
185 wl1251_warning("cmd vbm len is %d B, truncating to %d", wl1251_cmd_vbm()
208 struct cmd_enabledisable_path *cmd; wl1251_cmd_data_path_rx() local
212 wl1251_debug(DEBUG_CMD, "cmd data path"); wl1251_cmd_data_path_rx()
214 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl1251_cmd_data_path_rx()
215 if (!cmd) { wl1251_cmd_data_path_rx()
220 cmd->channel = channel; wl1251_cmd_data_path_rx()
227 ret = wl1251_cmd_send(wl, cmd_rx, cmd, sizeof(*cmd)); wl1251_cmd_data_path_rx()
229 wl1251_error("rx %s cmd for channel %d failed", wl1251_cmd_data_path_rx()
234 wl1251_debug(DEBUG_BOOT, "rx %s cmd channel %d", wl1251_cmd_data_path_rx()
238 kfree(cmd); wl1251_cmd_data_path_rx()
244 struct cmd_enabledisable_path *cmd; wl1251_cmd_data_path_tx() local
248 wl1251_debug(DEBUG_CMD, "cmd data path"); wl1251_cmd_data_path_tx()
250 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl1251_cmd_data_path_tx()
251 if (!cmd) wl1251_cmd_data_path_tx()
254 cmd->channel = channel; wl1251_cmd_data_path_tx()
261 ret = wl1251_cmd_send(wl, cmd_tx, cmd, sizeof(*cmd)); wl1251_cmd_data_path_tx()
263 wl1251_error("tx %s cmd for channel %d failed", wl1251_cmd_data_path_tx()
266 wl1251_debug(DEBUG_BOOT, "tx %s cmd channel %d", wl1251_cmd_data_path_tx()
269 kfree(cmd); wl1251_cmd_data_path_tx()
286 wl1251_debug(DEBUG_CMD, "cmd join%s ch %d %d/%d", wl1251_cmd_join()
309 wl1251_error("failed to initiate cmd join"); wl1251_cmd_join()
323 wl1251_debug(DEBUG_CMD, "cmd set ps mode"); wl1251_cmd_ps_mode()
340 wl1251_error("cmd set_ps_mode failed"); wl1251_cmd_ps_mode()
352 struct cmd_read_write_memory *cmd; wl1251_cmd_read_memory() local
355 wl1251_debug(DEBUG_CMD, "cmd read memory"); wl1251_cmd_read_memory()
357 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl1251_cmd_read_memory()
358 if (!cmd) { wl1251_cmd_read_memory()
366 cmd->addr = addr; wl1251_cmd_read_memory()
367 cmd->size = len; wl1251_cmd_read_memory()
369 ret = wl1251_cmd_send(wl, CMD_READ_MEMORY, cmd, sizeof(*cmd)); wl1251_cmd_read_memory()
376 wl1251_mem_read(wl, wl->cmd_box_addr, cmd, sizeof(*cmd)); wl1251_cmd_read_memory()
378 if (cmd->header.status != CMD_STATUS_SUCCESS) wl1251_cmd_read_memory()
380 cmd->header.status); wl1251_cmd_read_memory()
382 memcpy(answer, cmd->value, len); wl1251_cmd_read_memory()
385 kfree(cmd); wl1251_cmd_read_memory()
392 struct wl1251_cmd_packet_template *cmd; wl1251_cmd_template_set() local
396 wl1251_debug(DEBUG_CMD, "cmd template %d", cmd_id); wl1251_cmd_template_set()
400 cmd_len = ALIGN(sizeof(*cmd) + buf_len, 4); wl1251_cmd_template_set()
402 cmd = kzalloc(cmd_len, GFP_KERNEL); wl1251_cmd_template_set()
403 if (!cmd) { wl1251_cmd_template_set()
408 cmd->size = cpu_to_le16(buf_len); wl1251_cmd_template_set()
411 memcpy(cmd->data, buf, buf_len); wl1251_cmd_template_set()
413 ret = wl1251_cmd_send(wl, cmd_id, cmd, cmd_len); wl1251_cmd_template_set()
415 wl1251_warning("cmd set_template failed: %d", ret); wl1251_cmd_template_set()
420 kfree(cmd); wl1251_cmd_template_set()
428 struct wl1251_cmd_scan *cmd; wl1251_cmd_scan() local
431 wl1251_debug(DEBUG_CMD, "cmd scan channels %d", n_channels); wl1251_cmd_scan()
435 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl1251_cmd_scan()
436 if (!cmd) wl1251_cmd_scan()
439 cmd->params.rx_config_options = cpu_to_le32(CFG_RX_ALL_GOOD); wl1251_cmd_scan()
440 cmd->params.rx_filter_options = cpu_to_le32(CFG_RX_PRSP_EN | wl1251_cmd_scan()
443 cmd->params.scan_options = 0; wl1251_cmd_scan()
450 cmd->params.scan_options |= cpu_to_le16(WL1251_SCAN_OPT_PRIORITY_HIGH); wl1251_cmd_scan()
451 cmd->params.num_channels = n_channels; wl1251_cmd_scan()
452 cmd->params.num_probe_requests = n_probes; wl1251_cmd_scan()
453 cmd->params.tx_rate = cpu_to_le16(1 << 1); /* 2 Mbps */ wl1251_cmd_scan()
454 cmd->params.tid_trigger = 0; wl1251_cmd_scan()
457 cmd->channels[i].min_duration = wl1251_cmd_scan()
459 cmd->channels[i].max_duration = wl1251_cmd_scan()
461 memset(&cmd->channels[i].bssid_lsb, 0xff, 4); wl1251_cmd_scan()
462 memset(&cmd->channels[i].bssid_msb, 0xff, 2); wl1251_cmd_scan()
463 cmd->channels[i].early_termination = 0; wl1251_cmd_scan()
464 cmd->channels[i].tx_power_att = 0; wl1251_cmd_scan()
465 cmd->channels[i].channel = channels[i]->hw_value; wl1251_cmd_scan()
468 cmd->params.ssid_len = ssid_len; wl1251_cmd_scan()
470 memcpy(cmd->params.ssid, ssid, ssid_len); wl1251_cmd_scan()
472 ret = wl1251_cmd_send(wl, CMD_SCAN, cmd, sizeof(*cmd)); wl1251_cmd_scan()
474 wl1251_error("cmd scan failed: %d", ret); wl1251_cmd_scan()
478 wl1251_mem_read(wl, wl->cmd_box_addr, cmd, sizeof(*cmd)); wl1251_cmd_scan()
480 if (cmd->header.status != CMD_STATUS_SUCCESS) { wl1251_cmd_scan()
481 wl1251_error("cmd scan status wasn't success: %d", wl1251_cmd_scan()
482 cmd->header.status); wl1251_cmd_scan()
488 kfree(cmd); wl1251_cmd_scan()
494 struct wl1251_cmd_trigger_scan_to *cmd; wl1251_cmd_trigger_scan_to() local
497 wl1251_debug(DEBUG_CMD, "cmd trigger scan to"); wl1251_cmd_trigger_scan_to()
499 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl1251_cmd_trigger_scan_to()
500 if (!cmd) wl1251_cmd_trigger_scan_to()
503 cmd->timeout = timeout; wl1251_cmd_trigger_scan_to()
505 ret = wl1251_cmd_send(wl, CMD_TRIGGER_SCAN_TO, cmd, sizeof(*cmd)); wl1251_cmd_trigger_scan_to()
507 wl1251_error("cmd trigger scan to failed: %d", ret); wl1251_cmd_trigger_scan_to()
512 kfree(cmd); wl1251_cmd_trigger_scan_to()
H A Dspi.c59 u8 *cmd; wl1251_spi_reset() local
63 cmd = kzalloc(WSPI_INIT_CMD_LEN, GFP_KERNEL); wl1251_spi_reset()
64 if (!cmd) { wl1251_spi_reset()
65 wl1251_error("could not allocate cmd for spi reset"); wl1251_spi_reset()
72 memset(cmd, 0xff, WSPI_INIT_CMD_LEN); wl1251_spi_reset()
74 t.tx_buf = cmd; wl1251_spi_reset()
80 wl1251_dump(DEBUG_SPI, "spi reset -> ", cmd, WSPI_INIT_CMD_LEN); wl1251_spi_reset()
82 kfree(cmd); wl1251_spi_reset()
89 u8 *cmd = kzalloc(WSPI_INIT_CMD_LEN, GFP_KERNEL); wl1251_spi_wake() local
91 if (!cmd) { wl1251_spi_wake()
92 wl1251_error("could not allocate cmd for spi init"); wl1251_spi_wake()
102 cmd[0] = 0xff; wl1251_spi_wake()
103 cmd[1] = 0xff; wl1251_spi_wake()
104 cmd[2] = WSPI_INIT_CMD_START | WSPI_INIT_CMD_TX; wl1251_spi_wake()
105 cmd[3] = 0; wl1251_spi_wake()
106 cmd[4] = 0; wl1251_spi_wake()
107 cmd[5] = HW_ACCESS_WSPI_INIT_CMD_MASK << 3; wl1251_spi_wake()
108 cmd[5] |= HW_ACCESS_WSPI_FIXED_BUSY_LEN & WSPI_INIT_CMD_FIXEDBUSY_LEN; wl1251_spi_wake()
110 cmd[6] = WSPI_INIT_CMD_IOD | WSPI_INIT_CMD_IP | WSPI_INIT_CMD_CS wl1251_spi_wake()
114 cmd[6] |= WSPI_INIT_CMD_DIS_FIXEDBUSY; wl1251_spi_wake()
116 cmd[6] |= WSPI_INIT_CMD_EN_FIXEDBUSY; wl1251_spi_wake()
118 cmd[7] = crc7_be(0, cmd+2, WSPI_INIT_CMD_CRC_LEN) | WSPI_INIT_CMD_END; wl1251_spi_wake()
123 __swab32s((u32 *)cmd); wl1251_spi_wake()
124 __swab32s((u32 *)cmd+1); wl1251_spi_wake()
126 t.tx_buf = cmd; wl1251_spi_wake()
132 wl1251_dump(DEBUG_SPI, "spi init -> ", cmd, WSPI_INIT_CMD_LEN); wl1251_spi_wake()
134 kfree(cmd); wl1251_spi_wake()
149 u32 *cmd; wl1251_spi_read() local
151 cmd = &wl->buffer_cmd; wl1251_spi_read()
154 *cmd = 0; wl1251_spi_read()
155 *cmd |= WSPI_CMD_READ; wl1251_spi_read()
156 *cmd |= (len << WSPI_CMD_BYTE_LENGTH_OFFSET) & WSPI_CMD_BYTE_LENGTH; wl1251_spi_read()
157 *cmd |= addr & WSPI_CMD_BYTE_ADDR; wl1251_spi_read()
162 t[0].tx_buf = cmd; wl1251_spi_read()
179 wl1251_dump(DEBUG_SPI, "spi_read cmd -> ", cmd, sizeof(*cmd)); wl1251_spi_read()
188 u32 *cmd; wl1251_spi_write() local
190 cmd = &wl->buffer_cmd; wl1251_spi_write()
192 *cmd = 0; wl1251_spi_write()
193 *cmd |= WSPI_CMD_WRITE; wl1251_spi_write()
194 *cmd |= (len << WSPI_CMD_BYTE_LENGTH_OFFSET) & WSPI_CMD_BYTE_LENGTH; wl1251_spi_write()
195 *cmd |= addr & WSPI_CMD_BYTE_ADDR; wl1251_spi_write()
200 t[0].tx_buf = cmd; wl1251_spi_write()
201 t[0].len = sizeof(*cmd); wl1251_spi_write()
210 wl1251_dump(DEBUG_SPI, "spi_write cmd -> ", cmd, sizeof(*cmd)); wl1251_spi_write()
H A DMakefile1 wl1251-objs = main.o event.o tx.o rx.o ps.o cmd.o \
/linux-4.1.27/drivers/mmc/core/
H A Dsd_ops.c28 struct mmc_command cmd = {0}; mmc_app_cmd() local
33 cmd.opcode = MMC_APP_CMD; mmc_app_cmd()
36 cmd.arg = card->rca << 16; mmc_app_cmd()
37 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_AC; mmc_app_cmd()
39 cmd.arg = 0; mmc_app_cmd()
40 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_BCR; mmc_app_cmd()
43 err = mmc_wait_for_cmd(host, &cmd, 0); mmc_app_cmd()
48 if (!mmc_host_is_spi(host) && !(cmd.resp[0] & R1_APP_CMD)) mmc_app_cmd()
60 * @cmd: MMC command to start
69 struct mmc_command *cmd, int retries) mmc_wait_for_app_cmd()
75 BUG_ON(!cmd); mmc_wait_for_app_cmd()
89 if (cmd->resp[0] & R1_SPI_ILLEGAL_COMMAND) mmc_wait_for_app_cmd()
97 memset(cmd->resp, 0, sizeof(cmd->resp)); mmc_wait_for_app_cmd()
98 cmd->retries = 0; mmc_wait_for_app_cmd()
100 mrq.cmd = cmd; mmc_wait_for_app_cmd()
101 cmd->data = NULL; mmc_wait_for_app_cmd()
105 err = cmd->error; mmc_wait_for_app_cmd()
106 if (!cmd->error) mmc_wait_for_app_cmd()
111 if (cmd->resp[0] & R1_SPI_ILLEGAL_COMMAND) mmc_wait_for_app_cmd()
124 struct mmc_command cmd = {0}; mmc_app_set_bus_width() local
129 cmd.opcode = SD_APP_SET_BUS_WIDTH; mmc_app_set_bus_width()
130 cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; mmc_app_set_bus_width()
134 cmd.arg = SD_BUS_WIDTH_1; mmc_app_set_bus_width()
137 cmd.arg = SD_BUS_WIDTH_4; mmc_app_set_bus_width()
143 err = mmc_wait_for_app_cmd(card->host, card, &cmd, MMC_CMD_RETRIES); mmc_app_set_bus_width()
152 struct mmc_command cmd = {0}; mmc_send_app_op_cond() local
157 cmd.opcode = SD_APP_OP_COND; mmc_send_app_op_cond()
159 cmd.arg = ocr & (1 << 30); /* SPI only defines one bit */ mmc_send_app_op_cond()
161 cmd.arg = ocr; mmc_send_app_op_cond()
162 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R3 | MMC_CMD_BCR; mmc_send_app_op_cond()
165 err = mmc_wait_for_app_cmd(host, NULL, &cmd, MMC_CMD_RETRIES); mmc_send_app_op_cond()
175 if (!(cmd.resp[0] & R1_SPI_IDLE)) mmc_send_app_op_cond()
178 if (cmd.resp[0] & MMC_CARD_BUSY) mmc_send_app_op_cond()
191 *rocr = cmd.resp[0]; mmc_send_app_op_cond()
198 struct mmc_command cmd = {0}; mmc_send_if_cond() local
208 cmd.opcode = SD_SEND_IF_COND; mmc_send_if_cond()
209 cmd.arg = ((ocr & 0xFF8000) != 0) << 8 | test_pattern; mmc_send_if_cond()
210 cmd.flags = MMC_RSP_SPI_R7 | MMC_RSP_R7 | MMC_CMD_BCR; mmc_send_if_cond()
212 err = mmc_wait_for_cmd(host, &cmd, 0); mmc_send_if_cond()
217 result_pattern = cmd.resp[1] & 0xFF; mmc_send_if_cond()
219 result_pattern = cmd.resp[0] & 0xFF; mmc_send_if_cond()
230 struct mmc_command cmd = {0}; mmc_send_relative_addr() local
235 cmd.opcode = SD_SEND_RELATIVE_ADDR; mmc_send_relative_addr()
236 cmd.arg = 0; mmc_send_relative_addr()
237 cmd.flags = MMC_RSP_R6 | MMC_CMD_BCR; mmc_send_relative_addr()
239 err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES); mmc_send_relative_addr()
243 *rca = cmd.resp[0] >> 16; mmc_send_relative_addr()
252 struct mmc_command cmd = {0}; mmc_app_send_scr() local
274 mrq.cmd = &cmd; mmc_app_send_scr()
277 cmd.opcode = SD_APP_SEND_SCR; mmc_app_send_scr()
278 cmd.arg = 0; mmc_app_send_scr()
279 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_ADTC; mmc_app_send_scr()
296 if (cmd.error) mmc_app_send_scr()
297 return cmd.error; mmc_app_send_scr()
311 struct mmc_command cmd = {0}; mmc_sd_switch() local
323 mrq.cmd = &cmd; mmc_sd_switch()
326 cmd.opcode = SD_SWITCH; mmc_sd_switch()
327 cmd.arg = mode << 31 | 0x00FFFFFF; mmc_sd_switch()
328 cmd.arg &= ~(0xF << (group * 4)); mmc_sd_switch()
329 cmd.arg |= value << (group * 4); mmc_sd_switch()
330 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_ADTC; mmc_sd_switch()
344 if (cmd.error) mmc_sd_switch()
345 return cmd.error; mmc_sd_switch()
356 struct mmc_command cmd = {0}; mmc_app_sd_status() local
370 mrq.cmd = &cmd; mmc_app_sd_status()
373 cmd.opcode = SD_APP_SD_STATUS; mmc_app_sd_status()
374 cmd.arg = 0; mmc_app_sd_status()
375 cmd.flags = MMC_RSP_SPI_R2 | MMC_RSP_R1 | MMC_CMD_ADTC; mmc_app_sd_status()
389 if (cmd.error) mmc_app_sd_status()
390 return cmd.error; mmc_app_sd_status()
68 mmc_wait_for_app_cmd(struct mmc_host *host, struct mmc_card *card, struct mmc_command *cmd, int retries) mmc_wait_for_app_cmd() argument
H A Dsdio_ops.c24 struct mmc_command cmd = {0}; mmc_send_io_op_cond() local
29 cmd.opcode = SD_IO_SEND_OP_COND; mmc_send_io_op_cond()
30 cmd.arg = ocr; mmc_send_io_op_cond()
31 cmd.flags = MMC_RSP_SPI_R4 | MMC_RSP_R4 | MMC_CMD_BCR; mmc_send_io_op_cond()
34 err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES); mmc_send_io_op_cond()
50 if (cmd.resp[1] & MMC_CARD_BUSY) mmc_send_io_op_cond()
53 if (cmd.resp[0] & MMC_CARD_BUSY) mmc_send_io_op_cond()
63 *rocr = cmd.resp[mmc_host_is_spi(host) ? 1 : 0]; mmc_send_io_op_cond()
71 struct mmc_command cmd = {0}; mmc_io_rw_direct_host() local
81 cmd.opcode = SD_IO_RW_DIRECT; mmc_io_rw_direct_host()
82 cmd.arg = write ? 0x80000000 : 0x00000000; mmc_io_rw_direct_host()
83 cmd.arg |= fn << 28; mmc_io_rw_direct_host()
84 cmd.arg |= (write && out) ? 0x08000000 : 0x00000000; mmc_io_rw_direct_host()
85 cmd.arg |= addr << 9; mmc_io_rw_direct_host()
86 cmd.arg |= in; mmc_io_rw_direct_host()
87 cmd.flags = MMC_RSP_SPI_R5 | MMC_RSP_R5 | MMC_CMD_AC; mmc_io_rw_direct_host()
89 err = mmc_wait_for_cmd(host, &cmd, 0); mmc_io_rw_direct_host()
96 if (cmd.resp[0] & R5_ERROR) mmc_io_rw_direct_host()
98 if (cmd.resp[0] & R5_FUNCTION_NUMBER) mmc_io_rw_direct_host()
100 if (cmd.resp[0] & R5_OUT_OF_RANGE) mmc_io_rw_direct_host()
106 *out = (cmd.resp[0] >> 8) & 0xFF; mmc_io_rw_direct_host()
108 *out = cmd.resp[0] & 0xFF; mmc_io_rw_direct_host()
125 struct mmc_command cmd = {0}; mmc_io_rw_extended() local
140 mrq.cmd = &cmd; mmc_io_rw_extended()
143 cmd.opcode = SD_IO_RW_EXTENDED; mmc_io_rw_extended()
144 cmd.arg = write ? 0x80000000 : 0x00000000; mmc_io_rw_extended()
145 cmd.arg |= fn << 28; mmc_io_rw_extended()
146 cmd.arg |= incr_addr ? 0x04000000 : 0x00000000; mmc_io_rw_extended()
147 cmd.arg |= addr << 9; mmc_io_rw_extended()
149 cmd.arg |= (blksz == 512) ? 0 : blksz; /* byte mode */ mmc_io_rw_extended()
151 cmd.arg |= 0x08000000 | blocks; /* block mode */ mmc_io_rw_extended()
152 cmd.flags = MMC_RSP_SPI_R5 | MMC_RSP_R5 | MMC_CMD_ADTC; mmc_io_rw_extended()
188 if (cmd.error)
189 return cmd.error;
196 if (cmd.resp[0] & R5_ERROR)
198 if (cmd.resp[0] & R5_FUNCTION_NUMBER)
200 if (cmd.resp[0] & R5_OUT_OF_RANGE)
H A Dmmc_ops.c60 struct mmc_command cmd = {0}; __mmc_send_status() local
65 cmd.opcode = MMC_SEND_STATUS; __mmc_send_status()
67 cmd.arg = card->rca << 16; __mmc_send_status()
68 cmd.flags = MMC_RSP_SPI_R2 | MMC_RSP_R1 | MMC_CMD_AC; __mmc_send_status()
70 cmd.flags &= ~MMC_RSP_CRC; __mmc_send_status()
72 err = mmc_wait_for_cmd(card->host, &cmd, MMC_CMD_RETRIES); __mmc_send_status()
80 *status = cmd.resp[0]; __mmc_send_status()
93 struct mmc_command cmd = {0}; _mmc_select_card() local
97 cmd.opcode = MMC_SELECT_CARD; _mmc_select_card()
100 cmd.arg = card->rca << 16; _mmc_select_card()
101 cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; _mmc_select_card()
103 cmd.arg = 0; _mmc_select_card()
104 cmd.flags = MMC_RSP_NONE | MMC_CMD_AC; _mmc_select_card()
107 err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES); _mmc_select_card()
136 struct mmc_command cmd = {0}; mmc_set_dsr() local
138 cmd.opcode = MMC_SET_DSR; mmc_set_dsr()
140 cmd.arg = (host->dsr << 16) | 0xffff; mmc_set_dsr()
141 cmd.flags = MMC_RSP_NONE | MMC_CMD_AC; mmc_set_dsr()
143 return mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES); mmc_set_dsr()
149 struct mmc_command cmd = {0}; mmc_go_idle() local
165 cmd.opcode = MMC_GO_IDLE_STATE; mmc_go_idle()
166 cmd.arg = 0; mmc_go_idle()
167 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_NONE | MMC_CMD_BC; mmc_go_idle()
169 err = mmc_wait_for_cmd(host, &cmd, 0); mmc_go_idle()
185 struct mmc_command cmd = {0}; mmc_send_op_cond() local
190 cmd.opcode = MMC_SEND_OP_COND; mmc_send_op_cond()
191 cmd.arg = mmc_host_is_spi(host) ? 0 : ocr; mmc_send_op_cond()
192 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R3 | MMC_CMD_BCR; mmc_send_op_cond()
195 err = mmc_wait_for_cmd(host, &cmd, 0); mmc_send_op_cond()
205 if (!(cmd.resp[0] & R1_SPI_IDLE)) mmc_send_op_cond()
208 if (cmd.resp[0] & MMC_CARD_BUSY) mmc_send_op_cond()
218 *rocr = cmd.resp[0]; mmc_send_op_cond()
226 struct mmc_command cmd = {0}; mmc_all_send_cid() local
231 cmd.opcode = MMC_ALL_SEND_CID; mmc_all_send_cid()
232 cmd.arg = 0; mmc_all_send_cid()
233 cmd.flags = MMC_RSP_R2 | MMC_CMD_BCR; mmc_all_send_cid()
235 err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES); mmc_all_send_cid()
239 memcpy(cid, cmd.resp, sizeof(u32) * 4); mmc_all_send_cid()
247 struct mmc_command cmd = {0}; mmc_set_relative_addr() local
252 cmd.opcode = MMC_SET_RELATIVE_ADDR; mmc_set_relative_addr()
253 cmd.arg = card->rca << 16; mmc_set_relative_addr()
254 cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; mmc_set_relative_addr()
256 err = mmc_wait_for_cmd(card->host, &cmd, MMC_CMD_RETRIES); mmc_set_relative_addr()
267 struct mmc_command cmd = {0}; mmc_send_cxd_native() local
272 cmd.opcode = opcode; mmc_send_cxd_native()
273 cmd.arg = arg; mmc_send_cxd_native()
274 cmd.flags = MMC_RSP_R2 | MMC_CMD_AC; mmc_send_cxd_native()
276 err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES); mmc_send_cxd_native()
280 memcpy(cxd, cmd.resp, sizeof(u32) * 4); mmc_send_cxd_native()
294 struct mmc_command cmd = {0}; mmc_send_cxd_data() local
298 mrq.cmd = &cmd; mmc_send_cxd_data()
301 cmd.opcode = opcode; mmc_send_cxd_data()
302 cmd.arg = 0; mmc_send_cxd_data()
309 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_ADTC; mmc_send_cxd_data()
331 if (cmd.error) mmc_send_cxd_data()
332 return cmd.error; mmc_send_cxd_data()
424 struct mmc_command cmd = {0}; mmc_spi_read_ocr() local
427 cmd.opcode = MMC_SPI_READ_OCR; mmc_spi_read_ocr()
428 cmd.arg = highcap ? (1 << 30) : 0; mmc_spi_read_ocr()
429 cmd.flags = MMC_RSP_SPI_R3; mmc_spi_read_ocr()
431 err = mmc_wait_for_cmd(host, &cmd, 0); mmc_spi_read_ocr()
433 *ocrp = cmd.resp[1]; mmc_spi_read_ocr()
439 struct mmc_command cmd = {0}; mmc_spi_set_crc() local
442 cmd.opcode = MMC_SPI_CRC_ON_OFF; mmc_spi_set_crc()
443 cmd.flags = MMC_RSP_SPI_R1; mmc_spi_set_crc()
444 cmd.arg = use_crc; mmc_spi_set_crc()
446 err = mmc_wait_for_cmd(host, &cmd, 0); mmc_spi_set_crc()
455 * @set: cmd set values
461 * @send_status: send status cmd to poll for busy
462 * @ignore_crc: ignore CRC errors when sending status cmd to poll for busy
472 struct mmc_command cmd = {0}; __mmc_switch() local
478 * If the cmd timeout and the max_busy_timeout of the host are both __mmc_switch()
487 cmd.opcode = MMC_SWITCH; __mmc_switch()
488 cmd.arg = (MMC_SWITCH_MODE_WRITE_BYTE << 24) | __mmc_switch()
492 cmd.flags = MMC_CMD_AC; __mmc_switch()
494 cmd.flags |= MMC_RSP_SPI_R1B | MMC_RSP_R1B; __mmc_switch()
499 cmd.busy_timeout = timeout_ms; __mmc_switch()
501 cmd.flags |= MMC_RSP_SPI_R1 | MMC_RSP_R1; __mmc_switch()
505 cmd.sanitize_busy = true; __mmc_switch()
507 err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES); __mmc_switch()
522 /* We have an unspecified cmd timeout, use the fallback value. */ __mmc_switch()
583 struct mmc_command cmd = {0}; mmc_send_tuning() local
607 mrq.cmd = &cmd; mmc_send_tuning()
610 cmd.opcode = opcode; mmc_send_tuning()
611 cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC; mmc_send_tuning()
630 if (cmd.error) { mmc_send_tuning()
631 err = cmd.error; mmc_send_tuning()
654 struct mmc_command cmd = {0}; mmc_send_bus_test() local
684 mrq.cmd = &cmd; mmc_send_bus_test()
686 cmd.opcode = opcode; mmc_send_bus_test()
687 cmd.arg = 0; mmc_send_bus_test()
694 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_ADTC; mmc_send_bus_test()
718 if (cmd.error) mmc_send_bus_test()
719 return cmd.error; mmc_send_bus_test()
750 struct mmc_command cmd = {0}; mmc_send_hpi_cmd() local
762 cmd.flags = MMC_RSP_R1B | MMC_CMD_AC; mmc_send_hpi_cmd()
764 cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; mmc_send_hpi_cmd()
766 cmd.opcode = opcode; mmc_send_hpi_cmd()
767 cmd.arg = card->rca << 16 | 1; mmc_send_hpi_cmd()
769 err = mmc_wait_for_cmd(card->host, &cmd, 0); mmc_send_hpi_cmd()
773 err, cmd.resp[0]); mmc_send_hpi_cmd()
777 *status = cmd.resp[0]; mmc_send_hpi_cmd()
/linux-4.1.27/drivers/net/wireless/ti/wlcore/
H A Dcmd.c36 #include "cmd.h"
51 * return the cmd status code on success.
56 struct wl1271_cmd_header *cmd; __wlcore_cmd_send() local
67 if (WARN_ON_ONCE(len < sizeof(*cmd))) __wlcore_cmd_send()
70 cmd = buf; __wlcore_cmd_send()
71 cmd->id = cpu_to_le16(id); __wlcore_cmd_send()
72 cmd->status = 0; __wlcore_cmd_send()
116 ret = wlcore_read(wl, wl->cmd_box_addr, cmd, res_len, false); __wlcore_cmd_send()
120 status = le16_to_cpu(cmd->status); __wlcore_cmd_send()
131 * send command to fw and return cmd status on success
233 struct wl12xx_cmd_role_enable *cmd; wl12xx_cmd_role_enable() local
236 wl1271_debug(DEBUG_CMD, "cmd role enable"); wl12xx_cmd_role_enable()
241 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_role_enable()
242 if (!cmd) { wl12xx_cmd_role_enable()
248 cmd->role_id = find_first_zero_bit(wl->roles_map, WL12XX_MAX_ROLES); wl12xx_cmd_role_enable()
249 if (cmd->role_id >= WL12XX_MAX_ROLES) { wl12xx_cmd_role_enable()
254 memcpy(cmd->mac_address, addr, ETH_ALEN); wl12xx_cmd_role_enable()
255 cmd->role_type = role_type; wl12xx_cmd_role_enable()
257 ret = wl1271_cmd_send(wl, CMD_ROLE_ENABLE, cmd, sizeof(*cmd), 0); wl12xx_cmd_role_enable()
259 wl1271_error("failed to initiate cmd role enable"); wl12xx_cmd_role_enable()
263 __set_bit(cmd->role_id, wl->roles_map); wl12xx_cmd_role_enable()
264 *role_id = cmd->role_id; wl12xx_cmd_role_enable()
267 kfree(cmd); wl12xx_cmd_role_enable()
275 struct wl12xx_cmd_role_disable *cmd; wl12xx_cmd_role_disable() local
278 wl1271_debug(DEBUG_CMD, "cmd role disable"); wl12xx_cmd_role_disable()
283 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_role_disable()
284 if (!cmd) { wl12xx_cmd_role_disable()
288 cmd->role_id = *role_id; wl12xx_cmd_role_disable()
290 ret = wl1271_cmd_send(wl, CMD_ROLE_DISABLE, cmd, sizeof(*cmd), 0); wl12xx_cmd_role_disable()
292 wl1271_error("failed to initiate cmd role disable"); wl12xx_cmd_role_disable()
300 kfree(cmd); wl12xx_cmd_role_disable()
429 struct wl12xx_cmd_role_start *cmd; wl12xx_cmd_role_start_dev() local
432 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_role_start_dev()
433 if (!cmd) { wl12xx_cmd_role_start_dev()
438 wl1271_debug(DEBUG_CMD, "cmd role start dev %d", wlvif->dev_role_id); wl12xx_cmd_role_start_dev()
440 cmd->role_id = wlvif->dev_role_id; wl12xx_cmd_role_start_dev()
442 cmd->band = WLCORE_BAND_5GHZ; wl12xx_cmd_role_start_dev()
443 cmd->channel = channel; wl12xx_cmd_role_start_dev()
450 cmd->device.hlid = wlvif->dev_hlid; wl12xx_cmd_role_start_dev()
451 cmd->device.session = wl->session_ids[wlvif->dev_hlid]; wl12xx_cmd_role_start_dev()
454 cmd->role_id, cmd->device.hlid, cmd->device.session); wl12xx_cmd_role_start_dev()
456 ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0); wl12xx_cmd_role_start_dev()
458 wl1271_error("failed to initiate cmd role enable"); wl12xx_cmd_role_start_dev()
469 kfree(cmd); wl12xx_cmd_role_start_dev()
478 struct wl12xx_cmd_role_stop *cmd; wl12xx_cmd_role_stop_dev() local
484 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_role_stop_dev()
485 if (!cmd) { wl12xx_cmd_role_stop_dev()
490 wl1271_debug(DEBUG_CMD, "cmd role stop dev"); wl12xx_cmd_role_stop_dev()
492 cmd->role_id = wlvif->dev_role_id; wl12xx_cmd_role_stop_dev()
493 cmd->disc_type = DISCONNECT_IMMEDIATE; wl12xx_cmd_role_stop_dev()
494 cmd->reason = cpu_to_le16(WLAN_REASON_UNSPECIFIED); wl12xx_cmd_role_stop_dev()
496 ret = wl1271_cmd_send(wl, CMD_ROLE_STOP, cmd, sizeof(*cmd), 0); wl12xx_cmd_role_stop_dev()
498 wl1271_error("failed to initiate cmd role stop"); wl12xx_cmd_role_stop_dev()
505 kfree(cmd); wl12xx_cmd_role_stop_dev()
514 struct wl12xx_cmd_role_start *cmd; wl12xx_cmd_role_start_sta() local
518 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_role_start_sta()
519 if (!cmd) { wl12xx_cmd_role_start_sta()
524 wl1271_debug(DEBUG_CMD, "cmd role start sta %d", wlvif->role_id); wl12xx_cmd_role_start_sta()
526 cmd->role_id = wlvif->role_id; wl12xx_cmd_role_start_sta()
528 cmd->band = WLCORE_BAND_5GHZ; wl12xx_cmd_role_start_sta()
529 cmd->channel = wlvif->channel; wl12xx_cmd_role_start_sta()
530 cmd->sta.basic_rate_set = cpu_to_le32(wlvif->basic_rate_set); wl12xx_cmd_role_start_sta()
531 cmd->sta.beacon_interval = cpu_to_le16(wlvif->beacon_int); wl12xx_cmd_role_start_sta()
532 cmd->sta.ssid_type = WL12XX_SSID_TYPE_ANY; wl12xx_cmd_role_start_sta()
533 cmd->sta.ssid_len = wlvif->ssid_len; wl12xx_cmd_role_start_sta()
534 memcpy(cmd->sta.ssid, wlvif->ssid, wlvif->ssid_len); wl12xx_cmd_role_start_sta()
535 memcpy(cmd->sta.bssid, vif->bss_conf.bssid, ETH_ALEN); wl12xx_cmd_role_start_sta()
542 cmd->sta.local_rates = cpu_to_le32(supported_rates); wl12xx_cmd_role_start_sta()
544 cmd->channel_type = wlcore_get_native_channel_type(wlvif->channel_type); wl12xx_cmd_role_start_sta()
551 cmd->sta.hlid = wlvif->sta.hlid; wl12xx_cmd_role_start_sta()
552 cmd->sta.session = wl->session_ids[wlvif->sta.hlid]; wl12xx_cmd_role_start_sta()
559 cmd->sta.remote_rates = cpu_to_le32(supported_rates); wl12xx_cmd_role_start_sta()
563 wlvif->role_id, cmd->sta.hlid, cmd->sta.session, wl12xx_cmd_role_start_sta()
566 ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0); wl12xx_cmd_role_start_sta()
568 wl1271_error("failed to initiate cmd role start sta"); wl12xx_cmd_role_start_sta()
580 kfree(cmd); wl12xx_cmd_role_start_sta()
589 struct wl12xx_cmd_role_stop *cmd; wl12xx_cmd_role_stop_sta() local
595 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_role_stop_sta()
596 if (!cmd) { wl12xx_cmd_role_stop_sta()
601 wl1271_debug(DEBUG_CMD, "cmd role stop sta %d", wlvif->role_id); wl12xx_cmd_role_stop_sta()
603 cmd->role_id = wlvif->role_id; wl12xx_cmd_role_stop_sta()
604 cmd->disc_type = DISCONNECT_IMMEDIATE; wl12xx_cmd_role_stop_sta()
605 cmd->reason = cpu_to_le16(WLAN_REASON_UNSPECIFIED); wl12xx_cmd_role_stop_sta()
607 ret = wl1271_cmd_send(wl, CMD_ROLE_STOP, cmd, sizeof(*cmd), 0); wl12xx_cmd_role_stop_sta()
609 wl1271_error("failed to initiate cmd role stop sta"); wl12xx_cmd_role_stop_sta()
616 kfree(cmd); wl12xx_cmd_role_stop_sta()
624 struct wl12xx_cmd_role_start *cmd; wl12xx_cmd_role_start_ap() local
630 wl1271_debug(DEBUG_CMD, "cmd role start ap %d", wlvif->role_id); wl12xx_cmd_role_start_ap()
639 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_role_start_ap()
640 if (!cmd) { wl12xx_cmd_role_start_ap()
657 cmd->role_id = wlvif->role_id; wl12xx_cmd_role_start_ap()
658 cmd->ap.aging_period = cpu_to_le16(wl->conf.tx.ap_aging_period); wl12xx_cmd_role_start_ap()
659 cmd->ap.bss_index = WL1271_AP_BSS_INDEX; wl12xx_cmd_role_start_ap()
660 cmd->ap.global_hlid = wlvif->ap.global_hlid; wl12xx_cmd_role_start_ap()
661 cmd->ap.broadcast_hlid = wlvif->ap.bcast_hlid; wl12xx_cmd_role_start_ap()
662 cmd->ap.global_session_id = wl->session_ids[wlvif->ap.global_hlid]; wl12xx_cmd_role_start_ap()
663 cmd->ap.bcast_session_id = wl->session_ids[wlvif->ap.bcast_hlid]; wl12xx_cmd_role_start_ap()
664 cmd->ap.basic_rate_set = cpu_to_le32(wlvif->basic_rate_set); wl12xx_cmd_role_start_ap()
665 cmd->ap.beacon_interval = cpu_to_le16(wlvif->beacon_int); wl12xx_cmd_role_start_ap()
666 cmd->ap.dtim_interval = bss_conf->dtim_period; wl12xx_cmd_role_start_ap()
667 cmd->ap.beacon_expiry = WL1271_AP_DEF_BEACON_EXP; wl12xx_cmd_role_start_ap()
669 cmd->ap.reset_tsf = 1; /* By default reset AP TSF */ wl12xx_cmd_role_start_ap()
670 cmd->ap.wmm = wlvif->wmm_enabled; wl12xx_cmd_role_start_ap()
671 cmd->channel = wlvif->channel; wl12xx_cmd_role_start_ap()
672 cmd->channel_type = wlcore_get_native_channel_type(wlvif->channel_type); wl12xx_cmd_role_start_ap()
676 cmd->ap.ssid_type = WL12XX_SSID_TYPE_PUBLIC; wl12xx_cmd_role_start_ap()
677 cmd->ap.ssid_len = wlvif->ssid_len; wl12xx_cmd_role_start_ap()
678 memcpy(cmd->ap.ssid, wlvif->ssid, wlvif->ssid_len); wl12xx_cmd_role_start_ap()
680 cmd->ap.ssid_type = WL12XX_SSID_TYPE_HIDDEN; wl12xx_cmd_role_start_ap()
681 cmd->ap.ssid_len = bss_conf->ssid_len; wl12xx_cmd_role_start_ap()
682 memcpy(cmd->ap.ssid, bss_conf->ssid, bss_conf->ssid_len); wl12xx_cmd_role_start_ap()
690 wl1271_debug(DEBUG_CMD, "cmd role start ap with supported_rates 0x%08x", wl12xx_cmd_role_start_ap()
693 cmd->ap.local_rates = cpu_to_le32(supported_rates); wl12xx_cmd_role_start_ap()
697 cmd->band = WLCORE_BAND_2_4GHZ; wl12xx_cmd_role_start_ap()
700 cmd->band = WLCORE_BAND_5GHZ; wl12xx_cmd_role_start_ap()
704 cmd->band = WLCORE_BAND_2_4GHZ; wl12xx_cmd_role_start_ap()
708 ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0); wl12xx_cmd_role_start_ap()
710 wl1271_error("failed to initiate cmd role start ap"); wl12xx_cmd_role_start_ap()
723 kfree(cmd); wl12xx_cmd_role_start_ap()
731 struct wl12xx_cmd_role_stop *cmd; wl12xx_cmd_role_stop_ap() local
734 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_role_stop_ap()
735 if (!cmd) { wl12xx_cmd_role_stop_ap()
740 wl1271_debug(DEBUG_CMD, "cmd role stop ap %d", wlvif->role_id); wl12xx_cmd_role_stop_ap()
742 cmd->role_id = wlvif->role_id; wl12xx_cmd_role_stop_ap()
744 ret = wl1271_cmd_send(wl, CMD_ROLE_STOP, cmd, sizeof(*cmd), 0); wl12xx_cmd_role_stop_ap()
746 wl1271_error("failed to initiate cmd role stop ap"); wl12xx_cmd_role_stop_ap()
754 kfree(cmd); wl12xx_cmd_role_stop_ap()
763 struct wl12xx_cmd_role_start *cmd; wl12xx_cmd_role_start_ibss() local
767 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_role_start_ibss()
768 if (!cmd) { wl12xx_cmd_role_start_ibss()
773 wl1271_debug(DEBUG_CMD, "cmd role start ibss %d", wlvif->role_id); wl12xx_cmd_role_start_ibss()
775 cmd->role_id = wlvif->role_id; wl12xx_cmd_role_start_ibss()
777 cmd->band = WLCORE_BAND_5GHZ; wl12xx_cmd_role_start_ibss()
778 cmd->channel = wlvif->channel; wl12xx_cmd_role_start_ibss()
779 cmd->ibss.basic_rate_set = cpu_to_le32(wlvif->basic_rate_set); wl12xx_cmd_role_start_ibss()
780 cmd->ibss.beacon_interval = cpu_to_le16(wlvif->beacon_int); wl12xx_cmd_role_start_ibss()
781 cmd->ibss.dtim_interval = bss_conf->dtim_period; wl12xx_cmd_role_start_ibss()
782 cmd->ibss.ssid_type = WL12XX_SSID_TYPE_ANY; wl12xx_cmd_role_start_ibss()
783 cmd->ibss.ssid_len = wlvif->ssid_len; wl12xx_cmd_role_start_ibss()
784 memcpy(cmd->ibss.ssid, wlvif->ssid, wlvif->ssid_len); wl12xx_cmd_role_start_ibss()
785 memcpy(cmd->ibss.bssid, vif->bss_conf.bssid, ETH_ALEN); wl12xx_cmd_role_start_ibss()
786 cmd->sta.local_rates = cpu_to_le32(wlvif->rate_set); wl12xx_cmd_role_start_ibss()
793 cmd->ibss.hlid = wlvif->sta.hlid; wl12xx_cmd_role_start_ibss()
794 cmd->ibss.remote_rates = cpu_to_le32(wlvif->rate_set); wl12xx_cmd_role_start_ibss()
798 wlvif->role_id, cmd->sta.hlid, cmd->sta.session, wl12xx_cmd_role_start_ibss()
804 ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0); wl12xx_cmd_role_start_ibss()
806 wl1271_error("failed to initiate cmd role enable"); wl12xx_cmd_role_start_ibss()
817 kfree(cmd); wl12xx_cmd_role_start_ibss()
837 wl1271_debug(DEBUG_CMD, "cmd test"); wl1271_cmd_test()
867 wl1271_debug(DEBUG_CMD, "cmd interrogate"); wl1271_cmd_interrogate()
888 * @valid_rets: bitmap of valid cmd status codes (i.e. return values).
889 * return the cmd status on success.
897 wl1271_debug(DEBUG_CMD, "cmd configure (%d)", id); wlcore_cmd_configure_failsafe()
933 struct cmd_enabledisable_path *cmd; wl1271_cmd_data_path() local
937 wl1271_debug(DEBUG_CMD, "cmd data path"); wl1271_cmd_data_path()
939 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl1271_cmd_data_path()
940 if (!cmd) { wl1271_cmd_data_path()
946 cmd->channel = 1; wl1271_cmd_data_path()
956 ret = wl1271_cmd_send(wl, cmd_rx, cmd, sizeof(*cmd), 0); wl1271_cmd_data_path()
958 wl1271_error("rx %s cmd for channel %d failed", wl1271_cmd_data_path()
959 enable ? "start" : "stop", cmd->channel); wl1271_cmd_data_path()
963 wl1271_debug(DEBUG_BOOT, "rx %s cmd channel %d", wl1271_cmd_data_path()
964 enable ? "start" : "stop", cmd->channel); wl1271_cmd_data_path()
966 ret = wl1271_cmd_send(wl, cmd_tx, cmd, sizeof(*cmd), 0); wl1271_cmd_data_path()
968 wl1271_error("tx %s cmd for channel %d failed", wl1271_cmd_data_path()
969 enable ? "start" : "stop", cmd->channel); wl1271_cmd_data_path()
973 wl1271_debug(DEBUG_BOOT, "tx %s cmd channel %d", wl1271_cmd_data_path()
974 enable ? "start" : "stop", cmd->channel); wl1271_cmd_data_path()
977 kfree(cmd); wl1271_cmd_data_path()
988 wl1271_debug(DEBUG_CMD, "cmd set ps mode"); wl1271_cmd_ps_mode()
1003 wl1271_error("cmd set_ps_mode failed"); wl1271_cmd_ps_mode()
1016 struct wl1271_cmd_template_set *cmd; wl1271_cmd_template_set() local
1019 wl1271_debug(DEBUG_CMD, "cmd template_set %d (role %d)", wl1271_cmd_template_set()
1025 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl1271_cmd_template_set()
1026 if (!cmd) { wl1271_cmd_template_set()
1032 cmd->role_id = role_id; wl1271_cmd_template_set()
1033 cmd->len = cpu_to_le16(buf_len); wl1271_cmd_template_set()
1034 cmd->template_type = template_id; wl1271_cmd_template_set()
1035 cmd->enabled_rates = cpu_to_le32(rates); wl1271_cmd_template_set()
1036 cmd->short_retry_limit = wl->conf.tx.tmpl_short_retry_limit; wl1271_cmd_template_set()
1037 cmd->long_retry_limit = wl->conf.tx.tmpl_long_retry_limit; wl1271_cmd_template_set()
1038 cmd->index = index; wl1271_cmd_template_set()
1041 memcpy(cmd->template_data, buf, buf_len); wl1271_cmd_template_set()
1043 ret = wl1271_cmd_send(wl, CMD_SET_TEMPLATE, cmd, sizeof(*cmd), 0); wl1271_cmd_template_set()
1045 wl1271_warning("cmd set_template failed: %d", ret); wl1271_cmd_template_set()
1050 kfree(cmd); wl1271_cmd_template_set()
1083 wl1271_warning("cmd buld null data failed %d", ret); wl12xx_cmd_build_null_data()
1108 wl1271_warning("cmd build klv null data failed %d", ret); wl12xx_cmd_build_klv_null_data()
1332 struct wl1271_cmd_set_keys *cmd; wl12xx_cmd_set_default_wep_key() local
1335 wl1271_debug(DEBUG_CMD, "cmd set_default_wep_key %d", id); wl12xx_cmd_set_default_wep_key()
1337 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_set_default_wep_key()
1338 if (!cmd) { wl12xx_cmd_set_default_wep_key()
1343 cmd->hlid = hlid; wl12xx_cmd_set_default_wep_key()
1344 cmd->key_id = id; wl12xx_cmd_set_default_wep_key()
1345 cmd->lid_key_type = WEP_DEFAULT_LID_TYPE; wl12xx_cmd_set_default_wep_key()
1346 cmd->key_action = cpu_to_le16(KEY_SET_ID); wl12xx_cmd_set_default_wep_key()
1347 cmd->key_type = KEY_WEP; wl12xx_cmd_set_default_wep_key()
1349 ret = wl1271_cmd_send(wl, CMD_SET_KEYS, cmd, sizeof(*cmd), 0); wl12xx_cmd_set_default_wep_key()
1351 wl1271_warning("cmd set_default_wep_key failed: %d", ret); wl12xx_cmd_set_default_wep_key()
1356 kfree(cmd); wl12xx_cmd_set_default_wep_key()
1366 struct wl1271_cmd_set_keys *cmd; wl1271_cmd_set_sta_key() local
1373 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl1271_cmd_set_sta_key()
1374 if (!cmd) { wl1271_cmd_set_sta_key()
1379 cmd->hlid = wlvif->sta.hlid; wl1271_cmd_set_sta_key()
1382 cmd->lid_key_type = WEP_DEFAULT_LID_TYPE; wl1271_cmd_set_sta_key()
1384 cmd->lid_key_type = BROADCAST_LID_TYPE; wl1271_cmd_set_sta_key()
1386 cmd->lid_key_type = UNICAST_LID_TYPE; wl1271_cmd_set_sta_key()
1388 cmd->key_action = cpu_to_le16(action); wl1271_cmd_set_sta_key()
1389 cmd->key_size = key_size; wl1271_cmd_set_sta_key()
1390 cmd->key_type = key_type; wl1271_cmd_set_sta_key()
1392 cmd->ac_seq_num16[0] = cpu_to_le16(tx_seq_16); wl1271_cmd_set_sta_key()
1393 cmd->ac_seq_num32[0] = cpu_to_le32(tx_seq_32); wl1271_cmd_set_sta_key()
1395 cmd->key_id = id; wl1271_cmd_set_sta_key()
1404 memcpy(cmd->key, key, 16); wl1271_cmd_set_sta_key()
1405 memcpy(cmd->key + 16, key + 24, 8); wl1271_cmd_set_sta_key()
1406 memcpy(cmd->key + 24, key + 16, 8); wl1271_cmd_set_sta_key()
1409 memcpy(cmd->key, key, key_size); wl1271_cmd_set_sta_key()
1412 wl1271_dump(DEBUG_CRYPT, "TARGET KEY: ", cmd, sizeof(*cmd)); wl1271_cmd_set_sta_key()
1414 ret = wl1271_cmd_send(wl, CMD_SET_KEYS, cmd, sizeof(*cmd), 0); wl1271_cmd_set_sta_key()
1421 kfree(cmd); wl1271_cmd_set_sta_key()
1435 struct wl1271_cmd_set_keys *cmd; wl1271_cmd_set_ap_key() local
1439 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl1271_cmd_set_ap_key()
1440 if (!cmd) wl1271_cmd_set_ap_key()
1456 cmd->lid_key_type = lid_type; wl1271_cmd_set_ap_key()
1457 cmd->hlid = hlid; wl1271_cmd_set_ap_key()
1458 cmd->key_action = cpu_to_le16(action); wl1271_cmd_set_ap_key()
1459 cmd->key_size = key_size; wl1271_cmd_set_ap_key()
1460 cmd->key_type = key_type; wl1271_cmd_set_ap_key()
1461 cmd->key_id = id; wl1271_cmd_set_ap_key()
1462 cmd->ac_seq_num16[0] = cpu_to_le16(tx_seq_16); wl1271_cmd_set_ap_key()
1463 cmd->ac_seq_num32[0] = cpu_to_le32(tx_seq_32); wl1271_cmd_set_ap_key()
1472 memcpy(cmd->key, key, 16); wl1271_cmd_set_ap_key()
1473 memcpy(cmd->key + 16, key + 24, 8); wl1271_cmd_set_ap_key()
1474 memcpy(cmd->key + 24, key + 16, 8); wl1271_cmd_set_ap_key()
1476 memcpy(cmd->key, key, key_size); wl1271_cmd_set_ap_key()
1479 wl1271_dump(DEBUG_CRYPT, "TARGET AP KEY: ", cmd, sizeof(*cmd)); wl1271_cmd_set_ap_key()
1481 ret = wl1271_cmd_send(wl, CMD_SET_KEYS, cmd, sizeof(*cmd), 0); wl1271_cmd_set_ap_key()
1488 kfree(cmd); wl1271_cmd_set_ap_key()
1495 struct wl12xx_cmd_set_peer_state *cmd; wl12xx_cmd_set_peer_state() local
1498 wl1271_debug(DEBUG_CMD, "cmd set peer state (hlid=%d)", hlid); wl12xx_cmd_set_peer_state()
1500 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_set_peer_state()
1501 if (!cmd) { wl12xx_cmd_set_peer_state()
1506 cmd->hlid = hlid; wl12xx_cmd_set_peer_state()
1507 cmd->state = WL1271_CMD_STA_STATE_CONNECTED; wl12xx_cmd_set_peer_state()
1511 cmd->wmm = wlvif->wmm_enabled; wl12xx_cmd_set_peer_state()
1513 ret = wl1271_cmd_send(wl, CMD_SET_PEER_STATE, cmd, sizeof(*cmd), 0); wl12xx_cmd_set_peer_state()
1520 kfree(cmd); wl12xx_cmd_set_peer_state()
1529 struct wl12xx_cmd_add_peer *cmd; wl12xx_cmd_add_peer() local
1533 wl1271_debug(DEBUG_CMD, "cmd add peer %d", (int)hlid); wl12xx_cmd_add_peer()
1535 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_add_peer()
1536 if (!cmd) { wl12xx_cmd_add_peer()
1541 memcpy(cmd->addr, sta->addr, ETH_ALEN); wl12xx_cmd_add_peer()
1542 cmd->bss_index = WL1271_AP_BSS_INDEX; wl12xx_cmd_add_peer()
1543 cmd->aid = sta->aid; wl12xx_cmd_add_peer()
1544 cmd->hlid = hlid; wl12xx_cmd_add_peer()
1545 cmd->sp_len = sta->max_sp; wl12xx_cmd_add_peer()
1546 cmd->wmm = sta->wme ? 1 : 0; wl12xx_cmd_add_peer()
1547 cmd->session_id = wl->session_ids[hlid]; wl12xx_cmd_add_peer()
1548 cmd->role_id = wlvif->role_id; wl12xx_cmd_add_peer()
1552 cmd->psd_type[NUM_ACCESS_CATEGORIES_COPY-1-i] = wl12xx_cmd_add_peer()
1555 cmd->psd_type[NUM_ACCESS_CATEGORIES_COPY-1-i] = wl12xx_cmd_add_peer()
1565 cmd->supported_rates = wl12xx_cmd_add_peer()
1570 cmd->supported_rates, sta->uapsd_queues); wl12xx_cmd_add_peer()
1572 ret = wl1271_cmd_send(wl, CMD_ADD_PEER, cmd, sizeof(*cmd), 0); wl12xx_cmd_add_peer()
1574 wl1271_error("failed to initiate cmd add peer"); wl12xx_cmd_add_peer()
1579 kfree(cmd); wl12xx_cmd_add_peer()
1588 struct wl12xx_cmd_remove_peer *cmd; wl12xx_cmd_remove_peer() local
1592 wl1271_debug(DEBUG_CMD, "cmd remove peer %d", (int)hlid); wl12xx_cmd_remove_peer()
1594 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_remove_peer()
1595 if (!cmd) { wl12xx_cmd_remove_peer()
1600 cmd->hlid = hlid; wl12xx_cmd_remove_peer()
1602 cmd->reason_opcode = 0; wl12xx_cmd_remove_peer()
1603 cmd->send_deauth_flag = 0; wl12xx_cmd_remove_peer()
1604 cmd->role_id = wlvif->role_id; wl12xx_cmd_remove_peer()
1606 ret = wl1271_cmd_send(wl, CMD_REMOVE_PEER, cmd, sizeof(*cmd), 0); wl12xx_cmd_remove_peer()
1608 wl1271_error("failed to initiate cmd remove peer"); wl12xx_cmd_remove_peer()
1625 kfree(cmd); wl12xx_cmd_remove_peer()
1688 struct wl12xx_cmd_regdomain_dfs_config *cmd = NULL; wlcore_cmd_regdomain_config_locked() local
1698 wl1271_debug(DEBUG_CMD, "cmd reg domain config"); wlcore_cmd_regdomain_config_locked()
1731 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wlcore_cmd_regdomain_config_locked()
1732 if (!cmd) { wlcore_cmd_regdomain_config_locked()
1737 cmd->ch_bit_map1 = cpu_to_le32(tmp_ch_bitmap[0]); wlcore_cmd_regdomain_config_locked()
1738 cmd->ch_bit_map2 = cpu_to_le32(tmp_ch_bitmap[1]); wlcore_cmd_regdomain_config_locked()
1739 cmd->dfs_region = wl->dfs_region; wlcore_cmd_regdomain_config_locked()
1742 "cmd reg domain bitmap1: 0x%08x, bitmap2: 0x%08x", wlcore_cmd_regdomain_config_locked()
1743 cmd->ch_bit_map1, cmd->ch_bit_map2); wlcore_cmd_regdomain_config_locked()
1745 ret = wl1271_cmd_send(wl, CMD_DFS_CHANNEL_CONFIG, cmd, sizeof(*cmd), 0); wlcore_cmd_regdomain_config_locked()
1765 kfree(cmd); wlcore_cmd_regdomain_config_locked()
1771 struct wl12xx_cmd_config_fwlog *cmd; wl12xx_cmd_config_fwlog() local
1774 wl1271_debug(DEBUG_CMD, "cmd config firmware logger"); wl12xx_cmd_config_fwlog()
1776 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_config_fwlog()
1777 if (!cmd) { wl12xx_cmd_config_fwlog()
1782 cmd->logger_mode = wl->conf.fwlog.mode; wl12xx_cmd_config_fwlog()
1783 cmd->log_severity = wl->conf.fwlog.severity; wl12xx_cmd_config_fwlog()
1784 cmd->timestamp = wl->conf.fwlog.timestamp; wl12xx_cmd_config_fwlog()
1785 cmd->output = wl->conf.fwlog.output; wl12xx_cmd_config_fwlog()
1786 cmd->threshold = wl->conf.fwlog.threshold; wl12xx_cmd_config_fwlog()
1788 ret = wl1271_cmd_send(wl, CMD_CONFIG_FWLOGGER, cmd, sizeof(*cmd), 0); wl12xx_cmd_config_fwlog()
1795 kfree(cmd); wl12xx_cmd_config_fwlog()
1803 struct wl12xx_cmd_start_fwlog *cmd; wl12xx_cmd_start_fwlog() local
1806 wl1271_debug(DEBUG_CMD, "cmd start firmware logger"); wl12xx_cmd_start_fwlog()
1808 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_start_fwlog()
1809 if (!cmd) { wl12xx_cmd_start_fwlog()
1814 ret = wl1271_cmd_send(wl, CMD_START_FWLOGGER, cmd, sizeof(*cmd), 0); wl12xx_cmd_start_fwlog()
1821 kfree(cmd); wl12xx_cmd_start_fwlog()
1829 struct wl12xx_cmd_stop_fwlog *cmd; wl12xx_cmd_stop_fwlog() local
1832 wl1271_debug(DEBUG_CMD, "cmd stop firmware logger"); wl12xx_cmd_stop_fwlog()
1834 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_stop_fwlog()
1835 if (!cmd) { wl12xx_cmd_stop_fwlog()
1840 ret = wl1271_cmd_send(wl, CMD_STOP_FWLOGGER, cmd, sizeof(*cmd), 0); wl12xx_cmd_stop_fwlog()
1847 kfree(cmd); wl12xx_cmd_stop_fwlog()
1856 struct wl12xx_cmd_roc *cmd; wl12xx_cmd_roc() local
1859 wl1271_debug(DEBUG_CMD, "cmd roc %d (%d)", channel, role_id); wl12xx_cmd_roc()
1864 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_roc()
1865 if (!cmd) { wl12xx_cmd_roc()
1870 cmd->role_id = role_id; wl12xx_cmd_roc()
1871 cmd->channel = channel; wl12xx_cmd_roc()
1874 cmd->band = WLCORE_BAND_2_4GHZ; wl12xx_cmd_roc()
1877 cmd->band = WLCORE_BAND_5GHZ; wl12xx_cmd_roc()
1886 ret = wl1271_cmd_send(wl, CMD_REMAIN_ON_CHANNEL, cmd, sizeof(*cmd), 0); wl12xx_cmd_roc()
1893 kfree(cmd); wl12xx_cmd_roc()
1901 struct wl12xx_cmd_croc *cmd; wl12xx_cmd_croc() local
1904 wl1271_debug(DEBUG_CMD, "cmd croc (%d)", role_id); wl12xx_cmd_croc()
1906 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_croc()
1907 if (!cmd) { wl12xx_cmd_croc()
1911 cmd->role_id = role_id; wl12xx_cmd_croc()
1913 ret = wl1271_cmd_send(wl, CMD_CANCEL_REMAIN_ON_CHANNEL, cmd, wl12xx_cmd_croc()
1914 sizeof(*cmd), 0); wl12xx_cmd_croc()
1921 kfree(cmd); wl12xx_cmd_croc()
1970 struct wl12xx_cmd_stop_channel_switch *cmd; wl12xx_cmd_stop_channel_switch() local
1973 wl1271_debug(DEBUG_ACX, "cmd stop channel switch"); wl12xx_cmd_stop_channel_switch()
1975 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_cmd_stop_channel_switch()
1976 if (!cmd) { wl12xx_cmd_stop_channel_switch()
1981 cmd->role_id = wlvif->role_id; wl12xx_cmd_stop_channel_switch()
1983 ret = wl1271_cmd_send(wl, CMD_STOP_CHANNEL_SWICTH, cmd, sizeof(*cmd), 0); wl12xx_cmd_stop_channel_switch()
1990 kfree(cmd); wl12xx_cmd_stop_channel_switch()
H A Dspi.c89 u8 *cmd; wl12xx_spi_reset() local
93 cmd = kzalloc(WSPI_INIT_CMD_LEN, GFP_KERNEL); wl12xx_spi_reset()
94 if (!cmd) { wl12xx_spi_reset()
96 "could not allocate cmd for spi reset\n"); wl12xx_spi_reset()
103 memset(cmd, 0xff, WSPI_INIT_CMD_LEN); wl12xx_spi_reset()
105 t.tx_buf = cmd; wl12xx_spi_reset()
111 kfree(cmd); wl12xx_spi_reset()
119 u8 *cmd = kzalloc(WSPI_INIT_CMD_LEN, GFP_KERNEL); wl12xx_spi_init() local
121 if (!cmd) { wl12xx_spi_init()
123 "could not allocate cmd for spi init\n"); wl12xx_spi_init()
134 cmd[0] = 0xff; wl12xx_spi_init()
135 cmd[1] = 0xff; wl12xx_spi_init()
136 cmd[2] = WSPI_INIT_CMD_START | WSPI_INIT_CMD_TX; wl12xx_spi_init()
137 cmd[3] = 0; wl12xx_spi_init()
138 cmd[4] = 0; wl12xx_spi_init()
139 cmd[5] = HW_ACCESS_WSPI_INIT_CMD_MASK << 3; wl12xx_spi_init()
140 cmd[5] |= HW_ACCESS_WSPI_FIXED_BUSY_LEN & WSPI_INIT_CMD_FIXEDBUSY_LEN; wl12xx_spi_init()
142 cmd[6] = WSPI_INIT_CMD_IOD | WSPI_INIT_CMD_IP | WSPI_INIT_CMD_CS wl12xx_spi_init()
146 cmd[6] |= WSPI_INIT_CMD_DIS_FIXEDBUSY; wl12xx_spi_init()
148 cmd[6] |= WSPI_INIT_CMD_EN_FIXEDBUSY; wl12xx_spi_init()
150 cmd[7] = crc7_be(0, cmd+2, WSPI_INIT_CMD_CRC_LEN) | WSPI_INIT_CMD_END; wl12xx_spi_init()
155 __swab32s((u32 *)cmd); wl12xx_spi_init()
156 __swab32s((u32 *)cmd+1); wl12xx_spi_init()
158 t.tx_buf = cmd; wl12xx_spi_init()
163 kfree(cmd); wl12xx_spi_init()
211 u32 *cmd; wl12xx_spi_raw_read() local
217 cmd = &wl->buffer_cmd; wl12xx_spi_raw_read()
220 *cmd = 0; wl12xx_spi_raw_read()
221 *cmd |= WSPI_CMD_READ; wl12xx_spi_raw_read()
222 *cmd |= (chunk_len << WSPI_CMD_BYTE_LENGTH_OFFSET) & wl12xx_spi_raw_read()
224 *cmd |= addr & WSPI_CMD_BYTE_ADDR; wl12xx_spi_raw_read()
227 *cmd |= WSPI_CMD_FIXED; wl12xx_spi_raw_read()
232 t[0].tx_buf = cmd; wl12xx_spi_raw_read()
278 u32 *cmd; wl12xx_spi_raw_write() local
287 cmd = &commands[0]; wl12xx_spi_raw_write()
292 *cmd = 0; wl12xx_spi_raw_write()
293 *cmd |= WSPI_CMD_WRITE; wl12xx_spi_raw_write()
294 *cmd |= (chunk_len << WSPI_CMD_BYTE_LENGTH_OFFSET) & wl12xx_spi_raw_write()
296 *cmd |= addr & WSPI_CMD_BYTE_ADDR; wl12xx_spi_raw_write()
299 *cmd |= WSPI_CMD_FIXED; wl12xx_spi_raw_write()
301 t[i].tx_buf = cmd; wl12xx_spi_raw_write()
302 t[i].len = sizeof(*cmd); wl12xx_spi_raw_write()
313 cmd++; wl12xx_spi_raw_write()
H A DMakefile1 wlcore-objs = main.o cmd.o io.o event.o tx.o rx.o ps.o acx.o \
H A Dscan.c28 #include "cmd.h"
383 struct wl1271_cmd_sched_scan_ssid_list *cmd = NULL; wlcore_scan_sched_scan_ssid_list() local
388 wl1271_debug((DEBUG_CMD | DEBUG_SCAN), "cmd sched scan ssid list"); wlcore_scan_sched_scan_ssid_list()
403 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wlcore_scan_sched_scan_ssid_list()
404 if (!cmd) { wlcore_scan_sched_scan_ssid_list()
409 cmd->role_id = wlvif->role_id; wlcore_scan_sched_scan_ssid_list()
415 cmd->ssids[cmd->n_ssids].type = (ssids[i].ssid_len) ? wlcore_scan_sched_scan_ssid_list()
417 cmd->ssids[cmd->n_ssids].len = ssids[i].ssid_len; wlcore_scan_sched_scan_ssid_list()
418 memcpy(cmd->ssids[cmd->n_ssids].ssid, ssids[i].ssid, wlcore_scan_sched_scan_ssid_list()
420 cmd->n_ssids++; wlcore_scan_sched_scan_ssid_list()
431 cmd->ssids[cmd->n_ssids].type = SCAN_SSID_TYPE_PUBLIC; wlcore_scan_sched_scan_ssid_list()
432 cmd->ssids[cmd->n_ssids].len = sets[i].ssid.ssid_len; wlcore_scan_sched_scan_ssid_list()
433 memcpy(cmd->ssids[cmd->n_ssids].ssid, wlcore_scan_sched_scan_ssid_list()
435 cmd->n_ssids++; wlcore_scan_sched_scan_ssid_list()
447 for (j = 0; j < cmd->n_ssids; j++) wlcore_scan_sched_scan_ssid_list()
449 cmd->ssids[j].len) && wlcore_scan_sched_scan_ssid_list()
451 cmd->ssids[j].ssid, wlcore_scan_sched_scan_ssid_list()
453 cmd->ssids[j].type = wlcore_scan_sched_scan_ssid_list()
458 if (j == cmd->n_ssids) { wlcore_scan_sched_scan_ssid_list()
466 ret = wl1271_cmd_send(wl, CMD_CONNECTION_SCAN_SSID_CFG, cmd, wlcore_scan_sched_scan_ssid_list()
467 sizeof(*cmd), 0); wlcore_scan_sched_scan_ssid_list()
469 wl1271_error("cmd sched scan ssid list failed"); wlcore_scan_sched_scan_ssid_list()
474 kfree(cmd); wlcore_scan_sched_scan_ssid_list()
/linux-4.1.27/drivers/media/usb/cpia2/
H A Dcpia2_core.c144 struct cpia2_command cmd; cpia2_do_command() local
147 cmd.command = command; cpia2_do_command()
148 cmd.reg_count = 2; /* default */ cpia2_do_command()
149 cmd.direction = direction; cpia2_do_command()
156 cmd.req_mode = cpia2_do_command()
158 cmd.start = CPIA2_SYSTEM_DEVICE_HI; cpia2_do_command()
161 cmd.req_mode = cpia2_do_command()
163 cmd.reg_count = 8; cpia2_do_command()
164 cmd.start = CPIA2_SYSTEM_DESCRIP_VID_HI; cpia2_do_command()
167 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VC; cpia2_do_command()
168 cmd.start = CPIA2_VC_ASIC_ID; cpia2_do_command()
171 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
172 cmd.start = CPIA2_VP_SENSOR_FLAGS; cpia2_do_command()
175 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
176 cmd.start = CPIA2_VP_DEVICEH; cpia2_do_command()
179 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
181 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
182 cmd.reg_count = 1; cpia2_do_command()
184 cmd.start = CPIA2_VP4_EXPOSURE_TARGET; cpia2_do_command()
186 cmd.start = CPIA2_VP5_EXPOSURE_TARGET; cpia2_do_command()
189 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
191 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
192 cmd.reg_count = 1; cpia2_do_command()
193 cmd.start = CPIA2_VP_YRANGE; cpia2_do_command()
196 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
198 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
199 cmd.reg_count = 1; cpia2_do_command()
201 cmd.start = CPIA2_VP_SATURATION; cpia2_do_command()
203 cmd.start = CPIA2_VP5_MCUVSATURATION; cpia2_do_command()
206 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
208 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
209 cmd.reg_count = 1; cpia2_do_command()
210 cmd.start = CPIA2_VP_GPIO_DATA; cpia2_do_command()
213 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
215 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
216 cmd.reg_count = 1; cpia2_do_command()
217 cmd.start = CPIA2_VP_GPIO_DIRECTION; cpia2_do_command()
220 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
222 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VC; cpia2_do_command()
223 cmd.reg_count = 1; cpia2_do_command()
224 cmd.start = CPIA2_VC_MP_DATA; cpia2_do_command()
227 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
229 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VC; cpia2_do_command()
230 cmd.reg_count = 1; cpia2_do_command()
231 cmd.start = CPIA2_VC_MP_DIR; cpia2_do_command()
234 cmd.req_mode = cpia2_do_command()
236 cmd.start = CPIA2_SYSTEM_INT_PACKET_CTRL; cpia2_do_command()
237 cmd.reg_count = 1; cpia2_do_command()
238 cmd.buffer.block_data[0] = param; cpia2_do_command()
241 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
243 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
244 cmd.reg_count = 1; cpia2_do_command()
245 cmd.start = CPIA2_VP_FLICKER_MODES; cpia2_do_command()
248 cmd.req_mode = CAMERAACCESS_TYPE_RANDOM | CAMERAACCESS_VC; cpia2_do_command()
249 cmd.reg_count = 2; cpia2_do_command()
250 cmd.start = 0; cpia2_do_command()
251 cmd.buffer.registers[0].index = CPIA2_VC_ST_CTRL; cpia2_do_command()
252 cmd.buffer.registers[0].value = CPIA2_VC_ST_CTRL_SRC_VC | cpia2_do_command()
254 cmd.buffer.registers[1].index = CPIA2_VC_ST_CTRL; cpia2_do_command()
255 cmd.buffer.registers[1].value = CPIA2_VC_ST_CTRL_SRC_VC | cpia2_do_command()
261 cmd.req_mode = cpia2_do_command()
263 cmd.reg_count = 2; cpia2_do_command()
264 cmd.buffer.registers[0].index = cpia2_do_command()
266 cmd.buffer.registers[1].index = cpia2_do_command()
268 cmd.buffer.registers[0].value = CPIA2_SYSTEM_CONTROL_CLEAR_ERR; cpia2_do_command()
269 cmd.buffer.registers[1].value = cpia2_do_command()
273 cmd.req_mode = cpia2_do_command()
275 cmd.reg_count = 1; cpia2_do_command()
276 cmd.start = CPIA2_SYSTEM_SYSTEM_CONTROL; cpia2_do_command()
277 cmd.buffer.block_data[0] = 0; cpia2_do_command()
280 cmd.req_mode = cpia2_do_command()
282 cmd.reg_count = 1; cpia2_do_command()
283 cmd.start = CPIA2_SYSTEM_SYSTEM_CONTROL; cpia2_do_command()
284 cmd.buffer.block_data[0] = CPIA2_SYSTEM_CONTROL_CLEAR_ERR; cpia2_do_command()
287 cmd.buffer.block_data[0] = param; cpia2_do_command()
289 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
290 cmd.reg_count = 1; cpia2_do_command()
292 cmd.start = CPIA2_VP4_USER_MODE; cpia2_do_command()
294 cmd.start = CPIA2_VP5_USER_MODE; cpia2_do_command()
297 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
298 cmd.reg_count = 1; cpia2_do_command()
300 cmd.start = CPIA2_VP4_FRAMERATE_REQUEST; cpia2_do_command()
302 cmd.start = CPIA2_VP5_FRAMERATE_REQUEST; cpia2_do_command()
303 cmd.buffer.block_data[0] = param; cpia2_do_command()
306 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
308 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VC; cpia2_do_command()
309 cmd.reg_count = 1; cpia2_do_command()
310 cmd.start = CPIA2_VC_WAKEUP; cpia2_do_command()
313 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
315 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VC; cpia2_do_command()
316 cmd.reg_count = 1; cpia2_do_command()
317 cmd.start = CPIA2_VC_PW_CTRL; cpia2_do_command()
320 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
321 cmd.reg_count = 1; cpia2_do_command()
322 cmd.start = CPIA2_VP_SYSTEMSTATE; cpia2_do_command()
325 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
327 cmd.req_mode = cpia2_do_command()
329 cmd.reg_count = 1; cpia2_do_command()
330 cmd.start = CPIA2_SYSTEM_SYSTEM_CONTROL; cpia2_do_command()
333 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
335 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
336 cmd.reg_count = 1; cpia2_do_command()
337 cmd.start = CPIA2_VP_SYSTEMCTRL; cpia2_do_command()
340 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
342 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
343 cmd.reg_count = 1; cpia2_do_command()
344 cmd.start = CPIA2_VP_EXPOSURE_MODES; cpia2_do_command()
347 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
349 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
350 cmd.reg_count = 1; cpia2_do_command()
351 cmd.start = CPIA2_VP_DEVICE_CONFIG; cpia2_do_command()
354 cmd.buffer.block_data[0] = param; cpia2_do_command()
355 cmd.req_mode = cpia2_do_command()
357 cmd.reg_count = 1; cpia2_do_command()
358 cmd.start = CPIA2_SYSTEM_VP_SERIAL_ADDR; cpia2_do_command()
361 cmd.buffer.block_data[0] = param; cpia2_do_command()
362 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
363 cmd.reg_count = 1; cpia2_do_command()
364 cmd.start = CPIA2_SENSOR_CR1; cpia2_do_command()
367 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
369 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VC; cpia2_do_command()
370 cmd.reg_count = 1; cpia2_do_command()
371 cmd.start = CPIA2_VC_VC_CTRL; cpia2_do_command()
374 cmd.req_mode = CAMERAACCESS_TYPE_RANDOM | CAMERAACCESS_VC; cpia2_do_command()
375 cmd.reg_count = 1; cpia2_do_command()
376 cmd.buffer.registers[0].index = CPIA2_VC_VC_TARGET_KB; cpia2_do_command()
377 cmd.buffer.registers[0].value = param; cpia2_do_command()
380 cmd.req_mode = CAMERAACCESS_TYPE_RANDOM | CAMERAACCESS_VC; cpia2_do_command()
381 cmd.reg_count = 4; cpia2_do_command()
382 cmd.buffer.registers[0].index = CPIA2_VC_VC_JPEG_OPT; cpia2_do_command()
383 cmd.buffer.registers[0].value = cpia2_do_command()
385 cmd.buffer.registers[1].index = CPIA2_VC_VC_USER_SQUEEZE; cpia2_do_command()
386 cmd.buffer.registers[1].value = 20; cpia2_do_command()
387 cmd.buffer.registers[2].index = CPIA2_VC_VC_CREEP_PERIOD; cpia2_do_command()
388 cmd.buffer.registers[2].value = 2; cpia2_do_command()
389 cmd.buffer.registers[3].index = CPIA2_VC_VC_JPEG_OPT; cpia2_do_command()
390 cmd.buffer.registers[3].value = CPIA2_VC_VC_JPEG_OPT_DEFAULT; cpia2_do_command()
393 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
394 cmd.reg_count = 1; cpia2_do_command()
395 cmd.start = CPIA2_VP_REHASH_VALUES; cpia2_do_command()
396 cmd.buffer.block_data[0] = param; cpia2_do_command()
401 cmd.buffer.block_data[0] = param; /* Then fall through */ cpia2_do_command()
403 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_do_command()
404 cmd.reg_count = 1; cpia2_do_command()
406 cmd.start = CPIA2_VP4_USER_EFFECTS; cpia2_do_command()
408 cmd.start = CPIA2_VP5_USER_EFFECTS; cpia2_do_command()
415 retval = cpia2_send_command(cam, &cmd); cpia2_do_command()
426 cmd.buffer.block_data[0]; cpia2_do_command()
428 cmd.buffer.block_data[1]; cpia2_do_command()
431 cam->params.pnp_id.vendor = (cmd.buffer.block_data[0] << 8) | cpia2_do_command()
432 cmd.buffer.block_data[1]; cpia2_do_command()
433 cam->params.pnp_id.product = (cmd.buffer.block_data[2] << 8) | cpia2_do_command()
434 cmd.buffer.block_data[3]; cpia2_do_command()
436 (cmd.buffer.block_data[4] << 8) | cpia2_do_command()
437 cmd.buffer.block_data[5]; cpia2_do_command()
448 cam->params.version.asic_id = cmd.buffer.block_data[0]; cpia2_do_command()
449 cam->params.version.asic_rev = cmd.buffer.block_data[1]; cpia2_do_command()
452 cam->params.version.sensor_flags = cmd.buffer.block_data[0]; cpia2_do_command()
453 cam->params.version.sensor_rev = cmd.buffer.block_data[1]; cpia2_do_command()
456 cam->params.version.vp_device_hi = cmd.buffer.block_data[0]; cpia2_do_command()
457 cam->params.version.vp_device_lo = cmd.buffer.block_data[1]; cpia2_do_command()
460 cam->params.vp_params.gpio_data = cmd.buffer.block_data[0]; cpia2_do_command()
463 cam->params.vp_params.gpio_direction = cmd.buffer.block_data[0]; cpia2_do_command()
466 cam->params.vc_params.vc_mp_direction =cmd.buffer.block_data[0]; cpia2_do_command()
469 cam->params.vc_params.vc_mp_data = cmd.buffer.block_data[0]; cpia2_do_command()
473 cmd.buffer.block_data[0]; cpia2_do_command()
476 cam->params.vc_params.wakeup = cmd.buffer.block_data[0]; cpia2_do_command()
479 cam->params.vc_params.pw_control = cmd.buffer.block_data[0]; cpia2_do_command()
482 cam->params.camera_state.system_ctrl = cmd.buffer.block_data[0]; cpia2_do_command()
485 cam->params.vp_params.system_state = cmd.buffer.block_data[0]; cpia2_do_command()
488 cam->params.vp_params.system_ctrl = cmd.buffer.block_data[0]; cpia2_do_command()
491 cam->params.vp_params.exposure_modes = cmd.buffer.block_data[0]; cpia2_do_command()
494 cam->params.vp_params.device_config = cmd.buffer.block_data[0]; cpia2_do_command()
497 cam->params.vc_params.vc_control = cmd.buffer.block_data[0]; cpia2_do_command()
500 cam->params.vp_params.video_mode = cmd.buffer.block_data[0]; cpia2_do_command()
503 cam->params.vp_params.user_effects = cmd.buffer.block_data[0]; cpia2_do_command()
517 #define DIR(cmd) ((cmd->direction == TRANSFER_WRITE) ? "Write" : "Read")
518 #define BINDEX(cmd) (cmd->req_mode & 0x03)
520 int cpia2_send_command(struct camera_data *cam, struct cpia2_command *cmd) cpia2_send_command() argument
527 switch (cmd->req_mode & 0x0c) { cpia2_send_command()
529 count = cmd->reg_count * sizeof(struct cpia2_register); cpia2_send_command()
531 buffer = (u8 *) & cmd->buffer; cpia2_send_command()
533 DBG("%s Random: Register block %s\n", DIR(cmd), cpia2_send_command()
534 block_name[BINDEX(cmd)]); cpia2_send_command()
537 count = cmd->reg_count; cpia2_send_command()
538 start = cmd->start; cpia2_send_command()
539 buffer = cmd->buffer.block_data; cpia2_send_command()
541 DBG("%s Block: Register block %s\n", DIR(cmd), cpia2_send_command()
542 block_name[BINDEX(cmd)]); cpia2_send_command()
545 count = cmd->reg_count * sizeof(struct cpia2_reg_mask); cpia2_send_command()
547 buffer = (u8 *) & cmd->buffer; cpia2_send_command()
549 DBG("%s Mask: Register block %s\n", DIR(cmd), cpia2_send_command()
550 block_name[BINDEX(cmd)]); cpia2_send_command()
553 count = cmd->reg_count; cpia2_send_command()
554 start = cmd->start; cpia2_send_command()
555 buffer = cmd->buffer.block_data; cpia2_send_command()
557 DBG("%s Repeat: Register block %s\n", DIR(cmd), cpia2_send_command()
558 block_name[BINDEX(cmd)]); cpia2_send_command()
567 cmd->req_mode, cpia2_send_command()
568 start, count, cmd->direction); cpia2_send_command()
572 for (i = 0; i < cmd->reg_count; i++) { cpia2_send_command()
573 if((cmd->req_mode & 0x0c) == CAMERAACCESS_TYPE_BLOCK) cpia2_send_command()
575 DIR(cmd), start + i, buffer[i]); cpia2_send_command()
576 if((cmd->req_mode & 0x0c) == CAMERAACCESS_TYPE_RANDOM) cpia2_send_command()
578 DIR(cmd), cmd->buffer.registers[i].index, cpia2_send_command()
579 cmd->buffer.registers[i].value); cpia2_send_command()
616 struct cpia2_command cmd; cpia2_reset_camera() local
630 cmd.req_mode = CAMERAACCESS_TYPE_RANDOM | CAMERAACCESS_VC; cpia2_reset_camera()
631 cmd.direction = TRANSFER_WRITE; cpia2_reset_camera()
632 cmd.reg_count = 2; cpia2_reset_camera()
633 cmd.buffer.registers[0].index = CPIA2_VC_ST_CTRL; cpia2_reset_camera()
634 cmd.buffer.registers[0].value = CPIA2_VC_ST_CTRL_SRC_VC | cpia2_reset_camera()
636 cmd.buffer.registers[1].index = CPIA2_VC_ST_CTRL; cpia2_reset_camera()
637 cmd.buffer.registers[1].value = CPIA2_VC_ST_CTRL_SRC_VC | cpia2_reset_camera()
641 cpia2_send_command(cam, &cmd); cpia2_reset_camera()
647 cmd.req_mode = CAMERAACCESS_TYPE_RANDOM | CAMERAACCESS_SYSTEM; cpia2_reset_camera()
648 cmd.buffer.registers[0].index = CPIA2_SYSTEM_INT_PACKET_CTRL; cpia2_reset_camera()
649 cmd.buffer.registers[0].value = cpia2_reset_camera()
651 cmd.reg_count = 1; cpia2_reset_camera()
652 cpia2_send_command(cam, &cmd); cpia2_reset_camera()
667 cmd.req_mode = CAMERAACCESS_TYPE_RANDOM | CAMERAACCESS_VP; cpia2_reset_camera()
670 cmd.buffer.registers[0].index = CPIA2_VP5_MYBLACK_LEVEL; cpia2_reset_camera()
671 cmd.buffer.registers[0].value = 0; /* reduce from the default cpia2_reset_camera()
673 cmd.buffer.registers[1].index = CPIA2_VP5_MCYRANGE; cpia2_reset_camera()
674 cmd.buffer.registers[1].value = 0x92; /* increase from 100% to cpia2_reset_camera()
677 cmd.buffer.registers[2].index = CPIA2_VP5_MYCEILING; cpia2_reset_camera()
678 cmd.buffer.registers[2].value = 0xFF; /* Increase from the cpia2_reset_camera()
681 cmd.buffer.registers[3].index = CPIA2_VP5_MCUVSATURATION; cpia2_reset_camera()
682 cmd.buffer.registers[3].value = 0xFF; /* Increase from the rec cpia2_reset_camera()
685 cmd.buffer.registers[4].index = CPIA2_VP5_ANTIFLKRSETUP; cpia2_reset_camera()
686 cmd.buffer.registers[4].value = 0x80; /* Inhibit the cpia2_reset_camera()
690 cmd.buffer.registers[5].index = CPIA2_VP_RAM_ADDR_H; cpia2_reset_camera()
691 cmd.buffer.registers[5].value = 0x01; cpia2_reset_camera()
692 cmd.buffer.registers[6].index = CPIA2_VP_RAM_ADDR_L; cpia2_reset_camera()
693 cmd.buffer.registers[6].value = 0xE3; cpia2_reset_camera()
694 cmd.buffer.registers[7].index = CPIA2_VP_RAM_DATA; cpia2_reset_camera()
695 cmd.buffer.registers[7].value = 0x02; cpia2_reset_camera()
696 cmd.buffer.registers[8].index = CPIA2_VP_RAM_DATA; cpia2_reset_camera()
697 cmd.buffer.registers[8].value = 0xFC; cpia2_reset_camera()
699 cmd.direction = TRANSFER_WRITE; cpia2_reset_camera()
700 cmd.reg_count = 9; cpia2_reset_camera()
702 cpia2_send_command(cam, &cmd); cpia2_reset_camera()
726 cmd.buffer.registers[0].value = tmp_reg & cpia2_reset_camera()
730 cmd.buffer.registers[1].value = cam->params.vp_params.device_config | cpia2_reset_camera()
732 cmd.buffer.registers[0].index = CPIA2_VP_SYSTEMCTRL; cpia2_reset_camera()
733 cmd.buffer.registers[1].index = CPIA2_VP_DEVICE_CONFIG; cpia2_reset_camera()
734 cmd.req_mode = CAMERAACCESS_TYPE_RANDOM | CAMERAACCESS_VP; cpia2_reset_camera()
735 cmd.reg_count = 2; cpia2_reset_camera()
736 cmd.direction = TRANSFER_WRITE; cpia2_reset_camera()
737 cmd.start = 0; cpia2_reset_camera()
738 cpia2_send_command(cam, &cmd); cpia2_reset_camera()
772 cmd.buffer.registers[0].value = cam->params.vp_params.device_config & cpia2_reset_camera()
776 cmd.buffer.registers[1].value = cpia2_reset_camera()
779 cmd.buffer.registers[0].index = CPIA2_VP_DEVICE_CONFIG; cpia2_reset_camera()
780 cmd.buffer.registers[1].index = CPIA2_VP_SYSTEMCTRL; cpia2_reset_camera()
781 cmd.req_mode = CAMERAACCESS_TYPE_RANDOM | CAMERAACCESS_VP; cpia2_reset_camera()
782 cmd.reg_count = 2; cpia2_reset_camera()
783 cmd.direction = TRANSFER_WRITE; cpia2_reset_camera()
785 cpia2_send_command(cam, &cmd); cpia2_reset_camera()
893 struct cpia2_command *cmd, cpia2_send_onebyte_command()
896 cmd->buffer.block_data[0] = datum; cpia2_send_onebyte_command()
897 cmd->start = start; cpia2_send_onebyte_command()
898 cmd->reg_count = 1; cpia2_send_onebyte_command()
899 return cpia2_send_command(cam, cmd); cpia2_send_onebyte_command()
907 struct cpia2_command cmd; apply_vp_patch() local
916 cmd.req_mode = CAMERAACCESS_TYPE_REPEAT | CAMERAACCESS_VP; apply_vp_patch()
917 cmd.direction = TRANSFER_WRITE; apply_vp_patch()
920 cpia2_send_onebyte_command(cam, &cmd, 0x0A, fw->data[0]); /* hi */ apply_vp_patch()
921 cpia2_send_onebyte_command(cam, &cmd, 0x0B, fw->data[1]); /* lo */ apply_vp_patch()
925 cmd.start = 0x0C; /* Data */ apply_vp_patch()
926 cmd.reg_count = min_t(int, 64, fw->size - i); apply_vp_patch()
927 memcpy(cmd.buffer.block_data, &fw->data[i], cmd.reg_count); apply_vp_patch()
928 cpia2_send_command(cam, &cmd); apply_vp_patch()
932 cpia2_send_onebyte_command(cam, &cmd, 0x0A, fw->data[0]); /* hi */ apply_vp_patch()
933 cpia2_send_onebyte_command(cam, &cmd, 0x0B, fw->data[1]); /* lo */ apply_vp_patch()
936 cpia2_send_onebyte_command(cam, &cmd, 0x0D, 1); apply_vp_patch()
1146 struct cpia2_command cmd; config_sensor_410() local
1189 cmd.req_mode = CAMERAACCESS_TYPE_RANDOM | CAMERAACCESS_VC; config_sensor_410()
1190 cmd.direction = TRANSFER_WRITE; config_sensor_410()
1193 cmd.buffer.registers[i].index = CPIA2_VC_VC_FORMAT; config_sensor_410()
1195 cmd.buffer.registers[i++].value = config_sensor_410()
1199 cmd.buffer.registers[i++].value = config_sensor_410()
1204 cmd.buffer.registers[i].index = CPIA2_VC_VC_CLOCKS; config_sensor_410()
1207 cmd.buffer.registers[i++].value= config_sensor_410()
1214 cmd.buffer.registers[i++].value= config_sensor_410()
1220 cmd.buffer.registers[i++].value = config_sensor_410()
1225 cmd.buffer.registers[i++].value = config_sensor_410()
1231 DBG("VC_Clocks (0xc4) = 0x%0X\n", cmd.buffer.registers[i-1].value); config_sensor_410()
1234 cmd.buffer.registers[i].index = CPIA2_VC_VC_IHSIZE_LO; config_sensor_410()
1236 cmd.buffer.registers[i++].value = config_sensor_410()
1239 cmd.buffer.registers[i++].value = config_sensor_410()
1243 cmd.buffer.registers[i].index = CPIA2_VC_VC_XLIM_HI; config_sensor_410()
1245 cmd.buffer.registers[i++].value = (u8) 0; config_sensor_410()
1247 cmd.buffer.registers[i++].value = (u8) 1; config_sensor_410()
1249 cmd.buffer.registers[i].index = CPIA2_VC_VC_XLIM_LO; config_sensor_410()
1251 cmd.buffer.registers[i++].value = (u8) 208; config_sensor_410()
1253 cmd.buffer.registers[i++].value = (u8) 160; config_sensor_410()
1255 cmd.buffer.registers[i].index = CPIA2_VC_VC_YLIM_HI; config_sensor_410()
1257 cmd.buffer.registers[i++].value = (u8) 0; config_sensor_410()
1259 cmd.buffer.registers[i++].value = (u8) 1; config_sensor_410()
1261 cmd.buffer.registers[i].index = CPIA2_VC_VC_YLIM_LO; config_sensor_410()
1263 cmd.buffer.registers[i++].value = (u8) 160; config_sensor_410()
1265 cmd.buffer.registers[i++].value = (u8) 64; config_sensor_410()
1268 cmd.buffer.registers[i].index = CPIA2_VC_VC_OHSIZE; config_sensor_410()
1269 cmd.buffer.registers[i++].value = cam->params.roi.width / 4; config_sensor_410()
1271 cmd.buffer.registers[i].index = CPIA2_VC_VC_OVSIZE; config_sensor_410()
1272 cmd.buffer.registers[i++].value = cam->params.roi.height / 4; config_sensor_410()
1275 cmd.buffer.registers[i].index = CPIA2_VC_VC_HCROP; config_sensor_410()
1277 cmd.buffer.registers[i++].value = config_sensor_410()
1280 cmd.buffer.registers[i++].value = config_sensor_410()
1283 cmd.buffer.registers[i].index = CPIA2_VC_VC_VCROP; config_sensor_410()
1285 cmd.buffer.registers[i++].value = config_sensor_410()
1288 cmd.buffer.registers[i++].value = config_sensor_410()
1292 cmd.buffer.registers[i].index = CPIA2_VC_VC_HPHASE; config_sensor_410()
1293 cmd.buffer.registers[i++].value = (u8) 0; config_sensor_410()
1295 cmd.buffer.registers[i].index = CPIA2_VC_VC_VPHASE; config_sensor_410()
1296 cmd.buffer.registers[i++].value = (u8) 0; config_sensor_410()
1298 cmd.buffer.registers[i].index = CPIA2_VC_VC_HISPAN; config_sensor_410()
1299 cmd.buffer.registers[i++].value = (u8) 31; config_sensor_410()
1301 cmd.buffer.registers[i].index = CPIA2_VC_VC_VISPAN; config_sensor_410()
1302 cmd.buffer.registers[i++].value = (u8) 31; config_sensor_410()
1304 cmd.buffer.registers[i].index = CPIA2_VC_VC_HICROP; config_sensor_410()
1305 cmd.buffer.registers[i++].value = (u8) 0; config_sensor_410()
1307 cmd.buffer.registers[i].index = CPIA2_VC_VC_VICROP; config_sensor_410()
1308 cmd.buffer.registers[i++].value = (u8) 0; config_sensor_410()
1310 cmd.buffer.registers[i].index = CPIA2_VC_VC_HFRACT; config_sensor_410()
1311 cmd.buffer.registers[i++].value = (u8) 0x81; /* = 8/1 = 8 (HIBYTE/LOBYTE) */ config_sensor_410()
1313 cmd.buffer.registers[i].index = CPIA2_VC_VC_VFRACT; config_sensor_410()
1314 cmd.buffer.registers[i++].value = (u8) 0x81; /* = 8/1 = 8 (HIBYTE/LOBYTE) */ config_sensor_410()
1316 cmd.reg_count = i; config_sensor_410()
1318 cpia2_send_command(cam, &cmd); config_sensor_410()
1332 struct cpia2_command cmd; config_sensor_500() local
1363 cmd.req_mode = CAMERAACCESS_TYPE_RANDOM | CAMERAACCESS_VC; config_sensor_500()
1364 cmd.direction = TRANSFER_WRITE; config_sensor_500()
1368 cmd.buffer.registers[i].index = CPIA2_VC_VC_FORMAT; config_sensor_500()
1369 cmd.buffer.registers[i].value = (u8) CPIA2_VC_VC_FORMAT_UFIRST; config_sensor_500()
1371 cmd.buffer.registers[i].value |= (u8) CPIA2_VC_VC_FORMAT_DECIMATING; config_sensor_500()
1375 cmd.buffer.registers[i].index = CPIA2_VC_VC_CLOCKS; config_sensor_500()
1378 cmd.buffer.registers[i].value = config_sensor_500()
1381 cmd.buffer.registers[i].value = config_sensor_500()
1386 cmd.buffer.registers[i].value = config_sensor_500()
1389 cmd.buffer.registers[i].value = config_sensor_500()
1395 DBG("VC_CLOCKS = 0x%X\n", cmd.buffer.registers[i-1].value); config_sensor_500()
1398 cmd.buffer.registers[i].index = CPIA2_VC_VC_IHSIZE_LO; config_sensor_500()
1400 cmd.buffer.registers[i].value = config_sensor_500()
1403 cmd.buffer.registers[i].value = config_sensor_500()
1406 DBG("Input width = %d\n", cmd.buffer.registers[i-1].value); config_sensor_500()
1409 cmd.buffer.registers[i].index = CPIA2_VC_VC_XLIM_HI; config_sensor_500()
1411 cmd.buffer.registers[i++].value = (u8) 2; config_sensor_500()
1413 cmd.buffer.registers[i++].value = (u8) 1; config_sensor_500()
1415 cmd.buffer.registers[i].index = CPIA2_VC_VC_XLIM_LO; config_sensor_500()
1417 cmd.buffer.registers[i++].value = (u8) 250; config_sensor_500()
1419 cmd.buffer.registers[i++].value = (u8) 125; config_sensor_500()
1421 cmd.buffer.registers[i++].value = (u8) 160; config_sensor_500()
1423 cmd.buffer.registers[i].index = CPIA2_VC_VC_YLIM_HI; config_sensor_500()
1425 cmd.buffer.registers[i++].value = (u8) 2; config_sensor_500()
1427 cmd.buffer.registers[i++].value = (u8) 1; config_sensor_500()
1429 cmd.buffer.registers[i].index = CPIA2_VC_VC_YLIM_LO; config_sensor_500()
1431 cmd.buffer.registers[i++].value = (u8) 12; config_sensor_500()
1433 cmd.buffer.registers[i++].value = (u8) 64; config_sensor_500()
1435 cmd.buffer.registers[i++].value = (u8) 6; config_sensor_500()
1438 cmd.buffer.registers[i].index = CPIA2_VC_VC_OHSIZE; config_sensor_500()
1440 cmd.buffer.registers[i++].value = STV_IMAGE_CIF_COLS / 4; config_sensor_500()
1442 cmd.buffer.registers[i++].value = width / 4; config_sensor_500()
1444 cmd.buffer.registers[i].index = CPIA2_VC_VC_OVSIZE; config_sensor_500()
1446 cmd.buffer.registers[i++].value = STV_IMAGE_CIF_ROWS / 4; config_sensor_500()
1448 cmd.buffer.registers[i++].value = height / 4; config_sensor_500()
1451 cmd.buffer.registers[i].index = CPIA2_VC_VC_HCROP; config_sensor_500()
1453 cmd.buffer.registers[i++].value = config_sensor_500()
1456 cmd.buffer.registers[i++].value = config_sensor_500()
1459 cmd.buffer.registers[i++].value = config_sensor_500()
1462 cmd.buffer.registers[i++].value = config_sensor_500()
1465 cmd.buffer.registers[i].index = CPIA2_VC_VC_VCROP; config_sensor_500()
1467 cmd.buffer.registers[i++].value = config_sensor_500()
1470 cmd.buffer.registers[i++].value = config_sensor_500()
1473 cmd.buffer.registers[i++].value = config_sensor_500()
1476 cmd.buffer.registers[i++].value = config_sensor_500()
1480 cmd.buffer.registers[i].index = CPIA2_VC_VC_HPHASE; config_sensor_500()
1482 cmd.buffer.registers[i++].value = (u8) 36; config_sensor_500()
1484 cmd.buffer.registers[i++].value = (u8) 0; config_sensor_500()
1486 cmd.buffer.registers[i].index = CPIA2_VC_VC_VPHASE; config_sensor_500()
1488 cmd.buffer.registers[i++].value = (u8) 32; config_sensor_500()
1490 cmd.buffer.registers[i++].value = (u8) 0; config_sensor_500()
1492 cmd.buffer.registers[i].index = CPIA2_VC_VC_HISPAN; config_sensor_500()
1494 cmd.buffer.registers[i++].value = (u8) 26; config_sensor_500()
1496 cmd.buffer.registers[i++].value = (u8) 31; config_sensor_500()
1498 cmd.buffer.registers[i].index = CPIA2_VC_VC_VISPAN; config_sensor_500()
1500 cmd.buffer.registers[i++].value = (u8) 21; config_sensor_500()
1502 cmd.buffer.registers[i++].value = (u8) 31; config_sensor_500()
1504 cmd.buffer.registers[i].index = CPIA2_VC_VC_HICROP; config_sensor_500()
1505 cmd.buffer.registers[i++].value = (u8) 0; config_sensor_500()
1507 cmd.buffer.registers[i].index = CPIA2_VC_VC_VICROP; config_sensor_500()
1508 cmd.buffer.registers[i++].value = (u8) 0; config_sensor_500()
1510 cmd.buffer.registers[i].index = CPIA2_VC_VC_HFRACT; config_sensor_500()
1512 cmd.buffer.registers[i++].value = (u8) 0x2B; /* 2/11 */ config_sensor_500()
1514 cmd.buffer.registers[i++].value = (u8) 0x81; /* 8/1 */ config_sensor_500()
1516 cmd.buffer.registers[i].index = CPIA2_VC_VC_VFRACT; config_sensor_500()
1518 cmd.buffer.registers[i++].value = (u8) 0x13; /* 1/3 */ config_sensor_500()
1520 cmd.buffer.registers[i++].value = (u8) 0x81; /* 8/1 */ config_sensor_500()
1522 cmd.reg_count = i; config_sensor_500()
1524 cpia2_send_command(cam, &cmd); config_sensor_500()
1831 struct cpia2_command cmd; set_lowlight_boost() local
1837 cmd.direction = TRANSFER_WRITE; set_lowlight_boost()
1838 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; set_lowlight_boost()
1839 cmd.reg_count = 3; set_lowlight_boost()
1840 cmd.start = CPIA2_VP_RAM_ADDR_H; set_lowlight_boost()
1842 cmd.buffer.block_data[0] = 0; /* High byte of address to write to */ set_lowlight_boost()
1843 cmd.buffer.block_data[1] = 0x59; /* Low byte of address to write to */ set_lowlight_boost()
1844 cmd.buffer.block_data[2] = 0; /* High byte of data to write */ set_lowlight_boost()
1846 cpia2_send_command(cam, &cmd); set_lowlight_boost()
1849 cmd.buffer.block_data[0] = 0x02; /* Low byte data to write */ set_lowlight_boost()
1851 cmd.buffer.block_data[0] = 0x06; set_lowlight_boost()
1853 cmd.start = CPIA2_VP_RAM_DATA; set_lowlight_boost()
1854 cmd.reg_count = 1; set_lowlight_boost()
1855 cpia2_send_command(cam, &cmd); set_lowlight_boost()
1891 struct cpia2_command cmd; cpia2_dbg_dump_registers() local
1896 cmd.direction = TRANSFER_READ; cpia2_dbg_dump_registers()
1899 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_SYSTEM; cpia2_dbg_dump_registers()
1900 cmd.reg_count = 3; cpia2_dbg_dump_registers()
1901 cmd.start = 0; cpia2_dbg_dump_registers()
1902 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
1904 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
1906 cmd.buffer.block_data[1]); cpia2_dbg_dump_registers()
1908 cmd.buffer.block_data[2]); cpia2_dbg_dump_registers()
1911 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VC; cpia2_dbg_dump_registers()
1912 cmd.reg_count = 4; cpia2_dbg_dump_registers()
1913 cmd.start = 0x80; cpia2_dbg_dump_registers()
1914 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
1916 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
1918 cmd.buffer.block_data[1]); cpia2_dbg_dump_registers()
1920 cmd.buffer.block_data[2]); cpia2_dbg_dump_registers()
1922 cmd.buffer.block_data[3]); cpia2_dbg_dump_registers()
1924 cmd.start = 0xA0; /* ST_CTRL */ cpia2_dbg_dump_registers()
1925 cmd.reg_count = 1; cpia2_dbg_dump_registers()
1926 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
1928 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
1930 cmd.start = 0xA4; /* Stream status */ cpia2_dbg_dump_registers()
1931 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
1933 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
1935 cmd.start = 0xA8; /* USB status */ cpia2_dbg_dump_registers()
1936 cmd.reg_count = 3; cpia2_dbg_dump_registers()
1937 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
1939 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
1941 cmd.buffer.block_data[1]); cpia2_dbg_dump_registers()
1943 cmd.buffer.block_data[2]); cpia2_dbg_dump_registers()
1945 cmd.start = 0xAF; /* USB settings */ cpia2_dbg_dump_registers()
1946 cmd.reg_count = 1; cpia2_dbg_dump_registers()
1947 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
1949 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
1951 cmd.start = 0xC0; /* VC stuff */ cpia2_dbg_dump_registers()
1952 cmd.reg_count = 26; cpia2_dbg_dump_registers()
1953 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
1955 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
1957 cmd.buffer.block_data[3]); cpia2_dbg_dump_registers()
1959 cmd.buffer.block_data[4]); cpia2_dbg_dump_registers()
1961 cmd.buffer.block_data[5]); cpia2_dbg_dump_registers()
1963 cmd.buffer.block_data[6]); cpia2_dbg_dump_registers()
1965 cmd.buffer.block_data[7]); cpia2_dbg_dump_registers()
1967 cmd.buffer.block_data[8]); cpia2_dbg_dump_registers()
1969 cmd.buffer.block_data[9]); cpia2_dbg_dump_registers()
1971 cmd.buffer.block_data[10]); cpia2_dbg_dump_registers()
1973 cmd.buffer.block_data[11]); cpia2_dbg_dump_registers()
1975 cmd.buffer.block_data[12]); cpia2_dbg_dump_registers()
1977 cmd.buffer.block_data[13]); cpia2_dbg_dump_registers()
1979 cmd.buffer.block_data[14]); cpia2_dbg_dump_registers()
1981 cmd.buffer.block_data[15]); cpia2_dbg_dump_registers()
1983 cmd.buffer.block_data[16]); cpia2_dbg_dump_registers()
1985 cmd.buffer.block_data[17]); cpia2_dbg_dump_registers()
1987 cmd.buffer.block_data[18]); cpia2_dbg_dump_registers()
1989 cmd.buffer.block_data[19]); cpia2_dbg_dump_registers()
1991 cmd.buffer.block_data[20]); cpia2_dbg_dump_registers()
1993 cmd.buffer.block_data[21]); cpia2_dbg_dump_registers()
1995 cmd.buffer.block_data[22]); cpia2_dbg_dump_registers()
1997 cmd.buffer.block_data[23]); cpia2_dbg_dump_registers()
1999 cmd.buffer.block_data[24]); cpia2_dbg_dump_registers()
2001 cmd.buffer.block_data[25]); cpia2_dbg_dump_registers()
2004 cmd.req_mode = CAMERAACCESS_TYPE_BLOCK | CAMERAACCESS_VP; cpia2_dbg_dump_registers()
2005 cmd.reg_count = 14; cpia2_dbg_dump_registers()
2006 cmd.start = 0; cpia2_dbg_dump_registers()
2007 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
2010 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
2012 cmd.buffer.block_data[1]); cpia2_dbg_dump_registers()
2014 cmd.buffer.block_data[2]); cpia2_dbg_dump_registers()
2016 cmd.buffer.block_data[3]); cpia2_dbg_dump_registers()
2018 cmd.buffer.block_data[5]); cpia2_dbg_dump_registers()
2020 cmd.buffer.block_data[6]); cpia2_dbg_dump_registers()
2022 cmd.buffer.block_data[7]); cpia2_dbg_dump_registers()
2024 cmd.buffer.block_data[8]); cpia2_dbg_dump_registers()
2026 cmd.buffer.block_data[9]); cpia2_dbg_dump_registers()
2028 cmd.buffer.block_data[10]); cpia2_dbg_dump_registers()
2030 cmd.buffer.block_data[11]); cpia2_dbg_dump_registers()
2032 cmd.buffer.block_data[12]); cpia2_dbg_dump_registers()
2034 cmd.buffer.block_data[13]); cpia2_dbg_dump_registers()
2037 cmd.reg_count = 9; cpia2_dbg_dump_registers()
2038 cmd.start = 0x0E; cpia2_dbg_dump_registers()
2039 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
2041 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
2043 cmd.buffer.block_data[1]); cpia2_dbg_dump_registers()
2045 cmd.buffer.block_data[2]); cpia2_dbg_dump_registers()
2047 cmd.buffer.block_data[3]); cpia2_dbg_dump_registers()
2049 cmd.buffer.block_data[4]); cpia2_dbg_dump_registers()
2051 cmd.buffer.block_data[5]); cpia2_dbg_dump_registers()
2053 cmd.buffer.block_data[6]); cpia2_dbg_dump_registers()
2055 cmd.buffer.block_data[7]); cpia2_dbg_dump_registers()
2057 cmd.buffer.block_data[8]); cpia2_dbg_dump_registers()
2059 cmd.reg_count = 1; cpia2_dbg_dump_registers()
2060 cmd.start = 0x1B; cpia2_dbg_dump_registers()
2061 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
2063 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
2065 cmd.reg_count = 8 ; cpia2_dbg_dump_registers()
2066 cmd.start = 0x0E; cpia2_dbg_dump_registers()
2067 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
2069 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
2071 cmd.buffer.block_data[1]); cpia2_dbg_dump_registers()
2073 cmd.buffer.block_data[5]); cpia2_dbg_dump_registers()
2075 cmd.buffer.block_data[6]); cpia2_dbg_dump_registers()
2077 cmd.buffer.block_data[7]); cpia2_dbg_dump_registers()
2079 cmd.reg_count = 1; cpia2_dbg_dump_registers()
2080 cmd.start = CPIA2_VP5_EXPOSURE_TARGET; cpia2_dbg_dump_registers()
2081 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
2083 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
2085 cmd.reg_count = 4; cpia2_dbg_dump_registers()
2086 cmd.start = 0x3A; cpia2_dbg_dump_registers()
2087 cpia2_send_command(cam, &cmd); cpia2_dbg_dump_registers()
2089 cmd.buffer.block_data[0]); cpia2_dbg_dump_registers()
2091 cmd.buffer.block_data[1]); cpia2_dbg_dump_registers()
2093 cmd.buffer.block_data[2]); cpia2_dbg_dump_registers()
2095 cmd.buffer.block_data[3]); cpia2_dbg_dump_registers()
892 cpia2_send_onebyte_command(struct camera_data *cam, struct cpia2_command *cmd, u8 start, u8 datum) cpia2_send_onebyte_command() argument
/linux-4.1.27/drivers/target/
H A Dtarget_core_sbc.c43 sbc_emulate_readcapacity(struct se_cmd *cmd) sbc_emulate_readcapacity() argument
45 struct se_device *dev = cmd->se_dev; sbc_emulate_readcapacity()
46 unsigned char *cdb = cmd->t_task_cdb; sbc_emulate_readcapacity()
81 rbuf = transport_kmap_data_sg(cmd); sbc_emulate_readcapacity()
83 memcpy(rbuf, buf, min_t(u32, sizeof(buf), cmd->data_length)); sbc_emulate_readcapacity()
84 transport_kunmap_data_sg(cmd); sbc_emulate_readcapacity()
87 target_complete_cmd_with_length(cmd, GOOD, 8); sbc_emulate_readcapacity()
92 sbc_emulate_readcapacity_16(struct se_cmd *cmd) sbc_emulate_readcapacity_16() argument
94 struct se_device *dev = cmd->se_dev; sbc_emulate_readcapacity_16()
95 struct se_session *sess = cmd->se_sess; sbc_emulate_readcapacity_16()
146 rbuf = transport_kmap_data_sg(cmd); sbc_emulate_readcapacity_16()
148 memcpy(rbuf, buf, min_t(u32, sizeof(buf), cmd->data_length)); sbc_emulate_readcapacity_16()
149 transport_kunmap_data_sg(cmd); sbc_emulate_readcapacity_16()
152 target_complete_cmd_with_length(cmd, GOOD, 32); sbc_emulate_readcapacity_16()
156 sector_t sbc_get_write_same_sectors(struct se_cmd *cmd) sbc_get_write_same_sectors() argument
160 if (cmd->t_task_cdb[0] == WRITE_SAME) sbc_get_write_same_sectors()
161 num_blocks = get_unaligned_be16(&cmd->t_task_cdb[7]); sbc_get_write_same_sectors()
162 else if (cmd->t_task_cdb[0] == WRITE_SAME_16) sbc_get_write_same_sectors()
163 num_blocks = get_unaligned_be32(&cmd->t_task_cdb[10]); sbc_get_write_same_sectors()
165 num_blocks = get_unaligned_be32(&cmd->t_task_cdb[28]); sbc_get_write_same_sectors()
174 return cmd->se_dev->transport->get_blocks(cmd->se_dev) - sbc_get_write_same_sectors()
175 cmd->t_task_lba + 1; sbc_get_write_same_sectors()
180 sbc_emulate_noop(struct se_cmd *cmd) sbc_emulate_noop() argument
182 target_complete_cmd(cmd, GOOD); sbc_emulate_noop()
186 static inline u32 sbc_get_size(struct se_cmd *cmd, u32 sectors) sbc_get_size() argument
188 return cmd->se_dev->dev_attrib.block_size * sectors; sbc_get_size()
264 sbc_setup_write_same(struct se_cmd *cmd, unsigned char *flags, struct sbc_ops *ops) sbc_setup_write_same() argument
266 struct se_device *dev = cmd->se_dev; sbc_setup_write_same()
268 unsigned int sectors = sbc_get_write_same_sectors(cmd); sbc_setup_write_same()
277 if (sectors > cmd->se_dev->dev_attrib.max_write_same_len) { sbc_setup_write_same()
279 sectors, cmd->se_dev->dev_attrib.max_write_same_len); sbc_setup_write_same()
285 if (((cmd->t_task_lba + sectors) < cmd->t_task_lba) || sbc_setup_write_same()
286 ((cmd->t_task_lba + sectors) > end_lba)) { sbc_setup_write_same()
288 (unsigned long long)end_lba, cmd->t_task_lba, sectors); sbc_setup_write_same()
310 cmd->execute_cmd = ops->execute_write_same_unmap; sbc_setup_write_same()
316 ret = sbc_check_prot(dev, cmd, &cmd->t_task_cdb[0], sectors, true); sbc_setup_write_same()
320 cmd->execute_cmd = ops->execute_write_same; sbc_setup_write_same()
324 static sense_reason_t xdreadwrite_callback(struct se_cmd *cmd, bool success, xdreadwrite_callback() argument
343 buf = kmalloc(cmd->data_length, GFP_KERNEL); xdreadwrite_callback()
349 * Copy the scatterlist WRITE buffer located at cmd->t_data_sg xdreadwrite_callback()
352 sg_copy_to_buffer(cmd->t_data_sg, xdreadwrite_callback()
353 cmd->t_data_nents, xdreadwrite_callback()
355 cmd->data_length); xdreadwrite_callback()
359 * cmd->t_mem_bidi_list xdreadwrite_callback()
363 for_each_sg(cmd->t_bidi_data_sg, sg, cmd->t_bidi_data_nents, count) { xdreadwrite_callback()
383 sbc_execute_rw(struct se_cmd *cmd) sbc_execute_rw() argument
385 return cmd->execute_rw(cmd, cmd->t_data_sg, cmd->t_data_nents, sbc_execute_rw()
386 cmd->data_direction); sbc_execute_rw()
389 static sense_reason_t compare_and_write_post(struct se_cmd *cmd, bool success, compare_and_write_post() argument
392 struct se_device *dev = cmd->se_dev; compare_and_write_post()
399 spin_lock_irq(&cmd->t_state_lock); compare_and_write_post()
400 if ((cmd->transport_state & CMD_T_SENT) && !cmd->scsi_status) { compare_and_write_post()
401 cmd->se_cmd_flags |= SCF_COMPARE_AND_WRITE_POST; compare_and_write_post()
404 spin_unlock_irq(&cmd->t_state_lock); compare_and_write_post()
415 static sense_reason_t compare_and_write_callback(struct se_cmd *cmd, bool success, compare_and_write_callback() argument
418 struct se_device *dev = cmd->se_dev; compare_and_write_callback()
423 unsigned int nlbas = cmd->t_task_nolb; compare_and_write_callback()
433 if (!success && (!cmd->t_data_sg || !cmd->t_bidi_data_sg)) compare_and_write_callback()
438 if (!cmd->data_length) compare_and_write_callback()
444 if (cmd->scsi_status) { compare_and_write_callback()
446 " 0x%02x\n", cmd->scsi_status); compare_and_write_callback()
450 buf = kzalloc(cmd->data_length, GFP_KERNEL); compare_and_write_callback()
457 write_sg = kmalloc(sizeof(struct scatterlist) * cmd->t_data_nents, compare_and_write_callback()
464 sg_init_table(write_sg, cmd->t_data_nents); compare_and_write_callback()
468 rc = sg_copy_to_buffer(cmd->t_data_sg, cmd->t_data_nents, buf, compare_and_write_callback()
469 cmd->data_length); compare_and_write_callback()
478 for_each_sg(cmd->t_bidi_data_sg, sg, cmd->t_bidi_data_nents, i) { compare_and_write_callback()
502 len = cmd->t_task_nolb * block_size; compare_and_write_callback()
503 sg_miter_start(&m, cmd->t_data_sg, cmd->t_data_nents, SG_MITER_TO_SG); compare_and_write_callback()
527 cmd->t_data_sg_orig = cmd->t_data_sg; compare_and_write_callback()
528 cmd->t_data_sg = write_sg; compare_and_write_callback()
529 cmd->t_data_nents_orig = cmd->t_data_nents; compare_and_write_callback()
530 cmd->t_data_nents = 1; compare_and_write_callback()
532 cmd->sam_task_attr = TCM_HEAD_TAG; compare_and_write_callback()
533 cmd->transport_complete_callback = compare_and_write_post; compare_and_write_callback()
538 cmd->execute_cmd = sbc_execute_rw; compare_and_write_callback()
540 spin_lock_irq(&cmd->t_state_lock); compare_and_write_callback()
541 cmd->t_state = TRANSPORT_PROCESSING; compare_and_write_callback()
542 cmd->transport_state |= CMD_T_ACTIVE|CMD_T_BUSY|CMD_T_SENT; compare_and_write_callback()
543 spin_unlock_irq(&cmd->t_state_lock); compare_and_write_callback()
545 __target_execute_cmd(cmd); compare_and_write_callback()
566 sbc_compare_and_write(struct se_cmd *cmd) sbc_compare_and_write() argument
568 struct se_device *dev = cmd->se_dev; sbc_compare_and_write()
573 * comparision using SGLs at cmd->t_bidi_data_sg.. sbc_compare_and_write()
577 cmd->transport_complete_callback = NULL; sbc_compare_and_write()
581 * Reset cmd->data_length to individual block_size in order to not sbc_compare_and_write()
585 cmd->data_length = cmd->t_task_nolb * dev->dev_attrib.block_size; sbc_compare_and_write()
587 ret = cmd->execute_rw(cmd, cmd->t_bidi_data_sg, cmd->t_bidi_data_nents, sbc_compare_and_write()
590 cmd->transport_complete_callback = NULL; sbc_compare_and_write()
604 bool is_write, struct se_cmd *cmd) sbc_set_prot_op_checks()
607 cmd->prot_op = fabric_prot ? TARGET_PROT_DOUT_STRIP : sbc_set_prot_op_checks()
613 cmd->prot_checks = 0; sbc_set_prot_op_checks()
617 cmd->prot_checks = TARGET_DIF_CHECK_GUARD; sbc_set_prot_op_checks()
619 cmd->prot_checks |= TARGET_DIF_CHECK_REFTAG; sbc_set_prot_op_checks()
623 cmd->prot_checks = TARGET_DIF_CHECK_REFTAG; sbc_set_prot_op_checks()
626 cmd->prot_checks = TARGET_DIF_CHECK_GUARD; sbc_set_prot_op_checks()
633 cmd->prot_op = fabric_prot ? TARGET_PROT_DIN_INSERT : sbc_set_prot_op_checks()
640 cmd->prot_checks = TARGET_DIF_CHECK_GUARD; sbc_set_prot_op_checks()
642 cmd->prot_checks |= TARGET_DIF_CHECK_REFTAG; sbc_set_prot_op_checks()
646 cmd->prot_checks = TARGET_DIF_CHECK_REFTAG; sbc_set_prot_op_checks()
649 cmd->prot_checks = 0; sbc_set_prot_op_checks()
652 cmd->prot_checks = TARGET_DIF_CHECK_GUARD; sbc_set_prot_op_checks()
664 sbc_check_prot(struct se_device *dev, struct se_cmd *cmd, unsigned char *cdb, sbc_check_prot() argument
668 int sp_ops = cmd->se_sess->sup_prot_ops; sbc_check_prot()
672 if (!cmd->t_prot_sg || !cmd->t_prot_nents) { sbc_check_prot()
674 !dev->dev_attrib.pi_prot_type && !cmd->se_sess->sess_prot_type)) { sbc_check_prot()
679 if (cmd->prot_pto) sbc_check_prot()
685 cmd->reftag_seed = 0xffffffff; sbc_check_prot()
691 cmd->reftag_seed = cmd->t_task_lba; sbc_check_prot()
694 cmd->reftag_seed = cmd->t_task_lba; sbc_check_prot()
706 if (fabric_prot && cmd->se_sess->sess_prot_type) { sbc_check_prot()
707 pi_prot_type = cmd->se_sess->sess_prot_type; sbc_check_prot()
719 if (sbc_set_prot_op_checks(protect, fabric_prot, pi_prot_type, is_write, cmd)) sbc_check_prot()
722 cmd->prot_type = pi_prot_type; sbc_check_prot()
723 cmd->prot_length = dev->prot_length * sectors; sbc_check_prot()
732 cmd->data_length = sectors * dev->dev_attrib.block_size; sbc_check_prot()
736 __func__, cmd->prot_type, cmd->data_length, cmd->prot_length, sbc_check_prot()
737 cmd->prot_op, cmd->prot_checks); sbc_check_prot()
743 sbc_check_dpofua(struct se_device *dev, struct se_cmd *cmd, unsigned char *cdb) sbc_check_dpofua() argument
759 cmd->se_cmd_flags |= SCF_FUA; sbc_check_dpofua()
765 sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops) sbc_parse_cdb() argument
767 struct se_device *dev = cmd->se_dev; sbc_parse_cdb()
768 unsigned char *cdb = cmd->t_task_cdb; sbc_parse_cdb()
776 cmd->t_task_lba = transport_lba_21(cdb); sbc_parse_cdb()
777 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; sbc_parse_cdb()
778 cmd->execute_rw = ops->execute_rw; sbc_parse_cdb()
779 cmd->execute_cmd = sbc_execute_rw; sbc_parse_cdb()
783 cmd->t_task_lba = transport_lba_32(cdb); sbc_parse_cdb()
785 if (sbc_check_dpofua(dev, cmd, cdb)) sbc_parse_cdb()
788 ret = sbc_check_prot(dev, cmd, cdb, sectors, false); sbc_parse_cdb()
792 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; sbc_parse_cdb()
793 cmd->execute_rw = ops->execute_rw; sbc_parse_cdb()
794 cmd->execute_cmd = sbc_execute_rw; sbc_parse_cdb()
798 cmd->t_task_lba = transport_lba_32(cdb); sbc_parse_cdb()
800 if (sbc_check_dpofua(dev, cmd, cdb)) sbc_parse_cdb()
803 ret = sbc_check_prot(dev, cmd, cdb, sectors, false); sbc_parse_cdb()
807 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; sbc_parse_cdb()
808 cmd->execute_rw = ops->execute_rw; sbc_parse_cdb()
809 cmd->execute_cmd = sbc_execute_rw; sbc_parse_cdb()
813 cmd->t_task_lba = transport_lba_64(cdb); sbc_parse_cdb()
815 if (sbc_check_dpofua(dev, cmd, cdb)) sbc_parse_cdb()
818 ret = sbc_check_prot(dev, cmd, cdb, sectors, false); sbc_parse_cdb()
822 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; sbc_parse_cdb()
823 cmd->execute_rw = ops->execute_rw; sbc_parse_cdb()
824 cmd->execute_cmd = sbc_execute_rw; sbc_parse_cdb()
828 cmd->t_task_lba = transport_lba_21(cdb); sbc_parse_cdb()
829 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; sbc_parse_cdb()
830 cmd->execute_rw = ops->execute_rw; sbc_parse_cdb()
831 cmd->execute_cmd = sbc_execute_rw; sbc_parse_cdb()
836 cmd->t_task_lba = transport_lba_32(cdb); sbc_parse_cdb()
838 if (sbc_check_dpofua(dev, cmd, cdb)) sbc_parse_cdb()
841 ret = sbc_check_prot(dev, cmd, cdb, sectors, true); sbc_parse_cdb()
845 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; sbc_parse_cdb()
846 cmd->execute_rw = ops->execute_rw; sbc_parse_cdb()
847 cmd->execute_cmd = sbc_execute_rw; sbc_parse_cdb()
851 cmd->t_task_lba = transport_lba_32(cdb); sbc_parse_cdb()
853 if (sbc_check_dpofua(dev, cmd, cdb)) sbc_parse_cdb()
856 ret = sbc_check_prot(dev, cmd, cdb, sectors, true); sbc_parse_cdb()
860 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; sbc_parse_cdb()
861 cmd->execute_rw = ops->execute_rw; sbc_parse_cdb()
862 cmd->execute_cmd = sbc_execute_rw; sbc_parse_cdb()
866 cmd->t_task_lba = transport_lba_64(cdb); sbc_parse_cdb()
868 if (sbc_check_dpofua(dev, cmd, cdb)) sbc_parse_cdb()
871 ret = sbc_check_prot(dev, cmd, cdb, sectors, true); sbc_parse_cdb()
875 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; sbc_parse_cdb()
876 cmd->execute_rw = ops->execute_rw; sbc_parse_cdb()
877 cmd->execute_cmd = sbc_execute_rw; sbc_parse_cdb()
880 if (cmd->data_direction != DMA_TO_DEVICE || sbc_parse_cdb()
881 !(cmd->se_cmd_flags & SCF_BIDI)) sbc_parse_cdb()
885 if (sbc_check_dpofua(dev, cmd, cdb)) sbc_parse_cdb()
888 cmd->t_task_lba = transport_lba_32(cdb); sbc_parse_cdb()
889 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; sbc_parse_cdb()
894 cmd->execute_rw = ops->execute_rw; sbc_parse_cdb()
895 cmd->execute_cmd = sbc_execute_rw; sbc_parse_cdb()
896 cmd->transport_complete_callback = &xdreadwrite_callback; sbc_parse_cdb()
905 if (sbc_check_dpofua(dev, cmd, cdb)) sbc_parse_cdb()
911 cmd->t_task_lba = transport_lba_64_ext(cdb); sbc_parse_cdb()
912 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; sbc_parse_cdb()
918 cmd->execute_rw = ops->execute_rw; sbc_parse_cdb()
919 cmd->execute_cmd = sbc_execute_rw; sbc_parse_cdb()
920 cmd->transport_complete_callback = &xdreadwrite_callback; sbc_parse_cdb()
930 size = sbc_get_size(cmd, 1); sbc_parse_cdb()
931 cmd->t_task_lba = get_unaligned_be64(&cdb[12]); sbc_parse_cdb()
933 ret = sbc_setup_write_same(cmd, &cdb[10], ops); sbc_parse_cdb()
958 size = 2 * sbc_get_size(cmd, sectors); sbc_parse_cdb()
959 cmd->t_task_lba = get_unaligned_be64(&cdb[2]); sbc_parse_cdb()
960 cmd->t_task_nolb = sectors; sbc_parse_cdb()
961 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB | SCF_COMPARE_AND_WRITE; sbc_parse_cdb()
962 cmd->execute_rw = ops->execute_rw; sbc_parse_cdb()
963 cmd->execute_cmd = sbc_compare_and_write; sbc_parse_cdb()
964 cmd->transport_complete_callback = compare_and_write_callback; sbc_parse_cdb()
968 cmd->execute_cmd = sbc_emulate_readcapacity; sbc_parse_cdb()
971 switch (cmd->t_task_cdb[1] & 0x1f) { sbc_parse_cdb()
973 cmd->execute_cmd = sbc_emulate_readcapacity_16; sbc_parse_cdb()
976 cmd->execute_cmd = target_emulate_report_referrals; sbc_parse_cdb()
980 cmd->t_task_cdb[1] & 0x1f); sbc_parse_cdb()
990 cmd->t_task_lba = transport_lba_32(cdb); sbc_parse_cdb()
993 cmd->t_task_lba = transport_lba_64(cdb); sbc_parse_cdb()
996 cmd->execute_cmd = ops->execute_sync_cache; sbc_parse_cdb()
1000 cmd->execute_cmd = sbc_emulate_noop; sbc_parse_cdb()
1012 cmd->execute_cmd = ops->execute_unmap; sbc_parse_cdb()
1021 size = sbc_get_size(cmd, 1); sbc_parse_cdb()
1022 cmd->t_task_lba = get_unaligned_be64(&cdb[2]); sbc_parse_cdb()
1024 ret = sbc_setup_write_same(cmd, &cdb[1], ops); sbc_parse_cdb()
1035 size = sbc_get_size(cmd, 1); sbc_parse_cdb()
1036 cmd->t_task_lba = get_unaligned_be32(&cdb[2]); sbc_parse_cdb()
1042 ret = sbc_setup_write_same(cmd, &cdb[1], ops); sbc_parse_cdb()
1049 cmd->t_task_lba = transport_lba_32(cdb); sbc_parse_cdb()
1050 cmd->execute_cmd = sbc_emulate_noop; sbc_parse_cdb()
1062 cmd->execute_cmd = sbc_emulate_noop; sbc_parse_cdb()
1065 ret = spc_parse_cdb(cmd, &size); sbc_parse_cdb()
1071 if (!cmd->execute_cmd) sbc_parse_cdb()
1074 if (cmd->se_cmd_flags & SCF_SCSI_DATA_CDB) { sbc_parse_cdb()
1078 if (((cmd->t_task_lba + sectors) < cmd->t_task_lba) || sbc_parse_cdb()
1079 ((cmd->t_task_lba + sectors) > end_lba)) { sbc_parse_cdb()
1080 pr_err("cmd exceeds last lba %llu " sbc_parse_cdb()
1082 end_lba, cmd->t_task_lba, sectors); sbc_parse_cdb()
1086 if (!(cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE)) sbc_parse_cdb()
1087 size = sbc_get_size(cmd, sectors); sbc_parse_cdb()
1090 return target_cmd_size_check(cmd, size); sbc_parse_cdb()
1101 sbc_execute_unmap(struct se_cmd *cmd, sbc_execute_unmap() argument
1106 struct se_device *dev = cmd->se_dev; sbc_execute_unmap()
1115 if (cmd->t_task_cdb[1]) sbc_execute_unmap()
1118 if (cmd->data_length == 0) { sbc_execute_unmap()
1119 target_complete_cmd(cmd, SAM_STAT_GOOD); sbc_execute_unmap()
1123 if (cmd->data_length < 8) { sbc_execute_unmap()
1125 cmd->data_length); sbc_execute_unmap()
1129 buf = transport_kmap_data_sg(cmd); sbc_execute_unmap()
1136 size = cmd->data_length - 8; sbc_execute_unmap()
1139 cmd->data_length, bd_dl); sbc_execute_unmap()
1169 ret = do_unmap_fn(cmd, priv, lba, range); sbc_execute_unmap()
1178 transport_kunmap_data_sg(cmd); sbc_execute_unmap()
1180 target_complete_cmd(cmd, GOOD); sbc_execute_unmap()
1186 sbc_dif_generate(struct se_cmd *cmd) sbc_dif_generate() argument
1188 struct se_device *dev = cmd->se_dev; sbc_dif_generate()
1190 struct scatterlist *dsg, *psg = cmd->t_prot_sg; sbc_dif_generate()
1191 sector_t sector = cmd->t_task_lba; sbc_dif_generate()
1195 for_each_sg(cmd->t_data_sg, dsg, cmd->t_data_nents, i) { sbc_dif_generate()
1211 if (cmd->prot_type == TARGET_DIF_TYPE1_PROT) sbc_dif_generate()
1217 (cmd->data_direction == DMA_TO_DEVICE) ? sbc_dif_generate()
1232 sbc_dif_v1_verify(struct se_cmd *cmd, struct se_dif_v1_tuple *sdt, sbc_dif_v1_verify() argument
1235 struct se_device *dev = cmd->se_dev; sbc_dif_v1_verify()
1239 if (!(cmd->prot_checks & TARGET_DIF_CHECK_GUARD)) sbc_dif_v1_verify()
1252 if (!(cmd->prot_checks & TARGET_DIF_CHECK_REFTAG)) sbc_dif_v1_verify()
1255 if (cmd->prot_type == TARGET_DIF_TYPE1_PROT && sbc_dif_v1_verify()
1263 if (cmd->prot_type == TARGET_DIF_TYPE2_PROT && sbc_dif_v1_verify()
1275 sbc_dif_copy_prot(struct se_cmd *cmd, unsigned int sectors, bool read, sbc_dif_copy_prot() argument
1278 struct se_device *dev = cmd->se_dev; sbc_dif_copy_prot()
1289 for_each_sg(cmd->t_prot_sg, psg, cmd->t_prot_nents, i) { sbc_dif_copy_prot()
1319 sbc_dif_verify_write(struct se_cmd *cmd, sector_t start, unsigned int sectors, sbc_dif_verify_write() argument
1322 struct se_device *dev = cmd->se_dev; sbc_dif_verify_write()
1324 struct scatterlist *dsg, *psg = cmd->t_prot_sg; sbc_dif_verify_write()
1330 for_each_sg(cmd->t_data_sg, dsg, cmd->t_data_nents, i) { sbc_dif_verify_write()
1350 rc = sbc_dif_v1_verify(cmd, sdt, daddr + j, sector, sbc_dif_verify_write()
1355 cmd->bad_sector = sector; sbc_dif_verify_write()
1370 sbc_dif_copy_prot(cmd, sectors, false, sg, sg_off); sbc_dif_verify_write()
1377 __sbc_dif_verify_read(struct se_cmd *cmd, sector_t start, unsigned int sectors, __sbc_dif_verify_read() argument
1380 struct se_device *dev = cmd->se_dev; __sbc_dif_verify_read()
1388 for_each_sg(cmd->t_data_sg, dsg, cmd->t_data_nents, i) { __sbc_dif_verify_read()
1414 rc = sbc_dif_v1_verify(cmd, sdt, daddr + j, sector, __sbc_dif_verify_read()
1419 cmd->bad_sector = sector; __sbc_dif_verify_read()
1436 sbc_dif_read_strip(struct se_cmd *cmd) sbc_dif_read_strip() argument
1438 struct se_device *dev = cmd->se_dev; sbc_dif_read_strip()
1439 u32 sectors = cmd->prot_length / dev->prot_length; sbc_dif_read_strip()
1441 return __sbc_dif_verify_read(cmd, cmd->t_task_lba, sectors, 0, sbc_dif_read_strip()
1442 cmd->t_prot_sg, 0); sbc_dif_read_strip()
1446 sbc_dif_verify_read(struct se_cmd *cmd, sector_t start, unsigned int sectors, sbc_dif_verify_read() argument
1451 rc = __sbc_dif_verify_read(cmd, start, sectors, ei_lba, sg, sg_off); sbc_dif_verify_read()
1455 sbc_dif_copy_prot(cmd, sectors, true, sg, sg_off); sbc_dif_verify_read()
603 sbc_set_prot_op_checks(u8 protect, bool fabric_prot, enum target_prot_type prot_type, bool is_write, struct se_cmd *cmd) sbc_set_prot_op_checks() argument
H A Dtarget_core_transport.c68 static void transport_complete_task_attr(struct se_cmd *cmd);
69 static void transport_handle_queue_full(struct se_cmd *cmd,
71 static int transport_put_cmd(struct se_cmd *cmd);
558 static void target_remove_from_state_list(struct se_cmd *cmd) target_remove_from_state_list() argument
560 struct se_device *dev = cmd->se_dev; target_remove_from_state_list()
566 if (cmd->transport_state & CMD_T_BUSY) target_remove_from_state_list()
570 if (cmd->state_active) { target_remove_from_state_list()
571 list_del(&cmd->state_list); target_remove_from_state_list()
572 cmd->state_active = false; target_remove_from_state_list()
577 static int transport_cmd_check_stop(struct se_cmd *cmd, bool remove_from_lists, transport_cmd_check_stop() argument
583 target_remove_from_state_list(cmd); transport_cmd_check_stop()
588 cmd->se_lun = NULL; transport_cmd_check_stop()
591 spin_lock_irqsave(&cmd->t_state_lock, flags); transport_cmd_check_stop()
593 cmd->t_state = TRANSPORT_WRITE_PENDING; transport_cmd_check_stop()
599 if (cmd->transport_state & CMD_T_STOP) { transport_cmd_check_stop()
602 cmd->se_tfo->get_task_tag(cmd)); transport_cmd_check_stop()
604 spin_unlock_irqrestore(&cmd->t_state_lock, flags); transport_cmd_check_stop()
606 complete_all(&cmd->t_transport_stop_comp); transport_cmd_check_stop()
610 cmd->transport_state &= ~CMD_T_ACTIVE; transport_cmd_check_stop()
621 if (cmd->se_tfo->check_stop_free != NULL) { transport_cmd_check_stop()
622 spin_unlock_irqrestore(&cmd->t_state_lock, flags); transport_cmd_check_stop()
623 return cmd->se_tfo->check_stop_free(cmd); transport_cmd_check_stop()
627 spin_unlock_irqrestore(&cmd->t_state_lock, flags); transport_cmd_check_stop()
631 static int transport_cmd_check_stop_to_fabric(struct se_cmd *cmd) transport_cmd_check_stop_to_fabric() argument
633 return transport_cmd_check_stop(cmd, true, false); transport_cmd_check_stop_to_fabric()
636 static void transport_lun_remove_cmd(struct se_cmd *cmd) transport_lun_remove_cmd() argument
638 struct se_lun *lun = cmd->se_lun; transport_lun_remove_cmd()
643 if (cmpxchg(&cmd->lun_ref_active, true, false)) transport_lun_remove_cmd()
647 void transport_cmd_finish_abort(struct se_cmd *cmd, int remove) transport_cmd_finish_abort() argument
649 bool ack_kref = (cmd->se_cmd_flags & SCF_ACK_KREF); transport_cmd_finish_abort()
651 if (cmd->se_cmd_flags & SCF_SE_LUN_CMD) transport_cmd_finish_abort()
652 transport_lun_remove_cmd(cmd); transport_cmd_finish_abort()
658 cmd->se_tfo->aborted_task(cmd); transport_cmd_finish_abort()
660 if (transport_cmd_check_stop_to_fabric(cmd)) transport_cmd_finish_abort()
663 transport_put_cmd(cmd); transport_cmd_finish_abort()
668 struct se_cmd *cmd = container_of(work, struct se_cmd, work); target_complete_failure_work() local
670 transport_generic_request_failure(cmd, target_complete_failure_work()
678 static unsigned char *transport_get_sense_buffer(struct se_cmd *cmd) transport_get_sense_buffer() argument
680 struct se_device *dev = cmd->se_dev; transport_get_sense_buffer()
682 WARN_ON(!cmd->se_lun); transport_get_sense_buffer()
687 if (cmd->se_cmd_flags & SCF_SENT_CHECK_CONDITION) transport_get_sense_buffer()
690 cmd->scsi_sense_length = TRANSPORT_SENSE_BUFFER; transport_get_sense_buffer()
693 dev->se_hba->hba_id, dev->transport->name, cmd->scsi_status); transport_get_sense_buffer()
694 return cmd->sense_buffer; transport_get_sense_buffer()
697 void target_complete_cmd(struct se_cmd *cmd, u8 scsi_status) target_complete_cmd() argument
699 struct se_device *dev = cmd->se_dev; target_complete_cmd()
703 cmd->scsi_status = scsi_status; target_complete_cmd()
706 spin_lock_irqsave(&cmd->t_state_lock, flags); target_complete_cmd()
707 cmd->transport_state &= ~CMD_T_BUSY; target_complete_cmd()
710 dev->transport->transport_complete(cmd, target_complete_cmd()
711 cmd->t_data_sg, target_complete_cmd()
712 transport_get_sense_buffer(cmd)); target_complete_cmd()
713 if (cmd->se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) target_complete_cmd()
720 if (cmd->transport_state & CMD_T_REQUEST_STOP) { target_complete_cmd()
721 spin_unlock_irqrestore(&cmd->t_state_lock, flags); target_complete_cmd()
722 complete(&cmd->task_stop_comp); target_complete_cmd()
730 if (cmd->transport_state & CMD_T_ABORTED || target_complete_cmd()
731 cmd->transport_state & CMD_T_STOP) { target_complete_cmd()
732 spin_unlock_irqrestore(&cmd->t_state_lock, flags); target_complete_cmd()
733 complete_all(&cmd->t_transport_stop_comp); target_complete_cmd()
736 INIT_WORK(&cmd->work, target_complete_failure_work); target_complete_cmd()
738 INIT_WORK(&cmd->work, target_complete_ok_work); target_complete_cmd()
741 cmd->t_state = TRANSPORT_COMPLETE; target_complete_cmd()
742 cmd->transport_state |= (CMD_T_COMPLETE | CMD_T_ACTIVE); target_complete_cmd()
743 spin_unlock_irqrestore(&cmd->t_state_lock, flags); target_complete_cmd()
745 queue_work(target_completion_wq, &cmd->work); target_complete_cmd()
749 void target_complete_cmd_with_length(struct se_cmd *cmd, u8 scsi_status, int length) target_complete_cmd_with_length() argument
751 if (scsi_status == SAM_STAT_GOOD && length < cmd->data_length) { target_complete_cmd_with_length()
752 if (cmd->se_cmd_flags & SCF_UNDERFLOW_BIT) { target_complete_cmd_with_length()
753 cmd->residual_count += cmd->data_length - length; target_complete_cmd_with_length()
755 cmd->se_cmd_flags |= SCF_UNDERFLOW_BIT; target_complete_cmd_with_length()
756 cmd->residual_count = cmd->data_length - length; target_complete_cmd_with_length()
759 cmd->data_length = length; target_complete_cmd_with_length()
762 target_complete_cmd(cmd, scsi_status); target_complete_cmd_with_length()
766 static void target_add_to_state_list(struct se_cmd *cmd) target_add_to_state_list() argument
768 struct se_device *dev = cmd->se_dev; target_add_to_state_list()
772 if (!cmd->state_active) { target_add_to_state_list()
773 list_add_tail(&cmd->state_list, &dev->state_list); target_add_to_state_list()
774 cmd->state_active = true; target_add_to_state_list()
782 static void transport_write_pending_qf(struct se_cmd *cmd);
783 static void transport_complete_qf(struct se_cmd *cmd);
790 struct se_cmd *cmd, *cmd_tmp; target_qf_do_work() local
796 list_for_each_entry_safe(cmd, cmd_tmp, &qf_cmd_list, se_qf_node) { target_qf_do_work()
797 list_del(&cmd->se_qf_node); target_qf_do_work()
800 pr_debug("Processing %s cmd: %p QUEUE_FULL in work queue" target_qf_do_work()
801 " context: %s\n", cmd->se_tfo->get_fabric_name(), cmd, target_qf_do_work()
802 (cmd->t_state == TRANSPORT_COMPLETE_QF_OK) ? "COMPLETE_OK" : target_qf_do_work()
803 (cmd->t_state == TRANSPORT_COMPLETE_QF_WP) ? "WRITE_PENDING" target_qf_do_work()
806 if (cmd->t_state == TRANSPORT_COMPLETE_QF_WP) target_qf_do_work()
807 transport_write_pending_qf(cmd); target_qf_do_work()
808 else if (cmd->t_state == TRANSPORT_COMPLETE_QF_OK) target_qf_do_work()
809 transport_complete_qf(cmd); target_qf_do_work()
813 unsigned char *transport_dump_cmd_direction(struct se_cmd *cmd) transport_dump_cmd_direction() argument
815 switch (cmd->data_direction) { transport_dump_cmd_direction()
1106 target_cmd_size_check(struct se_cmd *cmd, unsigned int size) target_cmd_size_check() argument
1108 struct se_device *dev = cmd->se_dev; target_cmd_size_check()
1110 if (cmd->unknown_data_length) { target_cmd_size_check()
1111 cmd->data_length = size; target_cmd_size_check()
1112 } else if (size != cmd->data_length) { target_cmd_size_check()
1115 " 0x%02x\n", cmd->se_tfo->get_fabric_name(), target_cmd_size_check()
1116 cmd->data_length, size, cmd->t_task_cdb[0]); target_cmd_size_check()
1118 if (cmd->data_direction == DMA_TO_DEVICE) { target_cmd_size_check()
1140 if (size > cmd->data_length) { target_cmd_size_check()
1141 cmd->se_cmd_flags |= SCF_OVERFLOW_BIT; target_cmd_size_check()
1142 cmd->residual_count = (size - cmd->data_length); target_cmd_size_check()
1144 cmd->se_cmd_flags |= SCF_UNDERFLOW_BIT; target_cmd_size_check()
1145 cmd->residual_count = (cmd->data_length - size); target_cmd_size_check()
1146 cmd->data_length = size; target_cmd_size_check()
1159 struct se_cmd *cmd, transport_init_se_cmd()
1167 INIT_LIST_HEAD(&cmd->se_delayed_node); transport_init_se_cmd()
1168 INIT_LIST_HEAD(&cmd->se_qf_node); transport_init_se_cmd()
1169 INIT_LIST_HEAD(&cmd->se_cmd_list); transport_init_se_cmd()
1170 INIT_LIST_HEAD(&cmd->state_list); transport_init_se_cmd()
1171 init_completion(&cmd->t_transport_stop_comp); transport_init_se_cmd()
1172 init_completion(&cmd->cmd_wait_comp); transport_init_se_cmd()
1173 init_completion(&cmd->task_stop_comp); transport_init_se_cmd()
1174 spin_lock_init(&cmd->t_state_lock); transport_init_se_cmd()
1175 kref_init(&cmd->cmd_kref); transport_init_se_cmd()
1176 cmd->transport_state = CMD_T_DEV_ACTIVE; transport_init_se_cmd()
1178 cmd->se_tfo = tfo; transport_init_se_cmd()
1179 cmd->se_sess = se_sess; transport_init_se_cmd()
1180 cmd->data_length = data_length; transport_init_se_cmd()
1181 cmd->data_direction = data_direction; transport_init_se_cmd()
1182 cmd->sam_task_attr = task_attr; transport_init_se_cmd()
1183 cmd->sense_buffer = sense_buffer; transport_init_se_cmd()
1185 cmd->state_active = false; transport_init_se_cmd()
1190 transport_check_alloc_task_attr(struct se_cmd *cmd) transport_check_alloc_task_attr() argument
1192 struct se_device *dev = cmd->se_dev; transport_check_alloc_task_attr()
1201 if (cmd->sam_task_attr == TCM_ACA_TAG) { transport_check_alloc_task_attr()
1210 cmd->se_ordered_id = atomic_inc_return(&dev->dev_ordered_id); transport_check_alloc_task_attr()
1212 cmd->se_ordered_id, cmd->sam_task_attr, transport_check_alloc_task_attr()
1218 target_setup_cmd_from_cdb(struct se_cmd *cmd, unsigned char *cdb) target_setup_cmd_from_cdb() argument
1220 struct se_device *dev = cmd->se_dev; target_setup_cmd_from_cdb()
1238 if (scsi_command_size(cdb) > sizeof(cmd->__t_task_cdb)) { target_setup_cmd_from_cdb()
1239 cmd->t_task_cdb = kzalloc(scsi_command_size(cdb), target_setup_cmd_from_cdb()
1241 if (!cmd->t_task_cdb) { target_setup_cmd_from_cdb()
1242 pr_err("Unable to allocate cmd->t_task_cdb" target_setup_cmd_from_cdb()
1243 " %u > sizeof(cmd->__t_task_cdb): %lu ops\n", target_setup_cmd_from_cdb()
1245 (unsigned long)sizeof(cmd->__t_task_cdb)); target_setup_cmd_from_cdb()
1249 cmd->t_task_cdb = &cmd->__t_task_cdb[0]; target_setup_cmd_from_cdb()
1251 * Copy the original CDB into cmd-> target_setup_cmd_from_cdb()
1253 memcpy(cmd->t_task_cdb, cdb, scsi_command_size(cdb)); target_setup_cmd_from_cdb()
1255 trace_target_sequencer_start(cmd); target_setup_cmd_from_cdb()
1260 ret = target_scsi3_ua_check(cmd); target_setup_cmd_from_cdb()
1264 ret = target_alua_state_check(cmd); target_setup_cmd_from_cdb()
1268 ret = target_check_reservation(cmd); target_setup_cmd_from_cdb()
1270 cmd->scsi_status = SAM_STAT_RESERVATION_CONFLICT; target_setup_cmd_from_cdb()
1274 ret = dev->transport->parse_cdb(cmd); target_setup_cmd_from_cdb()
1278 ret = transport_check_alloc_task_attr(cmd); target_setup_cmd_from_cdb()
1282 cmd->se_cmd_flags |= SCF_SUPPORTED_SAM_OPCODE; target_setup_cmd_from_cdb()
1284 spin_lock(&cmd->se_lun->lun_sep_lock); target_setup_cmd_from_cdb()
1285 if (cmd->se_lun->lun_sep) target_setup_cmd_from_cdb()
1286 cmd->se_lun->lun_sep->sep_stats.cmd_pdus++; target_setup_cmd_from_cdb()
1287 spin_unlock(&cmd->se_lun->lun_sep_lock); target_setup_cmd_from_cdb()
1297 struct se_cmd *cmd) transport_handle_cdb_direct()
1301 if (!cmd->se_lun) { transport_handle_cdb_direct()
1303 pr_err("cmd->se_lun is NULL\n"); transport_handle_cdb_direct()
1317 * Also, we don't take cmd->t_state_lock here as we only expect transport_handle_cdb_direct()
1320 cmd->t_state = TRANSPORT_NEW_CMD; transport_handle_cdb_direct()
1321 cmd->transport_state |= CMD_T_ACTIVE; transport_handle_cdb_direct()
1328 ret = transport_generic_new_cmd(cmd); transport_handle_cdb_direct()
1330 transport_generic_request_failure(cmd, ret); transport_handle_cdb_direct()
1336 transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *sgl, transport_generic_map_mem_to_cmd() argument
1347 if (cmd->se_cmd_flags & SCF_OVERFLOW_BIT) { transport_generic_map_mem_to_cmd()
1353 cmd->t_data_sg = sgl; transport_generic_map_mem_to_cmd()
1354 cmd->t_data_nents = sgl_count; transport_generic_map_mem_to_cmd()
1357 cmd->t_bidi_data_sg = sgl_bidi; transport_generic_map_mem_to_cmd()
1358 cmd->t_bidi_data_nents = sgl_bidi_count; transport_generic_map_mem_to_cmd()
1360 cmd->se_cmd_flags |= SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC; transport_generic_map_mem_to_cmd()
1416 * Obtain struct se_cmd->cmd_kref reference and add new cmd to target_submit_cmd_map_sgls()
1556 * @flags: submit cmd flags
1608 * If the cmd is active, request it to be stopped and sleep until it
1611 bool target_stop_cmd(struct se_cmd *cmd, unsigned long *flags)
1612 __releases(&cmd->t_state_lock)
1613 __acquires(&cmd->t_state_lock)
1617 if (cmd->transport_state & CMD_T_BUSY) {
1618 cmd->transport_state |= CMD_T_REQUEST_STOP;
1619 spin_unlock_irqrestore(&cmd->t_state_lock, *flags);
1621 pr_debug("cmd %p waiting to complete\n", cmd);
1622 wait_for_completion(&cmd->task_stop_comp);
1623 pr_debug("cmd %p stopped successfully\n", cmd);
1625 spin_lock_irqsave(&cmd->t_state_lock, *flags);
1626 cmd->transport_state &= ~CMD_T_REQUEST_STOP;
1627 cmd->transport_state &= ~CMD_T_BUSY;
1637 void transport_generic_request_failure(struct se_cmd *cmd, transport_generic_request_failure() argument
1642 pr_debug("-----[ Storage Engine Exception for cmd: %p ITT: 0x%08x" transport_generic_request_failure()
1643 " CDB: 0x%02x\n", cmd, cmd->se_tfo->get_task_tag(cmd), transport_generic_request_failure()
1644 cmd->t_task_cdb[0]); transport_generic_request_failure()
1646 cmd->se_tfo->get_cmd_state(cmd), transport_generic_request_failure()
1647 cmd->t_state, sense_reason); transport_generic_request_failure()
1649 (cmd->transport_state & CMD_T_ACTIVE) != 0, transport_generic_request_failure()
1650 (cmd->transport_state & CMD_T_STOP) != 0, transport_generic_request_failure()
1651 (cmd->transport_state & CMD_T_SENT) != 0); transport_generic_request_failure()
1656 transport_complete_task_attr(cmd); transport_generic_request_failure()
1661 if ((cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) && transport_generic_request_failure()
1662 cmd->transport_complete_callback) transport_generic_request_failure()
1663 cmd->transport_complete_callback(cmd, false, &post_ret); transport_generic_request_failure()
1692 cmd->scsi_status = SAM_STAT_RESERVATION_CONFLICT; transport_generic_request_failure()
1700 if (cmd->se_sess && transport_generic_request_failure()
1701 cmd->se_dev->dev_attrib.emulate_ua_intlck_ctrl == 2) transport_generic_request_failure()
1702 core_scsi3_ua_allocate(cmd->se_sess->se_node_acl, transport_generic_request_failure()
1703 cmd->orig_fe_lun, 0x2C, transport_generic_request_failure()
1706 trace_target_cmd_complete(cmd); transport_generic_request_failure()
1707 ret = cmd->se_tfo-> queue_status(cmd); transport_generic_request_failure()
1713 cmd->t_task_cdb[0], sense_reason); transport_generic_request_failure()
1718 ret = transport_send_check_condition_and_sense(cmd, sense_reason, 0); transport_generic_request_failure()
1723 transport_lun_remove_cmd(cmd); transport_generic_request_failure()
1724 if (!transport_cmd_check_stop_to_fabric(cmd)) transport_generic_request_failure()
1729 cmd->t_state = TRANSPORT_COMPLETE_QF_OK; transport_generic_request_failure()
1730 transport_handle_queue_full(cmd, cmd->se_dev); transport_generic_request_failure()
1734 void __target_execute_cmd(struct se_cmd *cmd) __target_execute_cmd() argument
1738 if (cmd->execute_cmd) { __target_execute_cmd()
1739 ret = cmd->execute_cmd(cmd); __target_execute_cmd()
1741 spin_lock_irq(&cmd->t_state_lock); __target_execute_cmd()
1742 cmd->transport_state &= ~(CMD_T_BUSY|CMD_T_SENT); __target_execute_cmd()
1743 spin_unlock_irq(&cmd->t_state_lock); __target_execute_cmd()
1745 transport_generic_request_failure(cmd, ret); __target_execute_cmd()
1750 static int target_write_prot_action(struct se_cmd *cmd) target_write_prot_action() argument
1758 switch (cmd->prot_op) { target_write_prot_action()
1760 if (!(cmd->se_sess->sup_prot_ops & TARGET_PROT_DOUT_INSERT)) target_write_prot_action()
1761 sbc_dif_generate(cmd); target_write_prot_action()
1764 if (cmd->se_sess->sup_prot_ops & TARGET_PROT_DOUT_STRIP) target_write_prot_action()
1767 sectors = cmd->data_length >> ilog2(cmd->se_dev->dev_attrib.block_size); target_write_prot_action()
1768 cmd->pi_err = sbc_dif_verify_write(cmd, cmd->t_task_lba, target_write_prot_action()
1770 if (unlikely(cmd->pi_err)) { target_write_prot_action()
1771 spin_lock_irq(&cmd->t_state_lock); target_write_prot_action()
1772 cmd->transport_state &= ~(CMD_T_BUSY|CMD_T_SENT); target_write_prot_action()
1773 spin_unlock_irq(&cmd->t_state_lock); target_write_prot_action()
1774 transport_generic_request_failure(cmd, cmd->pi_err); target_write_prot_action()
1785 static bool target_handle_task_attr(struct se_cmd *cmd) target_handle_task_attr() argument
1787 struct se_device *dev = cmd->se_dev; target_handle_task_attr()
1796 switch (cmd->sam_task_attr) { target_handle_task_attr()
1800 cmd->t_task_cdb[0], cmd->se_ordered_id); target_handle_task_attr()
1807 cmd->t_task_cdb[0], cmd->se_ordered_id); target_handle_task_attr()
1828 list_add_tail(&cmd->se_delayed_node, &dev->delayed_cmd_list); target_handle_task_attr()
1833 cmd->t_task_cdb[0], cmd->sam_task_attr, target_handle_task_attr()
1834 cmd->se_ordered_id); target_handle_task_attr()
1840 void target_execute_cmd(struct se_cmd *cmd) target_execute_cmd() argument
1848 spin_lock_irq(&cmd->t_state_lock); target_execute_cmd()
1849 if (__transport_check_aborted_status(cmd, 1)) { target_execute_cmd()
1850 spin_unlock_irq(&cmd->t_state_lock); target_execute_cmd()
1853 if (cmd->transport_state & CMD_T_STOP) { target_execute_cmd()
1856 cmd->se_tfo->get_task_tag(cmd)); target_execute_cmd()
1858 spin_unlock_irq(&cmd->t_state_lock); target_execute_cmd()
1859 complete_all(&cmd->t_transport_stop_comp); target_execute_cmd()
1863 cmd->t_state = TRANSPORT_PROCESSING; target_execute_cmd()
1864 cmd->transport_state |= CMD_T_ACTIVE|CMD_T_BUSY|CMD_T_SENT; target_execute_cmd()
1865 spin_unlock_irq(&cmd->t_state_lock); target_execute_cmd()
1867 if (target_write_prot_action(cmd)) target_execute_cmd()
1870 if (target_handle_task_attr(cmd)) { target_execute_cmd()
1871 spin_lock_irq(&cmd->t_state_lock); target_execute_cmd()
1872 cmd->transport_state &= ~(CMD_T_BUSY | CMD_T_SENT); target_execute_cmd()
1873 spin_unlock_irq(&cmd->t_state_lock); target_execute_cmd()
1877 __target_execute_cmd(cmd); target_execute_cmd()
1888 struct se_cmd *cmd; target_restart_delayed_cmds() local
1896 cmd = list_entry(dev->delayed_cmd_list.next, target_restart_delayed_cmds()
1898 list_del(&cmd->se_delayed_node); target_restart_delayed_cmds()
1901 __target_execute_cmd(cmd); target_restart_delayed_cmds()
1903 if (cmd->sam_task_attr == TCM_ORDERED_TAG) target_restart_delayed_cmds()
1912 static void transport_complete_task_attr(struct se_cmd *cmd) transport_complete_task_attr() argument
1914 struct se_device *dev = cmd->se_dev; transport_complete_task_attr()
1919 if (cmd->sam_task_attr == TCM_SIMPLE_TAG) { transport_complete_task_attr()
1924 cmd->se_ordered_id); transport_complete_task_attr()
1925 } else if (cmd->sam_task_attr == TCM_HEAD_TAG) { transport_complete_task_attr()
1929 cmd->se_ordered_id); transport_complete_task_attr()
1930 } else if (cmd->sam_task_attr == TCM_ORDERED_TAG) { transport_complete_task_attr()
1935 " %u\n", dev->dev_cur_ordered_id, cmd->se_ordered_id); transport_complete_task_attr()
1941 static void transport_complete_qf(struct se_cmd *cmd) transport_complete_qf() argument
1945 transport_complete_task_attr(cmd); transport_complete_qf()
1947 if (cmd->se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) { transport_complete_qf()
1948 trace_target_cmd_complete(cmd); transport_complete_qf()
1949 ret = cmd->se_tfo->queue_status(cmd); transport_complete_qf()
1953 switch (cmd->data_direction) { transport_complete_qf()
1955 trace_target_cmd_complete(cmd); transport_complete_qf()
1956 ret = cmd->se_tfo->queue_data_in(cmd); transport_complete_qf()
1959 if (cmd->se_cmd_flags & SCF_BIDI) { transport_complete_qf()
1960 ret = cmd->se_tfo->queue_data_in(cmd); transport_complete_qf()
1965 trace_target_cmd_complete(cmd); transport_complete_qf()
1966 ret = cmd->se_tfo->queue_status(cmd); transport_complete_qf()
1974 transport_handle_queue_full(cmd, cmd->se_dev); transport_complete_qf()
1977 transport_lun_remove_cmd(cmd); transport_complete_qf()
1978 transport_cmd_check_stop_to_fabric(cmd); transport_complete_qf()
1982 struct se_cmd *cmd, transport_handle_queue_full()
1986 list_add_tail(&cmd->se_qf_node, &cmd->se_dev->qf_cmd_list); transport_handle_queue_full()
1988 spin_unlock_irq(&cmd->se_dev->qf_cmd_lock); transport_handle_queue_full()
1990 schedule_work(&cmd->se_dev->qf_work_queue); transport_handle_queue_full()
1993 static bool target_read_prot_action(struct se_cmd *cmd) target_read_prot_action() argument
1997 switch (cmd->prot_op) { target_read_prot_action()
1999 if (!(cmd->se_sess->sup_prot_ops & TARGET_PROT_DIN_STRIP)) { target_read_prot_action()
2000 rc = sbc_dif_read_strip(cmd); target_read_prot_action()
2002 cmd->pi_err = rc; target_read_prot_action()
2008 if (cmd->se_sess->sup_prot_ops & TARGET_PROT_DIN_INSERT) target_read_prot_action()
2011 sbc_dif_generate(cmd); target_read_prot_action()
2022 struct se_cmd *cmd = container_of(work, struct se_cmd, work); target_complete_ok_work() local
2030 transport_complete_task_attr(cmd); target_complete_ok_work()
2034 * cmd->transport_qf_callback() target_complete_ok_work()
2036 if (atomic_read(&cmd->se_dev->dev_qf_count) != 0) target_complete_ok_work()
2037 schedule_work(&cmd->se_dev->qf_work_queue); target_complete_ok_work()
2043 if (cmd->se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) { target_complete_ok_work()
2044 WARN_ON(!cmd->scsi_status); target_complete_ok_work()
2046 cmd, 0, 1); target_complete_ok_work()
2050 transport_lun_remove_cmd(cmd); target_complete_ok_work()
2051 transport_cmd_check_stop_to_fabric(cmd); target_complete_ok_work()
2058 if (cmd->transport_complete_callback) { target_complete_ok_work()
2060 bool caw = (cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE); target_complete_ok_work()
2061 bool zero_dl = !(cmd->data_length); target_complete_ok_work()
2064 rc = cmd->transport_complete_callback(cmd, true, &post_ret); target_complete_ok_work()
2071 ret = transport_send_check_condition_and_sense(cmd, target_complete_ok_work()
2076 transport_lun_remove_cmd(cmd); target_complete_ok_work()
2077 transport_cmd_check_stop_to_fabric(cmd); target_complete_ok_work()
2083 switch (cmd->data_direction) { target_complete_ok_work()
2085 spin_lock(&cmd->se_lun->lun_sep_lock); target_complete_ok_work()
2086 if (cmd->se_lun->lun_sep) { target_complete_ok_work()
2087 cmd->se_lun->lun_sep->sep_stats.tx_data_octets += target_complete_ok_work()
2088 cmd->data_length; target_complete_ok_work()
2090 spin_unlock(&cmd->se_lun->lun_sep_lock); target_complete_ok_work()
2096 if (target_read_prot_action(cmd)) { target_complete_ok_work()
2097 ret = transport_send_check_condition_and_sense(cmd, target_complete_ok_work()
2098 cmd->pi_err, 0); target_complete_ok_work()
2102 transport_lun_remove_cmd(cmd); target_complete_ok_work()
2103 transport_cmd_check_stop_to_fabric(cmd); target_complete_ok_work()
2107 trace_target_cmd_complete(cmd); target_complete_ok_work()
2108 ret = cmd->se_tfo->queue_data_in(cmd); target_complete_ok_work()
2113 spin_lock(&cmd->se_lun->lun_sep_lock); target_complete_ok_work()
2114 if (cmd->se_lun->lun_sep) { target_complete_ok_work()
2115 cmd->se_lun->lun_sep->sep_stats.rx_data_octets += target_complete_ok_work()
2116 cmd->data_length; target_complete_ok_work()
2118 spin_unlock(&cmd->se_lun->lun_sep_lock); target_complete_ok_work()
2122 if (cmd->se_cmd_flags & SCF_BIDI) { target_complete_ok_work()
2123 spin_lock(&cmd->se_lun->lun_sep_lock); target_complete_ok_work()
2124 if (cmd->se_lun->lun_sep) { target_complete_ok_work()
2125 cmd->se_lun->lun_sep->sep_stats.tx_data_octets += target_complete_ok_work()
2126 cmd->data_length; target_complete_ok_work()
2128 spin_unlock(&cmd->se_lun->lun_sep_lock); target_complete_ok_work()
2129 ret = cmd->se_tfo->queue_data_in(cmd); target_complete_ok_work()
2136 trace_target_cmd_complete(cmd); target_complete_ok_work()
2137 ret = cmd->se_tfo->queue_status(cmd); target_complete_ok_work()
2145 transport_lun_remove_cmd(cmd); target_complete_ok_work()
2146 transport_cmd_check_stop_to_fabric(cmd); target_complete_ok_work()
2151 " data_direction: %d\n", cmd, cmd->data_direction); target_complete_ok_work()
2152 cmd->t_state = TRANSPORT_COMPLETE_QF_OK; target_complete_ok_work()
2153 transport_handle_queue_full(cmd, cmd->se_dev); target_complete_ok_work()
2167 static inline void transport_reset_sgl_orig(struct se_cmd *cmd) transport_reset_sgl_orig() argument
2173 if (!cmd->t_data_sg_orig) transport_reset_sgl_orig()
2176 kfree(cmd->t_data_sg); transport_reset_sgl_orig()
2177 cmd->t_data_sg = cmd->t_data_sg_orig; transport_reset_sgl_orig()
2178 cmd->t_data_sg_orig = NULL; transport_reset_sgl_orig()
2179 cmd->t_data_nents = cmd->t_data_nents_orig; transport_reset_sgl_orig()
2180 cmd->t_data_nents_orig = 0; transport_reset_sgl_orig()
2183 static inline void transport_free_pages(struct se_cmd *cmd) transport_free_pages() argument
2185 if (cmd->se_cmd_flags & SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC) { transport_free_pages()
2190 if (cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) { transport_free_pages()
2191 transport_free_sgl(cmd->t_bidi_data_sg, transport_free_pages()
2192 cmd->t_bidi_data_nents); transport_free_pages()
2193 cmd->t_bidi_data_sg = NULL; transport_free_pages()
2194 cmd->t_bidi_data_nents = 0; transport_free_pages()
2196 transport_reset_sgl_orig(cmd); transport_free_pages()
2199 transport_reset_sgl_orig(cmd); transport_free_pages()
2201 transport_free_sgl(cmd->t_data_sg, cmd->t_data_nents); transport_free_pages()
2202 cmd->t_data_sg = NULL; transport_free_pages()
2203 cmd->t_data_nents = 0; transport_free_pages()
2205 transport_free_sgl(cmd->t_bidi_data_sg, cmd->t_bidi_data_nents); transport_free_pages()
2206 cmd->t_bidi_data_sg = NULL; transport_free_pages()
2207 cmd->t_bidi_data_nents = 0; transport_free_pages()
2209 transport_free_sgl(cmd->t_prot_sg, cmd->t_prot_nents); transport_free_pages()
2210 cmd->t_prot_sg = NULL; transport_free_pages()
2211 cmd->t_prot_nents = 0; transport_free_pages()
2216 * @cmd: command to release
2220 static int transport_put_cmd(struct se_cmd *cmd) transport_put_cmd() argument
2222 BUG_ON(!cmd->se_tfo); transport_put_cmd()
2224 * If this cmd has been setup with target_get_sess_cmd(), drop transport_put_cmd()
2227 return target_put_sess_cmd(cmd); transport_put_cmd()
2230 void *transport_kmap_data_sg(struct se_cmd *cmd) transport_kmap_data_sg() argument
2232 struct scatterlist *sg = cmd->t_data_sg; transport_kmap_data_sg()
2241 if (!cmd->t_data_nents) transport_kmap_data_sg()
2245 if (cmd->t_data_nents == 1) transport_kmap_data_sg()
2249 pages = kmalloc(sizeof(*pages) * cmd->t_data_nents, GFP_KERNEL); transport_kmap_data_sg()
2254 for_each_sg(cmd->t_data_sg, sg, cmd->t_data_nents, i) { transport_kmap_data_sg()
2258 cmd->t_data_vmap = vmap(pages, cmd->t_data_nents, VM_MAP, PAGE_KERNEL); transport_kmap_data_sg()
2260 if (!cmd->t_data_vmap) transport_kmap_data_sg()
2263 return cmd->t_data_vmap + cmd->t_data_sg[0].offset; transport_kmap_data_sg()
2267 void transport_kunmap_data_sg(struct se_cmd *cmd) transport_kunmap_data_sg() argument
2269 if (!cmd->t_data_nents) { transport_kunmap_data_sg()
2271 } else if (cmd->t_data_nents == 1) { transport_kunmap_data_sg()
2272 kunmap(sg_page(cmd->t_data_sg)); transport_kunmap_data_sg()
2276 vunmap(cmd->t_data_vmap); transport_kunmap_data_sg()
2277 cmd->t_data_vmap = NULL; transport_kunmap_data_sg()
2327 transport_generic_new_cmd(struct se_cmd *cmd) transport_generic_new_cmd() argument
2330 bool zero_flag = !(cmd->se_cmd_flags & SCF_SCSI_DATA_CDB); transport_generic_new_cmd()
2337 if (!(cmd->se_cmd_flags & SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC) && transport_generic_new_cmd()
2338 cmd->data_length) { transport_generic_new_cmd()
2340 if ((cmd->se_cmd_flags & SCF_BIDI) || transport_generic_new_cmd()
2341 (cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE)) { transport_generic_new_cmd()
2344 if (cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) transport_generic_new_cmd()
2345 bidi_length = cmd->t_task_nolb * transport_generic_new_cmd()
2346 cmd->se_dev->dev_attrib.block_size; transport_generic_new_cmd()
2348 bidi_length = cmd->data_length; transport_generic_new_cmd()
2350 ret = target_alloc_sgl(&cmd->t_bidi_data_sg, transport_generic_new_cmd()
2351 &cmd->t_bidi_data_nents, transport_generic_new_cmd()
2357 if (cmd->prot_op != TARGET_PROT_NORMAL) { transport_generic_new_cmd()
2358 ret = target_alloc_sgl(&cmd->t_prot_sg, transport_generic_new_cmd()
2359 &cmd->t_prot_nents, transport_generic_new_cmd()
2360 cmd->prot_length, true); transport_generic_new_cmd()
2365 ret = target_alloc_sgl(&cmd->t_data_sg, &cmd->t_data_nents, transport_generic_new_cmd()
2366 cmd->data_length, zero_flag); transport_generic_new_cmd()
2369 } else if ((cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) && transport_generic_new_cmd()
2370 cmd->data_length) { transport_generic_new_cmd()
2375 u32 caw_length = cmd->t_task_nolb * transport_generic_new_cmd()
2376 cmd->se_dev->dev_attrib.block_size; transport_generic_new_cmd()
2378 ret = target_alloc_sgl(&cmd->t_bidi_data_sg, transport_generic_new_cmd()
2379 &cmd->t_bidi_data_nents, transport_generic_new_cmd()
2389 target_add_to_state_list(cmd); transport_generic_new_cmd()
2390 if (cmd->data_direction != DMA_TO_DEVICE || cmd->data_length == 0) { transport_generic_new_cmd()
2391 target_execute_cmd(cmd); transport_generic_new_cmd()
2394 transport_cmd_check_stop(cmd, false, true); transport_generic_new_cmd()
2396 ret = cmd->se_tfo->write_pending(cmd); transport_generic_new_cmd()
2406 pr_debug("Handling write_pending QUEUE__FULL: se_cmd: %p\n", cmd); transport_generic_new_cmd()
2407 cmd->t_state = TRANSPORT_COMPLETE_QF_WP; transport_generic_new_cmd()
2408 transport_handle_queue_full(cmd, cmd->se_dev); transport_generic_new_cmd()
2413 static void transport_write_pending_qf(struct se_cmd *cmd) transport_write_pending_qf() argument
2417 ret = cmd->se_tfo->write_pending(cmd); transport_write_pending_qf()
2420 cmd); transport_write_pending_qf()
2421 transport_handle_queue_full(cmd, cmd->se_dev); transport_write_pending_qf()
2429 static void target_wait_free_cmd(struct se_cmd *cmd, bool *aborted, bool *tas) target_wait_free_cmd() argument
2433 spin_lock_irqsave(&cmd->t_state_lock, flags); target_wait_free_cmd()
2434 __transport_wait_for_tasks(cmd, true, aborted, tas, &flags); target_wait_free_cmd()
2435 spin_unlock_irqrestore(&cmd->t_state_lock, flags); target_wait_free_cmd()
2438 int transport_generic_free_cmd(struct se_cmd *cmd, int wait_for_tasks) transport_generic_free_cmd() argument
2443 if (!(cmd->se_cmd_flags & SCF_SE_LUN_CMD)) { transport_generic_free_cmd()
2444 if (wait_for_tasks && (cmd->se_cmd_flags & SCF_SCSI_TMR_CDB)) transport_generic_free_cmd()
2445 target_wait_free_cmd(cmd, &aborted, &tas); transport_generic_free_cmd()
2448 ret = transport_put_cmd(cmd); transport_generic_free_cmd()
2451 target_wait_free_cmd(cmd, &aborted, &tas); transport_generic_free_cmd()
2457 if (cmd->state_active) transport_generic_free_cmd()
2458 target_remove_from_state_list(cmd); transport_generic_free_cmd()
2460 if (cmd->se_lun) transport_generic_free_cmd()
2461 transport_lun_remove_cmd(cmd); transport_generic_free_cmd()
2464 ret = transport_put_cmd(cmd); transport_generic_free_cmd()
2474 cmd->se_tfo->get_task_tag(cmd)); transport_generic_free_cmd()
2475 wait_for_completion(&cmd->cmd_wait_comp); transport_generic_free_cmd()
2476 cmd->se_tfo->release_cmd(cmd); transport_generic_free_cmd()
2517 static void target_free_cmd_mem(struct se_cmd *cmd) target_free_cmd_mem() argument
2519 transport_free_pages(cmd); target_free_cmd_mem()
2521 if (cmd->se_cmd_flags & SCF_SCSI_TMR_CDB) target_free_cmd_mem()
2522 core_tmr_release_req(cmd->se_tmr_req); target_free_cmd_mem()
2523 if (cmd->t_task_cdb != cmd->__t_task_cdb) target_free_cmd_mem()
2524 kfree(cmd->t_task_cdb); target_free_cmd_mem()
2676 __transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop,
2678 __releases(&cmd->t_state_lock)
2679 __acquires(&cmd->t_state_lock)
2682 assert_spin_locked(&cmd->t_state_lock);
2686 cmd->transport_state |= CMD_T_FABRIC_STOP;
2688 if (cmd->transport_state & CMD_T_ABORTED)
2691 if (cmd->transport_state & CMD_T_TAS)
2694 if (!(cmd->se_cmd_flags & SCF_SE_LUN_CMD) &&
2695 !(cmd->se_cmd_flags & SCF_SCSI_TMR_CDB))
2698 if (!(cmd->se_cmd_flags & SCF_SUPPORTED_SAM_OPCODE) &&
2699 !(cmd->se_cmd_flags & SCF_SCSI_TMR_CDB))
2702 if (!(cmd->transport_state & CMD_T_ACTIVE))
2708 cmd->transport_state |= CMD_T_STOP;
2712 cmd, cmd->se_tfo->get_task_tag(cmd),
2713 cmd->se_tfo->get_cmd_state(cmd), cmd->t_state);
2715 spin_unlock_irqrestore(&cmd->t_state_lock, *flags);
2717 wait_for_completion(&cmd->t_transport_stop_comp);
2719 spin_lock_irqsave(&cmd->t_state_lock, *flags);
2720 cmd->transport_state &= ~(CMD_T_ACTIVE | CMD_T_STOP);
2723 "&cmd->t_transport_stop_comp) for ITT: 0x%08x\n",
2724 cmd->se_tfo->get_task_tag(cmd));
2731 * @cmd: command to wait
2736 bool transport_wait_for_tasks(struct se_cmd *cmd) transport_wait_for_tasks() argument
2741 spin_lock_irqsave(&cmd->t_state_lock, flags); transport_wait_for_tasks()
2742 ret = __transport_wait_for_tasks(cmd, false, &aborted, &tas, &flags); transport_wait_for_tasks()
2743 spin_unlock_irqrestore(&cmd->t_state_lock, flags); transport_wait_for_tasks()
2750 struct se_cmd *cmd, transport_get_sense_codes()
2754 *asc = cmd->scsi_asc; transport_get_sense_codes()
2755 *ascq = cmd->scsi_ascq; transport_get_sense_codes()
2774 transport_send_check_condition_and_sense(struct se_cmd *cmd, transport_send_check_condition_and_sense() argument
2777 unsigned char *buffer = cmd->sense_buffer; transport_send_check_condition_and_sense()
2781 spin_lock_irqsave(&cmd->t_state_lock, flags); transport_send_check_condition_and_sense()
2782 if (cmd->se_cmd_flags & SCF_SENT_CHECK_CONDITION) { transport_send_check_condition_and_sense()
2783 spin_unlock_irqrestore(&cmd->t_state_lock, flags); transport_send_check_condition_and_sense()
2786 cmd->se_cmd_flags |= SCF_SENT_CHECK_CONDITION; transport_send_check_condition_and_sense()
2787 spin_unlock_irqrestore(&cmd->t_state_lock, flags); transport_send_check_condition_and_sense()
2793 cmd->se_cmd_flags |= SCF_EMULATED_TASK_SENSE; transport_send_check_condition_and_sense()
2943 core_scsi3_ua_for_check_condition(cmd, &asc, &ascq); transport_send_check_condition_and_sense()
2953 transport_get_sense_codes(cmd, &asc, &ascq); transport_send_check_condition_and_sense()
2975 transport_err_sector_info(buffer, cmd->bad_sector); transport_send_check_condition_and_sense()
2986 transport_err_sector_info(buffer, cmd->bad_sector); transport_send_check_condition_and_sense()
2997 transport_err_sector_info(buffer, cmd->bad_sector); transport_send_check_condition_and_sense()
3018 cmd->scsi_status = SAM_STAT_CHECK_CONDITION; transport_send_check_condition_and_sense()
3023 cmd->scsi_sense_length = TRANSPORT_SENSE_BUFFER; transport_send_check_condition_and_sense()
3026 trace_target_cmd_complete(cmd); transport_send_check_condition_and_sense()
3027 return cmd->se_tfo->queue_status(cmd); transport_send_check_condition_and_sense()
3031 static int __transport_check_aborted_status(struct se_cmd *cmd, int send_status)
3032 __releases(&cmd->t_state_lock)
3033 __acquires(&cmd->t_state_lock)
3035 assert_spin_locked(&cmd->t_state_lock);
3038 if (!(cmd->transport_state & CMD_T_ABORTED))
3042 * If cmd has been aborted but either no status is to be sent or it has
3045 if (!send_status || !(cmd->se_cmd_flags & SCF_SEND_DELAYED_TAS)) {
3047 cmd->se_cmd_flags |= SCF_SEND_DELAYED_TAS;
3052 " 0x%02x ITT: 0x%08x\n", cmd->t_task_cdb[0],
3053 cmd->se_tfo->get_task_tag(cmd));
3055 cmd->se_cmd_flags &= ~SCF_SEND_DELAYED_TAS;
3056 cmd->scsi_status = SAM_STAT_TASK_ABORTED;
3057 trace_target_cmd_complete(cmd); variable
3059 spin_unlock_irq(&cmd->t_state_lock);
3060 cmd->se_tfo->queue_status(cmd);
3061 spin_lock_irq(&cmd->t_state_lock);
3066 int transport_check_aborted_status(struct se_cmd *cmd, int send_status) transport_check_aborted_status() argument
3070 spin_lock_irq(&cmd->t_state_lock); transport_check_aborted_status()
3071 ret = __transport_check_aborted_status(cmd, send_status); transport_check_aborted_status()
3072 spin_unlock_irq(&cmd->t_state_lock); transport_check_aborted_status()
3078 void transport_send_task_abort(struct se_cmd *cmd) transport_send_task_abort() argument
3082 spin_lock_irqsave(&cmd->t_state_lock, flags); transport_send_task_abort()
3083 if (cmd->se_cmd_flags & (SCF_SENT_CHECK_CONDITION)) { transport_send_task_abort()
3084 spin_unlock_irqrestore(&cmd->t_state_lock, flags); transport_send_task_abort()
3087 spin_unlock_irqrestore(&cmd->t_state_lock, flags); transport_send_task_abort()
3095 if (cmd->data_direction == DMA_TO_DEVICE) { transport_send_task_abort()
3096 if (cmd->se_tfo->write_pending_status(cmd) != 0) { transport_send_task_abort()
3097 spin_lock_irqsave(&cmd->t_state_lock, flags); transport_send_task_abort()
3098 if (cmd->se_cmd_flags & SCF_SEND_DELAYED_TAS) { transport_send_task_abort()
3099 spin_unlock_irqrestore(&cmd->t_state_lock, flags); transport_send_task_abort()
3102 cmd->se_cmd_flags |= SCF_SEND_DELAYED_TAS; transport_send_task_abort()
3103 spin_unlock_irqrestore(&cmd->t_state_lock, flags); transport_send_task_abort()
3108 cmd->scsi_status = SAM_STAT_TASK_ABORTED; transport_send_task_abort()
3110 transport_lun_remove_cmd(cmd); transport_send_task_abort()
3113 " ITT: 0x%08x\n", cmd->t_task_cdb[0], transport_send_task_abort()
3114 cmd->se_tfo->get_task_tag(cmd)); transport_send_task_abort()
3116 trace_target_cmd_complete(cmd); transport_send_task_abort()
3117 cmd->se_tfo->queue_status(cmd); transport_send_task_abort()
3122 struct se_cmd *cmd = container_of(work, struct se_cmd, work); target_tmr_work() local
3123 struct se_device *dev = cmd->se_dev; target_tmr_work()
3124 struct se_tmr_req *tmr = cmd->se_tmr_req; target_tmr_work()
3128 spin_lock_irqsave(&cmd->t_state_lock, flags); target_tmr_work()
3129 if (cmd->transport_state & CMD_T_ABORTED) { target_tmr_work()
3131 spin_unlock_irqrestore(&cmd->t_state_lock, flags); target_tmr_work()
3134 spin_unlock_irqrestore(&cmd->t_state_lock, flags); target_tmr_work()
3138 core_tmr_abort_task(dev, tmr, cmd->se_sess); target_tmr_work()
3163 spin_lock_irqsave(&cmd->t_state_lock, flags); target_tmr_work()
3164 if (cmd->transport_state & CMD_T_ABORTED) { target_tmr_work()
3165 spin_unlock_irqrestore(&cmd->t_state_lock, flags); target_tmr_work()
3168 cmd->t_state = TRANSPORT_ISTATE_PROCESSING; target_tmr_work()
3169 spin_unlock_irqrestore(&cmd->t_state_lock, flags); target_tmr_work()
3171 cmd->se_tfo->queue_tm_rsp(cmd); target_tmr_work()
3174 transport_cmd_check_stop_to_fabric(cmd); target_tmr_work()
3178 struct se_cmd *cmd) transport_generic_handle_tmr()
3182 spin_lock_irqsave(&cmd->t_state_lock, flags); transport_generic_handle_tmr()
3183 cmd->transport_state |= CMD_T_ACTIVE; transport_generic_handle_tmr()
3184 spin_unlock_irqrestore(&cmd->t_state_lock, flags); transport_generic_handle_tmr()
3186 INIT_WORK(&cmd->work, target_tmr_work); transport_generic_handle_tmr()
3187 queue_work(cmd->se_dev->tmr_wq, &cmd->work); transport_generic_handle_tmr()
1158 transport_init_se_cmd( struct se_cmd *cmd, const struct target_core_fabric_ops *tfo, struct se_session *se_sess, u32 data_length, int data_direction, int task_attr, unsigned char *sense_buffer) transport_init_se_cmd() argument
1296 transport_handle_cdb_direct( struct se_cmd *cmd) transport_handle_cdb_direct() argument
1981 transport_handle_queue_full( struct se_cmd *cmd, struct se_device *dev) transport_handle_queue_full() argument
2749 transport_get_sense_codes( struct se_cmd *cmd, u8 *asc, u8 *ascq) transport_get_sense_codes() argument
3177 transport_generic_handle_tmr( struct se_cmd *cmd) transport_generic_handle_tmr() argument
H A Dtarget_core_tmr.c81 static void core_tmr_handle_tas_abort(struct se_cmd *cmd, int tas) core_tmr_handle_tas_abort() argument
88 spin_lock_irqsave(&cmd->t_state_lock, flags); core_tmr_handle_tas_abort()
89 send_tas = (cmd->transport_state & CMD_T_TAS); core_tmr_handle_tas_abort()
90 spin_unlock_irqrestore(&cmd->t_state_lock, flags); core_tmr_handle_tas_abort()
94 transport_send_task_abort(cmd); core_tmr_handle_tas_abort()
97 transport_cmd_finish_abort(cmd, remove); core_tmr_handle_tas_abort()
101 struct se_cmd *cmd) target_check_cdb_and_preempt()
108 if (reg->pr_res_key == cmd->pr_res_key) list_for_each_entry()
217 struct se_cmd *cmd; core_tmr_drain_tmr_list() local
232 cmd = tmr_p->task_cmd; core_tmr_drain_tmr_list()
233 if (!cmd) { core_tmr_drain_tmr_list()
242 if (target_check_cdb_and_preempt(preempt_and_abort_list, cmd)) core_tmr_drain_tmr_list()
245 sess = cmd->se_sess; core_tmr_drain_tmr_list()
250 spin_lock(&cmd->t_state_lock); core_tmr_drain_tmr_list()
251 if (!(cmd->transport_state & CMD_T_ACTIVE) || core_tmr_drain_tmr_list()
252 (cmd->transport_state & CMD_T_FABRIC_STOP)) { core_tmr_drain_tmr_list()
253 spin_unlock(&cmd->t_state_lock); core_tmr_drain_tmr_list()
257 if (cmd->t_state == TRANSPORT_ISTATE_PROCESSING) { core_tmr_drain_tmr_list()
258 spin_unlock(&cmd->t_state_lock); core_tmr_drain_tmr_list()
262 if (sess->sess_tearing_down || cmd->cmd_wait_set) { core_tmr_drain_tmr_list()
263 spin_unlock(&cmd->t_state_lock); core_tmr_drain_tmr_list()
267 cmd->transport_state |= CMD_T_ABORTED; core_tmr_drain_tmr_list()
268 spin_unlock(&cmd->t_state_lock); core_tmr_drain_tmr_list()
270 rc = kref_get_unless_zero(&cmd->cmd_kref); core_tmr_drain_tmr_list()
284 cmd = tmr_p->task_cmd; core_tmr_drain_tmr_list()
289 tmr_p->function, tmr_p->response, cmd->t_state); core_tmr_drain_tmr_list()
291 cancel_work_sync(&cmd->work); core_tmr_drain_tmr_list()
292 transport_wait_for_tasks(cmd); core_tmr_drain_tmr_list()
294 transport_cmd_finish_abort(cmd, 1); core_tmr_drain_tmr_list()
295 target_put_sess_cmd(cmd); core_tmr_drain_tmr_list()
308 struct se_cmd *cmd, *next; core_tmr_drain_state_list() local
335 list_for_each_entry_safe(cmd, next, &dev->state_list, state_list) { core_tmr_drain_state_list()
340 if (target_check_cdb_and_preempt(preempt_and_abort_list, cmd)) core_tmr_drain_state_list()
346 if (prout_cmd == cmd) core_tmr_drain_state_list()
349 sess = cmd->se_sess; core_tmr_drain_state_list()
354 rc = __target_check_io_state(cmd, tmr_sess, tas); core_tmr_drain_state_list()
359 list_move_tail(&cmd->state_list, &drain_task_list); core_tmr_drain_state_list()
360 cmd->state_active = false; core_tmr_drain_state_list()
365 cmd = list_entry(drain_task_list.next, struct se_cmd, state_list); core_tmr_drain_state_list()
366 list_del_init(&cmd->state_list); core_tmr_drain_state_list()
368 pr_debug("LUN_RESET: %s cmd: %p" core_tmr_drain_state_list()
371 (preempt_and_abort_list) ? "Preempt" : "", cmd, core_tmr_drain_state_list()
372 cmd->se_tfo->get_task_tag(cmd), 0, core_tmr_drain_state_list()
373 cmd->se_tfo->get_cmd_state(cmd), cmd->t_state, core_tmr_drain_state_list()
374 cmd->t_task_cdb[0]); core_tmr_drain_state_list()
378 cmd->se_tfo->get_task_tag(cmd), cmd->pr_res_key, core_tmr_drain_state_list()
379 (cmd->transport_state & CMD_T_ACTIVE) != 0, core_tmr_drain_state_list()
380 (cmd->transport_state & CMD_T_STOP) != 0, core_tmr_drain_state_list()
381 (cmd->transport_state & CMD_T_SENT) != 0); core_tmr_drain_state_list()
390 cancel_work_sync(&cmd->work); core_tmr_drain_state_list()
391 transport_wait_for_tasks(cmd); core_tmr_drain_state_list()
393 core_tmr_handle_tas_abort(cmd, tas); core_tmr_drain_state_list()
394 target_put_sess_cmd(cmd); core_tmr_drain_state_list()
100 target_check_cdb_and_preempt(struct list_head *list, struct se_cmd *cmd) target_check_cdb_and_preempt() argument
H A Dtarget_core_iblock.c292 static void iblock_complete_cmd(struct se_cmd *cmd) iblock_complete_cmd() argument
294 struct iblock_req *ibr = cmd->priv; iblock_complete_cmd()
305 target_complete_cmd(cmd, status); iblock_complete_cmd()
311 struct se_cmd *cmd = bio->bi_private; iblock_bio_done() local
312 struct iblock_req *ibr = cmd->priv; iblock_bio_done()
332 iblock_complete_cmd(cmd); iblock_bio_done()
336 iblock_get_bio(struct se_cmd *cmd, sector_t lba, u32 sg_num) iblock_get_bio() argument
338 struct iblock_dev *ib_dev = IBLOCK_DEV(cmd->se_dev); iblock_get_bio()
355 bio->bi_private = cmd; iblock_get_bio()
375 struct se_cmd *cmd = bio->bi_private; iblock_end_io_flush() local
380 if (cmd) { iblock_end_io_flush()
382 target_complete_cmd(cmd, SAM_STAT_CHECK_CONDITION); iblock_end_io_flush()
384 target_complete_cmd(cmd, SAM_STAT_GOOD); iblock_end_io_flush()
395 iblock_execute_sync_cache(struct se_cmd *cmd) iblock_execute_sync_cache() argument
397 struct iblock_dev *ib_dev = IBLOCK_DEV(cmd->se_dev); iblock_execute_sync_cache()
398 int immed = (cmd->t_task_cdb[1] & 0x2); iblock_execute_sync_cache()
406 target_complete_cmd(cmd, SAM_STAT_GOOD); iblock_execute_sync_cache()
412 bio->bi_private = cmd; iblock_execute_sync_cache()
418 iblock_do_unmap(struct se_cmd *cmd, void *priv, iblock_do_unmap() argument
434 iblock_execute_unmap(struct se_cmd *cmd) iblock_execute_unmap() argument
436 struct block_device *bdev = IBLOCK_DEV(cmd->se_dev)->ibd_bd; iblock_execute_unmap()
438 return sbc_execute_unmap(cmd, iblock_do_unmap, bdev); iblock_execute_unmap()
442 iblock_execute_write_same_unmap(struct se_cmd *cmd) iblock_execute_write_same_unmap() argument
444 struct block_device *bdev = IBLOCK_DEV(cmd->se_dev)->ibd_bd; iblock_execute_write_same_unmap()
445 sector_t lba = cmd->t_task_lba; iblock_execute_write_same_unmap()
446 sector_t nolb = sbc_get_write_same_sectors(cmd); iblock_execute_write_same_unmap()
449 ret = iblock_do_unmap(cmd, bdev, lba, nolb); iblock_execute_write_same_unmap()
453 target_complete_cmd(cmd, GOOD); iblock_execute_write_same_unmap()
458 iblock_execute_write_same(struct se_cmd *cmd) iblock_execute_write_same() argument
464 sector_t block_lba = cmd->t_task_lba; iblock_execute_write_same()
465 sector_t sectors = sbc_get_write_same_sectors(cmd); iblock_execute_write_same()
467 if (cmd->prot_op) { iblock_execute_write_same()
472 sg = &cmd->t_data_sg[0]; iblock_execute_write_same()
474 if (cmd->t_data_nents > 1 || iblock_execute_write_same()
475 sg->length != cmd->se_dev->dev_attrib.block_size) { iblock_execute_write_same()
477 " block_size: %u\n", cmd->t_data_nents, sg->length, iblock_execute_write_same()
478 cmd->se_dev->dev_attrib.block_size); iblock_execute_write_same()
485 cmd->priv = ibr; iblock_execute_write_same()
487 bio = iblock_get_bio(cmd, block_lba, 1); iblock_execute_write_same()
500 bio = iblock_get_bio(cmd, block_lba, 1); iblock_execute_write_same()
630 iblock_alloc_bip(struct se_cmd *cmd, struct bio *bio) iblock_alloc_bip() argument
632 struct se_device *dev = cmd->se_dev; iblock_alloc_bip()
645 bip = bio_integrity_alloc(bio, GFP_NOIO, cmd->t_prot_nents); iblock_alloc_bip()
651 bip->bip_iter.bi_size = (cmd->data_length / dev->dev_attrib.block_size) * iblock_alloc_bip()
658 for_each_sg(cmd->t_prot_sg, sg, cmd->t_prot_nents, i) { iblock_alloc_bip()
675 iblock_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, iblock_execute_rw() argument
678 struct se_device *dev = cmd->se_dev; iblock_execute_rw()
697 if (cmd->se_cmd_flags & SCF_FUA) iblock_execute_rw()
715 block_lba = (cmd->t_task_lba << 3); iblock_execute_rw()
717 block_lba = (cmd->t_task_lba << 2); iblock_execute_rw()
719 block_lba = (cmd->t_task_lba << 1); iblock_execute_rw()
721 block_lba = cmd->t_task_lba; iblock_execute_rw()
731 cmd->priv = ibr; iblock_execute_rw()
735 iblock_complete_cmd(cmd); iblock_execute_rw()
739 bio = iblock_get_bio(cmd, block_lba, sgl_nents); iblock_execute_rw()
763 bio = iblock_get_bio(cmd, block_lba, sg_num); for_each_sg()
777 if (cmd->prot_type && dev->dev_attrib.pi_prot_type) {
778 int rc = iblock_alloc_bip(cmd, bio_start);
784 iblock_complete_cmd(cmd);
853 iblock_parse_cdb(struct se_cmd *cmd) iblock_parse_cdb() argument
855 return sbc_parse_cdb(cmd, &iblock_sbc_ops); iblock_parse_cdb()
H A Dtarget_core_spc.c70 spc_emulate_inquiry_std(struct se_cmd *cmd, unsigned char *buf) spc_emulate_inquiry_std() argument
72 struct se_lun *lun = cmd->se_lun; spc_emulate_inquiry_std()
73 struct se_device *dev = cmd->se_dev; spc_emulate_inquiry_std()
74 struct se_session *sess = cmd->se_sess; spc_emulate_inquiry_std()
111 if (dev->dev_attrib.pi_prot_type || cmd->se_sess->sess_prot_type) spc_emulate_inquiry_std()
131 spc_emulate_evpd_80(struct se_cmd *cmd, unsigned char *buf) spc_emulate_evpd_80() argument
133 struct se_device *dev = cmd->se_dev; spc_emulate_evpd_80()
180 spc_emulate_evpd_83(struct se_cmd *cmd, unsigned char *buf) spc_emulate_evpd_83() argument
182 struct se_device *dev = cmd->se_dev; spc_emulate_evpd_83()
183 struct se_lun *lun = cmd->se_lun; spc_emulate_evpd_83()
461 spc_emulate_evpd_86(struct se_cmd *cmd, unsigned char *buf) spc_emulate_evpd_86() argument
463 struct se_device *dev = cmd->se_dev; spc_emulate_evpd_86()
464 struct se_session *sess = cmd->se_sess; spc_emulate_evpd_86()
473 cmd->se_sess->sess_prot_type == TARGET_DIF_TYPE1_PROT) spc_emulate_evpd_86()
476 cmd->se_sess->sess_prot_type == TARGET_DIF_TYPE3_PROT) spc_emulate_evpd_86()
487 spin_lock(&cmd->se_dev->t10_alua.lba_map_lock); spc_emulate_evpd_86()
490 spin_unlock(&cmd->se_dev->t10_alua.lba_map_lock); spc_emulate_evpd_86()
496 spc_emulate_evpd_b0(struct se_cmd *cmd, unsigned char *buf) spc_emulate_evpd_b0() argument
498 struct se_device *dev = cmd->se_dev; spc_emulate_evpd_b0()
583 spc_emulate_evpd_b1(struct se_cmd *cmd, unsigned char *buf) spc_emulate_evpd_b1() argument
585 struct se_device *dev = cmd->se_dev; spc_emulate_evpd_b1()
596 spc_emulate_evpd_b2(struct se_cmd *cmd, unsigned char *buf) spc_emulate_evpd_b2() argument
598 struct se_device *dev = cmd->se_dev; spc_emulate_evpd_b2()
648 spc_emulate_evpd_b3(struct se_cmd *cmd, unsigned char *buf) spc_emulate_evpd_b3() argument
650 struct se_device *dev = cmd->se_dev; spc_emulate_evpd_b3()
661 spc_emulate_evpd_00(struct se_cmd *cmd, unsigned char *buf);
679 spc_emulate_evpd_00(struct se_cmd *cmd, unsigned char *buf) spc_emulate_evpd_00() argument
688 if (cmd->se_dev->dev_flags & DF_EMULATED_VPD_UNIT_SERIAL) { spc_emulate_evpd_00()
698 spc_emulate_inquiry(struct se_cmd *cmd) spc_emulate_inquiry() argument
700 struct se_device *dev = cmd->se_dev; spc_emulate_inquiry()
701 struct se_portal_group *tpg = cmd->se_lun->lun_sep->sep_tpg; spc_emulate_inquiry()
703 unsigned char *cdb = cmd->t_task_cdb; spc_emulate_inquiry()
728 ret = spc_emulate_inquiry_std(cmd, buf); spc_emulate_inquiry()
736 ret = evpd_handlers[p].emulate(cmd, buf); spc_emulate_inquiry()
746 rbuf = transport_kmap_data_sg(cmd); spc_emulate_inquiry()
748 memcpy(rbuf, buf, min_t(u32, SE_INQUIRY_BUF, cmd->data_length)); spc_emulate_inquiry()
749 transport_kunmap_data_sg(cmd); spc_emulate_inquiry()
754 target_complete_cmd_with_length(cmd, GOOD, len); spc_emulate_inquiry()
758 static int spc_modesense_rwrecovery(struct se_cmd *cmd, u8 pc, u8 *p) spc_modesense_rwrecovery() argument
771 static int spc_modesense_control(struct se_cmd *cmd, u8 pc, u8 *p) spc_modesense_control() argument
773 struct se_device *dev = cmd->se_dev; spc_modesense_control()
774 struct se_session *sess = cmd->se_sess; spc_modesense_control()
880 static int spc_modesense_caching(struct se_cmd *cmd, u8 pc, u8 *p) spc_modesense_caching() argument
882 struct se_device *dev = cmd->se_dev; spc_modesense_caching()
899 static int spc_modesense_informational_exceptions(struct se_cmd *cmd, u8 pc, unsigned char *p) spc_modesense_informational_exceptions() argument
973 static sense_reason_t spc_emulate_modesense(struct se_cmd *cmd) spc_emulate_modesense() argument
975 struct se_device *dev = cmd->se_dev; spc_emulate_modesense()
976 char *cdb = cmd->t_task_cdb; spc_emulate_modesense()
979 int ten = (cmd->t_task_cdb[0] == MODE_SENSE_10); spc_emulate_modesense()
998 if ((cmd->se_lun->lun_access & TRANSPORT_LUNFLAGS_READ_ONLY) || spc_emulate_modesense()
999 (cmd->se_deve && spc_emulate_modesense()
1000 (cmd->se_deve->lun_flags & TRANSPORT_LUNFLAGS_READ_ONLY))) spc_emulate_modesense()
1053 ret = modesense_handlers[i].emulate(cmd, pc, &buf[length]); spc_emulate_modesense()
1066 length += modesense_handlers[i].emulate(cmd, pc, &buf[length]); spc_emulate_modesense()
1086 rbuf = transport_kmap_data_sg(cmd); spc_emulate_modesense()
1088 memcpy(rbuf, buf, min_t(u32, SE_MODE_PAGE_BUF, cmd->data_length)); spc_emulate_modesense()
1089 transport_kunmap_data_sg(cmd); spc_emulate_modesense()
1092 target_complete_cmd_with_length(cmd, GOOD, length); spc_emulate_modesense()
1096 static sense_reason_t spc_emulate_modeselect(struct se_cmd *cmd) spc_emulate_modeselect() argument
1098 char *cdb = cmd->t_task_cdb; spc_emulate_modeselect()
1109 if (!cmd->data_length) { spc_emulate_modeselect()
1110 target_complete_cmd(cmd, GOOD); spc_emulate_modeselect()
1114 if (cmd->data_length < off + 2) spc_emulate_modeselect()
1117 buf = transport_kmap_data_sg(cmd); spc_emulate_modeselect()
1133 length = modesense_handlers[i].emulate(cmd, 0, tbuf); spc_emulate_modeselect()
1141 if (cmd->data_length < off + length) { spc_emulate_modeselect()
1150 transport_kunmap_data_sg(cmd); spc_emulate_modeselect()
1153 target_complete_cmd(cmd, GOOD); spc_emulate_modeselect()
1157 static sense_reason_t spc_emulate_request_sense(struct se_cmd *cmd) spc_emulate_request_sense() argument
1159 unsigned char *cdb = cmd->t_task_cdb; spc_emulate_request_sense()
1172 rbuf = transport_kmap_data_sg(cmd); spc_emulate_request_sense()
1176 if (!core_scsi3_ua_clear_for_request_sense(cmd, &ua_asc, &ua_ascq)) { spc_emulate_request_sense()
1203 memcpy(rbuf, buf, min_t(u32, sizeof(buf), cmd->data_length)); spc_emulate_request_sense()
1204 transport_kunmap_data_sg(cmd); spc_emulate_request_sense()
1206 target_complete_cmd(cmd, GOOD); spc_emulate_request_sense()
1210 sense_reason_t spc_emulate_report_luns(struct se_cmd *cmd) spc_emulate_report_luns() argument
1213 struct se_session *sess = cmd->se_sess; spc_emulate_report_luns()
1217 if (cmd->data_length < 16) { spc_emulate_report_luns()
1219 cmd->data_length); spc_emulate_report_luns()
1223 buf = transport_kmap_data_sg(cmd); spc_emulate_report_luns()
1249 if ((offset + 8) > cmd->data_length) spc_emulate_report_luns()
1266 transport_kunmap_data_sg(cmd); spc_emulate_report_luns()
1268 target_complete_cmd_with_length(cmd, GOOD, 8 + lun_count * 8); spc_emulate_report_luns()
1274 spc_emulate_testunitready(struct se_cmd *cmd) spc_emulate_testunitready() argument
1276 target_complete_cmd(cmd, GOOD); spc_emulate_testunitready()
1281 spc_parse_cdb(struct se_cmd *cmd, unsigned int *size) spc_parse_cdb() argument
1283 struct se_device *dev = cmd->se_dev; spc_parse_cdb()
1284 unsigned char *cdb = cmd->t_task_cdb; spc_parse_cdb()
1289 cmd->execute_cmd = spc_emulate_modeselect; spc_parse_cdb()
1293 cmd->execute_cmd = spc_emulate_modeselect; spc_parse_cdb()
1297 cmd->execute_cmd = spc_emulate_modesense; spc_parse_cdb()
1301 cmd->execute_cmd = spc_emulate_modesense; spc_parse_cdb()
1309 cmd->execute_cmd = target_scsi3_emulate_pr_in; spc_parse_cdb()
1313 cmd->execute_cmd = target_scsi3_emulate_pr_out; spc_parse_cdb()
1320 *size = cmd->data_length; spc_parse_cdb()
1322 cmd->execute_cmd = target_scsi2_reservation_release; spc_parse_cdb()
1333 *size = cmd->data_length; spc_parse_cdb()
1335 cmd->execute_cmd = target_scsi2_reservation_reserve; spc_parse_cdb()
1339 cmd->execute_cmd = spc_emulate_request_sense; spc_parse_cdb()
1348 cmd->sam_task_attr = TCM_HEAD_TAG; spc_parse_cdb()
1349 cmd->execute_cmd = spc_emulate_inquiry; spc_parse_cdb()
1357 cmd->execute_cmd = target_do_xcopy; spc_parse_cdb()
1361 cmd->execute_cmd = target_do_receive_copy_results; spc_parse_cdb()
1376 cmd->execute_cmd = spc_emulate_report_luns; spc_parse_cdb()
1382 cmd->sam_task_attr = TCM_HEAD_TAG; spc_parse_cdb()
1385 cmd->execute_cmd = spc_emulate_testunitready; spc_parse_cdb()
1395 cmd->execute_cmd = spc_parse_cdb()
1413 cmd->execute_cmd = spc_parse_cdb()
1427 cmd->se_tfo->get_fabric_name(), cdb[0]); spc_parse_cdb()
/linux-4.1.27/drivers/gpu/drm/nouveau/
H A Dnouveau_ioctl.h4 long nouveau_compat_ioctl(struct file *, unsigned int cmd, unsigned long arg);
5 long nouveau_drm_ioctl(struct file *, unsigned int cmd, unsigned long arg);
/linux-4.1.27/drivers/target/iscsi/
H A Discsi_target_seq_pdu_list.c31 static void iscsit_dump_seq_list(struct iscsi_cmd *cmd) iscsit_dump_seq_list() argument
37 cmd->init_task_tag); iscsit_dump_seq_list()
39 for (i = 0; i < cmd->seq_count; i++) { iscsit_dump_seq_list()
40 seq = &cmd->seq_list[i]; iscsit_dump_seq_list()
49 static void iscsit_dump_pdu_list(struct iscsi_cmd *cmd) iscsit_dump_pdu_list() argument
55 cmd->init_task_tag); iscsit_dump_pdu_list()
57 for (i = 0; i < cmd->pdu_count; i++) { iscsit_dump_pdu_list()
58 pdu = &cmd->pdu_list[i]; iscsit_dump_pdu_list()
65 static void iscsit_dump_seq_list(struct iscsi_cmd *cmd) {} iscsit_dump_pdu_list() argument
66 static void iscsit_dump_pdu_list(struct iscsi_cmd *cmd) {} iscsit_dump_pdu_list() argument
70 struct iscsi_cmd *cmd, iscsit_ordered_seq_lists()
75 for (i = 0; i < cmd->seq_count; i++) { iscsit_ordered_seq_lists()
76 if (cmd->seq_list[i].type != SEQTYPE_NORMAL) iscsit_ordered_seq_lists()
78 cmd->seq_list[i].seq_send_order = seq_count++; iscsit_ordered_seq_lists()
83 struct iscsi_cmd *cmd, iscsit_ordered_pdu_lists()
88 for (i = 0; i < cmd->pdu_count; i++) { iscsit_ordered_pdu_lists()
90 if (cmd->pdu_list[i].seq_no == seq_no) { iscsit_ordered_pdu_lists()
91 cmd->pdu_list[i].pdu_send_order = pdu_send_order++; iscsit_ordered_pdu_lists()
130 struct iscsi_cmd *cmd, iscsit_randomize_pdu_lists()
136 for (pdu_count = 0; pdu_count < cmd->pdu_count; pdu_count++) { iscsit_randomize_pdu_lists()
138 if (cmd->pdu_list[pdu_count].seq_no == seq_no) { iscsit_randomize_pdu_lists()
151 cmd->pdu_list[seq_offset+i].pdu_send_order = array[i]; iscsit_randomize_pdu_lists()
171 cmd->pdu_list[seq_offset+i].pdu_send_order = array[i]; iscsit_randomize_pdu_lists()
180 struct iscsi_cmd *cmd, iscsit_randomize_seq_lists()
184 u32 *array, seq_count = cmd->seq_count; iscsit_randomize_seq_lists()
201 for (i = 0; i < cmd->seq_count; i++) { iscsit_randomize_seq_lists()
202 if (cmd->seq_list[i].type != SEQTYPE_NORMAL) iscsit_randomize_seq_lists()
204 cmd->seq_list[i].seq_send_order = array[j++]; iscsit_randomize_seq_lists()
212 struct iscsi_cmd *cmd, iscsit_determine_counts_for_list()
221 struct iscsi_conn *conn = cmd->conn; iscsit_determine_counts_for_list()
223 if (cmd->se_cmd.data_direction == DMA_TO_DEVICE) iscsit_determine_counts_for_list()
224 mdsl = cmd->conn->conn_ops->MaxXmitDataSegmentLength; iscsit_determine_counts_for_list()
226 mdsl = cmd->conn->conn_ops->MaxRecvDataSegmentLength; iscsit_determine_counts_for_list()
234 unsolicited_data_length = min(cmd->se_cmd.data_length, iscsit_determine_counts_for_list()
237 while (offset < cmd->se_cmd.data_length) { iscsit_determine_counts_for_list()
250 if ((offset + mdsl) >= cmd->se_cmd.data_length) { iscsit_determine_counts_for_list()
252 (cmd->se_cmd.data_length - offset); iscsit_determine_counts_for_list()
253 offset += (cmd->se_cmd.data_length - offset); iscsit_determine_counts_for_list()
272 if ((offset + mdsl) >= cmd->se_cmd.data_length) { iscsit_determine_counts_for_list()
273 offset += (cmd->se_cmd.data_length - offset); iscsit_determine_counts_for_list()
296 struct iscsi_cmd *cmd, iscsit_do_build_pdu_and_seq_lists()
302 struct iscsi_conn *conn = cmd->conn; iscsit_do_build_pdu_and_seq_lists()
303 struct iscsi_pdu *pdu = cmd->pdu_list; iscsit_do_build_pdu_and_seq_lists()
304 struct iscsi_seq *seq = cmd->seq_list; iscsit_do_build_pdu_and_seq_lists()
306 if (cmd->se_cmd.data_direction == DMA_TO_DEVICE) iscsit_do_build_pdu_and_seq_lists()
307 mdsl = cmd->conn->conn_ops->MaxXmitDataSegmentLength; iscsit_do_build_pdu_and_seq_lists()
309 mdsl = cmd->conn->conn_ops->MaxRecvDataSegmentLength; iscsit_do_build_pdu_and_seq_lists()
320 unsolicited_data_length = min(cmd->se_cmd.data_length, iscsit_do_build_pdu_and_seq_lists()
323 while (offset < cmd->se_cmd.data_length) { iscsit_do_build_pdu_and_seq_lists()
357 if ((offset + mdsl) >= cmd->se_cmd.data_length) { iscsit_do_build_pdu_and_seq_lists()
361 (cmd->se_cmd.data_length - offset); iscsit_do_build_pdu_and_seq_lists()
367 (cmd->se_cmd.data_length - offset)); iscsit_do_build_pdu_and_seq_lists()
370 (cmd->se_cmd.data_length - offset); iscsit_do_build_pdu_and_seq_lists()
371 offset += (cmd->se_cmd.data_length - offset); iscsit_do_build_pdu_and_seq_lists()
409 if ((offset + mdsl) >= cmd->se_cmd.data_length) { iscsit_do_build_pdu_and_seq_lists()
412 pdu[i].length = (cmd->se_cmd.data_length - offset); iscsit_do_build_pdu_and_seq_lists()
418 (cmd->se_cmd.data_length - offset)); iscsit_do_build_pdu_and_seq_lists()
420 offset += (cmd->se_cmd.data_length - offset); iscsit_do_build_pdu_and_seq_lists()
457 if (iscsit_randomize_seq_lists(cmd, bl->type) iscsit_do_build_pdu_and_seq_lists()
461 iscsit_ordered_seq_lists(cmd, bl->type); iscsit_do_build_pdu_and_seq_lists()
464 if (iscsit_randomize_seq_lists(cmd, bl->type) iscsit_do_build_pdu_and_seq_lists()
468 iscsit_ordered_seq_lists(cmd, bl->type); iscsit_do_build_pdu_and_seq_lists()
471 iscsit_dump_seq_list(cmd); iscsit_do_build_pdu_and_seq_lists()
476 if (iscsit_randomize_pdu_lists(cmd, bl->type) iscsit_do_build_pdu_and_seq_lists()
480 iscsit_ordered_pdu_lists(cmd, bl->type); iscsit_do_build_pdu_and_seq_lists()
483 if (iscsit_randomize_pdu_lists(cmd, bl->type) iscsit_do_build_pdu_and_seq_lists()
487 iscsit_ordered_pdu_lists(cmd, bl->type); iscsit_do_build_pdu_and_seq_lists()
490 iscsit_dump_pdu_list(cmd); iscsit_do_build_pdu_and_seq_lists()
497 struct iscsi_cmd *cmd, iscsit_build_pdu_and_seq_lists()
502 struct iscsi_conn *conn = cmd->conn; iscsit_build_pdu_and_seq_lists()
516 if (cmd->data_direction == DMA_NONE) iscsit_build_pdu_and_seq_lists()
522 if (cmd->data_direction == DMA_FROM_DEVICE) { iscsit_build_pdu_and_seq_lists()
535 if (!cmd->immediate_data && !cmd->unsolicited_data) iscsit_build_pdu_and_seq_lists()
537 else if (cmd->immediate_data && !cmd->unsolicited_data) iscsit_build_pdu_and_seq_lists()
539 else if (!cmd->immediate_data && cmd->unsolicited_data) iscsit_build_pdu_and_seq_lists()
541 else if (cmd->immediate_data && cmd->unsolicited_data) iscsit_build_pdu_and_seq_lists()
545 iscsit_determine_counts_for_list(cmd, &bl, &seq_count, &pdu_count); iscsit_build_pdu_and_seq_lists()
553 cmd->seq_list = seq; iscsit_build_pdu_and_seq_lists()
554 cmd->seq_count = seq_count; iscsit_build_pdu_and_seq_lists()
564 cmd->pdu_list = pdu; iscsit_build_pdu_and_seq_lists()
565 cmd->pdu_count = pdu_count; iscsit_build_pdu_and_seq_lists()
568 return iscsit_do_build_pdu_and_seq_lists(cmd, &bl); iscsit_build_pdu_and_seq_lists()
572 struct iscsi_cmd *cmd, iscsit_get_pdu_holder()
579 if (!cmd->pdu_list) { iscsit_get_pdu_holder()
584 pdu = &cmd->pdu_list[0]; iscsit_get_pdu_holder()
586 for (i = 0; i < cmd->pdu_count; i++) iscsit_get_pdu_holder()
591 " %u, Length: %u\n", cmd->init_task_tag, offset, length); iscsit_get_pdu_holder()
596 struct iscsi_cmd *cmd, iscsit_get_pdu_holder_for_seq()
600 struct iscsi_conn *conn = cmd->conn; iscsit_get_pdu_holder_for_seq()
603 if (!cmd->pdu_list) { iscsit_get_pdu_holder_for_seq()
610 pdu = &cmd->pdu_list[cmd->pdu_start]; iscsit_get_pdu_holder_for_seq()
612 for (i = 0; pdu[i].seq_no != cmd->seq_no; i++) { iscsit_get_pdu_holder_for_seq()
619 if (pdu[i].pdu_send_order == cmd->pdu_send_order) { iscsit_get_pdu_holder_for_seq()
620 cmd->pdu_send_order++; iscsit_get_pdu_holder_for_seq()
625 cmd->pdu_start += cmd->pdu_send_order; iscsit_get_pdu_holder_for_seq()
626 cmd->pdu_send_order = 0; iscsit_get_pdu_holder_for_seq()
627 cmd->seq_no++; iscsit_get_pdu_holder_for_seq()
629 if (cmd->pdu_start < cmd->pdu_count) iscsit_get_pdu_holder_for_seq()
633 " struct iscsi_pdu for cmd->pdu_send_order: %u.\n", iscsit_get_pdu_holder_for_seq()
634 cmd->init_task_tag, cmd->pdu_send_order); iscsit_get_pdu_holder_for_seq()
646 pdu = &cmd->pdu_list[seq->pdu_start]; iscsit_get_pdu_holder_for_seq()
651 cmd->init_task_tag, seq->pdu_send_order, iscsit_get_pdu_holder_for_seq()
665 cmd->init_task_tag, seq->pdu_send_order); iscsit_get_pdu_holder_for_seq()
673 struct iscsi_cmd *cmd, iscsit_get_seq_holder()
679 if (!cmd->seq_list) { iscsit_get_seq_holder()
684 for (i = 0; i < cmd->seq_count; i++) { iscsit_get_seq_holder()
687 cmd->seq_list[i].orig_offset, cmd->seq_list[i].xfer_len, iscsit_get_seq_holder()
688 cmd->seq_list[i].seq_no); iscsit_get_seq_holder()
690 if ((cmd->seq_list[i].orig_offset + iscsit_get_seq_holder()
691 cmd->seq_list[i].xfer_len) >= iscsit_get_seq_holder()
693 return &cmd->seq_list[i]; iscsit_get_seq_holder()
697 " Offset: %u, Length: %u\n", cmd->init_task_tag, offset, iscsit_get_seq_holder()
69 iscsit_ordered_seq_lists( struct iscsi_cmd *cmd, u8 type) iscsit_ordered_seq_lists() argument
82 iscsit_ordered_pdu_lists( struct iscsi_cmd *cmd, u8 type) iscsit_ordered_pdu_lists() argument
129 iscsit_randomize_pdu_lists( struct iscsi_cmd *cmd, u8 type) iscsit_randomize_pdu_lists() argument
179 iscsit_randomize_seq_lists( struct iscsi_cmd *cmd, u8 type) iscsit_randomize_seq_lists() argument
211 iscsit_determine_counts_for_list( struct iscsi_cmd *cmd, struct iscsi_build_list *bl, u32 *seq_count, u32 *pdu_count) iscsit_determine_counts_for_list() argument
295 iscsit_do_build_pdu_and_seq_lists( struct iscsi_cmd *cmd, struct iscsi_build_list *bl) iscsit_do_build_pdu_and_seq_lists() argument
496 iscsit_build_pdu_and_seq_lists( struct iscsi_cmd *cmd, u32 immediate_data_length) iscsit_build_pdu_and_seq_lists() argument
571 iscsit_get_pdu_holder( struct iscsi_cmd *cmd, u32 offset, u32 length) iscsit_get_pdu_holder() argument
595 iscsit_get_pdu_holder_for_seq( struct iscsi_cmd *cmd, struct iscsi_seq *seq) iscsit_get_pdu_holder_for_seq() argument
672 iscsit_get_seq_holder( struct iscsi_cmd *cmd, u32 offset, u32 length) iscsit_get_seq_holder() argument
H A Discsi_target_erl1.c121 struct iscsi_cmd *cmd, iscsit_send_recovery_r2t_for_snack()
129 spin_lock_bh(&cmd->r2t_lock); iscsit_send_recovery_r2t_for_snack()
131 spin_unlock_bh(&cmd->r2t_lock); iscsit_send_recovery_r2t_for_snack()
135 spin_unlock_bh(&cmd->r2t_lock); iscsit_send_recovery_r2t_for_snack()
137 iscsit_add_cmd_to_immediate_queue(cmd, cmd->conn, ISTATE_SEND_R2T); iscsit_send_recovery_r2t_for_snack()
143 struct iscsi_cmd *cmd, iscsit_handle_r2t_snack()
155 if ((cmd->cmd_flags & ICF_GOT_DATACK_SNACK) && iscsit_handle_r2t_snack()
156 (begrun <= cmd->acked_data_sn)) { iscsit_handle_r2t_snack()
160 " protocol error.\n", cmd->init_task_tag, begrun, iscsit_handle_r2t_snack()
161 (begrun + runlength), cmd->acked_data_sn); iscsit_handle_r2t_snack()
163 return iscsit_reject_cmd(cmd, iscsit_handle_r2t_snack()
168 if ((begrun + runlength) > cmd->r2t_sn) { iscsit_handle_r2t_snack()
172 cmd->init_task_tag, begrun, runlength, cmd->r2t_sn); iscsit_handle_r2t_snack()
173 return iscsit_reject_cmd(cmd, iscsit_handle_r2t_snack()
178 last_r2tsn = cmd->r2t_sn; iscsit_handle_r2t_snack()
181 r2t = iscsit_get_holder_for_r2tsn(cmd, begrun); iscsit_handle_r2t_snack()
184 if (iscsit_send_recovery_r2t_for_snack(cmd, r2t) < 0) iscsit_handle_r2t_snack()
202 struct iscsi_cmd *cmd, iscsit_create_recovery_datain_values_datasequenceinorder_yes()
208 struct iscsi_conn *conn = cmd->conn; iscsit_create_recovery_datain_values_datasequenceinorder_yes()
231 cmd->seq_no = seq_no; iscsit_create_recovery_datain_values_datasequenceinorder_yes()
232 cmd->pdu_start = pdu_start; iscsit_create_recovery_datain_values_datasequenceinorder_yes()
233 cmd->pdu_send_order = data_sn_count; iscsit_create_recovery_datain_values_datasequenceinorder_yes()
248 struct iscsi_cmd *cmd, iscsit_create_recovery_datain_values_datasequenceinorder_no()
255 struct iscsi_conn *conn = cmd->conn; iscsit_create_recovery_datain_values_datasequenceinorder_no()
258 if (!cmd->seq_list) { iscsit_create_recovery_datain_values_datasequenceinorder_no()
272 for (i = 0; i < cmd->seq_count; i++) { iscsit_create_recovery_datain_values_datasequenceinorder_no()
273 seq = &cmd->seq_list[i]; iscsit_create_recovery_datain_values_datasequenceinorder_no()
300 read_data_done += cmd->seq_list[i].xfer_len; iscsit_create_recovery_datain_values_datasequenceinorder_no()
348 pdu = &cmd->pdu_list[ iscsit_create_recovery_datain_values_datasequenceinorder_no()
382 cmd->init_task_tag, begrun); iscsit_create_recovery_datain_values_datasequenceinorder_no()
393 cmd->init_task_tag, begrun, runlength, iscsit_create_recovery_datain_values_datasequenceinorder_no()
406 struct iscsi_cmd *cmd, iscsit_handle_recovery_datain()
411 struct iscsi_conn *conn = cmd->conn; iscsit_handle_recovery_datain()
413 struct se_cmd *se_cmd = &cmd->se_cmd; iscsit_handle_recovery_datain()
417 cmd->init_task_tag); iscsit_handle_recovery_datain()
425 if ((cmd->cmd_flags & ICF_GOT_DATACK_SNACK) && iscsit_handle_recovery_datain()
426 (begrun <= cmd->acked_data_sn)) { iscsit_handle_recovery_datain()
430 " protocol error.\n", cmd->init_task_tag, begrun, iscsit_handle_recovery_datain()
431 (begrun + runlength), cmd->acked_data_sn); iscsit_handle_recovery_datain()
433 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, buf); iscsit_handle_recovery_datain()
438 * Note: (cmd->data_sn - 1) will carry the maximum DataSN sent. iscsit_handle_recovery_datain()
440 if ((begrun + runlength) > (cmd->data_sn - 1)) { iscsit_handle_recovery_datain()
443 begrun, runlength, (cmd->data_sn - 1)); iscsit_handle_recovery_datain()
444 return iscsit_reject_cmd(cmd, ISCSI_REASON_BOOKMARK_INVALID, iscsit_handle_recovery_datain()
450 return iscsit_reject_cmd(cmd, ISCSI_REASON_BOOKMARK_NO_RESOURCES, iscsit_handle_recovery_datain()
458 iscsit_attach_datain_req(cmd, dr); iscsit_handle_recovery_datain()
460 cmd->i_state = ISTATE_SEND_DATAIN; iscsit_handle_recovery_datain()
461 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_handle_recovery_datain()
474 struct iscsi_cmd *cmd; iscsit_handle_recovery_datain_or_r2t() local
476 cmd = iscsit_find_cmd_from_itt(conn, init_task_tag); iscsit_handle_recovery_datain_or_r2t()
477 if (!cmd) iscsit_handle_recovery_datain_or_r2t()
483 switch (cmd->data_direction) { iscsit_handle_recovery_datain_or_r2t()
485 return iscsit_handle_r2t_snack(cmd, buf, begrun, runlength); iscsit_handle_recovery_datain_or_r2t()
487 return iscsit_handle_recovery_datain(cmd, buf, begrun, iscsit_handle_recovery_datain_or_r2t()
490 pr_err("Unknown cmd->data_direction: 0x%02x\n", iscsit_handle_recovery_datain_or_r2t()
491 cmd->data_direction); iscsit_handle_recovery_datain_or_r2t()
506 struct iscsi_cmd *cmd = NULL; iscsit_handle_status_snack() local
526 list_for_each_entry(cmd, &conn->conn_cmd_list, i_conn_node) { iscsit_handle_status_snack()
527 if (cmd->stat_sn == begrun) { iscsit_handle_status_snack()
543 spin_lock_bh(&cmd->istate_lock); iscsit_handle_status_snack()
544 if (cmd->i_state == ISTATE_SEND_DATAIN) { iscsit_handle_status_snack()
545 spin_unlock_bh(&cmd->istate_lock); iscsit_handle_status_snack()
553 spin_unlock_bh(&cmd->istate_lock); iscsit_handle_status_snack()
555 cmd->i_state = ISTATE_SEND_STATUS_RECOVERY; iscsit_handle_status_snack()
556 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_handle_status_snack()
569 struct iscsi_cmd *cmd = NULL; iscsit_handle_data_ack() local
571 cmd = iscsit_find_cmd_from_ttt(conn, targ_xfer_tag); iscsit_handle_data_ack()
572 if (!cmd) { iscsit_handle_data_ack()
578 if (begrun <= cmd->acked_data_sn) { iscsit_handle_data_ack()
581 cmd->init_task_tag, begrun, cmd->acked_data_sn); iscsit_handle_data_ack()
589 cmd->cmd_flags |= ICF_GOT_DATACK_SNACK; iscsit_handle_data_ack()
590 cmd->acked_data_sn = (begrun - 1); iscsit_handle_data_ack()
594 cmd->init_task_tag, cmd->acked_data_sn); iscsit_handle_data_ack()
600 struct iscsi_cmd *cmd, iscsit_send_recovery_r2t()
606 spin_lock_bh(&cmd->r2t_lock); iscsit_send_recovery_r2t()
607 ret = iscsit_add_r2t_to_list(cmd, offset, xfer_len, 1, 0); iscsit_send_recovery_r2t()
608 spin_unlock_bh(&cmd->r2t_lock); iscsit_send_recovery_r2t()
614 struct iscsi_cmd *cmd, iscsit_dataout_datapduinorder_no_fbit()
619 struct iscsi_conn *conn = cmd->conn; iscsit_dataout_datapduinorder_no_fbit()
627 for (i = 0; i < cmd->pdu_count; i++) { iscsit_dataout_datapduinorder_no_fbit()
628 if (cmd->pdu_list[i].seq_no == pdu->seq_no) { iscsit_dataout_datapduinorder_no_fbit()
630 first_pdu = &cmd->pdu_list[i]; iscsit_dataout_datapduinorder_no_fbit()
631 xfer_len += cmd->pdu_list[i].length; iscsit_dataout_datapduinorder_no_fbit()
637 struct iscsi_seq *seq = cmd->seq_ptr; iscsit_dataout_datapduinorder_no_fbit()
639 first_pdu = &cmd->pdu_list[seq->pdu_start]; iscsit_dataout_datapduinorder_no_fbit()
655 if (iscsit_send_recovery_r2t(cmd, offset, length) < 0) iscsit_dataout_datapduinorder_no_fbit()
683 if (iscsit_send_recovery_r2t(cmd, offset, length) < 0) iscsit_dataout_datapduinorder_no_fbit()
690 struct iscsi_cmd *cmd, iscsit_recalculate_dataout_values()
697 struct iscsi_conn *conn = cmd->conn; iscsit_recalculate_dataout_values()
701 cmd->data_sn = 0; iscsit_recalculate_dataout_values()
704 *r2t_offset = cmd->write_data_done; iscsit_recalculate_dataout_values()
705 *r2t_length = (cmd->seq_end_offset - iscsit_recalculate_dataout_values()
706 cmd->write_data_done); iscsit_recalculate_dataout_values()
710 *r2t_offset = cmd->seq_start_offset; iscsit_recalculate_dataout_values()
711 *r2t_length = (cmd->seq_end_offset - cmd->seq_start_offset); iscsit_recalculate_dataout_values()
713 for (i = 0; i < cmd->pdu_count; i++) { iscsit_recalculate_dataout_values()
714 pdu = &cmd->pdu_list[i]; iscsit_recalculate_dataout_values()
719 if ((pdu->offset >= cmd->seq_start_offset) && iscsit_recalculate_dataout_values()
721 cmd->seq_end_offset)) { iscsit_recalculate_dataout_values()
722 if (!cmd->unsolicited_data) iscsit_recalculate_dataout_values()
723 cmd->next_burst_len -= pdu->length; iscsit_recalculate_dataout_values()
725 cmd->first_burst_len -= pdu->length; iscsit_recalculate_dataout_values()
727 cmd->write_data_done -= pdu->length; iscsit_recalculate_dataout_values()
734 seq = iscsit_get_seq_holder(cmd, pdu_offset, pdu_length); iscsit_recalculate_dataout_values()
741 cmd->write_data_done -= (seq->offset - seq->orig_offset); iscsit_recalculate_dataout_values()
742 if (cmd->immediate_data) iscsit_recalculate_dataout_values()
743 cmd->first_burst_len = cmd->write_data_done; iscsit_recalculate_dataout_values()
754 pdu = &cmd->pdu_list[i+seq->pdu_start]; iscsit_recalculate_dataout_values()
767 struct iscsi_cmd *cmd, iscsit_recover_dataout_sequence()
773 spin_lock_bh(&cmd->istate_lock); iscsit_recover_dataout_sequence()
774 cmd->cmd_flags |= ICF_WITHIN_COMMAND_RECOVERY; iscsit_recover_dataout_sequence()
775 spin_unlock_bh(&cmd->istate_lock); iscsit_recover_dataout_sequence()
777 if (iscsit_recalculate_dataout_values(cmd, pdu_offset, pdu_length, iscsit_recover_dataout_sequence()
781 iscsit_send_recovery_r2t(cmd, r2t_offset, r2t_length); iscsit_recover_dataout_sequence()
870 ooo_cmdsn->cmd = NULL; iscsit_clear_ooo_cmdsns_for_conn()
881 struct iscsi_cmd *cmd = NULL; iscsit_execute_ooo_cmdsns() local
889 if (!ooo_cmdsn->cmd) { iscsit_execute_ooo_cmdsns()
895 cmd = ooo_cmdsn->cmd; iscsit_execute_ooo_cmdsns()
896 cmd->i_state = cmd->deferred_i_state; iscsit_execute_ooo_cmdsns()
901 cmd->cmd_sn, sess->exp_cmd_sn); iscsit_execute_ooo_cmdsns()
905 if (iscsit_execute_cmd(cmd, 1) < 0) iscsit_execute_ooo_cmdsns()
922 int iscsit_execute_cmd(struct iscsi_cmd *cmd, int ooo) iscsit_execute_cmd() argument
924 struct se_cmd *se_cmd = &cmd->se_cmd; iscsit_execute_cmd()
925 struct iscsi_conn *conn = cmd->conn; iscsit_execute_cmd()
928 spin_lock_bh(&cmd->istate_lock); iscsit_execute_cmd()
930 cmd->cmd_flags &= ~ICF_OOO_CMDSN; iscsit_execute_cmd()
932 switch (cmd->iscsi_opcode) { iscsit_execute_cmd()
938 if (cmd->sense_reason) { iscsit_execute_cmd()
939 if (cmd->sense_reason == TCM_RESERVATION_CONFLICT) { iscsit_execute_cmd()
940 cmd->i_state = ISTATE_SEND_STATUS; iscsit_execute_cmd()
941 spin_unlock_bh(&cmd->istate_lock); iscsit_execute_cmd()
942 iscsit_add_cmd_to_response_queue(cmd, cmd->conn, iscsit_execute_cmd()
943 cmd->i_state); iscsit_execute_cmd()
946 spin_unlock_bh(&cmd->istate_lock); iscsit_execute_cmd()
955 (cmd->unsolicited_data == 0)) != 0) iscsit_execute_cmd()
962 cmd->sense_reason, 0); iscsit_execute_cmd()
968 if (cmd->immediate_data) { iscsit_execute_cmd()
969 if (cmd->cmd_flags & ICF_GOT_LAST_DATAOUT) { iscsit_execute_cmd()
970 spin_unlock_bh(&cmd->istate_lock); iscsit_execute_cmd()
971 target_execute_cmd(&cmd->se_cmd); iscsit_execute_cmd()
974 spin_unlock_bh(&cmd->istate_lock); iscsit_execute_cmd()
976 if (!(cmd->cmd_flags & iscsit_execute_cmd()
987 iscsit_set_dataout_sequence_values(cmd); iscsit_execute_cmd()
988 conn->conn_transport->iscsit_get_dataout(conn, cmd, false); iscsit_execute_cmd()
995 spin_unlock_bh(&cmd->istate_lock); iscsit_execute_cmd()
997 if ((cmd->data_direction == DMA_TO_DEVICE) && iscsit_execute_cmd()
998 !(cmd->cmd_flags & ICF_NON_IMMEDIATE_UNSOLICITED_DATA)) { iscsit_execute_cmd()
1006 iscsit_set_unsoliticed_dataout(cmd); iscsit_execute_cmd()
1008 return transport_handle_cdb_direct(&cmd->se_cmd); iscsit_execute_cmd()
1012 spin_unlock_bh(&cmd->istate_lock); iscsit_execute_cmd()
1013 iscsit_add_cmd_to_response_queue(cmd, cmd->conn, cmd->i_state); iscsit_execute_cmd()
1016 if (cmd->se_cmd.se_tmr_req->response) { iscsit_execute_cmd()
1017 spin_unlock_bh(&cmd->istate_lock); iscsit_execute_cmd()
1018 iscsit_add_cmd_to_response_queue(cmd, cmd->conn, iscsit_execute_cmd()
1019 cmd->i_state); iscsit_execute_cmd()
1022 spin_unlock_bh(&cmd->istate_lock); iscsit_execute_cmd()
1024 return transport_generic_handle_tmr(&cmd->se_cmd); iscsit_execute_cmd()
1026 spin_unlock_bh(&cmd->istate_lock); iscsit_execute_cmd()
1027 switch (cmd->logout_reason) { iscsit_execute_cmd()
1029 lr = iscsit_logout_closesession(cmd, cmd->conn); iscsit_execute_cmd()
1032 lr = iscsit_logout_closeconnection(cmd, cmd->conn); iscsit_execute_cmd()
1035 lr = iscsit_logout_removeconnforrecovery(cmd, cmd->conn); iscsit_execute_cmd()
1039 " 0x%02x\n", cmd->logout_reason); iscsit_execute_cmd()
1045 spin_unlock_bh(&cmd->istate_lock); iscsit_execute_cmd()
1047 " unknown iSCSI Opcode: 0x%02x\n", cmd->iscsi_opcode); iscsit_execute_cmd()
1070 struct iscsi_cmd *cmd, iscsit_handle_ooo_cmdsn()
1076 cmd->deferred_i_state = cmd->i_state; iscsit_handle_ooo_cmdsn()
1077 cmd->i_state = ISTATE_DEFERRED_CMD; iscsit_handle_ooo_cmdsn()
1078 cmd->cmd_flags |= ICF_OOO_CMDSN; iscsit_handle_ooo_cmdsn()
1093 ooo_cmdsn->cmd = cmd; iscsit_handle_ooo_cmdsn()
1096 ooo_cmdsn->cid = cmd->conn->cid; iscsit_handle_ooo_cmdsn()
1109 struct iscsi_cmd *cmd, iscsit_set_dataout_timeout_values()
1113 struct iscsi_conn *conn = cmd->conn; iscsit_set_dataout_timeout_values()
1116 if (cmd->unsolicited_data) { iscsit_set_dataout_timeout_values()
1119 cmd->se_cmd.data_length) ? iscsit_set_dataout_timeout_values()
1120 cmd->se_cmd.data_length : iscsit_set_dataout_timeout_values()
1125 spin_lock_bh(&cmd->r2t_lock); iscsit_set_dataout_timeout_values()
1126 if (list_empty(&cmd->cmd_r2t_list)) { iscsit_set_dataout_timeout_values()
1127 pr_err("cmd->cmd_r2t_list is empty!\n"); iscsit_set_dataout_timeout_values()
1128 spin_unlock_bh(&cmd->r2t_lock); iscsit_set_dataout_timeout_values()
1132 list_for_each_entry(r2t, &cmd->cmd_r2t_list, r2t_list) { iscsit_set_dataout_timeout_values()
1136 spin_unlock_bh(&cmd->r2t_lock); iscsit_set_dataout_timeout_values()
1140 spin_unlock_bh(&cmd->r2t_lock); iscsit_set_dataout_timeout_values()
1143 " sequences for ITT: 0x%08x.\n", cmd->init_task_tag); iscsit_set_dataout_timeout_values()
1155 struct iscsi_cmd *cmd = (struct iscsi_cmd *) data; iscsit_handle_dataout_timeout() local
1156 struct iscsi_conn *conn = cmd->conn; iscsit_handle_dataout_timeout()
1162 spin_lock_bh(&cmd->dataout_timeout_lock); iscsit_handle_dataout_timeout()
1163 if (cmd->dataout_timer_flags & ISCSI_TF_STOP) { iscsit_handle_dataout_timeout()
1164 spin_unlock_bh(&cmd->dataout_timeout_lock); iscsit_handle_dataout_timeout()
1168 cmd->dataout_timer_flags &= ~ISCSI_TF_RUNNING; iscsit_handle_dataout_timeout()
1178 if (++cmd->dataout_timeout_retries == na->dataout_timeout_retries) { iscsit_handle_dataout_timeout()
1181 cmd->init_task_tag, na->dataout_timeout_retries); iscsit_handle_dataout_timeout()
1185 cmd->cmd_flags |= ICF_WITHIN_COMMAND_RECOVERY; iscsit_handle_dataout_timeout()
1189 pdu_offset = cmd->write_data_done; iscsit_handle_dataout_timeout()
1191 cmd->next_burst_len)) > cmd->se_cmd.data_length) iscsit_handle_dataout_timeout()
1192 pdu_length = (cmd->se_cmd.data_length - iscsit_handle_dataout_timeout()
1193 cmd->write_data_done); iscsit_handle_dataout_timeout()
1196 cmd->next_burst_len); iscsit_handle_dataout_timeout()
1198 pdu_offset = cmd->seq_start_offset; iscsit_handle_dataout_timeout()
1199 pdu_length = (cmd->seq_end_offset - iscsit_handle_dataout_timeout()
1200 cmd->seq_start_offset); iscsit_handle_dataout_timeout()
1203 if (iscsit_set_dataout_timeout_values(cmd, &pdu_offset, iscsit_handle_dataout_timeout()
1208 if (iscsit_recalculate_dataout_values(cmd, pdu_offset, pdu_length, iscsit_handle_dataout_timeout()
1214 cmd->init_task_tag, (cmd->unsolicited_data) ? "Unsolicited " : iscsit_handle_dataout_timeout()
1217 if (iscsit_send_recovery_r2t(cmd, r2t_offset, r2t_length) < 0) iscsit_handle_dataout_timeout()
1220 iscsit_start_dataout_timer(cmd, conn); iscsit_handle_dataout_timeout()
1221 spin_unlock_bh(&cmd->dataout_timeout_lock); iscsit_handle_dataout_timeout()
1227 spin_unlock_bh(&cmd->dataout_timeout_lock); iscsit_handle_dataout_timeout()
1232 void iscsit_mod_dataout_timer(struct iscsi_cmd *cmd) iscsit_mod_dataout_timer() argument
1234 struct iscsi_conn *conn = cmd->conn; iscsit_mod_dataout_timer()
1238 spin_lock_bh(&cmd->dataout_timeout_lock); iscsit_mod_dataout_timer()
1239 if (!(cmd->dataout_timer_flags & ISCSI_TF_RUNNING)) { iscsit_mod_dataout_timer()
1240 spin_unlock_bh(&cmd->dataout_timeout_lock); iscsit_mod_dataout_timer()
1244 mod_timer(&cmd->dataout_timer, iscsit_mod_dataout_timer()
1247 cmd->init_task_tag); iscsit_mod_dataout_timer()
1248 spin_unlock_bh(&cmd->dataout_timeout_lock); iscsit_mod_dataout_timer()
1252 * Called with cmd->dataout_timeout_lock held.
1255 struct iscsi_cmd *cmd, iscsit_start_dataout_timer()
1261 if (cmd->dataout_timer_flags & ISCSI_TF_RUNNING) iscsit_start_dataout_timer()
1265 " CID: %hu.\n", cmd->init_task_tag, conn->cid); iscsit_start_dataout_timer()
1267 init_timer(&cmd->dataout_timer); iscsit_start_dataout_timer()
1268 cmd->dataout_timer.expires = (get_jiffies_64() + na->dataout_timeout * HZ); iscsit_start_dataout_timer()
1269 cmd->dataout_timer.data = (unsigned long)cmd; iscsit_start_dataout_timer()
1270 cmd->dataout_timer.function = iscsit_handle_dataout_timeout; iscsit_start_dataout_timer()
1271 cmd->dataout_timer_flags &= ~ISCSI_TF_STOP; iscsit_start_dataout_timer()
1272 cmd->dataout_timer_flags |= ISCSI_TF_RUNNING; iscsit_start_dataout_timer()
1273 add_timer(&cmd->dataout_timer); iscsit_start_dataout_timer()
1276 void iscsit_stop_dataout_timer(struct iscsi_cmd *cmd) iscsit_stop_dataout_timer() argument
1278 spin_lock_bh(&cmd->dataout_timeout_lock); iscsit_stop_dataout_timer()
1279 if (!(cmd->dataout_timer_flags & ISCSI_TF_RUNNING)) { iscsit_stop_dataout_timer()
1280 spin_unlock_bh(&cmd->dataout_timeout_lock); iscsit_stop_dataout_timer()
1283 cmd->dataout_timer_flags |= ISCSI_TF_STOP; iscsit_stop_dataout_timer()
1284 spin_unlock_bh(&cmd->dataout_timeout_lock); iscsit_stop_dataout_timer()
1286 del_timer_sync(&cmd->dataout_timer); iscsit_stop_dataout_timer()
1288 spin_lock_bh(&cmd->dataout_timeout_lock); iscsit_stop_dataout_timer()
1289 cmd->dataout_timer_flags &= ~ISCSI_TF_RUNNING; iscsit_stop_dataout_timer()
1291 cmd->init_task_tag); iscsit_stop_dataout_timer()
1292 spin_unlock_bh(&cmd->dataout_timeout_lock); iscsit_stop_dataout_timer()
120 iscsit_send_recovery_r2t_for_snack( struct iscsi_cmd *cmd, struct iscsi_r2t *r2t) iscsit_send_recovery_r2t_for_snack() argument
142 iscsit_handle_r2t_snack( struct iscsi_cmd *cmd, unsigned char *buf, u32 begrun, u32 runlength) iscsit_handle_r2t_snack() argument
201 iscsit_create_recovery_datain_values_datasequenceinorder_yes( struct iscsi_cmd *cmd, struct iscsi_datain_req *dr) iscsit_create_recovery_datain_values_datasequenceinorder_yes() argument
247 iscsit_create_recovery_datain_values_datasequenceinorder_no( struct iscsi_cmd *cmd, struct iscsi_datain_req *dr) iscsit_create_recovery_datain_values_datasequenceinorder_no() argument
405 iscsit_handle_recovery_datain( struct iscsi_cmd *cmd, unsigned char *buf, u32 begrun, u32 runlength) iscsit_handle_recovery_datain() argument
599 iscsit_send_recovery_r2t( struct iscsi_cmd *cmd, u32 offset, u32 xfer_len) iscsit_send_recovery_r2t() argument
613 iscsit_dataout_datapduinorder_no_fbit( struct iscsi_cmd *cmd, struct iscsi_pdu *pdu) iscsit_dataout_datapduinorder_no_fbit() argument
689 iscsit_recalculate_dataout_values( struct iscsi_cmd *cmd, u32 pdu_offset, u32 pdu_length, u32 *r2t_offset, u32 *r2t_length) iscsit_recalculate_dataout_values() argument
766 iscsit_recover_dataout_sequence( struct iscsi_cmd *cmd, u32 pdu_offset, u32 pdu_length) iscsit_recover_dataout_sequence() argument
1068 iscsit_handle_ooo_cmdsn( struct iscsi_session *sess, struct iscsi_cmd *cmd, u32 cmdsn) iscsit_handle_ooo_cmdsn() argument
1108 iscsit_set_dataout_timeout_values( struct iscsi_cmd *cmd, u32 *offset, u32 *length) iscsit_set_dataout_timeout_values() argument
1254 iscsit_start_dataout_timer( struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_start_dataout_timer() argument
H A Discsi_target_tmr.c39 struct iscsi_cmd *cmd, iscsit_tmr_abort_task()
43 struct iscsi_conn *conn = cmd->conn; iscsit_tmr_abort_task()
44 struct iscsi_tmr_req *tmr_req = cmd->tmr_req; iscsit_tmr_abort_task()
45 struct se_tmr_req *se_tmr = cmd->se_cmd.se_tmr_req; iscsit_tmr_abort_task()
114 struct iscsi_cmd *cmd, iscsit_tmr_task_reassign()
118 struct iscsi_conn *conn = cmd->conn; iscsit_tmr_task_reassign()
120 struct iscsi_tmr_req *tmr_req = cmd->tmr_req; iscsit_tmr_task_reassign()
121 struct se_tmr_req *se_tmr = cmd->se_cmd.se_tmr_req; iscsit_tmr_task_reassign()
186 struct iscsi_cmd *cmd, iscsit_task_reassign_remove_cmd()
193 ret = iscsit_remove_cmd_from_connection_recovery(cmd, sess); iscsit_task_reassign_remove_cmd()
206 struct iscsi_cmd *cmd = tmr_req->ref_cmd; iscsit_task_reassign_complete_nop_out() local
209 if (!cmd->cr) { iscsit_task_reassign_complete_nop_out()
211 " is NULL!\n", cmd->init_task_tag); iscsit_task_reassign_complete_nop_out()
214 cr = cmd->cr; iscsit_task_reassign_complete_nop_out()
221 cmd->stat_sn = cmd->exp_stat_sn = 0; iscsit_task_reassign_complete_nop_out()
223 iscsit_task_reassign_remove_cmd(cmd, cr, conn->sess); iscsit_task_reassign_complete_nop_out()
226 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); iscsit_task_reassign_complete_nop_out()
229 cmd->i_state = ISTATE_SEND_NOPIN; iscsit_task_reassign_complete_nop_out()
230 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_task_reassign_complete_nop_out()
235 struct iscsi_cmd *cmd, iscsit_task_reassign_complete_write()
240 struct iscsi_conn *conn = cmd->conn; iscsit_task_reassign_complete_write()
241 struct se_cmd *se_cmd = &cmd->se_cmd; iscsit_task_reassign_complete_write()
247 cmd->cmd_flags &= ~ICF_GOT_DATACK_SNACK; iscsit_task_reassign_complete_write()
248 cmd->acked_data_sn = 0; iscsit_task_reassign_complete_write()
250 cmd->cmd_flags |= ICF_GOT_DATACK_SNACK; iscsit_task_reassign_complete_write()
251 cmd->acked_data_sn = (tmr_req->exp_data_sn - 1); iscsit_task_reassign_complete_write()
259 if (cmd->cmd_flags & ICF_GOT_LAST_DATAOUT) { iscsit_task_reassign_complete_write()
260 if (!(cmd->se_cmd.transport_state & CMD_T_SENT)) { iscsit_task_reassign_complete_write()
263 cmd->init_task_tag, cmd->se_cmd.t_state); iscsit_task_reassign_complete_write()
268 cmd->i_state = ISTATE_SEND_STATUS; iscsit_task_reassign_complete_write()
269 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_task_reassign_complete_write()
277 if (cmd->unsolicited_data) { iscsit_task_reassign_complete_write()
278 cmd->unsolicited_data = 0; iscsit_task_reassign_complete_write()
280 offset = cmd->next_burst_len = cmd->write_data_done; iscsit_task_reassign_complete_write()
283 cmd->se_cmd.data_length) { iscsit_task_reassign_complete_write()
285 length = (cmd->se_cmd.data_length - offset); iscsit_task_reassign_complete_write()
289 spin_lock_bh(&cmd->r2t_lock); iscsit_task_reassign_complete_write()
290 if (iscsit_add_r2t_to_list(cmd, offset, length, 0, 0) < 0) { iscsit_task_reassign_complete_write()
291 spin_unlock_bh(&cmd->r2t_lock); iscsit_task_reassign_complete_write()
294 cmd->outstanding_r2ts++; iscsit_task_reassign_complete_write()
295 spin_unlock_bh(&cmd->r2t_lock); iscsit_task_reassign_complete_write()
303 return conn->conn_transport->iscsit_get_dataout(conn, cmd, true); iscsit_task_reassign_complete_write()
307 struct iscsi_cmd *cmd, iscsit_task_reassign_complete_read()
310 struct iscsi_conn *conn = cmd->conn; iscsit_task_reassign_complete_read()
312 struct se_cmd *se_cmd = &cmd->se_cmd; iscsit_task_reassign_complete_read()
318 cmd->cmd_flags &= ~ICF_GOT_DATACK_SNACK; iscsit_task_reassign_complete_read()
319 cmd->acked_data_sn = 0; iscsit_task_reassign_complete_read()
321 cmd->cmd_flags |= ICF_GOT_DATACK_SNACK; iscsit_task_reassign_complete_read()
322 cmd->acked_data_sn = (tmr_req->exp_data_sn - 1); iscsit_task_reassign_complete_read()
325 if (!(cmd->se_cmd.transport_state & CMD_T_SENT)) { iscsit_task_reassign_complete_read()
327 " transport\n", cmd->init_task_tag, iscsit_task_reassign_complete_read()
328 cmd->se_cmd.t_state); iscsit_task_reassign_complete_read()
335 " from transport\n", cmd->init_task_tag, iscsit_task_reassign_complete_read()
336 cmd->se_cmd.t_state); iscsit_task_reassign_complete_read()
352 iscsit_attach_datain_req(cmd, dr); iscsit_task_reassign_complete_read()
354 cmd->i_state = ISTATE_SEND_DATAIN; iscsit_task_reassign_complete_read()
355 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_task_reassign_complete_read()
360 struct iscsi_cmd *cmd, iscsit_task_reassign_complete_none()
363 struct iscsi_conn *conn = cmd->conn; iscsit_task_reassign_complete_none()
365 cmd->i_state = ISTATE_SEND_STATUS; iscsit_task_reassign_complete_none()
366 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_task_reassign_complete_none()
374 struct iscsi_cmd *cmd = tmr_req->ref_cmd; iscsit_task_reassign_complete_scsi_cmnd() local
377 if (!cmd->cr) { iscsit_task_reassign_complete_scsi_cmnd()
379 " is NULL!\n", cmd->init_task_tag); iscsit_task_reassign_complete_scsi_cmnd()
382 cr = cmd->cr; iscsit_task_reassign_complete_scsi_cmnd()
389 cmd->stat_sn = cmd->exp_stat_sn = 0; iscsit_task_reassign_complete_scsi_cmnd()
391 iscsit_task_reassign_remove_cmd(cmd, cr, conn->sess); iscsit_task_reassign_complete_scsi_cmnd()
394 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); iscsit_task_reassign_complete_scsi_cmnd()
397 if (cmd->se_cmd.se_cmd_flags & SCF_SENT_CHECK_CONDITION) { iscsit_task_reassign_complete_scsi_cmnd()
398 cmd->i_state = ISTATE_SEND_STATUS; iscsit_task_reassign_complete_scsi_cmnd()
399 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_task_reassign_complete_scsi_cmnd()
403 switch (cmd->data_direction) { iscsit_task_reassign_complete_scsi_cmnd()
405 return iscsit_task_reassign_complete_write(cmd, tmr_req); iscsit_task_reassign_complete_scsi_cmnd()
407 return iscsit_task_reassign_complete_read(cmd, tmr_req); iscsit_task_reassign_complete_scsi_cmnd()
409 return iscsit_task_reassign_complete_none(cmd, tmr_req); iscsit_task_reassign_complete_scsi_cmnd()
411 pr_err("Unknown cmd->data_direction: 0x%02x\n", iscsit_task_reassign_complete_scsi_cmnd()
412 cmd->data_direction); iscsit_task_reassign_complete_scsi_cmnd()
423 struct iscsi_cmd *cmd; iscsit_task_reassign_complete() local
430 cmd = tmr_req->ref_cmd; iscsit_task_reassign_complete()
432 cmd->conn = conn; iscsit_task_reassign_complete()
434 switch (cmd->iscsi_opcode) { iscsit_task_reassign_complete()
443 " command realligence\n", cmd->iscsi_opcode); iscsit_task_reassign_complete()
451 " ITT: 0x%08x to CID: %hu.\n", cmd->iscsi_opcode, iscsit_task_reassign_complete()
452 cmd->init_task_tag, conn->cid); iscsit_task_reassign_complete()
462 int iscsit_tmr_post_handler(struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_tmr_post_handler() argument
464 struct iscsi_tmr_req *tmr_req = cmd->tmr_req; iscsit_tmr_post_handler()
465 struct se_tmr_req *se_tmr = cmd->se_cmd.se_tmr_req; iscsit_tmr_post_handler()
486 struct iscsi_cmd *cmd, iscsit_task_reassign_prepare_unsolicited_dataout()
494 cmd->data_sn = 0; iscsit_task_reassign_prepare_unsolicited_dataout()
496 if (cmd->immediate_data) iscsit_task_reassign_prepare_unsolicited_dataout()
497 cmd->r2t_offset += (cmd->first_burst_len - iscsit_task_reassign_prepare_unsolicited_dataout()
498 cmd->seq_start_offset); iscsit_task_reassign_prepare_unsolicited_dataout()
501 cmd->write_data_done -= (cmd->immediate_data) ? iscsit_task_reassign_prepare_unsolicited_dataout()
502 (cmd->first_burst_len - iscsit_task_reassign_prepare_unsolicited_dataout()
503 cmd->seq_start_offset) : iscsit_task_reassign_prepare_unsolicited_dataout()
504 cmd->first_burst_len; iscsit_task_reassign_prepare_unsolicited_dataout()
505 cmd->first_burst_len = 0; iscsit_task_reassign_prepare_unsolicited_dataout()
509 for (i = 0; i < cmd->pdu_count; i++) { iscsit_task_reassign_prepare_unsolicited_dataout()
510 pdu = &cmd->pdu_list[i]; iscsit_task_reassign_prepare_unsolicited_dataout()
515 if ((pdu->offset >= cmd->seq_start_offset) && iscsit_task_reassign_prepare_unsolicited_dataout()
517 cmd->seq_end_offset)) { iscsit_task_reassign_prepare_unsolicited_dataout()
518 cmd->first_burst_len -= pdu->length; iscsit_task_reassign_prepare_unsolicited_dataout()
519 cmd->write_data_done -= pdu->length; iscsit_task_reassign_prepare_unsolicited_dataout()
524 for (i = 0; i < cmd->seq_count; i++) { iscsit_task_reassign_prepare_unsolicited_dataout()
525 seq = &cmd->seq_list[i]; iscsit_task_reassign_prepare_unsolicited_dataout()
530 cmd->write_data_done -= iscsit_task_reassign_prepare_unsolicited_dataout()
532 cmd->first_burst_len = 0; iscsit_task_reassign_prepare_unsolicited_dataout()
542 pdu = &cmd->pdu_list[j+seq->pdu_start]; iscsit_task_reassign_prepare_unsolicited_dataout()
557 struct iscsi_cmd *cmd = tmr_req->ref_cmd; iscsit_task_reassign_prepare_write() local
566 if (cmd->unsolicited_data) iscsit_task_reassign_prepare_write()
567 iscsit_task_reassign_prepare_unsolicited_dataout(cmd, conn); iscsit_task_reassign_prepare_write()
590 spin_lock_bh(&cmd->r2t_lock); iscsit_task_reassign_prepare_write()
591 if (list_empty(&cmd->cmd_r2t_list)) { iscsit_task_reassign_prepare_write()
592 spin_unlock_bh(&cmd->r2t_lock); iscsit_task_reassign_prepare_write()
596 list_for_each_entry(r2t, &cmd->cmd_r2t_list, r2t_list) { iscsit_task_reassign_prepare_write()
645 cmd->r2t_offset -= r2t->xfer_len; iscsit_task_reassign_prepare_write()
650 cmd->data_sn = 0; iscsit_task_reassign_prepare_write()
651 cmd->r2t_offset -= (r2t->xfer_len - iscsit_task_reassign_prepare_write()
652 cmd->next_burst_len); iscsit_task_reassign_prepare_write()
657 cmd->data_sn = 0; iscsit_task_reassign_prepare_write()
658 cmd->r2t_offset -= r2t->xfer_len; iscsit_task_reassign_prepare_write()
660 for (i = 0; i < cmd->pdu_count; i++) { iscsit_task_reassign_prepare_write()
661 pdu = &cmd->pdu_list[i]; iscsit_task_reassign_prepare_write()
669 cmd->next_burst_len -= pdu->length; iscsit_task_reassign_prepare_write()
670 cmd->write_data_done -= pdu->length; iscsit_task_reassign_prepare_write()
679 seq = iscsit_get_seq_holder(cmd, r2t->offset, iscsit_task_reassign_prepare_write()
682 spin_unlock_bh(&cmd->r2t_lock); iscsit_task_reassign_prepare_write()
686 cmd->write_data_done -= iscsit_task_reassign_prepare_write()
693 cmd->seq_send_order--; iscsit_task_reassign_prepare_write()
699 pdu = &cmd->pdu_list[i+seq->pdu_start]; iscsit_task_reassign_prepare_write()
709 cmd->outstanding_r2ts--; iscsit_task_reassign_prepare_write()
711 spin_unlock_bh(&cmd->r2t_lock); iscsit_task_reassign_prepare_write()
725 cmd->cmd_flags &= ~ICF_SENT_LAST_R2T; iscsit_task_reassign_prepare_write()
726 cmd->r2t_sn = tmr_req->exp_data_sn; iscsit_task_reassign_prepare_write()
728 spin_lock_bh(&cmd->r2t_lock); iscsit_task_reassign_prepare_write()
729 list_for_each_entry_safe(r2t, r2t_tmp, &cmd->cmd_r2t_list, r2t_list) { iscsit_task_reassign_prepare_write()
744 spin_unlock_bh(&cmd->r2t_lock); iscsit_task_reassign_prepare_write()
749 iscsit_free_r2t(r2t, cmd); iscsit_task_reassign_prepare_write()
763 * current offset and original offset from cmd->write_data_done iscsit_task_reassign_prepare_write()
770 cmd->r2t_offset -= r2t->xfer_len; iscsit_task_reassign_prepare_write()
772 cmd->seq_send_order--; iscsit_task_reassign_prepare_write()
774 cmd->outstanding_r2ts--; iscsit_task_reassign_prepare_write()
775 iscsit_free_r2t(r2t, cmd); iscsit_task_reassign_prepare_write()
777 spin_unlock_bh(&cmd->r2t_lock); iscsit_task_reassign_prepare_write()
38 iscsit_tmr_abort_task( struct iscsi_cmd *cmd, unsigned char *buf) iscsit_tmr_abort_task() argument
113 iscsit_tmr_task_reassign( struct iscsi_cmd *cmd, unsigned char *buf) iscsit_tmr_task_reassign() argument
185 iscsit_task_reassign_remove_cmd( struct iscsi_cmd *cmd, struct iscsi_conn_recovery *cr, struct iscsi_session *sess) iscsit_task_reassign_remove_cmd() argument
234 iscsit_task_reassign_complete_write( struct iscsi_cmd *cmd, struct iscsi_tmr_req *tmr_req) iscsit_task_reassign_complete_write() argument
306 iscsit_task_reassign_complete_read( struct iscsi_cmd *cmd, struct iscsi_tmr_req *tmr_req) iscsit_task_reassign_complete_read() argument
359 iscsit_task_reassign_complete_none( struct iscsi_cmd *cmd, struct iscsi_tmr_req *tmr_req) iscsit_task_reassign_complete_none() argument
485 iscsit_task_reassign_prepare_unsolicited_dataout( struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_task_reassign_prepare_unsolicited_dataout() argument
H A Discsi_target_datain_values.c43 void iscsit_attach_datain_req(struct iscsi_cmd *cmd, struct iscsi_datain_req *dr) iscsit_attach_datain_req() argument
45 spin_lock(&cmd->datain_lock); iscsit_attach_datain_req()
46 list_add_tail(&dr->cmd_datain_node, &cmd->datain_list); iscsit_attach_datain_req()
47 spin_unlock(&cmd->datain_lock); iscsit_attach_datain_req()
50 void iscsit_free_datain_req(struct iscsi_cmd *cmd, struct iscsi_datain_req *dr) iscsit_free_datain_req() argument
52 spin_lock(&cmd->datain_lock); iscsit_free_datain_req()
54 spin_unlock(&cmd->datain_lock); iscsit_free_datain_req()
59 void iscsit_free_all_datain_reqs(struct iscsi_cmd *cmd) iscsit_free_all_datain_reqs() argument
63 spin_lock(&cmd->datain_lock); iscsit_free_all_datain_reqs()
64 list_for_each_entry_safe(dr, dr_tmp, &cmd->datain_list, cmd_datain_node) { iscsit_free_all_datain_reqs()
68 spin_unlock(&cmd->datain_lock); iscsit_free_all_datain_reqs()
71 struct iscsi_datain_req *iscsit_get_datain_req(struct iscsi_cmd *cmd) iscsit_get_datain_req() argument
73 if (list_empty(&cmd->datain_list)) { iscsit_get_datain_req()
74 pr_err("cmd->datain_list is empty for ITT:" iscsit_get_datain_req()
75 " 0x%08x\n", cmd->init_task_tag); iscsit_get_datain_req()
79 return list_first_entry(&cmd->datain_list, struct iscsi_datain_req, iscsit_get_datain_req()
87 struct iscsi_cmd *cmd, iscsit_set_datain_values_yes_and_yes()
91 struct iscsi_conn *conn = cmd->conn; iscsit_set_datain_values_yes_and_yes()
94 dr = iscsit_get_datain_req(cmd); iscsit_set_datain_values_yes_and_yes()
100 cmd, dr) < 0) iscsit_set_datain_values_yes_and_yes()
107 cmd->next_burst_len : dr->next_burst_len; iscsit_set_datain_values_yes_and_yes()
109 cmd->read_data_done : dr->read_data_done; iscsit_set_datain_values_yes_and_yes()
111 read_data_left = (cmd->se_cmd.data_length - read_data_done); iscsit_set_datain_values_yes_and_yes()
114 cmd->init_task_tag); iscsit_set_datain_values_yes_and_yes()
144 datain->data_sn = (!dr->recovery) ? cmd->data_sn++ : dr->data_sn++; iscsit_set_datain_values_yes_and_yes()
148 cmd->next_burst_len = next_burst_len; iscsit_set_datain_values_yes_and_yes()
149 cmd->read_data_done += datain->length; iscsit_set_datain_values_yes_and_yes()
185 struct iscsi_cmd *cmd, iscsit_set_datain_values_no_and_yes()
189 struct iscsi_conn *conn = cmd->conn; iscsit_set_datain_values_no_and_yes()
193 dr = iscsit_get_datain_req(cmd); iscsit_set_datain_values_no_and_yes()
199 cmd, dr) < 0) iscsit_set_datain_values_no_and_yes()
206 cmd->read_data_done : dr->read_data_done; iscsit_set_datain_values_no_and_yes()
208 cmd->seq_send_order : dr->seq_send_order; iscsit_set_datain_values_no_and_yes()
210 read_data_left = (cmd->se_cmd.data_length - read_data_done); iscsit_set_datain_values_no_and_yes()
213 cmd->init_task_tag); iscsit_set_datain_values_no_and_yes()
217 seq = iscsit_get_seq_holder_for_datain(cmd, seq_send_order); iscsit_set_datain_values_no_and_yes()
224 seq->first_datasn = cmd->data_sn; iscsit_set_datain_values_no_and_yes()
229 cmd->se_cmd.data_length) { iscsit_set_datain_values_no_and_yes()
230 datain->length = (cmd->se_cmd.data_length - offset); iscsit_set_datain_values_no_and_yes()
262 if ((read_data_done + datain->length) == cmd->se_cmd.data_length) iscsit_set_datain_values_no_and_yes()
265 datain->data_sn = (!dr->recovery) ? cmd->data_sn++ : dr->data_sn++; iscsit_set_datain_values_no_and_yes()
267 cmd->seq_send_order = seq_send_order; iscsit_set_datain_values_no_and_yes()
268 cmd->read_data_done += datain->length; iscsit_set_datain_values_no_and_yes()
306 struct iscsi_cmd *cmd, iscsit_set_datain_values_yes_and_no()
310 struct iscsi_conn *conn = cmd->conn; iscsit_set_datain_values_yes_and_no()
314 dr = iscsit_get_datain_req(cmd); iscsit_set_datain_values_yes_and_no()
320 cmd, dr) < 0) iscsit_set_datain_values_yes_and_no()
327 cmd->next_burst_len : dr->next_burst_len; iscsit_set_datain_values_yes_and_no()
329 cmd->read_data_done : dr->read_data_done; iscsit_set_datain_values_yes_and_no()
331 read_data_left = (cmd->se_cmd.data_length - read_data_done); iscsit_set_datain_values_yes_and_no()
334 cmd->init_task_tag); iscsit_set_datain_values_yes_and_no()
338 pdu = iscsit_get_pdu_holder_for_seq(cmd, NULL); iscsit_set_datain_values_yes_and_no()
342 if ((read_data_done + pdu->length) == cmd->se_cmd.data_length) { iscsit_set_datain_values_yes_and_no()
361 pdu->data_sn = (!dr->recovery) ? cmd->data_sn++ : dr->data_sn++; iscsit_set_datain_values_yes_and_no()
363 cmd->next_burst_len = next_burst_len; iscsit_set_datain_values_yes_and_no()
364 cmd->read_data_done += pdu->length; iscsit_set_datain_values_yes_and_no()
405 struct iscsi_cmd *cmd, iscsit_set_datain_values_no_and_no()
409 struct iscsi_conn *conn = cmd->conn; iscsit_set_datain_values_no_and_no()
414 dr = iscsit_get_datain_req(cmd); iscsit_set_datain_values_no_and_no()
420 cmd, dr) < 0) iscsit_set_datain_values_no_and_no()
427 cmd->read_data_done : dr->read_data_done; iscsit_set_datain_values_no_and_no()
429 cmd->seq_send_order : dr->seq_send_order; iscsit_set_datain_values_no_and_no()
431 read_data_left = (cmd->se_cmd.data_length - read_data_done); iscsit_set_datain_values_no_and_no()
434 cmd->init_task_tag); iscsit_set_datain_values_no_and_no()
438 seq = iscsit_get_seq_holder_for_datain(cmd, seq_send_order); iscsit_set_datain_values_no_and_no()
445 seq->first_datasn = cmd->data_sn; iscsit_set_datain_values_no_and_no()
447 pdu = iscsit_get_pdu_holder_for_seq(cmd, seq); iscsit_set_datain_values_no_and_no()
461 if ((read_data_done + pdu->length) == cmd->se_cmd.data_length) iscsit_set_datain_values_no_and_no()
464 pdu->data_sn = (!dr->recovery) ? cmd->data_sn++ : dr->data_sn++; iscsit_set_datain_values_no_and_no()
466 cmd->seq_send_order = seq_send_order; iscsit_set_datain_values_no_and_no()
467 cmd->read_data_done += pdu->length; iscsit_set_datain_values_no_and_no()
507 struct iscsi_cmd *cmd, iscsit_get_datain_values()
510 struct iscsi_conn *conn = cmd->conn; iscsit_get_datain_values()
514 return iscsit_set_datain_values_yes_and_yes(cmd, datain); iscsit_get_datain_values()
517 return iscsit_set_datain_values_no_and_yes(cmd, datain); iscsit_get_datain_values()
520 return iscsit_set_datain_values_yes_and_no(cmd, datain); iscsit_get_datain_values()
523 return iscsit_set_datain_values_no_and_no(cmd, datain); iscsit_get_datain_values()
86 iscsit_set_datain_values_yes_and_yes( struct iscsi_cmd *cmd, struct iscsi_datain *datain) iscsit_set_datain_values_yes_and_yes() argument
184 iscsit_set_datain_values_no_and_yes( struct iscsi_cmd *cmd, struct iscsi_datain *datain) iscsit_set_datain_values_no_and_yes() argument
305 iscsit_set_datain_values_yes_and_no( struct iscsi_cmd *cmd, struct iscsi_datain *datain) iscsit_set_datain_values_yes_and_no() argument
404 iscsit_set_datain_values_no_and_no( struct iscsi_cmd *cmd, struct iscsi_datain *datain) iscsit_set_datain_values_no_and_no() argument
506 iscsit_get_datain_values( struct iscsi_cmd *cmd, struct iscsi_datain *datain) iscsit_get_datain_values() argument
H A Discsi_target_erl2.c36 struct iscsi_cmd *cmd, iscsit_create_conn_recovery_datain_values()
40 struct iscsi_conn *conn = cmd->conn; iscsit_create_conn_recovery_datain_values()
42 cmd->next_burst_len = 0; iscsit_create_conn_recovery_datain_values()
43 cmd->read_data_done = 0; iscsit_create_conn_recovery_datain_values()
46 if ((cmd->next_burst_len + iscsit_create_conn_recovery_datain_values()
49 cmd->read_data_done += iscsit_create_conn_recovery_datain_values()
51 cmd->next_burst_len += iscsit_create_conn_recovery_datain_values()
54 cmd->read_data_done += iscsit_create_conn_recovery_datain_values()
56 cmd->next_burst_len); iscsit_create_conn_recovery_datain_values()
57 cmd->next_burst_len = 0; iscsit_create_conn_recovery_datain_values()
64 struct iscsi_cmd *cmd) iscsit_create_conn_recovery_dataout_values()
67 struct iscsi_conn *conn = cmd->conn; iscsit_create_conn_recovery_dataout_values()
69 cmd->data_sn = 0; iscsit_create_conn_recovery_dataout_values()
70 cmd->next_burst_len = 0; iscsit_create_conn_recovery_dataout_values()
72 while (cmd->write_data_done > write_data_done) { iscsit_create_conn_recovery_dataout_values()
74 cmd->write_data_done) iscsit_create_conn_recovery_dataout_values()
80 cmd->write_data_done = write_data_done; iscsit_create_conn_recovery_dataout_values()
129 struct iscsi_cmd *cmd, *cmd_tmp; iscsit_free_connection_recovery_entires() local
138 list_for_each_entry_safe(cmd, cmd_tmp, iscsit_free_connection_recovery_entires()
141 list_del_init(&cmd->i_conn_node); iscsit_free_connection_recovery_entires()
142 cmd->conn = NULL; iscsit_free_connection_recovery_entires()
144 iscsit_free_cmd(cmd, true); iscsit_free_connection_recovery_entires()
160 list_for_each_entry_safe(cmd, cmd_tmp, iscsit_free_connection_recovery_entires()
163 list_del_init(&cmd->i_conn_node); iscsit_free_connection_recovery_entires()
164 cmd->conn = NULL; iscsit_free_connection_recovery_entires()
166 iscsit_free_cmd(cmd, true); iscsit_free_connection_recovery_entires()
207 struct iscsi_cmd *cmd, iscsit_remove_cmd_from_connection_recovery()
212 if (!cmd->cr) { iscsit_remove_cmd_from_connection_recovery()
214 " is NULL!\n", cmd->init_task_tag); iscsit_remove_cmd_from_connection_recovery()
217 cr = cmd->cr; iscsit_remove_cmd_from_connection_recovery()
219 list_del_init(&cmd->i_conn_node); iscsit_remove_cmd_from_connection_recovery()
228 struct iscsi_cmd *cmd, *cmd_tmp; iscsit_discard_cr_cmds_by_expstatsn() local
232 list_for_each_entry_safe(cmd, cmd_tmp, iscsit_discard_cr_cmds_by_expstatsn()
235 if (((cmd->deferred_i_state != ISTATE_SENT_STATUS) && iscsit_discard_cr_cmds_by_expstatsn()
236 (cmd->deferred_i_state != ISTATE_REMOVE)) || iscsit_discard_cr_cmds_by_expstatsn()
237 (cmd->stat_sn >= exp_statsn)) { iscsit_discard_cr_cmds_by_expstatsn()
243 " 0x%08x, CID: %hu.\n", cmd->init_task_tag, iscsit_discard_cr_cmds_by_expstatsn()
244 cmd->stat_sn, cr->cid); iscsit_discard_cr_cmds_by_expstatsn()
246 iscsit_remove_cmd_from_connection_recovery(cmd, sess); iscsit_discard_cr_cmds_by_expstatsn()
249 iscsit_free_cmd(cmd, true); iscsit_discard_cr_cmds_by_expstatsn()
276 struct iscsi_cmd *cmd, *cmd_tmp; iscsit_discard_unacknowledged_ooo_cmdsns_for_conn() local
296 list_for_each_entry_safe(cmd, cmd_tmp, &conn->conn_cmd_list, i_conn_node) { iscsit_discard_unacknowledged_ooo_cmdsns_for_conn()
297 if (!(cmd->cmd_flags & ICF_OOO_CMDSN)) iscsit_discard_unacknowledged_ooo_cmdsns_for_conn()
300 list_del_init(&cmd->i_conn_node); iscsit_discard_unacknowledged_ooo_cmdsns_for_conn()
303 iscsit_free_cmd(cmd, true); iscsit_discard_unacknowledged_ooo_cmdsns_for_conn()
317 struct iscsi_cmd *cmd, *cmd_tmp; iscsit_prepare_cmds_for_realligance() local
338 * list_del_init(&cmd->i_conn_node); to release the command to the iscsit_prepare_cmds_for_realligance()
345 list_for_each_entry_safe(cmd, cmd_tmp, &conn->conn_cmd_list, i_conn_node) { iscsit_prepare_cmds_for_realligance()
347 if ((cmd->iscsi_opcode != ISCSI_OP_SCSI_CMD) && iscsit_prepare_cmds_for_realligance()
348 (cmd->iscsi_opcode != ISCSI_OP_NOOP_OUT)) { iscsit_prepare_cmds_for_realligance()
351 " CID: %hu\n", cmd->iscsi_opcode, iscsit_prepare_cmds_for_realligance()
352 cmd->init_task_tag, cmd->cmd_sn, conn->cid); iscsit_prepare_cmds_for_realligance()
354 list_del_init(&cmd->i_conn_node); iscsit_prepare_cmds_for_realligance()
356 iscsit_free_cmd(cmd, true); iscsit_prepare_cmds_for_realligance()
372 if (!(cmd->cmd_flags & ICF_OOO_CMDSN) && !cmd->immediate_cmd && iscsit_prepare_cmds_for_realligance()
373 iscsi_sna_gte(cmd->cmd_sn, conn->sess->exp_cmd_sn)) { iscsit_prepare_cmds_for_realligance()
374 list_del_init(&cmd->i_conn_node); iscsit_prepare_cmds_for_realligance()
376 iscsit_free_cmd(cmd, true); iscsit_prepare_cmds_for_realligance()
384 " realligence.\n", cmd->iscsi_opcode, iscsit_prepare_cmds_for_realligance()
385 cmd->init_task_tag, cmd->cmd_sn, cmd->stat_sn, iscsit_prepare_cmds_for_realligance()
388 cmd->deferred_i_state = cmd->i_state; iscsit_prepare_cmds_for_realligance()
389 cmd->i_state = ISTATE_IN_CONNECTION_RECOVERY; iscsit_prepare_cmds_for_realligance()
391 if (cmd->data_direction == DMA_TO_DEVICE) iscsit_prepare_cmds_for_realligance()
392 iscsit_stop_dataout_timer(cmd); iscsit_prepare_cmds_for_realligance()
394 cmd->sess = conn->sess; iscsit_prepare_cmds_for_realligance()
396 list_del_init(&cmd->i_conn_node); iscsit_prepare_cmds_for_realligance()
399 iscsit_free_all_datain_reqs(cmd); iscsit_prepare_cmds_for_realligance()
401 transport_wait_for_tasks(&cmd->se_cmd); iscsit_prepare_cmds_for_realligance()
403 * Add the struct iscsi_cmd to the connection recovery cmd list iscsit_prepare_cmds_for_realligance()
406 list_add_tail(&cmd->i_conn_node, &cr->conn_recovery_cmd_list); iscsit_prepare_cmds_for_realligance()
410 cmd->cr = cr; iscsit_prepare_cmds_for_realligance()
411 cmd->conn = NULL; iscsit_prepare_cmds_for_realligance()
35 iscsit_create_conn_recovery_datain_values( struct iscsi_cmd *cmd, __be32 exp_data_sn) iscsit_create_conn_recovery_datain_values() argument
63 iscsit_create_conn_recovery_dataout_values( struct iscsi_cmd *cmd) iscsit_create_conn_recovery_dataout_values() argument
206 iscsit_remove_cmd_from_connection_recovery( struct iscsi_cmd *cmd, struct iscsi_session *sess) iscsit_remove_cmd_from_connection_recovery() argument
H A Discsi_target_util.c60 * Called with cmd->r2t_lock held.
63 struct iscsi_cmd *cmd, iscsit_add_r2t_to_list()
79 r2t->r2t_sn = (!r2t_sn) ? cmd->r2t_sn++ : r2t_sn; iscsit_add_r2t_to_list()
82 list_add_tail(&r2t->r2t_list, &cmd->cmd_r2t_list); iscsit_add_r2t_to_list()
83 spin_unlock_bh(&cmd->r2t_lock); iscsit_add_r2t_to_list()
85 iscsit_add_cmd_to_immediate_queue(cmd, cmd->conn, ISTATE_SEND_R2T); iscsit_add_r2t_to_list()
87 spin_lock_bh(&cmd->r2t_lock); iscsit_add_r2t_to_list()
92 struct iscsi_cmd *cmd, iscsit_get_r2t_for_eos()
98 spin_lock_bh(&cmd->r2t_lock); iscsit_get_r2t_for_eos()
99 list_for_each_entry(r2t, &cmd->cmd_r2t_list, r2t_list) { iscsit_get_r2t_for_eos()
102 spin_unlock_bh(&cmd->r2t_lock); iscsit_get_r2t_for_eos()
106 spin_unlock_bh(&cmd->r2t_lock); iscsit_get_r2t_for_eos()
113 struct iscsi_r2t *iscsit_get_r2t_from_list(struct iscsi_cmd *cmd) iscsit_get_r2t_from_list() argument
117 spin_lock_bh(&cmd->r2t_lock); iscsit_get_r2t_from_list()
118 list_for_each_entry(r2t, &cmd->cmd_r2t_list, r2t_list) { iscsit_get_r2t_from_list()
120 spin_unlock_bh(&cmd->r2t_lock); iscsit_get_r2t_from_list()
124 spin_unlock_bh(&cmd->r2t_lock); iscsit_get_r2t_from_list()
127 " 0x%08x.\n", cmd->init_task_tag); iscsit_get_r2t_from_list()
132 * Called with cmd->r2t_lock held.
134 void iscsit_free_r2t(struct iscsi_r2t *r2t, struct iscsi_cmd *cmd) iscsit_free_r2t() argument
140 void iscsit_free_r2ts_from_list(struct iscsi_cmd *cmd) iscsit_free_r2ts_from_list() argument
144 spin_lock_bh(&cmd->r2t_lock); iscsit_free_r2ts_from_list()
145 list_for_each_entry_safe(r2t, r2t_tmp, &cmd->cmd_r2t_list, r2t_list) iscsit_free_r2ts_from_list()
146 iscsit_free_r2t(r2t, cmd); iscsit_free_r2ts_from_list()
147 spin_unlock_bh(&cmd->r2t_lock); iscsit_free_r2ts_from_list()
156 struct iscsi_cmd *cmd; iscsit_allocate_cmd() local
165 cmd = (struct iscsi_cmd *)(se_sess->sess_cmd_map + (tag * size)); iscsit_allocate_cmd()
166 memset(cmd, 0, size); iscsit_allocate_cmd()
168 cmd->se_cmd.map_tag = tag; iscsit_allocate_cmd()
169 cmd->conn = conn; iscsit_allocate_cmd()
170 INIT_LIST_HEAD(&cmd->i_conn_node); iscsit_allocate_cmd()
171 INIT_LIST_HEAD(&cmd->datain_list); iscsit_allocate_cmd()
172 INIT_LIST_HEAD(&cmd->cmd_r2t_list); iscsit_allocate_cmd()
173 spin_lock_init(&cmd->datain_lock); iscsit_allocate_cmd()
174 spin_lock_init(&cmd->dataout_timeout_lock); iscsit_allocate_cmd()
175 spin_lock_init(&cmd->istate_lock); iscsit_allocate_cmd()
176 spin_lock_init(&cmd->error_lock); iscsit_allocate_cmd()
177 spin_lock_init(&cmd->r2t_lock); iscsit_allocate_cmd()
179 return cmd; iscsit_allocate_cmd()
184 struct iscsi_cmd *cmd, iscsit_get_seq_holder_for_datain()
189 for (i = 0; i < cmd->seq_count; i++) iscsit_get_seq_holder_for_datain()
190 if (cmd->seq_list[i].seq_send_order == seq_send_order) iscsit_get_seq_holder_for_datain()
191 return &cmd->seq_list[i]; iscsit_get_seq_holder_for_datain()
196 struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsi_cmd *cmd) iscsit_get_seq_holder_for_r2t() argument
200 if (!cmd->seq_list) { iscsit_get_seq_holder_for_r2t()
205 for (i = 0; i < cmd->seq_count; i++) { iscsit_get_seq_holder_for_r2t()
206 if (cmd->seq_list[i].type != SEQTYPE_NORMAL) iscsit_get_seq_holder_for_r2t()
208 if (cmd->seq_list[i].seq_send_order == cmd->seq_send_order) { iscsit_get_seq_holder_for_r2t()
209 cmd->seq_send_order++; iscsit_get_seq_holder_for_r2t()
210 return &cmd->seq_list[i]; iscsit_get_seq_holder_for_r2t()
218 struct iscsi_cmd *cmd, iscsit_get_holder_for_r2tsn()
223 spin_lock_bh(&cmd->r2t_lock); iscsit_get_holder_for_r2tsn()
224 list_for_each_entry(r2t, &cmd->cmd_r2t_list, r2t_list) { iscsit_get_holder_for_r2tsn()
226 spin_unlock_bh(&cmd->r2t_lock); iscsit_get_holder_for_r2tsn()
230 spin_unlock_bh(&cmd->r2t_lock); iscsit_get_holder_for_r2tsn()
278 int iscsit_sequence_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_sequence_cmd() argument
290 ret = iscsit_execute_cmd(cmd, 0); iscsit_sequence_cmd()
299 ret = iscsit_handle_ooo_cmdsn(conn->sess, cmd, be32_to_cpu(cmdsn)); iscsit_sequence_cmd()
310 cmd->i_state = ISTATE_REMOVE; iscsit_sequence_cmd()
311 iscsit_add_cmd_to_immediate_queue(cmd, conn, cmd->i_state); iscsit_sequence_cmd()
323 iscsit_reject_cmd(cmd, reason, buf); iscsit_sequence_cmd()
329 int iscsit_check_unsolicited_dataout(struct iscsi_cmd *cmd, unsigned char *buf) iscsit_check_unsolicited_dataout() argument
331 struct iscsi_conn *conn = cmd->conn; iscsit_check_unsolicited_dataout()
332 struct se_cmd *se_cmd = &cmd->se_cmd; iscsit_check_unsolicited_dataout()
344 if ((cmd->first_burst_len + payload_length) > iscsit_check_unsolicited_dataout()
348 (cmd->first_burst_len + payload_length), iscsit_check_unsolicited_dataout()
358 if (((cmd->first_burst_len + payload_length) != cmd->se_cmd.data_length) && iscsit_check_unsolicited_dataout()
359 ((cmd->first_burst_len + payload_length) != iscsit_check_unsolicited_dataout()
364 (cmd->first_burst_len + payload_length), iscsit_check_unsolicited_dataout()
365 conn->sess->sess_ops->FirstBurstLength, cmd->se_cmd.data_length); iscsit_check_unsolicited_dataout()
377 struct iscsi_cmd *cmd; iscsit_find_cmd_from_itt() local
380 list_for_each_entry(cmd, &conn->conn_cmd_list, i_conn_node) { iscsit_find_cmd_from_itt()
381 if (cmd->init_task_tag == init_task_tag) { iscsit_find_cmd_from_itt()
383 return cmd; iscsit_find_cmd_from_itt()
399 struct iscsi_cmd *cmd; iscsit_find_cmd_from_itt_or_dump() local
402 list_for_each_entry(cmd, &conn->conn_cmd_list, i_conn_node) { iscsit_find_cmd_from_itt_or_dump()
403 if (cmd->cmd_flags & ICF_GOT_LAST_DATAOUT) iscsit_find_cmd_from_itt_or_dump()
405 if (cmd->init_task_tag == init_task_tag) { iscsit_find_cmd_from_itt_or_dump()
407 return cmd; iscsit_find_cmd_from_itt_or_dump()
424 struct iscsi_cmd *cmd = NULL; iscsit_find_cmd_from_ttt() local
427 list_for_each_entry(cmd, &conn->conn_cmd_list, i_conn_node) { iscsit_find_cmd_from_ttt()
428 if (cmd->targ_xfer_tag == targ_xfer_tag) { iscsit_find_cmd_from_ttt()
430 return cmd; iscsit_find_cmd_from_ttt()
446 struct iscsi_cmd *cmd = NULL; iscsit_find_cmd_for_recovery() local
455 list_for_each_entry(cmd, &cr->conn_recovery_cmd_list, i_conn_node) { iscsit_find_cmd_for_recovery()
456 if (cmd->init_task_tag == init_task_tag) { iscsit_find_cmd_for_recovery()
461 *cmd_ptr = cmd; iscsit_find_cmd_for_recovery()
475 list_for_each_entry(cmd, &cr->conn_recovery_cmd_list, i_conn_node) { iscsit_find_cmd_for_recovery()
476 if (cmd->init_task_tag == init_task_tag) { iscsit_find_cmd_for_recovery()
481 *cmd_ptr = cmd; iscsit_find_cmd_for_recovery()
493 struct iscsi_cmd *cmd, iscsit_add_cmd_to_immediate_queue()
506 qr->cmd = cmd; iscsit_add_cmd_to_immediate_queue()
511 atomic_inc(&cmd->immed_queue_count); iscsit_add_cmd_to_immediate_queue()
531 if (qr->cmd) iscsit_get_cmd_from_immediate_queue()
532 atomic_dec(&qr->cmd->immed_queue_count); iscsit_get_cmd_from_immediate_queue()
539 struct iscsi_cmd *cmd, iscsit_remove_cmd_from_immediate_queue()
545 if (!atomic_read(&cmd->immed_queue_count)) { iscsit_remove_cmd_from_immediate_queue()
551 if (qr->cmd != cmd) iscsit_remove_cmd_from_immediate_queue()
554 atomic_dec(&qr->cmd->immed_queue_count); iscsit_remove_cmd_from_immediate_queue()
560 if (atomic_read(&cmd->immed_queue_count)) { iscsit_remove_cmd_from_immediate_queue()
562 cmd->init_task_tag, iscsit_remove_cmd_from_immediate_queue()
563 atomic_read(&cmd->immed_queue_count)); iscsit_remove_cmd_from_immediate_queue()
568 struct iscsi_cmd *cmd, iscsit_add_cmd_to_response_queue()
581 qr->cmd = cmd; iscsit_add_cmd_to_response_queue()
586 atomic_inc(&cmd->response_queue_count); iscsit_add_cmd_to_response_queue()
606 if (qr->cmd) iscsit_get_cmd_from_response_queue()
607 atomic_dec(&qr->cmd->response_queue_count); iscsit_get_cmd_from_response_queue()
614 struct iscsi_cmd *cmd, iscsit_remove_cmd_from_response_queue()
620 if (!atomic_read(&cmd->response_queue_count)) { iscsit_remove_cmd_from_response_queue()
627 if (qr->cmd != cmd) iscsit_remove_cmd_from_response_queue()
630 atomic_dec(&qr->cmd->response_queue_count); iscsit_remove_cmd_from_response_queue()
636 if (atomic_read(&cmd->response_queue_count)) { iscsit_remove_cmd_from_response_queue()
638 cmd->init_task_tag, iscsit_remove_cmd_from_response_queue()
639 atomic_read(&cmd->response_queue_count)); iscsit_remove_cmd_from_response_queue()
668 if (qr->cmd) iscsit_free_queue_reqs_for_conn()
669 atomic_dec(&qr->cmd->immed_queue_count); iscsit_free_queue_reqs_for_conn()
679 if (qr->cmd) iscsit_free_queue_reqs_for_conn()
680 atomic_dec(&qr->cmd->response_queue_count); iscsit_free_queue_reqs_for_conn()
687 void iscsit_release_cmd(struct iscsi_cmd *cmd) iscsit_release_cmd() argument
690 struct se_cmd *se_cmd = &cmd->se_cmd; iscsit_release_cmd()
692 if (cmd->conn) iscsit_release_cmd()
693 sess = cmd->conn->sess; iscsit_release_cmd()
695 sess = cmd->sess; iscsit_release_cmd()
699 kfree(cmd->buf_ptr); iscsit_release_cmd()
700 kfree(cmd->pdu_list); iscsit_release_cmd()
701 kfree(cmd->seq_list); iscsit_release_cmd()
702 kfree(cmd->tmr_req); iscsit_release_cmd()
703 kfree(cmd->iov_data); iscsit_release_cmd()
704 kfree(cmd->text_in_ptr); iscsit_release_cmd()
710 void __iscsit_free_cmd(struct iscsi_cmd *cmd, bool scsi_cmd, __iscsit_free_cmd() argument
713 struct iscsi_conn *conn = cmd->conn; __iscsit_free_cmd()
716 if (cmd->data_direction == DMA_TO_DEVICE) { __iscsit_free_cmd()
717 iscsit_stop_dataout_timer(cmd); __iscsit_free_cmd()
718 iscsit_free_r2ts_from_list(cmd); __iscsit_free_cmd()
720 if (cmd->data_direction == DMA_FROM_DEVICE) __iscsit_free_cmd()
721 iscsit_free_all_datain_reqs(cmd); __iscsit_free_cmd()
725 iscsit_remove_cmd_from_immediate_queue(cmd, conn); __iscsit_free_cmd()
726 iscsit_remove_cmd_from_response_queue(cmd, conn); __iscsit_free_cmd()
730 void iscsit_free_cmd(struct iscsi_cmd *cmd, bool shutdown) iscsit_free_cmd() argument
738 switch (cmd->iscsi_opcode) { iscsit_free_cmd()
740 se_cmd = &cmd->se_cmd; iscsit_free_cmd()
741 __iscsit_free_cmd(cmd, true, shutdown); iscsit_free_cmd()
746 rc = transport_generic_free_cmd(&cmd->se_cmd, shutdown); iscsit_free_cmd()
748 __iscsit_free_cmd(cmd, true, shutdown); iscsit_free_cmd()
756 * associated cmd->se_cmd needs to be released. iscsit_free_cmd()
758 if (cmd->se_cmd.se_tfo != NULL) { iscsit_free_cmd()
759 se_cmd = &cmd->se_cmd; iscsit_free_cmd()
760 __iscsit_free_cmd(cmd, true, shutdown); iscsit_free_cmd()
762 rc = transport_generic_free_cmd(&cmd->se_cmd, shutdown); iscsit_free_cmd()
764 __iscsit_free_cmd(cmd, true, shutdown); iscsit_free_cmd()
771 __iscsit_free_cmd(cmd, false, shutdown); iscsit_free_cmd()
772 iscsit_release_cmd(cmd); iscsit_free_cmd()
932 struct iscsi_cmd *cmd; iscsit_add_nopin() local
934 cmd = iscsit_allocate_cmd(conn, TASK_RUNNING); iscsit_add_nopin()
935 if (!cmd) iscsit_add_nopin()
938 cmd->iscsi_opcode = ISCSI_OP_NOOP_IN; iscsit_add_nopin()
941 cmd->init_task_tag = RESERVED_ITT; iscsit_add_nopin()
942 cmd->targ_xfer_tag = (want_response) ? iscsit_add_nopin()
945 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); iscsit_add_nopin()
950 iscsit_add_cmd_to_immediate_queue(cmd, conn, state); iscsit_add_nopin()
1149 struct iscsi_cmd *cmd, iscsit_send_tx_data()
1158 tx_size = cmd->tx_size; iscsit_send_tx_data()
1161 iov = &cmd->iov_data[0]; iscsit_send_tx_data()
1162 iov_count = cmd->iov_data_count; iscsit_send_tx_data()
1164 iov = &cmd->iov_misc[0]; iscsit_send_tx_data()
1165 iov_count = cmd->iov_misc_count; iscsit_send_tx_data()
1176 cmd->tx_size = 0; iscsit_send_tx_data()
1182 struct iscsi_cmd *cmd, iscsit_fe_sendpage_sg()
1185 struct scatterlist *sg = cmd->first_data_sg; iscsit_fe_sendpage_sg()
1188 u32 offset = cmd->first_data_sg_off; iscsit_fe_sendpage_sg()
1196 iov.iov_base = cmd->pdu; iscsit_fe_sendpage_sg()
1208 data_len = cmd->tx_size - tx_hdr_size - cmd->padding; iscsit_fe_sendpage_sg()
1211 * in order to determine proper offset into cmd->iov_data[] iscsit_fe_sendpage_sg()
1215 if (cmd->padding) iscsit_fe_sendpage_sg()
1216 iov_off = (cmd->iov_data_count - 2); iscsit_fe_sendpage_sg()
1218 iov_off = (cmd->iov_data_count - 1); iscsit_fe_sendpage_sg()
1220 iov_off = (cmd->iov_data_count - 1); iscsit_fe_sendpage_sg()
1249 if (cmd->padding) { iscsit_fe_sendpage_sg()
1250 struct kvec *iov_p = &cmd->iov_data[iov_off++]; iscsit_fe_sendpage_sg()
1252 tx_sent = tx_data(conn, iov_p, 1, cmd->padding); iscsit_fe_sendpage_sg()
1253 if (cmd->padding != tx_sent) { iscsit_fe_sendpage_sg()
1264 struct kvec *iov_d = &cmd->iov_data[iov_off]; iscsit_fe_sendpage_sg()
62 iscsit_add_r2t_to_list( struct iscsi_cmd *cmd, u32 offset, u32 xfer_len, int recovery, u32 r2t_sn) iscsit_add_r2t_to_list() argument
91 iscsit_get_r2t_for_eos( struct iscsi_cmd *cmd, u32 offset, u32 length) iscsit_get_r2t_for_eos() argument
183 iscsit_get_seq_holder_for_datain( struct iscsi_cmd *cmd, u32 seq_send_order) iscsit_get_seq_holder_for_datain() argument
217 iscsit_get_holder_for_r2tsn( struct iscsi_cmd *cmd, u32 r2t_sn) iscsit_get_holder_for_r2tsn() argument
492 iscsit_add_cmd_to_immediate_queue( struct iscsi_cmd *cmd, struct iscsi_conn *conn, u8 state) iscsit_add_cmd_to_immediate_queue() argument
538 iscsit_remove_cmd_from_immediate_queue( struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_remove_cmd_from_immediate_queue() argument
567 iscsit_add_cmd_to_response_queue( struct iscsi_cmd *cmd, struct iscsi_conn *conn, u8 state) iscsit_add_cmd_to_response_queue() argument
613 iscsit_remove_cmd_from_response_queue( struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_remove_cmd_from_response_queue() argument
1148 iscsit_send_tx_data( struct iscsi_cmd *cmd, struct iscsi_conn *conn, int use_misc) iscsit_send_tx_data() argument
1181 iscsit_fe_sendpage_sg( struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_fe_sendpage_sg() argument
H A Discsi_target.c492 static int iscsit_queue_rsp(struct iscsi_conn *conn, struct iscsi_cmd *cmd) iscsit_queue_rsp() argument
494 iscsit_add_cmd_to_response_queue(cmd, cmd->conn, cmd->i_state); iscsit_queue_rsp()
498 static void iscsit_aborted_task(struct iscsi_conn *conn, struct iscsi_cmd *cmd) iscsit_aborted_task() argument
500 bool scsi_cmd = (cmd->iscsi_opcode == ISCSI_OP_SCSI_CMD); iscsit_aborted_task()
503 if (!list_empty(&cmd->i_conn_node)) iscsit_aborted_task()
504 list_del_init(&cmd->i_conn_node); iscsit_aborted_task()
507 __iscsit_free_cmd(cmd, scsi_cmd, true); iscsit_aborted_task()
650 struct iscsi_cmd *cmd; iscsit_add_reject() local
652 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); iscsit_add_reject()
653 if (!cmd) iscsit_add_reject()
656 cmd->iscsi_opcode = ISCSI_OP_REJECT; iscsit_add_reject()
657 cmd->reject_reason = reason; iscsit_add_reject()
659 cmd->buf_ptr = kmemdup(buf, ISCSI_HDR_LEN, GFP_KERNEL); iscsit_add_reject()
660 if (!cmd->buf_ptr) { iscsit_add_reject()
661 pr_err("Unable to allocate memory for cmd->buf_ptr\n"); iscsit_add_reject()
662 iscsit_free_cmd(cmd, false); iscsit_add_reject()
667 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); iscsit_add_reject()
670 cmd->i_state = ISTATE_SEND_REJECT; iscsit_add_reject()
671 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_add_reject()
677 struct iscsi_cmd *cmd, iscsit_add_reject_from_cmd()
684 if (!cmd->conn) { iscsit_add_reject_from_cmd()
685 pr_err("cmd->conn is NULL for ITT: 0x%08x\n", iscsit_add_reject_from_cmd()
686 cmd->init_task_tag); iscsit_add_reject_from_cmd()
689 conn = cmd->conn; iscsit_add_reject_from_cmd()
691 cmd->iscsi_opcode = ISCSI_OP_REJECT; iscsit_add_reject_from_cmd()
692 cmd->reject_reason = reason; iscsit_add_reject_from_cmd()
694 cmd->buf_ptr = kmemdup(buf, ISCSI_HDR_LEN, GFP_KERNEL); iscsit_add_reject_from_cmd()
695 if (!cmd->buf_ptr) { iscsit_add_reject_from_cmd()
696 pr_err("Unable to allocate memory for cmd->buf_ptr\n"); iscsit_add_reject_from_cmd()
697 iscsit_free_cmd(cmd, false); iscsit_add_reject_from_cmd()
703 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); iscsit_add_reject_from_cmd()
707 cmd->i_state = ISTATE_SEND_REJECT; iscsit_add_reject_from_cmd()
708 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_add_reject_from_cmd()
713 if (cmd->se_cmd.se_tfo != NULL) { iscsit_add_reject_from_cmd()
715 target_put_sess_cmd(&cmd->se_cmd); iscsit_add_reject_from_cmd()
720 static int iscsit_add_reject_cmd(struct iscsi_cmd *cmd, u8 reason, iscsit_add_reject_cmd() argument
723 return iscsit_add_reject_from_cmd(cmd, reason, true, buf); iscsit_add_reject_cmd()
726 int iscsit_reject_cmd(struct iscsi_cmd *cmd, u8 reason, unsigned char *buf) iscsit_reject_cmd() argument
728 return iscsit_add_reject_from_cmd(cmd, reason, false, buf); iscsit_reject_cmd()
736 struct iscsi_cmd *cmd, iscsit_map_iovec()
748 sg = &cmd->se_cmd.t_data_sg[data_offset / PAGE_SIZE]; iscsit_map_iovec()
751 cmd->first_data_sg = sg; iscsit_map_iovec()
752 cmd->first_data_sg_off = page_off; iscsit_map_iovec()
766 cmd->kmapped_nents = i; iscsit_map_iovec()
771 static void iscsit_unmap_iovec(struct iscsi_cmd *cmd) iscsit_unmap_iovec() argument
776 sg = cmd->first_data_sg; iscsit_unmap_iovec()
778 for (i = 0; i < cmd->kmapped_nents; i++) iscsit_unmap_iovec()
785 struct iscsi_cmd *cmd, *cmd_p; iscsit_ack_from_expstatsn() local
793 list_for_each_entry_safe(cmd, cmd_p, &conn->conn_cmd_list, i_conn_node) { iscsit_ack_from_expstatsn()
794 spin_lock(&cmd->istate_lock); iscsit_ack_from_expstatsn()
795 if ((cmd->i_state == ISTATE_SENT_STATUS) && iscsit_ack_from_expstatsn()
796 iscsi_sna_lt(cmd->stat_sn, exp_statsn)) { iscsit_ack_from_expstatsn()
797 cmd->i_state = ISTATE_REMOVE; iscsit_ack_from_expstatsn()
798 spin_unlock(&cmd->istate_lock); iscsit_ack_from_expstatsn()
799 list_move_tail(&cmd->i_conn_node, &ack_list); iscsit_ack_from_expstatsn()
802 spin_unlock(&cmd->istate_lock); iscsit_ack_from_expstatsn()
806 list_for_each_entry_safe(cmd, cmd_p, &ack_list, i_conn_node) { iscsit_ack_from_expstatsn()
807 list_del_init(&cmd->i_conn_node); iscsit_ack_from_expstatsn()
808 iscsit_free_cmd(cmd, false); iscsit_ack_from_expstatsn()
812 static int iscsit_allocate_iovecs(struct iscsi_cmd *cmd) iscsit_allocate_iovecs() argument
814 u32 iov_count = max(1UL, DIV_ROUND_UP(cmd->se_cmd.data_length, PAGE_SIZE)); iscsit_allocate_iovecs()
818 cmd->iov_data = kzalloc(iov_count * sizeof(struct kvec), GFP_KERNEL); iscsit_allocate_iovecs()
819 if (!cmd->iov_data) { iscsit_allocate_iovecs()
820 pr_err("Unable to allocate cmd->iov_data\n"); iscsit_allocate_iovecs()
824 cmd->orig_iov_data_count = iov_count; iscsit_allocate_iovecs()
828 int iscsit_setup_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_setup_scsi_cmd() argument
847 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
876 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
883 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
890 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
897 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
906 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
914 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
922 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
930 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
938 cmd->data_direction = data_direction; iscsit_setup_scsi_cmd()
958 cmd->iscsi_opcode = ISCSI_OP_SCSI_CMD; iscsit_setup_scsi_cmd()
959 cmd->i_state = ISTATE_NEW_CMD; iscsit_setup_scsi_cmd()
960 cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); iscsit_setup_scsi_cmd()
961 cmd->immediate_data = (payload_length) ? 1 : 0; iscsit_setup_scsi_cmd()
962 cmd->unsolicited_data = ((!(hdr->flags & ISCSI_FLAG_CMD_FINAL) && iscsit_setup_scsi_cmd()
964 if (cmd->unsolicited_data) iscsit_setup_scsi_cmd()
965 cmd->cmd_flags |= ICF_NON_IMMEDIATE_UNSOLICITED_DATA; iscsit_setup_scsi_cmd()
967 conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; iscsit_setup_scsi_cmd()
969 cmd->targ_xfer_tag = session_get_next_ttt(conn->sess); iscsit_setup_scsi_cmd()
971 cmd->targ_xfer_tag = 0xFFFFFFFF; iscsit_setup_scsi_cmd()
972 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); iscsit_setup_scsi_cmd()
973 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); iscsit_setup_scsi_cmd()
974 cmd->first_burst_len = payload_length; iscsit_setup_scsi_cmd()
977 cmd->data_direction == DMA_FROM_DEVICE) { iscsit_setup_scsi_cmd()
982 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
985 iscsit_attach_datain_req(cmd, dr); iscsit_setup_scsi_cmd()
991 transport_init_se_cmd(&cmd->se_cmd, &iscsi_ops, iscsit_setup_scsi_cmd()
993 cmd->data_direction, sam_task_attr, iscsit_setup_scsi_cmd()
994 cmd->sense_buffer + 2); iscsit_setup_scsi_cmd()
1001 target_get_sess_cmd(&cmd->se_cmd, true); iscsit_setup_scsi_cmd()
1003 cmd->sense_reason = transport_lookup_cmd_lun(&cmd->se_cmd, iscsit_setup_scsi_cmd()
1005 if (cmd->sense_reason) iscsit_setup_scsi_cmd()
1008 cmd->sense_reason = target_setup_cmd_from_cdb(&cmd->se_cmd, hdr->cdb); iscsit_setup_scsi_cmd()
1009 if (cmd->sense_reason) { iscsit_setup_scsi_cmd()
1010 if (cmd->sense_reason == TCM_OUT_OF_RESOURCES) { iscsit_setup_scsi_cmd()
1011 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
1018 if (iscsit_build_pdu_and_seq_lists(cmd, payload_length) < 0) { iscsit_setup_scsi_cmd()
1019 return iscsit_add_reject_cmd(cmd, iscsit_setup_scsi_cmd()
1025 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); iscsit_setup_scsi_cmd()
1031 core_alua_check_nonop_delay(&cmd->se_cmd); iscsit_setup_scsi_cmd()
1037 void iscsit_set_unsoliticed_dataout(struct iscsi_cmd *cmd) iscsit_set_unsoliticed_dataout() argument
1039 iscsit_set_dataout_sequence_values(cmd); iscsit_set_unsoliticed_dataout()
1041 spin_lock_bh(&cmd->dataout_timeout_lock); iscsit_set_unsoliticed_dataout()
1042 iscsit_start_dataout_timer(cmd, cmd->conn); iscsit_set_unsoliticed_dataout()
1043 spin_unlock_bh(&cmd->dataout_timeout_lock); iscsit_set_unsoliticed_dataout()
1047 int iscsit_process_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_process_scsi_cmd() argument
1061 if (!cmd->immediate_data) { iscsit_process_scsi_cmd()
1062 cmdsn_ret = iscsit_sequence_cmd(conn, cmd, iscsit_process_scsi_cmd()
1067 target_put_sess_cmd(&cmd->se_cmd); iscsit_process_scsi_cmd()
1077 if (!cmd->immediate_data) { iscsit_process_scsi_cmd()
1078 if (!cmd->sense_reason && cmd->unsolicited_data) iscsit_process_scsi_cmd()
1079 iscsit_set_unsoliticed_dataout(cmd); iscsit_process_scsi_cmd()
1080 if (!cmd->sense_reason) iscsit_process_scsi_cmd()
1083 target_put_sess_cmd(&cmd->se_cmd); iscsit_process_scsi_cmd()
1092 if (cmd->sense_reason) { iscsit_process_scsi_cmd()
1093 if (cmd->reject_reason) iscsit_process_scsi_cmd()
1102 cmd->sense_reason = transport_generic_new_cmd(&cmd->se_cmd); iscsit_process_scsi_cmd()
1103 if (cmd->sense_reason) iscsit_process_scsi_cmd()
1111 iscsit_get_immediate_data(struct iscsi_cmd *cmd, struct iscsi_scsi_req *hdr, iscsit_get_immediate_data() argument
1121 immed_ret = iscsit_handle_immediate_data(cmd, hdr, iscsit_get_immediate_data()
1122 cmd->first_burst_len); iscsit_get_immediate_data()
1130 cmdsn_ret = iscsit_sequence_cmd(cmd->conn, cmd, iscsit_get_immediate_data()
1135 if (cmd->sense_reason || cmdsn_ret == CMDSN_LOWER_THAN_EXP) { iscsit_get_immediate_data()
1138 rc = iscsit_dump_data_payload(cmd->conn, iscsit_get_immediate_data()
1139 cmd->first_burst_len, 1); iscsit_get_immediate_data()
1140 target_put_sess_cmd(&cmd->se_cmd); iscsit_get_immediate_data()
1142 } else if (cmd->unsolicited_data) iscsit_get_immediate_data()
1143 iscsit_set_unsoliticed_dataout(cmd); iscsit_get_immediate_data()
1157 cmd->i_state = ISTATE_REMOVE; iscsit_get_immediate_data()
1158 iscsit_add_cmd_to_immediate_queue(cmd, cmd->conn, cmd->i_state); iscsit_get_immediate_data()
1166 iscsit_handle_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_handle_scsi_cmd() argument
1173 rc = iscsit_setup_scsi_cmd(conn, cmd, buf); iscsit_handle_scsi_cmd()
1180 if (iscsit_allocate_iovecs(cmd) < 0) { iscsit_handle_scsi_cmd()
1181 return iscsit_reject_cmd(cmd, iscsit_handle_scsi_cmd()
1184 immed_data = cmd->immediate_data; iscsit_handle_scsi_cmd()
1186 rc = iscsit_process_scsi_cmd(conn, cmd, hdr); iscsit_handle_scsi_cmd()
1195 return iscsit_get_immediate_data(cmd, hdr, dump_payload); iscsit_handle_scsi_cmd()
1200 struct iscsi_cmd *cmd, iscsit_do_crypto_hash_sg()
1213 sg = cmd->first_data_sg; iscsit_do_crypto_hash_sg()
1214 page_off = cmd->first_data_sg_off; iscsit_do_crypto_hash_sg()
1265 struct iscsi_cmd *cmd = NULL; iscsit_check_dataout_hdr() local
1286 cmd = iscsit_find_cmd_from_itt_or_dump(conn, hdr->itt, iscsit_check_dataout_hdr()
1288 if (!cmd) iscsit_check_dataout_hdr()
1296 if (cmd->cmd_flags & ICF_GOT_LAST_DATAOUT) { iscsit_check_dataout_hdr()
1299 cmd->init_task_tag); iscsit_check_dataout_hdr()
1303 if (cmd->data_direction != DMA_TO_DEVICE) { iscsit_check_dataout_hdr()
1305 " NON-WRITE command.\n", cmd->init_task_tag); iscsit_check_dataout_hdr()
1308 se_cmd = &cmd->se_cmd; iscsit_check_dataout_hdr()
1309 iscsit_mod_dataout_timer(cmd); iscsit_check_dataout_hdr()
1311 if ((be32_to_cpu(hdr->offset) + payload_length) > cmd->se_cmd.data_length) { iscsit_check_dataout_hdr()
1314 hdr->offset, payload_length, cmd->se_cmd.data_length); iscsit_check_dataout_hdr()
1315 return iscsit_reject_cmd(cmd, ISCSI_REASON_BOOKMARK_INVALID, buf); iscsit_check_dataout_hdr()
1318 if (cmd->unsolicited_data) { iscsit_check_dataout_hdr()
1324 transport_send_check_condition_and_sense(&cmd->se_cmd, iscsit_check_dataout_hdr()
1346 iscsit_stop_dataout_timer(cmd); iscsit_check_dataout_hdr()
1365 if (--cmd->outstanding_r2ts < 1) { iscsit_check_dataout_hdr()
1366 iscsit_stop_dataout_timer(cmd); iscsit_check_dataout_hdr()
1378 rc = iscsit_check_pre_dataout(cmd, buf); iscsit_check_dataout_hdr()
1384 *out_cmd = cmd; iscsit_check_dataout_hdr()
1390 iscsit_get_dataout(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_get_dataout() argument
1399 iov = &cmd->iov_data[0]; iscsit_get_dataout()
1401 iov_ret = iscsit_map_iovec(cmd, iov, be32_to_cpu(hdr->offset), iscsit_get_dataout()
1410 iov[iov_count].iov_base = cmd->pad_bytes; iscsit_get_dataout()
1422 rx_got = rx_data(conn, &cmd->iov_data[0], iov_count, rx_size); iscsit_get_dataout()
1424 iscsit_unmap_iovec(cmd); iscsit_get_dataout()
1432 data_crc = iscsit_do_crypto_hash_sg(&conn->conn_rx_hash, cmd, iscsit_get_dataout()
1435 cmd->pad_bytes); iscsit_get_dataout()
1455 iscsit_check_dataout_payload(struct iscsi_cmd *cmd, struct iscsi_data *hdr, iscsit_check_dataout_payload() argument
1458 struct iscsi_conn *conn = cmd->conn; iscsit_check_dataout_payload()
1464 rc = iscsit_check_post_dataout(cmd, (unsigned char *)hdr, data_crc_failed); iscsit_check_dataout_payload()
1468 iscsit_set_dataout_sequence_values(cmd); iscsit_check_dataout_payload()
1469 conn->conn_transport->iscsit_get_dataout(conn, cmd, false); iscsit_check_dataout_payload()
1475 spin_lock_bh(&cmd->istate_lock); iscsit_check_dataout_payload()
1476 ooo_cmdsn = (cmd->cmd_flags & ICF_OOO_CMDSN); iscsit_check_dataout_payload()
1477 cmd->cmd_flags |= ICF_GOT_LAST_DATAOUT; iscsit_check_dataout_payload()
1478 cmd->i_state = ISTATE_RECEIVED_LAST_DATAOUT; iscsit_check_dataout_payload()
1479 spin_unlock_bh(&cmd->istate_lock); iscsit_check_dataout_payload()
1481 iscsit_stop_dataout_timer(cmd); iscsit_check_dataout_payload()
1484 target_execute_cmd(&cmd->se_cmd); iscsit_check_dataout_payload()
1495 struct iscsi_cmd *cmd = NULL; iscsit_handle_data_out() local
1500 rc = iscsit_check_dataout_hdr(conn, buf, &cmd); iscsit_handle_data_out()
1503 else if (!cmd) iscsit_handle_data_out()
1506 rc = iscsit_get_dataout(conn, cmd, hdr); iscsit_handle_data_out()
1512 return iscsit_check_dataout_payload(cmd, hdr, data_crc_failed); iscsit_handle_data_out()
1515 int iscsit_setup_nop_out(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_setup_nop_out() argument
1522 if (!cmd) iscsit_setup_nop_out()
1526 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, iscsit_setup_nop_out()
1533 if (!cmd) iscsit_setup_nop_out()
1537 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, iscsit_setup_nop_out()
1546 if (!cmd) iscsit_setup_nop_out()
1550 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, iscsit_setup_nop_out()
1567 cmd->iscsi_opcode = ISCSI_OP_NOOP_OUT; iscsit_setup_nop_out()
1568 cmd->i_state = ISTATE_SEND_NOPIN; iscsit_setup_nop_out()
1569 cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? iscsit_setup_nop_out()
1571 conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; iscsit_setup_nop_out()
1572 cmd->targ_xfer_tag = 0xFFFFFFFF; iscsit_setup_nop_out()
1573 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); iscsit_setup_nop_out()
1574 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); iscsit_setup_nop_out()
1575 cmd->data_direction = DMA_NONE; iscsit_setup_nop_out()
1582 int iscsit_process_nop_out(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_process_nop_out() argument
1591 if (!cmd) iscsit_process_nop_out()
1596 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); iscsit_process_nop_out()
1602 iscsit_add_cmd_to_response_queue(cmd, conn, iscsit_process_nop_out()
1603 cmd->i_state); iscsit_process_nop_out()
1607 cmdsn_ret = iscsit_sequence_cmd(conn, cmd, iscsit_process_nop_out()
1640 static int iscsit_handle_nop_out(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_handle_nop_out() argument
1649 ret = iscsit_setup_nop_out(conn, cmd, hdr); iscsit_handle_nop_out()
1667 iov = &cmd->iov_misc[0]; iscsit_handle_nop_out()
1675 iov[niov].iov_base = &cmd->pad_bytes; iscsit_handle_nop_out()
1685 rx_got = rx_data(conn, &cmd->iov_misc[0], niov, rx_size); iscsit_handle_nop_out()
1694 padding, cmd->pad_bytes, iscsit_handle_nop_out()
1729 cmd->buf_ptr = ping_data; iscsit_handle_nop_out()
1730 cmd->buf_ptr_size = payload_length; iscsit_handle_nop_out()
1737 return iscsit_process_nop_out(conn, cmd, hdr); iscsit_handle_nop_out()
1739 if (cmd) iscsit_handle_nop_out()
1740 iscsit_free_cmd(cmd, false); iscsit_handle_nop_out()
1747 iscsit_handle_task_mgt_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_handle_task_mgt_cmd() argument
1778 return iscsit_add_reject_cmd(cmd, iscsit_handle_task_mgt_cmd()
1785 cmd->data_direction = DMA_NONE; iscsit_handle_task_mgt_cmd()
1787 cmd->tmr_req = kzalloc(sizeof(struct iscsi_tmr_req), GFP_KERNEL); iscsit_handle_task_mgt_cmd()
1788 if (!cmd->tmr_req) { iscsit_handle_task_mgt_cmd()
1791 return iscsit_add_reject_cmd(cmd, iscsit_handle_task_mgt_cmd()
1805 transport_init_se_cmd(&cmd->se_cmd, &iscsi_ops, iscsit_handle_task_mgt_cmd()
1807 TCM_SIMPLE_TAG, cmd->sense_buffer + 2); iscsit_handle_task_mgt_cmd()
1809 target_get_sess_cmd(&cmd->se_cmd, true); iscsit_handle_task_mgt_cmd()
1837 return iscsit_add_reject_cmd(cmd, iscsit_handle_task_mgt_cmd()
1841 ret = core_tmr_alloc_req(&cmd->se_cmd, cmd->tmr_req, iscsit_handle_task_mgt_cmd()
1844 return iscsit_add_reject_cmd(cmd, iscsit_handle_task_mgt_cmd()
1847 cmd->tmr_req->se_tmr_req = cmd->se_cmd.se_tmr_req; iscsit_handle_task_mgt_cmd()
1850 cmd->iscsi_opcode = ISCSI_OP_SCSI_TMFUNC; iscsit_handle_task_mgt_cmd()
1851 cmd->i_state = ISTATE_SEND_TASKMGTRSP; iscsit_handle_task_mgt_cmd()
1852 cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); iscsit_handle_task_mgt_cmd()
1853 cmd->init_task_tag = hdr->itt; iscsit_handle_task_mgt_cmd()
1854 cmd->targ_xfer_tag = 0xFFFFFFFF; iscsit_handle_task_mgt_cmd()
1855 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); iscsit_handle_task_mgt_cmd()
1856 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); iscsit_handle_task_mgt_cmd()
1857 se_tmr = cmd->se_cmd.se_tmr_req; iscsit_handle_task_mgt_cmd()
1858 tmr_req = cmd->tmr_req; iscsit_handle_task_mgt_cmd()
1863 ret = transport_lookup_tmr_lun(&cmd->se_cmd, iscsit_handle_task_mgt_cmd()
1873 se_tmr->response = iscsit_tmr_abort_task(cmd, buf); iscsit_handle_task_mgt_cmd()
1895 se_tmr->response = iscsit_tmr_task_reassign(cmd, buf); iscsit_handle_task_mgt_cmd()
1904 return iscsit_add_reject_cmd(cmd, iscsit_handle_task_mgt_cmd()
1919 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); iscsit_handle_task_mgt_cmd()
1923 int cmdsn_ret = iscsit_sequence_cmd(conn, cmd, buf, hdr->cmdsn); iscsit_handle_task_mgt_cmd()
1939 return transport_generic_handle_tmr(&cmd->se_cmd); iscsit_handle_task_mgt_cmd()
1951 target_put_sess_cmd(&cmd->se_cmd); iscsit_handle_task_mgt_cmd()
1954 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_handle_task_mgt_cmd()
1961 iscsit_setup_text_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_setup_text_cmd() argument
1970 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, iscsit_setup_text_cmd()
1977 return iscsit_reject_cmd(cmd, ISCSI_REASON_CMD_NOT_SUPPORTED, iscsit_setup_text_cmd()
1985 cmd->iscsi_opcode = ISCSI_OP_TEXT; iscsit_setup_text_cmd()
1986 cmd->i_state = ISTATE_SEND_TEXTRSP; iscsit_setup_text_cmd()
1987 cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); iscsit_setup_text_cmd()
1988 conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; iscsit_setup_text_cmd()
1989 cmd->targ_xfer_tag = 0xFFFFFFFF; iscsit_setup_text_cmd()
1990 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); iscsit_setup_text_cmd()
1991 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); iscsit_setup_text_cmd()
1992 cmd->data_direction = DMA_NONE; iscsit_setup_text_cmd()
1993 cmd->text_in_ptr = NULL; iscsit_setup_text_cmd()
2000 iscsit_process_text_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_process_text_cmd() argument
2003 unsigned char *text_in = cmd->text_in_ptr, *text_ptr; iscsit_process_text_cmd()
2007 cmd->targ_xfer_tag = be32_to_cpu(hdr->ttt); iscsit_process_text_cmd()
2008 if (cmd->targ_xfer_tag == 0xFFFFFFFF) { iscsit_process_text_cmd()
2027 cmd->cmd_flags |= ICF_SENDTARGETS_ALL; iscsit_process_text_cmd()
2030 cmd->cmd_flags |= ICF_SENDTARGETS_SINGLE; iscsit_process_text_cmd()
2037 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); iscsit_process_text_cmd()
2044 cmdsn_ret = iscsit_sequence_cmd(conn, cmd, iscsit_process_text_cmd()
2052 return iscsit_execute_cmd(cmd, 0); iscsit_process_text_cmd()
2055 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, iscsit_process_text_cmd()
2061 iscsit_handle_text_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_handle_text_cmd() argument
2069 rc = iscsit_setup_text_cmd(conn, cmd, hdr); iscsit_handle_text_cmd()
2086 cmd->text_in_ptr = text_in; iscsit_handle_text_cmd()
2147 return iscsit_process_text_cmd(conn, cmd, hdr); iscsit_handle_text_cmd()
2150 kfree(cmd->text_in_ptr); iscsit_handle_text_cmd()
2151 cmd->text_in_ptr = NULL; iscsit_handle_text_cmd()
2152 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, buf); iscsit_handle_text_cmd()
2155 int iscsit_logout_closesession(struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_logout_closesession() argument
2180 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_logout_closesession()
2185 int iscsit_logout_closeconnection(struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_logout_closeconnection() argument
2191 " %hu on CID: %hu.\n", cmd->logout_cid, conn->cid); iscsit_logout_closeconnection()
2197 if (conn->cid == cmd->logout_cid) { iscsit_logout_closeconnection()
2217 cmd->logout_cid); iscsit_logout_closeconnection()
2219 cmd->logout_response = ISCSI_LOGOUT_CID_NOT_FOUND; iscsit_logout_closeconnection()
2220 iscsit_add_cmd_to_response_queue(cmd, conn, iscsit_logout_closeconnection()
2221 cmd->i_state); iscsit_logout_closeconnection()
2228 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_logout_closeconnection()
2233 int iscsit_logout_removeconnforrecovery(struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_logout_removeconnforrecovery() argument
2238 " CID: %hu on CID: %hu.\n", cmd->logout_cid, conn->cid); iscsit_logout_removeconnforrecovery()
2243 cmd->logout_response = ISCSI_LOGOUT_RECOVERY_UNSUPPORTED; iscsit_logout_removeconnforrecovery()
2244 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_logout_removeconnforrecovery()
2248 if (conn->cid == cmd->logout_cid) { iscsit_logout_removeconnforrecovery()
2251 cmd->logout_cid, conn->cid); iscsit_logout_removeconnforrecovery()
2252 cmd->logout_response = ISCSI_LOGOUT_CLEANUP_FAILED; iscsit_logout_removeconnforrecovery()
2253 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_logout_removeconnforrecovery()
2257 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); iscsit_logout_removeconnforrecovery()
2263 iscsit_handle_logout_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, iscsit_handle_logout_cmd() argument
2291 iscsit_free_cmd(cmd, false); iscsit_handle_logout_cmd()
2295 cmd->iscsi_opcode = ISCSI_OP_LOGOUT; iscsit_handle_logout_cmd()
2296 cmd->i_state = ISTATE_SEND_LOGOUTRSP; iscsit_handle_logout_cmd()
2297 cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); iscsit_handle_logout_cmd()
2298 conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; iscsit_handle_logout_cmd()
2299 cmd->targ_xfer_tag = 0xFFFFFFFF; iscsit_handle_logout_cmd()
2300 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); iscsit_handle_logout_cmd()
2301 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); iscsit_handle_logout_cmd()
2302 cmd->logout_cid = be16_to_cpu(hdr->cid); iscsit_handle_logout_cmd()
2303 cmd->logout_reason = reason_code; iscsit_handle_logout_cmd()
2304 cmd->data_direction = DMA_NONE; iscsit_handle_logout_cmd()
2316 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); iscsit_handle_logout_cmd()
2326 if (cmd->immediate_cmd) { iscsit_handle_logout_cmd()
2327 int ret = iscsit_execute_cmd(cmd, 0); iscsit_handle_logout_cmd()
2332 cmdsn_ret = iscsit_sequence_cmd(conn, cmd, buf, hdr->cmdsn); iscsit_handle_logout_cmd()
2408 struct iscsi_cmd *cmd, iscsit_handle_immediate_data()
2414 struct iscsi_conn *conn = cmd->conn; iscsit_handle_immediate_data()
2417 iov_ret = iscsit_map_iovec(cmd, cmd->iov_data, cmd->write_data_done, length); iscsit_handle_immediate_data()
2423 iov = &cmd->iov_data[0]; iscsit_handle_immediate_data()
2427 iov[iov_count].iov_base = cmd->pad_bytes; iscsit_handle_immediate_data()
2438 rx_got = rx_data(conn, &cmd->iov_data[0], iov_count, rx_size); iscsit_handle_immediate_data()
2440 iscsit_unmap_iovec(cmd); iscsit_handle_immediate_data()
2450 data_crc = iscsit_do_crypto_hash_sg(&conn->conn_rx_hash, cmd, iscsit_handle_immediate_data()
2451 cmd->write_data_done, length, padding, iscsit_handle_immediate_data()
2452 cmd->pad_bytes); iscsit_handle_immediate_data()
2463 iscsit_reject_cmd(cmd, iscsit_handle_immediate_data()
2468 iscsit_reject_cmd(cmd, iscsit_handle_immediate_data()
2480 cmd->write_data_done += length; iscsit_handle_immediate_data()
2482 if (cmd->write_data_done == cmd->se_cmd.data_length) { iscsit_handle_immediate_data()
2483 spin_lock_bh(&cmd->istate_lock); iscsit_handle_immediate_data()
2484 cmd->cmd_flags |= ICF_GOT_LAST_DATAOUT; iscsit_handle_immediate_data()
2485 cmd->i_state = ISTATE_RECEIVED_LAST_DATAOUT; iscsit_handle_immediate_data()
2486 spin_unlock_bh(&cmd->istate_lock); iscsit_handle_immediate_data()
2499 struct iscsi_cmd *cmd; iscsit_build_conn_drop_async_message() local
2518 cmd = iscsit_allocate_cmd(conn_p, TASK_RUNNING); iscsit_build_conn_drop_async_message()
2519 if (!cmd) { iscsit_build_conn_drop_async_message()
2524 cmd->logout_cid = conn->cid; iscsit_build_conn_drop_async_message()
2525 cmd->iscsi_opcode = ISCSI_OP_ASYNC_EVENT; iscsit_build_conn_drop_async_message()
2526 cmd->i_state = ISTATE_SEND_ASYNCMSG; iscsit_build_conn_drop_async_message()
2529 list_add_tail(&cmd->i_conn_node, &conn_p->conn_cmd_list); iscsit_build_conn_drop_async_message()
2532 iscsit_add_cmd_to_response_queue(cmd, conn_p, cmd->i_state); iscsit_build_conn_drop_async_message()
2537 struct iscsi_cmd *cmd, iscsit_send_conn_drop_async_message()
2542 cmd->tx_size = ISCSI_HDR_LEN; iscsit_send_conn_drop_async_message()
2543 cmd->iscsi_opcode = ISCSI_OP_ASYNC_EVENT; iscsit_send_conn_drop_async_message()
2545 hdr = (struct iscsi_async *) cmd->pdu; iscsit_send_conn_drop_async_message()
2548 cmd->init_task_tag = RESERVED_ITT; iscsit_send_conn_drop_async_message()
2549 cmd->targ_xfer_tag = 0xFFFFFFFF; iscsit_send_conn_drop_async_message()
2551 cmd->stat_sn = conn->stat_sn++; iscsit_send_conn_drop_async_message()
2552 hdr->statsn = cpu_to_be32(cmd->stat_sn); iscsit_send_conn_drop_async_message()
2556 hdr->param1 = cpu_to_be16(cmd->logout_cid); iscsit_send_conn_drop_async_message()
2561 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; iscsit_send_conn_drop_async_message()
2566 cmd->tx_size += ISCSI_CRC_LEN; iscsit_send_conn_drop_async_message()
2571 cmd->iov_misc[0].iov_base = cmd->pdu; iscsit_send_conn_drop_async_message()
2572 cmd->iov_misc[0].iov_len = cmd->tx_size; iscsit_send_conn_drop_async_message()
2573 cmd->iov_misc_count = 1; iscsit_send_conn_drop_async_message()
2576 " 0x%08x, for CID: %hu on CID: %hu\n", cmd->stat_sn, iscsit_send_conn_drop_async_message()
2577 cmd->logout_cid, conn->cid); iscsit_send_conn_drop_async_message()
2592 iscsit_build_datain_pdu(struct iscsi_cmd *cmd, struct iscsi_conn *conn, iscsit_build_datain_pdu() argument
2599 if (cmd->se_cmd.se_cmd_flags & SCF_OVERFLOW_BIT) { iscsit_build_datain_pdu()
2601 hdr->residual_count = cpu_to_be32(cmd->se_cmd.residual_count); iscsit_build_datain_pdu()
2602 } else if (cmd->se_cmd.se_cmd_flags & SCF_UNDERFLOW_BIT) { iscsit_build_datain_pdu()
2604 hdr->residual_count = cpu_to_be32(cmd->se_cmd.residual_count); iscsit_build_datain_pdu()
2609 int_to_scsilun(cmd->se_cmd.orig_fe_lun, iscsit_build_datain_pdu()
2614 hdr->itt = cmd->init_task_tag; iscsit_build_datain_pdu()
2617 hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag); iscsit_build_datain_pdu()
2621 hdr->statsn = cpu_to_be32(cmd->stat_sn); iscsit_build_datain_pdu()
2632 cmd->init_task_tag, ntohl(hdr->statsn), ntohl(hdr->datasn), iscsit_build_datain_pdu()
2636 static int iscsit_send_datain(struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_send_datain() argument
2638 struct iscsi_data_rsp *hdr = (struct iscsi_data_rsp *)&cmd->pdu[0]; iscsit_send_datain()
2647 dr = iscsit_get_datain_values(cmd, &datain); iscsit_send_datain()
2650 cmd->init_task_tag); iscsit_send_datain()
2656 if ((datain.offset + datain.length) > cmd->se_cmd.data_length) { iscsit_send_datain()
2658 " datain.length: %u exceeds cmd->data_length: %u\n", iscsit_send_datain()
2659 cmd->init_task_tag, datain.offset, datain.length, iscsit_send_datain()
2660 cmd->se_cmd.data_length); iscsit_send_datain()
2670 (cmd->se_cmd.se_cmd_flags & SCF_TRANSPORT_TASK_SENSE)) iscsit_send_datain()
2675 iscsit_increment_maxcmdsn(cmd, conn->sess); iscsit_send_datain()
2676 cmd->stat_sn = conn->stat_sn++; iscsit_send_datain()
2683 iscsit_build_datain_pdu(cmd, conn, &datain, hdr, set_statsn); iscsit_send_datain()
2685 iov = &cmd->iov_data[0]; iscsit_send_datain()
2686 iov[iov_count].iov_base = cmd->pdu; iscsit_send_datain()
2691 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; iscsit_send_datain()
2693 iscsit_do_crypto_hash_buf(&conn->conn_tx_hash, cmd->pdu, iscsit_send_datain()
2703 iov_ret = iscsit_map_iovec(cmd, &cmd->iov_data[1], iscsit_send_datain()
2711 cmd->padding = ((-datain.length) & 3); iscsit_send_datain()
2712 if (cmd->padding) { iscsit_send_datain()
2713 iov[iov_count].iov_base = cmd->pad_bytes; iscsit_send_datain()
2714 iov[iov_count++].iov_len = cmd->padding; iscsit_send_datain()
2715 tx_size += cmd->padding; iscsit_send_datain()
2718 cmd->padding); iscsit_send_datain()
2721 cmd->data_crc = iscsit_do_crypto_hash_sg(&conn->conn_tx_hash, cmd, iscsit_send_datain()
2722 datain.offset, datain.length, cmd->padding, cmd->pad_bytes); iscsit_send_datain()
2724 iov[iov_count].iov_base = &cmd->data_crc; iscsit_send_datain()
2729 " 0x%08x\n", datain.length+cmd->padding, cmd->data_crc); iscsit_send_datain()
2732 cmd->iov_data_count = iov_count; iscsit_send_datain()
2733 cmd->tx_size = tx_size; iscsit_send_datain()
2737 ret = iscsit_fe_sendpage_sg(cmd, conn); iscsit_send_datain()
2739 ret = iscsit_send_tx_data(cmd, conn, 0); iscsit_send_datain()
2741 iscsit_unmap_iovec(cmd); iscsit_send_datain()
2749 eodr = (cmd->se_cmd.se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) ? iscsit_send_datain()
2751 iscsit_free_datain_req(cmd, dr); iscsit_send_datain()
2758 iscsit_build_logout_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn, iscsit_build_logout_rsp() argument
2769 switch (cmd->logout_reason) { iscsit_build_logout_rsp()
2773 cmd->logout_response = ISCSI_LOGOUT_SUCCESS; iscsit_build_logout_rsp()
2776 if (cmd->logout_response == ISCSI_LOGOUT_CID_NOT_FOUND) iscsit_build_logout_rsp()
2786 * on, the connection responding to cmd->logout_cid iscsit_build_logout_rsp()
2791 " successful.\n", cmd->logout_cid, conn->cid); iscsit_build_logout_rsp()
2792 cmd->logout_response = ISCSI_LOGOUT_SUCCESS; iscsit_build_logout_rsp()
2795 if ((cmd->logout_response == ISCSI_LOGOUT_RECOVERY_UNSUPPORTED) || iscsit_build_logout_rsp()
2796 (cmd->logout_response == ISCSI_LOGOUT_CLEANUP_FAILED)) iscsit_build_logout_rsp()
2803 cmd->logout_cid); iscsit_build_logout_rsp()
2810 conn->sess, cmd->logout_cid); iscsit_build_logout_rsp()
2814 cmd->logout_cid); iscsit_build_logout_rsp()
2815 cmd->logout_response = ISCSI_LOGOUT_CID_NOT_FOUND; iscsit_build_logout_rsp()
2819 iscsit_discard_cr_cmds_by_expstatsn(cr, cmd->exp_stat_sn); iscsit_build_logout_rsp()
2823 cmd->logout_cid, conn->cid); iscsit_build_logout_rsp()
2824 cmd->logout_response = ISCSI_LOGOUT_SUCCESS; iscsit_build_logout_rsp()
2827 pr_err("Unknown cmd->logout_reason: 0x%02x\n", iscsit_build_logout_rsp()
2828 cmd->logout_reason); iscsit_build_logout_rsp()
2834 hdr->response = cmd->logout_response; iscsit_build_logout_rsp()
2835 hdr->itt = cmd->init_task_tag; iscsit_build_logout_rsp()
2836 cmd->stat_sn = conn->stat_sn++; iscsit_build_logout_rsp()
2837 hdr->statsn = cpu_to_be32(cmd->stat_sn); iscsit_build_logout_rsp()
2839 iscsit_increment_maxcmdsn(cmd, conn->sess); iscsit_build_logout_rsp()
2845 cmd->init_task_tag, cmd->stat_sn, hdr->response, iscsit_build_logout_rsp()
2846 cmd->logout_cid, conn->cid); iscsit_build_logout_rsp()
2853 iscsit_send_logout(struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_send_logout() argument
2858 rc = iscsit_build_logout_rsp(cmd, conn, iscsit_send_logout()
2859 (struct iscsi_logout_rsp *)&cmd->pdu[0]); iscsit_send_logout()
2864 iov = &cmd->iov_misc[0]; iscsit_send_logout()
2865 iov[niov].iov_base = cmd->pdu; iscsit_send_logout()
2869 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; iscsit_send_logout()
2871 iscsit_do_crypto_hash_buf(&conn->conn_tx_hash, &cmd->pdu[0], iscsit_send_logout()
2879 cmd->iov_misc_count = niov; iscsit_send_logout()
2880 cmd->tx_size = tx_size; iscsit_send_logout()
2886 iscsit_build_nopin_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn, iscsit_build_nopin_rsp() argument
2891 hton24(hdr->dlength, cmd->buf_ptr_size); iscsit_build_nopin_rsp()
2894 hdr->itt = cmd->init_task_tag; iscsit_build_nopin_rsp()
2895 hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag); iscsit_build_nopin_rsp()
2896 cmd->stat_sn = (nopout_response) ? conn->stat_sn++ : iscsit_build_nopin_rsp()
2898 hdr->statsn = cpu_to_be32(cmd->stat_sn); iscsit_build_nopin_rsp()
2901 iscsit_increment_maxcmdsn(cmd, conn->sess); iscsit_build_nopin_rsp()
2908 "Solicitied" : "Unsolicitied", cmd->init_task_tag, iscsit_build_nopin_rsp()
2909 cmd->targ_xfer_tag, cmd->stat_sn, cmd->buf_ptr_size); iscsit_build_nopin_rsp()
2917 struct iscsi_cmd *cmd, iscsit_send_unsolicited_nopin()
2921 struct iscsi_nopin *hdr = (struct iscsi_nopin *)&cmd->pdu[0]; iscsit_send_unsolicited_nopin()
2924 iscsit_build_nopin_rsp(cmd, conn, hdr, false); iscsit_send_unsolicited_nopin()
2927 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; iscsit_send_unsolicited_nopin()
2937 cmd->iov_misc[0].iov_base = cmd->pdu; iscsit_send_unsolicited_nopin()
2938 cmd->iov_misc[0].iov_len = tx_size; iscsit_send_unsolicited_nopin()
2939 cmd->iov_misc_count = 1; iscsit_send_unsolicited_nopin()
2940 cmd->tx_size = tx_size; iscsit_send_unsolicited_nopin()
2943 " 0x%08x CID: %hu\n", hdr->ttt, cmd->stat_sn, conn->cid); iscsit_send_unsolicited_nopin()
2945 ret = iscsit_send_tx_data(cmd, conn, 1); iscsit_send_unsolicited_nopin()
2951 spin_lock_bh(&cmd->istate_lock); iscsit_send_unsolicited_nopin()
2952 cmd->i_state = want_response ? iscsit_send_unsolicited_nopin()
2954 spin_unlock_bh(&cmd->istate_lock); iscsit_send_unsolicited_nopin()
2960 iscsit_send_nopin(struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_send_nopin() argument
2962 struct iscsi_nopin *hdr = (struct iscsi_nopin *)&cmd->pdu[0]; iscsit_send_nopin()
2967 iscsit_build_nopin_rsp(cmd, conn, hdr, true); iscsit_send_nopin()
2970 iov = &cmd->iov_misc[0]; iscsit_send_nopin()
2971 iov[niov].iov_base = cmd->pdu; iscsit_send_nopin()
2975 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; iscsit_send_nopin()
2990 if (cmd->buf_ptr_size) { iscsit_send_nopin()
2991 iov[niov].iov_base = cmd->buf_ptr; iscsit_send_nopin()
2992 iov[niov++].iov_len = cmd->buf_ptr_size; iscsit_send_nopin()
2993 tx_size += cmd->buf_ptr_size; iscsit_send_nopin()
2996 " data.\n", cmd->buf_ptr_size); iscsit_send_nopin()
2998 padding = ((-cmd->buf_ptr_size) & 3); iscsit_send_nopin()
3000 iov[niov].iov_base = &cmd->pad_bytes; iscsit_send_nopin()
3008 cmd->buf_ptr, cmd->buf_ptr_size, iscsit_send_nopin()
3009 padding, (u8 *)&cmd->pad_bytes, iscsit_send_nopin()
3010 (u8 *)&cmd->data_crc); iscsit_send_nopin()
3012 iov[niov].iov_base = &cmd->data_crc; iscsit_send_nopin()
3017 cmd->buf_ptr_size, cmd->data_crc); iscsit_send_nopin()
3021 cmd->iov_misc_count = niov; iscsit_send_nopin()
3022 cmd->tx_size = tx_size; iscsit_send_nopin()
3028 struct iscsi_cmd *cmd, iscsit_send_r2t()
3036 r2t = iscsit_get_r2t_from_list(cmd); iscsit_send_r2t()
3040 hdr = (struct iscsi_r2t_rsp *) cmd->pdu; iscsit_send_r2t()
3044 int_to_scsilun(cmd->se_cmd.orig_fe_lun, iscsit_send_r2t()
3046 hdr->itt = cmd->init_task_tag; iscsit_send_r2t()
3056 cmd->iov_misc[0].iov_base = cmd->pdu; iscsit_send_r2t()
3057 cmd->iov_misc[0].iov_len = ISCSI_HDR_LEN; iscsit_send_r2t()
3061 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; iscsit_send_r2t()
3066 cmd->iov_misc[0].iov_len += ISCSI_CRC_LEN; iscsit_send_r2t()
3074 (!r2t->recovery_r2t) ? "" : "Recovery ", cmd->init_task_tag, iscsit_send_r2t()
3078 cmd->iov_misc_count = 1; iscsit_send_r2t()
3079 cmd->tx_size = tx_size; iscsit_send_r2t()
3081 spin_lock_bh(&cmd->r2t_lock); iscsit_send_r2t()
3083 spin_unlock_bh(&cmd->r2t_lock); iscsit_send_r2t()
3085 ret = iscsit_send_tx_data(cmd, conn, 1); iscsit_send_r2t()
3091 spin_lock_bh(&cmd->dataout_timeout_lock); iscsit_send_r2t()
3092 iscsit_start_dataout_timer(cmd, conn); iscsit_send_r2t()
3093 spin_unlock_bh(&cmd->dataout_timeout_lock); iscsit_send_r2t()
3104 struct iscsi_cmd *cmd, iscsit_build_r2ts_for_cmd()
3110 spin_lock_bh(&cmd->r2t_lock); iscsit_build_r2ts_for_cmd()
3111 if (cmd->cmd_flags & ICF_SENT_LAST_R2T) { iscsit_build_r2ts_for_cmd()
3112 spin_unlock_bh(&cmd->r2t_lock); iscsit_build_r2ts_for_cmd()
3118 cmd->r2t_offset = max(cmd->r2t_offset, cmd->write_data_done); iscsit_build_r2ts_for_cmd()
3120 while (cmd->outstanding_r2ts < conn->sess->sess_ops->MaxOutstandingR2T) { iscsit_build_r2ts_for_cmd()
3122 offset = cmd->r2t_offset; iscsit_build_r2ts_for_cmd()
3127 cmd->next_burst_len; iscsit_build_r2ts_for_cmd()
3129 if (new_data_end > cmd->se_cmd.data_length) iscsit_build_r2ts_for_cmd()
3130 xfer_len = cmd->se_cmd.data_length - offset; iscsit_build_r2ts_for_cmd()
3134 cmd->next_burst_len; iscsit_build_r2ts_for_cmd()
3139 if (new_data_end > cmd->se_cmd.data_length) iscsit_build_r2ts_for_cmd()
3140 xfer_len = cmd->se_cmd.data_length - offset; iscsit_build_r2ts_for_cmd()
3144 cmd->r2t_offset += xfer_len; iscsit_build_r2ts_for_cmd()
3146 if (cmd->r2t_offset == cmd->se_cmd.data_length) iscsit_build_r2ts_for_cmd()
3147 cmd->cmd_flags |= ICF_SENT_LAST_R2T; iscsit_build_r2ts_for_cmd()
3151 seq = iscsit_get_seq_holder_for_r2t(cmd); iscsit_build_r2ts_for_cmd()
3153 spin_unlock_bh(&cmd->r2t_lock); iscsit_build_r2ts_for_cmd()
3160 if (cmd->seq_send_order == cmd->seq_count) iscsit_build_r2ts_for_cmd()
3161 cmd->cmd_flags |= ICF_SENT_LAST_R2T; iscsit_build_r2ts_for_cmd()
3163 cmd->outstanding_r2ts++; iscsit_build_r2ts_for_cmd()
3166 if (iscsit_add_r2t_to_list(cmd, offset, xfer_len, 0, 0) < 0) { iscsit_build_r2ts_for_cmd()
3167 spin_unlock_bh(&cmd->r2t_lock); iscsit_build_r2ts_for_cmd()
3171 if (cmd->cmd_flags & ICF_SENT_LAST_R2T) iscsit_build_r2ts_for_cmd()
3174 spin_unlock_bh(&cmd->r2t_lock); iscsit_build_r2ts_for_cmd()
3179 void iscsit_build_rsp_pdu(struct iscsi_cmd *cmd, struct iscsi_conn *conn, iscsit_build_rsp_pdu() argument
3183 cmd->stat_sn = conn->stat_sn++; iscsit_build_rsp_pdu()
3190 if (cmd->se_cmd.se_cmd_flags & SCF_OVERFLOW_BIT) { iscsit_build_rsp_pdu()
3192 hdr->residual_count = cpu_to_be32(cmd->se_cmd.residual_count); iscsit_build_rsp_pdu()
3193 } else if (cmd->se_cmd.se_cmd_flags & SCF_UNDERFLOW_BIT) { iscsit_build_rsp_pdu()
3195 hdr->residual_count = cpu_to_be32(cmd->se_cmd.residual_count); iscsit_build_rsp_pdu()
3197 hdr->response = cmd->iscsi_response; iscsit_build_rsp_pdu()
3198 hdr->cmd_status = cmd->se_cmd.scsi_status; iscsit_build_rsp_pdu()
3199 hdr->itt = cmd->init_task_tag; iscsit_build_rsp_pdu()
3200 hdr->statsn = cpu_to_be32(cmd->stat_sn); iscsit_build_rsp_pdu()
3202 iscsit_increment_maxcmdsn(cmd, conn->sess); iscsit_build_rsp_pdu()
3208 cmd->init_task_tag, cmd->stat_sn, cmd->se_cmd.scsi_status, iscsit_build_rsp_pdu()
3209 cmd->se_cmd.scsi_status, conn->cid); iscsit_build_rsp_pdu()
3213 static int iscsit_send_response(struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_send_response() argument
3215 struct iscsi_scsi_rsp *hdr = (struct iscsi_scsi_rsp *)&cmd->pdu[0]; iscsit_send_response()
3219 bool inc_stat_sn = (cmd->i_state == ISTATE_SEND_STATUS); iscsit_send_response()
3221 iscsit_build_rsp_pdu(cmd, conn, inc_stat_sn, hdr); iscsit_send_response()
3223 iov = &cmd->iov_misc[0]; iscsit_send_response()
3224 iov[iov_count].iov_base = cmd->pdu; iscsit_send_response()
3231 if (cmd->se_cmd.sense_buffer && iscsit_send_response()
3232 ((cmd->se_cmd.se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) || iscsit_send_response()
3233 (cmd->se_cmd.se_cmd_flags & SCF_EMULATED_TASK_SENSE))) { iscsit_send_response()
3234 put_unaligned_be16(cmd->se_cmd.scsi_sense_length, cmd->sense_buffer); iscsit_send_response()
3235 cmd->se_cmd.scsi_sense_length += sizeof (__be16); iscsit_send_response()
3237 padding = -(cmd->se_cmd.scsi_sense_length) & 3; iscsit_send_response()
3238 hton24(hdr->dlength, (u32)cmd->se_cmd.scsi_sense_length); iscsit_send_response()
3239 iov[iov_count].iov_base = cmd->sense_buffer; iscsit_send_response()
3241 (cmd->se_cmd.scsi_sense_length + padding); iscsit_send_response()
3242 tx_size += cmd->se_cmd.scsi_sense_length; iscsit_send_response()
3245 memset(cmd->sense_buffer + iscsit_send_response()
3246 cmd->se_cmd.scsi_sense_length, 0, padding); iscsit_send_response()
3254 cmd->sense_buffer, iscsit_send_response()
3255 (cmd->se_cmd.scsi_sense_length + padding), iscsit_send_response()
3256 0, NULL, (u8 *)&cmd->data_crc); iscsit_send_response()
3258 iov[iov_count].iov_base = &cmd->data_crc; iscsit_send_response()
3264 (cmd->se_cmd.scsi_sense_length + padding), iscsit_send_response()
3265 cmd->data_crc); iscsit_send_response()
3270 cmd->se_cmd.scsi_sense_length); iscsit_send_response()
3274 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; iscsit_send_response()
3276 iscsit_do_crypto_hash_buf(&conn->conn_tx_hash, cmd->pdu, iscsit_send_response()
3285 cmd->iov_misc_count = iov_count; iscsit_send_response()
3286 cmd->tx_size = tx_size; iscsit_send_response()
3309 iscsit_build_task_mgt_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn, iscsit_build_task_mgt_rsp() argument
3312 struct se_tmr_req *se_tmr = cmd->se_cmd.se_tmr_req; iscsit_build_task_mgt_rsp()
3317 hdr->itt = cmd->init_task_tag; iscsit_build_task_mgt_rsp()
3318 cmd->stat_sn = conn->stat_sn++; iscsit_build_task_mgt_rsp()
3319 hdr->statsn = cpu_to_be32(cmd->stat_sn); iscsit_build_task_mgt_rsp()
3321 iscsit_increment_maxcmdsn(cmd, conn->sess); iscsit_build_task_mgt_rsp()
3327 cmd->init_task_tag, cmd->stat_sn, hdr->response, conn->cid); iscsit_build_task_mgt_rsp()
3332 iscsit_send_task_mgt_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_send_task_mgt_rsp() argument
3334 struct iscsi_tm_rsp *hdr = (struct iscsi_tm_rsp *)&cmd->pdu[0]; iscsit_send_task_mgt_rsp()
3337 iscsit_build_task_mgt_rsp(cmd, conn, hdr); iscsit_send_task_mgt_rsp()
3339 cmd->iov_misc[0].iov_base = cmd->pdu; iscsit_send_task_mgt_rsp()
3340 cmd->iov_misc[0].iov_len = ISCSI_HDR_LEN; iscsit_send_task_mgt_rsp()
3344 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; iscsit_send_task_mgt_rsp()
3349 cmd->iov_misc[0].iov_len += ISCSI_CRC_LEN; iscsit_send_task_mgt_rsp()
3355 cmd->iov_misc_count = 1; iscsit_send_task_mgt_rsp()
3356 cmd->tx_size = tx_size; iscsit_send_task_mgt_rsp()
3388 iscsit_build_sendtargets_response(struct iscsi_cmd *cmd, iscsit_build_sendtargets_response() argument
3393 struct iscsi_conn *conn = cmd->conn; iscsit_build_sendtargets_response()
3400 unsigned char *text_in = cmd->text_in_ptr, *text_ptr = NULL; iscsit_build_sendtargets_response()
3415 if (cmd->cmd_flags & ICF_SENDTARGETS_SINGLE) { iscsit_build_sendtargets_response()
3431 if ((cmd->cmd_flags & ICF_SENDTARGETS_SINGLE) && iscsit_build_sendtargets_response()
3449 cmd->conn->sess->sess_ops->InitiatorName))) { iscsit_build_sendtargets_response()
3532 if (cmd->cmd_flags & ICF_SENDTARGETS_SINGLE) iscsit_build_sendtargets_response()
3537 cmd->buf_ptr = payload; iscsit_build_sendtargets_response()
3543 iscsit_build_text_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn, iscsit_build_text_rsp() argument
3550 text_length = iscsit_build_sendtargets_response(cmd, network_transport, iscsit_build_text_rsp()
3551 cmd->read_data_done, iscsit_build_text_rsp()
3560 cmd->read_data_done += text_length; iscsit_build_text_rsp()
3561 if (cmd->targ_xfer_tag == 0xFFFFFFFF) iscsit_build_text_rsp()
3562 cmd->targ_xfer_tag = session_get_next_ttt(conn->sess); iscsit_build_text_rsp()
3567 hdr->itt = cmd->init_task_tag; iscsit_build_text_rsp()
3568 hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag); iscsit_build_text_rsp()
3569 cmd->stat_sn = conn->stat_sn++; iscsit_build_text_rsp()
3570 hdr->statsn = cpu_to_be32(cmd->stat_sn); iscsit_build_text_rsp()
3572 iscsit_increment_maxcmdsn(cmd, conn->sess); iscsit_build_text_rsp()
3578 cmd->maxcmdsn_inc = 0; iscsit_build_text_rsp()
3583 " Length: %u, CID: %hu F: %d C: %d\n", cmd->init_task_tag, iscsit_build_text_rsp()
3584 cmd->targ_xfer_tag, cmd->stat_sn, text_length, conn->cid, iscsit_build_text_rsp()
3593 struct iscsi_cmd *cmd, iscsit_send_text_rsp()
3596 struct iscsi_text_rsp *hdr = (struct iscsi_text_rsp *)cmd->pdu; iscsit_send_text_rsp()
3601 rc = iscsit_build_text_rsp(cmd, conn, hdr, ISCSI_TCP); iscsit_send_text_rsp()
3606 iov = &cmd->iov_misc[0]; iscsit_send_text_rsp()
3607 iov[iov_count].iov_base = cmd->pdu; iscsit_send_text_rsp()
3609 iov[iov_count].iov_base = cmd->buf_ptr; iscsit_send_text_rsp()
3615 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; iscsit_send_text_rsp()
3628 cmd->buf_ptr, text_length, iscsit_send_text_rsp()
3629 0, NULL, (u8 *)&cmd->data_crc); iscsit_send_text_rsp()
3631 iov[iov_count].iov_base = &cmd->data_crc; iscsit_send_text_rsp()
3637 cmd->data_crc); iscsit_send_text_rsp()
3640 cmd->iov_misc_count = iov_count; iscsit_send_text_rsp()
3641 cmd->tx_size = tx_size; iscsit_send_text_rsp()
3647 iscsit_build_reject(struct iscsi_cmd *cmd, struct iscsi_conn *conn, iscsit_build_reject() argument
3651 hdr->reason = cmd->reject_reason; iscsit_build_reject()
3655 cmd->stat_sn = conn->stat_sn++; iscsit_build_reject()
3656 hdr->statsn = cpu_to_be32(cmd->stat_sn); iscsit_build_reject()
3664 struct iscsi_cmd *cmd, iscsit_send_reject()
3667 struct iscsi_reject *hdr = (struct iscsi_reject *)&cmd->pdu[0]; iscsit_send_reject()
3671 iscsit_build_reject(cmd, conn, hdr); iscsit_send_reject()
3673 iov = &cmd->iov_misc[0]; iscsit_send_reject()
3674 iov[iov_count].iov_base = cmd->pdu; iscsit_send_reject()
3676 iov[iov_count].iov_base = cmd->buf_ptr; iscsit_send_reject()
3682 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; iscsit_send_reject()
3694 iscsit_do_crypto_hash_buf(&conn->conn_tx_hash, cmd->buf_ptr, iscsit_send_reject()
3695 ISCSI_HDR_LEN, 0, NULL, (u8 *)&cmd->data_crc); iscsit_send_reject()
3697 iov[iov_count].iov_base = &cmd->data_crc; iscsit_send_reject()
3701 " PDU 0x%08x\n", cmd->data_crc); iscsit_send_reject()
3704 cmd->iov_misc_count = iov_count; iscsit_send_reject()
3705 cmd->tx_size = tx_size; iscsit_send_reject()
3765 iscsit_immediate_queue(struct iscsi_conn *conn, struct iscsi_cmd *cmd, int state) iscsit_immediate_queue() argument
3771 ret = iscsit_send_r2t(cmd, conn); iscsit_immediate_queue()
3777 list_del_init(&cmd->i_conn_node); iscsit_immediate_queue()
3780 iscsit_free_cmd(cmd, false); iscsit_immediate_queue()
3784 ret = iscsit_send_unsolicited_nopin(cmd, conn, 1); iscsit_immediate_queue()
3789 ret = iscsit_send_unsolicited_nopin(cmd, conn, 0); iscsit_immediate_queue()
3796 cmd->iscsi_opcode, cmd->init_task_tag, state, iscsit_immediate_queue()
3812 struct iscsi_cmd *cmd; iscsit_handle_immediate_queue() local
3818 cmd = qr->cmd; iscsit_handle_immediate_queue()
3822 ret = t->iscsit_immediate_queue(conn, cmd, state); iscsit_handle_immediate_queue()
3831 iscsit_response_queue(struct iscsi_conn *conn, struct iscsi_cmd *cmd, int state) iscsit_response_queue() argument
3838 ret = iscsit_send_datain(cmd, conn); iscsit_response_queue()
3846 spin_lock_bh(&cmd->istate_lock); iscsit_response_queue()
3847 cmd->i_state = ISTATE_SENT_STATUS; iscsit_response_queue()
3848 spin_unlock_bh(&cmd->istate_lock); iscsit_response_queue()
3857 spin_lock_bh(&cmd->istate_lock); iscsit_response_queue()
3858 cmd->i_state = ISTATE_SEND_STATUS; iscsit_response_queue()
3859 spin_unlock_bh(&cmd->istate_lock); iscsit_response_queue()
3867 ret = iscsit_send_response(cmd, conn); iscsit_response_queue()
3870 ret = iscsit_send_logout(cmd, conn); iscsit_response_queue()
3874 cmd, conn); iscsit_response_queue()
3877 ret = iscsit_send_nopin(cmd, conn); iscsit_response_queue()
3880 ret = iscsit_send_reject(cmd, conn); iscsit_response_queue()
3883 ret = iscsit_send_task_mgt_rsp(cmd, conn); iscsit_response_queue()
3886 ret = iscsit_tmr_post_handler(cmd, conn); iscsit_response_queue()
3891 ret = iscsit_send_text_rsp(cmd, conn); iscsit_response_queue()
3896 cmd->iscsi_opcode, cmd->init_task_tag, iscsit_response_queue()
3903 if (iscsit_send_tx_data(cmd, conn, 1) < 0) { iscsit_response_queue()
3905 iscsit_unmap_iovec(cmd); iscsit_response_queue()
3908 iscsit_unmap_iovec(cmd); iscsit_response_queue()
3912 if (!iscsit_logout_post_handler(cmd, conn)) iscsit_response_queue()
3922 spin_lock_bh(&cmd->istate_lock); iscsit_response_queue()
3923 cmd->i_state = ISTATE_SENT_STATUS; iscsit_response_queue()
3924 spin_unlock_bh(&cmd->istate_lock); iscsit_response_queue()
3929 cmd->iscsi_opcode, cmd->init_task_tag, iscsit_response_queue()
3930 cmd->i_state, conn->cid); iscsit_response_queue()
3947 struct iscsi_cmd *cmd; iscsit_handle_response_queue() local
3952 cmd = qr->cmd; iscsit_handle_response_queue()
3956 ret = t->iscsit_response_queue(conn, cmd, state); iscsit_handle_response_queue()
4016 struct iscsi_cmd *cmd; iscsi_target_rx_opcode() local
4021 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); iscsi_target_rx_opcode()
4022 if (!cmd) iscsi_target_rx_opcode()
4025 ret = iscsit_handle_scsi_cmd(conn, cmd, buf); iscsi_target_rx_opcode()
4031 cmd = NULL; iscsi_target_rx_opcode()
4033 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); iscsi_target_rx_opcode()
4034 if (!cmd) iscsi_target_rx_opcode()
4037 ret = iscsit_handle_nop_out(conn, cmd, buf); iscsi_target_rx_opcode()
4040 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); iscsi_target_rx_opcode()
4041 if (!cmd) iscsi_target_rx_opcode()
4044 ret = iscsit_handle_task_mgt_cmd(conn, cmd, buf); iscsi_target_rx_opcode()
4048 cmd = iscsit_find_cmd_from_itt(conn, hdr->itt); iscsi_target_rx_opcode()
4049 if (!cmd) iscsi_target_rx_opcode()
4052 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); iscsi_target_rx_opcode()
4053 if (!cmd) iscsi_target_rx_opcode()
4057 ret = iscsit_handle_text_cmd(conn, cmd, buf); iscsi_target_rx_opcode()
4060 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); iscsi_target_rx_opcode()
4061 if (!cmd) iscsi_target_rx_opcode()
4064 ret = iscsit_handle_logout_cmd(conn, cmd, buf); iscsi_target_rx_opcode()
4218 struct iscsi_cmd *cmd = NULL, *cmd_tmp = NULL; iscsit_release_commands_from_conn() local
4226 list_for_each_entry_safe(cmd, cmd_tmp, &conn->conn_cmd_list, i_conn_node) { iscsit_release_commands_from_conn()
4228 list_del_init(&cmd->i_conn_node); iscsit_release_commands_from_conn()
4231 iscsit_increment_maxcmdsn(cmd, sess); iscsit_release_commands_from_conn()
4233 iscsit_free_cmd(cmd, true); iscsit_release_commands_from_conn()
4243 struct iscsi_cmd *cmd; iscsit_stop_timers_for_cmds() local
4246 list_for_each_entry(cmd, &conn->conn_cmd_list, i_conn_node) { iscsit_stop_timers_for_cmds()
4247 if (cmd->data_direction == DMA_TO_DEVICE) iscsit_stop_timers_for_cmds()
4248 iscsit_stop_dataout_timer(cmd); iscsit_stop_timers_for_cmds()
4644 struct iscsi_cmd *cmd, iscsit_logout_post_handler()
4649 switch (cmd->logout_reason) { iscsit_logout_post_handler()
4651 switch (cmd->logout_response) { iscsit_logout_post_handler()
4661 if (conn->cid == cmd->logout_cid) { iscsit_logout_post_handler()
4662 switch (cmd->logout_response) { iscsit_logout_post_handler()
4671 switch (cmd->logout_response) { iscsit_logout_post_handler()
4674 cmd->logout_cid); iscsit_logout_post_handler()
4685 switch (cmd->logout_response) { iscsit_logout_post_handler()
676 iscsit_add_reject_from_cmd( struct iscsi_cmd *cmd, u8 reason, bool add_to_conn, unsigned char *buf) iscsit_add_reject_from_cmd() argument
735 iscsit_map_iovec( struct iscsi_cmd *cmd, struct kvec *iov, u32 data_offset, u32 data_length) iscsit_map_iovec() argument
1198 iscsit_do_crypto_hash_sg( struct hash_desc *hash, struct iscsi_cmd *cmd, u32 data_offset, u32 data_length, u32 padding, u8 *pad_bytes) iscsit_do_crypto_hash_sg() argument
2407 iscsit_handle_immediate_data( struct iscsi_cmd *cmd, struct iscsi_scsi_req *hdr, u32 length) iscsit_handle_immediate_data() argument
2536 iscsit_send_conn_drop_async_message( struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_send_conn_drop_async_message() argument
2916 iscsit_send_unsolicited_nopin( struct iscsi_cmd *cmd, struct iscsi_conn *conn, int want_response) iscsit_send_unsolicited_nopin() argument
3027 iscsit_send_r2t( struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_send_r2t() argument
3102 iscsit_build_r2ts_for_cmd( struct iscsi_conn *conn, struct iscsi_cmd *cmd, bool recovery) iscsit_build_r2ts_for_cmd() argument
3592 iscsit_send_text_rsp( struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_send_text_rsp() argument
3663 iscsit_send_reject( struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_send_reject() argument
4643 iscsit_logout_post_handler( struct iscsi_cmd *cmd, struct iscsi_conn *conn) iscsit_logout_post_handler() argument
H A Discsi_target_erl0.c38 struct iscsi_cmd *cmd) iscsit_set_dataout_sequence_values()
40 struct iscsi_conn *conn = cmd->conn; iscsit_set_dataout_sequence_values()
45 if (cmd->unsolicited_data) { iscsit_set_dataout_sequence_values()
46 cmd->seq_start_offset = cmd->write_data_done; iscsit_set_dataout_sequence_values()
47 cmd->seq_end_offset = (cmd->write_data_done + iscsit_set_dataout_sequence_values()
48 ((cmd->se_cmd.data_length > iscsit_set_dataout_sequence_values()
50 conn->sess->sess_ops->FirstBurstLength : cmd->se_cmd.data_length)); iscsit_set_dataout_sequence_values()
57 if (!cmd->seq_start_offset && !cmd->seq_end_offset) { iscsit_set_dataout_sequence_values()
58 cmd->seq_start_offset = cmd->write_data_done; iscsit_set_dataout_sequence_values()
59 cmd->seq_end_offset = (cmd->se_cmd.data_length > iscsit_set_dataout_sequence_values()
61 (cmd->write_data_done + iscsit_set_dataout_sequence_values()
62 conn->sess->sess_ops->MaxBurstLength) : cmd->se_cmd.data_length; iscsit_set_dataout_sequence_values()
64 cmd->seq_start_offset = cmd->seq_end_offset; iscsit_set_dataout_sequence_values()
65 cmd->seq_end_offset = ((cmd->seq_end_offset + iscsit_set_dataout_sequence_values()
67 cmd->se_cmd.data_length) ? cmd->se_cmd.data_length : iscsit_set_dataout_sequence_values()
68 (cmd->seq_end_offset + iscsit_set_dataout_sequence_values()
74 struct iscsi_cmd *cmd, iscsit_dataout_within_command_recovery_check()
77 struct iscsi_conn *conn = cmd->conn; iscsit_dataout_within_command_recovery_check()
94 if ((cmd->cmd_flags & ICF_WITHIN_COMMAND_RECOVERY) && iscsit_dataout_within_command_recovery_check()
95 cmd->write_data_done != be32_to_cpu(hdr->offset)) iscsit_dataout_within_command_recovery_check()
98 cmd->cmd_flags &= ~ICF_WITHIN_COMMAND_RECOVERY; iscsit_dataout_within_command_recovery_check()
102 seq = iscsit_get_seq_holder(cmd, be32_to_cpu(hdr->offset), iscsit_dataout_within_command_recovery_check()
109 cmd->seq_ptr = seq; iscsit_dataout_within_command_recovery_check()
140 struct iscsi_cmd *cmd, iscsit_dataout_check_unsolicited_sequence()
144 struct iscsi_conn *conn = cmd->conn; iscsit_dataout_check_unsolicited_sequence()
149 if ((be32_to_cpu(hdr->offset) < cmd->seq_start_offset) || iscsit_dataout_check_unsolicited_sequence()
150 ((be32_to_cpu(hdr->offset) + payload_length) > cmd->seq_end_offset)) { iscsit_dataout_check_unsolicited_sequence()
153 " DataSequenceInOrder=Yes.\n", cmd->init_task_tag, iscsit_dataout_check_unsolicited_sequence()
154 be32_to_cpu(hdr->offset), payload_length, cmd->seq_start_offset, iscsit_dataout_check_unsolicited_sequence()
155 cmd->seq_end_offset); iscsit_dataout_check_unsolicited_sequence()
159 first_burst_len = (cmd->first_burst_len + payload_length); iscsit_dataout_check_unsolicited_sequence()
165 transport_send_check_condition_and_sense(&cmd->se_cmd, iscsit_dataout_check_unsolicited_sequence()
183 if ((first_burst_len != cmd->se_cmd.data_length) && iscsit_dataout_check_unsolicited_sequence()
189 cmd->se_cmd.data_length); iscsit_dataout_check_unsolicited_sequence()
190 transport_send_check_condition_and_sense(&cmd->se_cmd, iscsit_dataout_check_unsolicited_sequence()
198 " error.\n", cmd->init_task_tag, iscsit_dataout_check_unsolicited_sequence()
202 if (first_burst_len == cmd->se_cmd.data_length) { iscsit_dataout_check_unsolicited_sequence()
205 " error.\n", cmd->init_task_tag, cmd->se_cmd.data_length); iscsit_dataout_check_unsolicited_sequence()
215 struct iscsi_cmd *cmd, iscsit_dataout_check_sequence()
219 struct iscsi_conn *conn = cmd->conn; iscsit_dataout_check_sequence()
237 if ((be32_to_cpu(hdr->offset) < cmd->seq_start_offset) || iscsit_dataout_check_sequence()
238 ((be32_to_cpu(hdr->offset) + payload_length) > cmd->seq_end_offset)) { iscsit_dataout_check_sequence()
241 " DataSequenceInOrder=Yes.\n", cmd->init_task_tag, iscsit_dataout_check_sequence()
242 be32_to_cpu(hdr->offset), payload_length, cmd->seq_start_offset, iscsit_dataout_check_sequence()
243 cmd->seq_end_offset); iscsit_dataout_check_sequence()
250 next_burst_len = (cmd->next_burst_len + payload_length); iscsit_dataout_check_sequence()
252 seq = iscsit_get_seq_holder(cmd, be32_to_cpu(hdr->offset), iscsit_dataout_check_sequence()
259 cmd->seq_ptr = seq; iscsit_dataout_check_sequence()
273 " error.\n", cmd->init_task_tag, iscsit_dataout_check_sequence()
295 ((cmd->write_data_done + payload_length) < iscsit_dataout_check_sequence()
296 cmd->se_cmd.data_length)) { iscsit_dataout_check_sequence()
299 " error.\n", cmd->init_task_tag); iscsit_dataout_check_sequence()
306 " error.\n", cmd->init_task_tag); iscsit_dataout_check_sequence()
316 " not set, protocol error.", cmd->init_task_tag, iscsit_dataout_check_sequence()
320 if ((cmd->write_data_done + payload_length) == iscsit_dataout_check_sequence()
321 cmd->se_cmd.data_length) { iscsit_dataout_check_sequence()
325 cmd->init_task_tag); iscsit_dataout_check_sequence()
333 cmd->init_task_tag); iscsit_dataout_check_sequence()
344 struct iscsi_cmd *cmd, iscsit_dataout_check_datasn()
348 struct iscsi_conn *conn = cmd->conn; iscsit_dataout_check_datasn()
361 data_sn = cmd->data_sn; iscsit_dataout_check_datasn()
363 struct iscsi_seq *seq = cmd->seq_ptr; iscsit_dataout_check_datasn()
369 " higher than expected 0x%08x.\n", cmd->init_task_tag, iscsit_dataout_check_datasn()
375 cmd->init_task_tag, be32_to_cpu(hdr->datasn), data_sn); iscsit_dataout_check_datasn()
395 struct iscsi_cmd *cmd, iscsit_dataout_pre_datapduinorder_yes()
399 struct iscsi_conn *conn = cmd->conn; iscsit_dataout_pre_datapduinorder_yes()
413 if (be32_to_cpu(hdr->offset) != cmd->write_data_done) { iscsit_dataout_pre_datapduinorder_yes()
415 " %u different than expected %u.\n", cmd->init_task_tag, iscsit_dataout_pre_datapduinorder_yes()
416 be32_to_cpu(hdr->offset), cmd->write_data_done); iscsit_dataout_pre_datapduinorder_yes()
421 struct iscsi_seq *seq = cmd->seq_ptr; iscsit_dataout_pre_datapduinorder_yes()
425 " %u greater than expected %u.\n", cmd->init_task_tag, iscsit_dataout_pre_datapduinorder_yes()
432 cmd->init_task_tag, be32_to_cpu(hdr->offset), iscsit_dataout_pre_datapduinorder_yes()
451 return (recovery) ? iscsit_recover_dataout_sequence(cmd, iscsit_dataout_pre_datapduinorder_yes()
457 struct iscsi_cmd *cmd, iscsit_dataout_pre_datapduinorder_no()
464 pdu = iscsit_get_pdu_holder(cmd, be32_to_cpu(hdr->offset), iscsit_dataout_pre_datapduinorder_no()
469 cmd->pdu_ptr = pdu; iscsit_dataout_pre_datapduinorder_no()
478 " Offset: %u, Length: %u\n", cmd->init_task_tag, iscsit_dataout_pre_datapduinorder_no()
480 return iscsit_dump_data_payload(cmd->conn, payload_length, 1); iscsit_dataout_pre_datapduinorder_no()
488 static int iscsit_dataout_update_r2t(struct iscsi_cmd *cmd, u32 offset, u32 length) iscsit_dataout_update_r2t() argument
492 if (cmd->unsolicited_data) iscsit_dataout_update_r2t()
495 r2t = iscsit_get_r2t_for_eos(cmd, offset, length); iscsit_dataout_update_r2t()
499 spin_lock_bh(&cmd->r2t_lock); iscsit_dataout_update_r2t()
501 cmd->outstanding_r2ts--; iscsit_dataout_update_r2t()
502 spin_unlock_bh(&cmd->r2t_lock); iscsit_dataout_update_r2t()
508 struct iscsi_cmd *cmd, iscsit_dataout_update_datapduinorder_no()
513 struct iscsi_pdu *pdu = cmd->pdu_ptr; iscsit_dataout_update_datapduinorder_no()
532 ret = iscsit_dataout_datapduinorder_no_fbit(cmd, pdu); iscsit_dataout_update_datapduinorder_no()
541 struct iscsi_cmd *cmd, iscsit_dataout_post_crc_passed()
545 struct iscsi_conn *conn = cmd->conn; iscsit_dataout_post_crc_passed()
550 if (cmd->unsolicited_data) { iscsit_dataout_post_crc_passed()
551 if ((cmd->first_burst_len + payload_length) == iscsit_dataout_post_crc_passed()
553 if (iscsit_dataout_update_r2t(cmd, be32_to_cpu(hdr->offset), iscsit_dataout_post_crc_passed()
560 ret = iscsit_dataout_update_datapduinorder_no(cmd, iscsit_dataout_post_crc_passed()
567 cmd->first_burst_len += payload_length; iscsit_dataout_post_crc_passed()
570 cmd->data_sn++; iscsit_dataout_post_crc_passed()
572 seq = cmd->seq_ptr; iscsit_dataout_post_crc_passed()
580 cmd->first_burst_len = 0; iscsit_dataout_post_crc_passed()
581 cmd->unsolicited_data = 0; iscsit_dataout_post_crc_passed()
585 if ((cmd->next_burst_len + payload_length) == iscsit_dataout_post_crc_passed()
587 if (iscsit_dataout_update_r2t(cmd, iscsit_dataout_post_crc_passed()
596 cmd, be32_to_cpu(hdr->datasn), iscsit_dataout_post_crc_passed()
602 cmd->next_burst_len += payload_length; iscsit_dataout_post_crc_passed()
603 cmd->data_sn++; iscsit_dataout_post_crc_passed()
606 cmd->next_burst_len = 0; iscsit_dataout_post_crc_passed()
608 seq = cmd->seq_ptr; iscsit_dataout_post_crc_passed()
612 if (iscsit_dataout_update_r2t(cmd, iscsit_dataout_post_crc_passed()
621 cmd, be32_to_cpu(hdr->datasn), iscsit_dataout_post_crc_passed()
639 cmd->data_sn = 0; iscsit_dataout_post_crc_passed()
641 cmd->write_data_done += payload_length; iscsit_dataout_post_crc_passed()
643 if (cmd->write_data_done == cmd->se_cmd.data_length) iscsit_dataout_post_crc_passed()
652 struct iscsi_cmd *cmd, iscsit_dataout_post_crc_failed()
655 struct iscsi_conn *conn = cmd->conn; iscsit_dataout_post_crc_failed()
665 pdu = cmd->pdu_ptr; iscsit_dataout_post_crc_failed()
681 return iscsit_recover_dataout_sequence(cmd, be32_to_cpu(hdr->offset), iscsit_dataout_post_crc_failed()
690 struct iscsi_cmd *cmd, iscsit_check_pre_dataout()
694 struct iscsi_conn *conn = cmd->conn; iscsit_check_pre_dataout()
696 ret = iscsit_dataout_within_command_recovery_check(cmd, buf); iscsit_check_pre_dataout()
701 ret = iscsit_dataout_check_datasn(cmd, buf); iscsit_check_pre_dataout()
706 if (cmd->unsolicited_data) { iscsit_check_pre_dataout()
707 ret = iscsit_dataout_check_unsolicited_sequence(cmd, buf); iscsit_check_pre_dataout()
712 ret = iscsit_dataout_check_sequence(cmd, buf); iscsit_check_pre_dataout()
719 iscsit_dataout_pre_datapduinorder_yes(cmd, buf) : iscsit_check_pre_dataout()
720 iscsit_dataout_pre_datapduinorder_no(cmd, buf); iscsit_check_pre_dataout()
728 struct iscsi_cmd *cmd, iscsit_check_post_dataout()
732 struct iscsi_conn *conn = cmd->conn; iscsit_check_post_dataout()
734 cmd->dataout_timeout_retries = 0; iscsit_check_post_dataout()
737 return iscsit_dataout_post_crc_passed(cmd, buf); iscsit_check_post_dataout()
742 iscsit_reject_cmd(cmd, ISCSI_REASON_DATA_DIGEST_ERROR, iscsit_check_post_dataout()
747 iscsit_reject_cmd(cmd, ISCSI_REASON_DATA_DIGEST_ERROR, buf); iscsit_check_post_dataout()
748 return iscsit_dataout_post_crc_failed(cmd, buf); iscsit_check_post_dataout()
37 iscsit_set_dataout_sequence_values( struct iscsi_cmd *cmd) iscsit_set_dataout_sequence_values() argument
73 iscsit_dataout_within_command_recovery_check( struct iscsi_cmd *cmd, unsigned char *buf) iscsit_dataout_within_command_recovery_check() argument
139 iscsit_dataout_check_unsolicited_sequence( struct iscsi_cmd *cmd, unsigned char *buf) iscsit_dataout_check_unsolicited_sequence() argument
214 iscsit_dataout_check_sequence( struct iscsi_cmd *cmd, unsigned char *buf) iscsit_dataout_check_sequence() argument
343 iscsit_dataout_check_datasn( struct iscsi_cmd *cmd, unsigned char *buf) iscsit_dataout_check_datasn() argument
394 iscsit_dataout_pre_datapduinorder_yes( struct iscsi_cmd *cmd, unsigned char *buf) iscsit_dataout_pre_datapduinorder_yes() argument
456 iscsit_dataout_pre_datapduinorder_no( struct iscsi_cmd *cmd, unsigned char *buf) iscsit_dataout_pre_datapduinorder_no() argument
507 iscsit_dataout_update_datapduinorder_no( struct iscsi_cmd *cmd, u32 data_sn, int f_bit) iscsit_dataout_update_datapduinorder_no() argument
540 iscsit_dataout_post_crc_passed( struct iscsi_cmd *cmd, unsigned char *buf) iscsit_dataout_post_crc_passed() argument
651 iscsit_dataout_post_crc_failed( struct iscsi_cmd *cmd, unsigned char *buf) iscsit_dataout_post_crc_failed() argument
689 iscsit_check_pre_dataout( struct iscsi_cmd *cmd, unsigned char *buf) iscsit_check_pre_dataout() argument
727 iscsit_check_post_dataout( struct iscsi_cmd *cmd, unsigned char *buf, u8 data_crc_failed) iscsit_check_post_dataout() argument
/linux-4.1.27/drivers/media/tuners/
H A Dsi2157.c22 static int si2157_cmd_execute(struct i2c_client *client, struct si2157_cmd *cmd) si2157_cmd_execute() argument
30 if (cmd->wlen) { si2157_cmd_execute()
31 /* write cmd and args for firmware */ si2157_cmd_execute()
32 ret = i2c_master_send(client, cmd->args, cmd->wlen); si2157_cmd_execute()
35 } else if (ret != cmd->wlen) { si2157_cmd_execute()
41 if (cmd->rlen) { si2157_cmd_execute()
42 /* wait cmd execution terminate */ si2157_cmd_execute()
46 ret = i2c_master_recv(client, cmd->args, cmd->rlen); si2157_cmd_execute()
49 } else if (ret != cmd->rlen) { si2157_cmd_execute()
55 if ((cmd->args[0] >> 7) & 0x01) si2157_cmd_execute()
59 dev_dbg(&client->dev, "cmd execution took %d ms\n", si2157_cmd_execute()
63 if (!((cmd->args[0] >> 7) & 0x01)) { si2157_cmd_execute()
83 struct si2157_cmd cmd; si2157_init() local
95 memcpy(cmd.args, "\xc0\x05\x01\x00\x00\x0b\x00\x00\x01", 9); si2157_init()
96 cmd.wlen = 9; si2157_init()
98 memcpy(cmd.args, "\xc0\x00\x0c\x00\x00\x01\x01\x01\x01\x01\x01\x02\x00\x00\x01", 15); si2157_init()
99 cmd.wlen = 15; si2157_init()
101 cmd.rlen = 1; si2157_init()
102 ret = si2157_cmd_execute(client, &cmd); si2157_init()
107 memcpy(cmd.args, "\x02", 1); si2157_init()
108 cmd.wlen = 1; si2157_init()
109 cmd.rlen = 13; si2157_init()
110 ret = si2157_cmd_execute(client, &cmd); si2157_init()
114 chip_id = cmd.args[1] << 24 | cmd.args[2] << 16 | cmd.args[3] << 8 | si2157_init()
115 cmd.args[4] << 0; si2157_init()
135 cmd.args[2], cmd.args[1], si2157_init()
136 cmd.args[3], cmd.args[4]); si2157_init()
142 cmd.args[2], cmd.args[1], cmd.args[3], cmd.args[4]); si2157_init()
173 memcpy(cmd.args, &fw->data[(fw->size - remaining) + 1], len); si2157_init()
174 cmd.wlen = len; si2157_init()
175 cmd.rlen = 1; si2157_init()
176 ret = si2157_cmd_execute(client, &cmd); si2157_init()
188 memcpy(cmd.args, "\x01\x01", 2); si2157_init()
189 cmd.wlen = 2; si2157_init()
190 cmd.rlen = 1; si2157_init()
191 ret = si2157_cmd_execute(client, &cmd); si2157_init()
196 memcpy(cmd.args, "\x11", 1); si2157_init()
197 cmd.wlen = 1; si2157_init()
198 cmd.rlen = 10; si2157_init()
199 ret = si2157_cmd_execute(client, &cmd); si2157_init()
204 cmd.args[6], cmd.args[7], cmd.args[8]); si2157_init()
224 struct si2157_cmd cmd; si2157_sleep() local
231 memcpy(cmd.args, "\x16\x00", 2); si2157_sleep()
232 cmd.wlen = 2; si2157_sleep()
233 cmd.rlen = 1; si2157_sleep()
234 ret = si2157_cmd_execute(client, &cmd); si2157_sleep()
250 struct si2157_cmd cmd; si2157_set_params() local
293 memcpy(cmd.args, "\x14\x00\x03\x07\x00\x00", 6); si2157_set_params()
294 cmd.args[4] = delivery_system | bandwidth; si2157_set_params()
296 cmd.args[5] = 0x01; si2157_set_params()
297 cmd.wlen = 6; si2157_set_params()
298 cmd.rlen = 4; si2157_set_params()
299 ret = si2157_cmd_execute(client, &cmd); si2157_set_params()
304 memcpy(cmd.args, "\x14\x00\x02\x07\x00\x01", 6); si2157_set_params()
306 memcpy(cmd.args, "\x14\x00\x02\x07\x01\x00", 6); si2157_set_params()
307 cmd.wlen = 6; si2157_set_params()
308 cmd.rlen = 4; si2157_set_params()
309 ret = si2157_cmd_execute(client, &cmd); si2157_set_params()
315 memcpy(cmd.args, "\x14\x00\x06\x07", 4); si2157_set_params()
316 cmd.args[4] = (if_frequency / 1000) & 0xff; si2157_set_params()
317 cmd.args[5] = ((if_frequency / 1000) >> 8) & 0xff; si2157_set_params()
318 cmd.wlen = 6; si2157_set_params()
319 cmd.rlen = 4; si2157_set_params()
320 ret = si2157_cmd_execute(client, &cmd); si2157_set_params()
328 memcpy(cmd.args, "\x41\x00\x00\x00\x00\x00\x00\x00", 8); si2157_set_params()
329 cmd.args[4] = (c->frequency >> 0) & 0xff; si2157_set_params()
330 cmd.args[5] = (c->frequency >> 8) & 0xff; si2157_set_params()
331 cmd.args[6] = (c->frequency >> 16) & 0xff; si2157_set_params()
332 cmd.args[7] = (c->frequency >> 24) & 0xff; si2157_set_params()
333 cmd.wlen = 8; si2157_set_params()
334 cmd.rlen = 1; si2157_set_params()
335 ret = si2157_cmd_execute(client, &cmd); si2157_set_params()
373 struct si2157_cmd cmd; si2157_probe() local
392 cmd.wlen = 0; si2157_probe()
393 cmd.rlen = 1; si2157_probe()
394 ret = si2157_cmd_execute(client, &cmd); si2157_probe()
/linux-4.1.27/drivers/media/dvb-frontends/
H A Dsi2168.c22 static int si2168_cmd_execute(struct i2c_client *client, struct si2168_cmd *cmd) si2168_cmd_execute() argument
30 if (cmd->wlen) { si2168_cmd_execute()
31 /* write cmd and args for firmware */ si2168_cmd_execute()
32 ret = i2c_master_send(client, cmd->args, cmd->wlen); si2168_cmd_execute()
35 } else if (ret != cmd->wlen) { si2168_cmd_execute()
41 if (cmd->rlen) { si2168_cmd_execute()
42 /* wait cmd execution terminate */ si2168_cmd_execute()
46 ret = i2c_master_recv(client, cmd->args, cmd->rlen); si2168_cmd_execute()
49 } else if (ret != cmd->rlen) { si2168_cmd_execute()
55 if ((cmd->args[0] >> 7) & 0x01) si2168_cmd_execute()
59 dev_dbg(&client->dev, "cmd execution took %d ms\n", si2168_cmd_execute()
63 if (!((cmd->args[0] >> 7) & 0x01)) { si2168_cmd_execute()
84 struct si2168_cmd cmd; si2168_read_status() local
95 memcpy(cmd.args, "\xa0\x01", 2); si2168_read_status()
96 cmd.wlen = 2; si2168_read_status()
97 cmd.rlen = 13; si2168_read_status()
100 memcpy(cmd.args, "\x90\x01", 2); si2168_read_status()
101 cmd.wlen = 2; si2168_read_status()
102 cmd.rlen = 9; si2168_read_status()
105 memcpy(cmd.args, "\x50\x01", 2); si2168_read_status()
106 cmd.wlen = 2; si2168_read_status()
107 cmd.rlen = 14; si2168_read_status()
114 ret = si2168_cmd_execute(client, &cmd); si2168_read_status()
118 switch ((cmd.args[2] >> 1) & 0x03) { si2168_read_status()
133 c->cnr.stat[0].svalue = cmd.args[3] * 1000 / 4; si2168_read_status()
140 *status, cmd.rlen, cmd.args); si2168_read_status()
154 struct si2168_cmd cmd; si2168_set_frontend() local
210 memcpy(cmd.args, "\x88\x02\x02\x02\x02", 5); si2168_set_frontend()
211 cmd.wlen = 5; si2168_set_frontend()
212 cmd.rlen = 5; si2168_set_frontend()
213 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
219 memcpy(cmd.args, "\x89\x21\x06\x11\xff\x98", 6); si2168_set_frontend()
221 memcpy(cmd.args, "\x89\x21\x06\x11\x89\xf0", 6); si2168_set_frontend()
223 memcpy(cmd.args, "\x89\x21\x06\x11\x89\x20", 6); si2168_set_frontend()
224 cmd.wlen = 6; si2168_set_frontend()
225 cmd.rlen = 3; si2168_set_frontend()
226 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
232 cmd.args[0] = 0x52; si2168_set_frontend()
233 cmd.args[1] = c->stream_id & 0xff; si2168_set_frontend()
234 cmd.args[2] = c->stream_id == NO_STREAM_ID_FILTER ? 0 : 1; si2168_set_frontend()
235 cmd.wlen = 3; si2168_set_frontend()
236 cmd.rlen = 1; si2168_set_frontend()
237 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
242 memcpy(cmd.args, "\x51\x03", 2); si2168_set_frontend()
243 cmd.wlen = 2; si2168_set_frontend()
244 cmd.rlen = 12; si2168_set_frontend()
245 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
249 memcpy(cmd.args, "\x12\x08\x04", 3); si2168_set_frontend()
250 cmd.wlen = 3; si2168_set_frontend()
251 cmd.rlen = 3; si2168_set_frontend()
252 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
256 memcpy(cmd.args, "\x14\x00\x0c\x10\x12\x00", 6); si2168_set_frontend()
257 cmd.wlen = 6; si2168_set_frontend()
258 cmd.rlen = 4; si2168_set_frontend()
259 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
263 memcpy(cmd.args, "\x14\x00\x06\x10\x24\x00", 6); si2168_set_frontend()
264 cmd.wlen = 6; si2168_set_frontend()
265 cmd.rlen = 4; si2168_set_frontend()
266 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
270 memcpy(cmd.args, "\x14\x00\x07\x10\x00\x24", 6); si2168_set_frontend()
271 cmd.wlen = 6; si2168_set_frontend()
272 cmd.rlen = 4; si2168_set_frontend()
273 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
277 memcpy(cmd.args, "\x14\x00\x0a\x10\x00\x00", 6); si2168_set_frontend()
278 cmd.args[4] = delivery_system | bandwidth; si2168_set_frontend()
279 cmd.wlen = 6; si2168_set_frontend()
280 cmd.rlen = 4; si2168_set_frontend()
281 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
287 memcpy(cmd.args, "\x14\x00\x02\x11", 4); si2168_set_frontend()
288 cmd.args[4] = ((c->symbol_rate / 1000) >> 0) & 0xff; si2168_set_frontend()
289 cmd.args[5] = ((c->symbol_rate / 1000) >> 8) & 0xff; si2168_set_frontend()
290 cmd.wlen = 6; si2168_set_frontend()
291 cmd.rlen = 4; si2168_set_frontend()
292 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
297 memcpy(cmd.args, "\x14\x00\x0f\x10\x10\x00", 6); si2168_set_frontend()
298 cmd.wlen = 6; si2168_set_frontend()
299 cmd.rlen = 4; si2168_set_frontend()
300 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
304 memcpy(cmd.args, "\x14\x00\x09\x10\xe3\x08", 6); si2168_set_frontend()
305 cmd.args[5] |= dev->ts_clock_inv ? 0x00 : 0x10; si2168_set_frontend()
306 cmd.wlen = 6; si2168_set_frontend()
307 cmd.rlen = 4; si2168_set_frontend()
308 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
312 memcpy(cmd.args, "\x14\x00\x08\x10\xd7\x05", 6); si2168_set_frontend()
313 cmd.args[5] |= dev->ts_clock_inv ? 0x00 : 0x10; si2168_set_frontend()
314 cmd.wlen = 6; si2168_set_frontend()
315 cmd.rlen = 4; si2168_set_frontend()
316 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
320 memcpy(cmd.args, "\x14\x00\x01\x12\x00\x00", 6); si2168_set_frontend()
321 cmd.wlen = 6; si2168_set_frontend()
322 cmd.rlen = 4; si2168_set_frontend()
323 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
327 memcpy(cmd.args, "\x14\x00\x01\x03\x0c\x00", 6); si2168_set_frontend()
328 cmd.wlen = 6; si2168_set_frontend()
329 cmd.rlen = 4; si2168_set_frontend()
330 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
334 memcpy(cmd.args, "\x85", 1); si2168_set_frontend()
335 cmd.wlen = 1; si2168_set_frontend()
336 cmd.rlen = 1; si2168_set_frontend()
337 ret = si2168_cmd_execute(client, &cmd); si2168_set_frontend()
356 struct si2168_cmd cmd; si2168_init() local
362 memcpy(cmd.args, "\xc0\x12\x00\x0c\x00\x0d\x16\x00\x00\x00\x00\x00\x00", 13); si2168_init()
363 cmd.wlen = 13; si2168_init()
364 cmd.rlen = 0; si2168_init()
365 ret = si2168_cmd_execute(client, &cmd); si2168_init()
371 memcpy(cmd.args, "\xc0\x06\x08\x0f\x00\x20\x21\x01", 8); si2168_init()
372 cmd.wlen = 8; si2168_init()
373 cmd.rlen = 1; si2168_init()
374 ret = si2168_cmd_execute(client, &cmd); si2168_init()
378 memcpy(cmd.args, "\x85", 1); si2168_init()
379 cmd.wlen = 1; si2168_init()
380 cmd.rlen = 1; si2168_init()
381 ret = si2168_cmd_execute(client, &cmd); si2168_init()
389 memcpy(cmd.args, "\xc0\x06\x01\x0f\x00\x20\x20\x01", 8); si2168_init()
390 cmd.wlen = 8; si2168_init()
391 cmd.rlen = 1; si2168_init()
392 ret = si2168_cmd_execute(client, &cmd); si2168_init()
397 memcpy(cmd.args, "\x02", 1); si2168_init()
398 cmd.wlen = 1; si2168_init()
399 cmd.rlen = 13; si2168_init()
400 ret = si2168_cmd_execute(client, &cmd); si2168_init()
404 chip_id = cmd.args[1] << 24 | cmd.args[2] << 16 | cmd.args[3] << 8 | si2168_init()
405 cmd.args[4] << 0; si2168_init()
423 cmd.args[2], cmd.args[1], si2168_init()
424 cmd.args[3], cmd.args[4]); si2168_init()
430 cmd.args[2], cmd.args[1], cmd.args[3], cmd.args[4]); si2168_init()
464 memcpy(cmd.args, &fw->data[(fw->size - remaining) + 1], len); si2168_init()
465 cmd.wlen = len; si2168_init()
466 cmd.rlen = 1; si2168_init()
467 ret = si2168_cmd_execute(client, &cmd); si2168_init()
475 memcpy(cmd.args, &fw->data[fw->size - remaining], len); si2168_init()
476 cmd.wlen = len; si2168_init()
477 cmd.rlen = 1; si2168_init()
478 ret = si2168_cmd_execute(client, &cmd); si2168_init()
494 memcpy(cmd.args, "\x01\x01", 2); si2168_init()
495 cmd.wlen = 2; si2168_init()
496 cmd.rlen = 1; si2168_init()
497 ret = si2168_cmd_execute(client, &cmd); si2168_init()
502 memcpy(cmd.args, "\x11", 1); si2168_init()
503 cmd.wlen = 1; si2168_init()
504 cmd.rlen = 10; si2168_init()
505 ret = si2168_cmd_execute(client, &cmd); si2168_init()
510 cmd.args[6], cmd.args[7], cmd.args[8]); si2168_init()
513 memcpy(cmd.args, "\x14\x00\x01\x10\x10\x00", 6); si2168_init()
514 cmd.args[4] |= dev->ts_mode; si2168_init()
515 cmd.wlen = 6; si2168_init()
516 cmd.rlen = 4; si2168_init()
517 ret = si2168_cmd_execute(client, &cmd); si2168_init()
539 struct si2168_cmd cmd; si2168_sleep() local
545 memcpy(cmd.args, "\x13", 1); si2168_sleep()
546 cmd.wlen = 1; si2168_sleep()
547 cmd.rlen = 0; si2168_sleep()
548 ret = si2168_cmd_execute(client, &cmd); si2168_sleep()
H A Dtda10071.c163 struct tda10071_cmd *cmd) tda10071_cmd_execute()
173 /* write cmd and args for firmware */ tda10071_cmd_execute()
174 ret = tda10071_wr_regs(priv, 0x00, cmd->args, cmd->len); tda10071_cmd_execute()
178 /* start cmd execution */ tda10071_cmd_execute()
183 /* wait cmd execution terminate */ tda10071_cmd_execute()
209 struct tda10071_cmd cmd; tda10071_set_tone() local
235 cmd.args[0] = CMD_LNB_PCB_CONFIG; tda10071_set_tone()
236 cmd.args[1] = 0; tda10071_set_tone()
237 cmd.args[2] = 0x00; tda10071_set_tone()
238 cmd.args[3] = 0x00; tda10071_set_tone()
239 cmd.args[4] = tone; tda10071_set_tone()
240 cmd.len = 5; tda10071_set_tone()
241 ret = tda10071_cmd_execute(priv, &cmd); tda10071_set_tone()
255 struct tda10071_cmd cmd; tda10071_set_voltage() local
283 cmd.args[0] = CMD_LNB_SET_DC_LEVEL; tda10071_set_voltage()
284 cmd.args[1] = 0; tda10071_set_voltage()
285 cmd.args[2] = voltage; tda10071_set_voltage()
286 cmd.len = 3; tda10071_set_voltage()
287 ret = tda10071_cmd_execute(priv, &cmd); tda10071_set_voltage()
301 struct tda10071_cmd cmd; tda10071_diseqc_send_master_cmd() local
338 cmd.args[0] = CMD_LNB_SEND_DISEQC; tda10071_diseqc_send_master_cmd()
339 cmd.args[1] = 0; tda10071_diseqc_send_master_cmd()
340 cmd.args[2] = 0; tda10071_diseqc_send_master_cmd()
341 cmd.args[3] = 0; tda10071_diseqc_send_master_cmd()
342 cmd.args[4] = 2; tda10071_diseqc_send_master_cmd()
343 cmd.args[5] = 0; tda10071_diseqc_send_master_cmd()
344 cmd.args[6] = diseqc_cmd->msg_len; tda10071_diseqc_send_master_cmd()
345 memcpy(&cmd.args[7], diseqc_cmd->msg, diseqc_cmd->msg_len); tda10071_diseqc_send_master_cmd()
346 cmd.len = 7 + diseqc_cmd->msg_len; tda10071_diseqc_send_master_cmd()
347 ret = tda10071_cmd_execute(priv, &cmd); tda10071_diseqc_send_master_cmd()
361 struct tda10071_cmd cmd; tda10071_diseqc_recv_slave_reply() local
398 cmd.args[0] = CMD_LNB_UPDATE_REPLY; tda10071_diseqc_recv_slave_reply()
399 cmd.args[1] = 0; tda10071_diseqc_recv_slave_reply()
400 cmd.len = 2; tda10071_diseqc_recv_slave_reply()
401 ret = tda10071_cmd_execute(priv, &cmd); tda10071_diseqc_recv_slave_reply()
405 ret = tda10071_rd_regs(priv, cmd.len, reply->msg, reply->msg_len); tda10071_diseqc_recv_slave_reply()
419 struct tda10071_cmd cmd; tda10071_diseqc_send_burst() local
465 cmd.args[0] = CMD_LNB_SEND_TONEBURST; tda10071_diseqc_send_burst()
466 cmd.args[1] = 0; tda10071_diseqc_send_burst()
467 cmd.args[2] = burst; tda10071_diseqc_send_burst()
468 cmd.len = 3; tda10071_diseqc_send_burst()
469 ret = tda10071_cmd_execute(priv, &cmd); tda10071_diseqc_send_burst()
540 struct tda10071_cmd cmd; tda10071_read_signal_strength() local
550 cmd.args[0] = CMD_GET_AGCACC; tda10071_read_signal_strength()
551 cmd.args[1] = 0; tda10071_read_signal_strength()
552 cmd.len = 2; tda10071_read_signal_strength()
553 ret = tda10071_cmd_execute(priv, &cmd); tda10071_read_signal_strength()
579 struct tda10071_cmd cmd; tda10071_read_ber() local
618 cmd.args[0] = CMD_BER_UPDATE_COUNTERS; tda10071_read_ber()
619 cmd.args[1] = 0; tda10071_read_ber()
620 cmd.args[2] = i; tda10071_read_ber()
621 cmd.len = 3; tda10071_read_ber()
622 ret = tda10071_cmd_execute(priv, &cmd); tda10071_read_ber()
626 ret = tda10071_rd_regs(priv, cmd.len, buf, len); tda10071_read_ber()
667 struct tda10071_cmd cmd; tda10071_set_frontend() local
786 cmd.args[0] = CMD_CHANGE_CHANNEL; tda10071_set_frontend()
787 cmd.args[1] = 0; tda10071_set_frontend()
788 cmd.args[2] = mode; tda10071_set_frontend()
789 cmd.args[3] = (c->frequency >> 16) & 0xff; tda10071_set_frontend()
790 cmd.args[4] = (c->frequency >> 8) & 0xff; tda10071_set_frontend()
791 cmd.args[5] = (c->frequency >> 0) & 0xff; tda10071_set_frontend()
792 cmd.args[6] = ((c->symbol_rate / 1000) >> 8) & 0xff; tda10071_set_frontend()
793 cmd.args[7] = ((c->symbol_rate / 1000) >> 0) & 0xff; tda10071_set_frontend()
794 cmd.args[8] = (tda10071_ops.info.frequency_tolerance >> 8) & 0xff; tda10071_set_frontend()
795 cmd.args[9] = (tda10071_ops.info.frequency_tolerance >> 0) & 0xff; tda10071_set_frontend()
796 cmd.args[10] = rolloff; tda10071_set_frontend()
797 cmd.args[11] = inversion; tda10071_set_frontend()
798 cmd.args[12] = pilot; tda10071_set_frontend()
799 cmd.args[13] = 0x00; tda10071_set_frontend()
800 cmd.args[14] = 0x00; tda10071_set_frontend()
801 cmd.len = 15; tda10071_set_frontend()
802 ret = tda10071_cmd_execute(priv, &cmd); tda10071_set_frontend()
874 struct tda10071_cmd cmd; tda10071_init() local
947 cmd.args[0] = CMD_SET_SLEEP_MODE; tda10071_init()
948 cmd.args[1] = 0; tda10071_init()
949 cmd.args[2] = 0; tda10071_init()
950 cmd.len = 3; tda10071_init()
951 ret = tda10071_cmd_execute(priv, &cmd); tda10071_init()
1043 cmd.args[0] = CMD_GET_FW_VERSION; tda10071_init()
1044 cmd.len = 1; tda10071_init()
1045 ret = tda10071_cmd_execute(priv, &cmd); tda10071_init()
1049 ret = tda10071_rd_regs(priv, cmd.len, buf, 4); tda10071_init()
1062 cmd.args[0] = CMD_DEMOD_INIT; tda10071_init()
1063 cmd.args[1] = ((priv->cfg.xtal / 1000) >> 8) & 0xff; tda10071_init()
1064 cmd.args[2] = ((priv->cfg.xtal / 1000) >> 0) & 0xff; tda10071_init()
1065 cmd.args[3] = buf[0]; tda10071_init()
1066 cmd.args[4] = buf[1]; tda10071_init()
1067 cmd.args[5] = priv->cfg.pll_multiplier; tda10071_init()
1068 cmd.args[6] = priv->cfg.spec_inv; tda10071_init()
1069 cmd.args[7] = 0x00; tda10071_init()
1070 cmd.len = 8; tda10071_init()
1071 ret = tda10071_cmd_execute(priv, &cmd); tda10071_init()
1080 cmd.args[0] = CMD_TUNER_INIT; tda10071_init()
1081 cmd.args[1] = 0x00; tda10071_init()
1082 cmd.args[2] = 0x00; tda10071_init()
1083 cmd.args[3] = 0x00; tda10071_init()
1084 cmd.args[4] = 0x00; tda10071_init()
1085 cmd.args[5] = tmp; tda10071_init()
1086 cmd.args[6] = 0x00; tda10071_init()
1087 cmd.args[7] = 0x03; tda10071_init()
1088 cmd.args[8] = 0x02; tda10071_init()
1089 cmd.args[9] = 0x02; tda10071_init()
1090 cmd.args[10] = 0x00; tda10071_init()
1091 cmd.args[11] = 0x00; tda10071_init()
1092 cmd.args[12] = 0x00; tda10071_init()
1093 cmd.args[13] = 0x00; tda10071_init()
1094 cmd.args[14] = 0x00; tda10071_init()
1095 cmd.len = 15; tda10071_init()
1096 ret = tda10071_cmd_execute(priv, &cmd); tda10071_init()
1100 cmd.args[0] = CMD_MPEG_CONFIG; tda10071_init()
1101 cmd.args[1] = 0; tda10071_init()
1102 cmd.args[2] = priv->cfg.ts_mode; tda10071_init()
1103 cmd.args[3] = 0x00; tda10071_init()
1104 cmd.args[4] = 0x04; tda10071_init()
1105 cmd.args[5] = 0x00; tda10071_init()
1106 cmd.len = 6; tda10071_init()
1107 ret = tda10071_cmd_execute(priv, &cmd); tda10071_init()
1115 cmd.args[0] = CMD_LNB_CONFIG; tda10071_init()
1116 cmd.args[1] = 0; tda10071_init()
1117 cmd.args[2] = 150; tda10071_init()
1118 cmd.args[3] = 3; tda10071_init()
1119 cmd.args[4] = 22; tda10071_init()
1120 cmd.args[5] = 1; tda10071_init()
1121 cmd.args[6] = 1; tda10071_init()
1122 cmd.args[7] = 30; tda10071_init()
1123 cmd.args[8] = 30; tda10071_init()
1124 cmd.args[9] = 30; tda10071_init()
1125 cmd.args[10] = 30; tda10071_init()
1126 cmd.len = 11; tda10071_init()
1127 ret = tda10071_cmd_execute(priv, &cmd); tda10071_init()
1131 cmd.args[0] = CMD_BER_CONTROL; tda10071_init()
1132 cmd.args[1] = 0; tda10071_init()
1133 cmd.args[2] = 14; tda10071_init()
1134 cmd.args[3] = 14; tda10071_init()
1135 cmd.len = 4; tda10071_init()
1136 ret = tda10071_cmd_execute(priv, &cmd); tda10071_init()
1152 struct tda10071_cmd cmd; tda10071_sleep() local
1172 cmd.args[0] = CMD_SET_SLEEP_MODE; tda10071_sleep()
1173 cmd.args[1] = 0; tda10071_sleep()
1174 cmd.args[2] = 1; tda10071_sleep()
1175 cmd.len = 3; tda10071_sleep()
1176 ret = tda10071_cmd_execute(priv, &cmd); tda10071_sleep()
162 tda10071_cmd_execute(struct tda10071_priv *priv, struct tda10071_cmd *cmd) tda10071_cmd_execute() argument
H A Dcx24117.c291 struct cx24117_cmd *cmd) cx24117_writecmd()
298 "%s() demod%d i2c wr cmd len=%d\n", cx24117_writecmd()
299 __func__, state->demod, cmd->len); cx24117_writecmd()
302 memcpy(&buf[1], cmd->args, cmd->len); cx24117_writecmd()
306 msg.len = cmd->len+1; cx24117_writecmd()
311 "%s: demod%d i2c wr cmd err(%i) len=%d\n", cx24117_writecmd()
312 KBUILD_MODNAME, state->demod, ret, cmd->len); cx24117_writecmd()
505 struct cx24117_cmd *cmd) cx24117_cmd_execute_nolock()
519 cx24117_writecmd(state, cmd); cx24117_cmd_execute_nolock()
521 /* Start execution and wait for cmd to terminate */ cx24117_cmd_execute_nolock()
537 static int cx24117_cmd_execute(struct dvb_frontend *fe, struct cx24117_cmd *cmd) cx24117_cmd_execute() argument
543 ret = cx24117_cmd_execute_nolock(fe, cmd); cx24117_cmd_execute()
553 struct cx24117_cmd cmd; cx24117_load_firmware() local
641 cmd.args[0] = CMD_DEMODINIT; cx24117_load_firmware()
642 cmd.args[1] = 0x00; cx24117_load_firmware()
643 cmd.args[2] = 0x01; cx24117_load_firmware()
644 cmd.args[3] = 0x00; cx24117_load_firmware()
645 cmd.len = 4; cx24117_load_firmware()
646 ret = cx24117_cmd_execute_nolock(fe, &cmd); cx24117_load_firmware()
651 cmd.args[0] = CMD_SET_VCOFREQ; cx24117_load_firmware()
652 cmd.args[1] = 0x06; cx24117_load_firmware()
653 cmd.args[2] = 0x2b; cx24117_load_firmware()
654 cmd.args[3] = 0xd8; cx24117_load_firmware()
655 cmd.args[4] = 0xa5; cx24117_load_firmware()
656 cmd.args[5] = 0xee; cx24117_load_firmware()
657 cmd.args[6] = 0x03; cx24117_load_firmware()
658 cmd.args[7] = 0x9d; cx24117_load_firmware()
659 cmd.args[8] = 0xfc; cx24117_load_firmware()
660 cmd.args[9] = 0x06; cx24117_load_firmware()
661 cmd.args[10] = 0x02; cx24117_load_firmware()
662 cmd.args[11] = 0x9d; cx24117_load_firmware()
663 cmd.args[12] = 0xfc; cx24117_load_firmware()
664 cmd.len = 13; cx24117_load_firmware()
665 ret = cx24117_cmd_execute_nolock(fe, &cmd); cx24117_load_firmware()
670 cmd.args[0] = CMD_TUNERINIT; cx24117_load_firmware()
671 cmd.args[1] = 0x00; cx24117_load_firmware()
672 cmd.args[2] = 0x01; cx24117_load_firmware()
673 cmd.args[3] = 0x00; cx24117_load_firmware()
674 cmd.args[4] = 0x00; cx24117_load_firmware()
675 cmd.args[5] = 0x01; cx24117_load_firmware()
676 cmd.args[6] = 0x01; cx24117_load_firmware()
677 cmd.args[7] = 0x01; cx24117_load_firmware()
678 cmd.args[8] = 0x00; cx24117_load_firmware()
679 cmd.args[9] = 0x05; cx24117_load_firmware()
680 cmd.args[10] = 0x02; cx24117_load_firmware()
681 cmd.args[11] = 0x02; cx24117_load_firmware()
682 cmd.args[12] = 0x00; cx24117_load_firmware()
683 cmd.len = 13; cx24117_load_firmware()
684 ret = cx24117_cmd_execute_nolock(fe, &cmd); cx24117_load_firmware()
689 cmd.args[0] = CMD_GLOBAL_MPEGCFG; cx24117_load_firmware()
690 cmd.args[1] = 0x00; cx24117_load_firmware()
691 cmd.args[2] = 0x00; cx24117_load_firmware()
692 cmd.args[3] = 0x00; cx24117_load_firmware()
693 cmd.args[4] = 0x01; cx24117_load_firmware()
694 cmd.args[5] = 0x00; cx24117_load_firmware()
695 cmd.len = 6; cx24117_load_firmware()
696 ret = cx24117_cmd_execute_nolock(fe, &cmd); cx24117_load_firmware()
702 cmd.args[0] = CMD_MPEGCFG; cx24117_load_firmware()
703 cmd.args[1] = (u8) i; cx24117_load_firmware()
704 cmd.args[2] = 0x00; cx24117_load_firmware()
705 cmd.args[3] = 0x05; cx24117_load_firmware()
706 cmd.args[4] = 0x00; cx24117_load_firmware()
707 cmd.args[5] = 0x00; cx24117_load_firmware()
708 cmd.args[6] = 0x55; cx24117_load_firmware()
709 cmd.args[7] = 0x00; cx24117_load_firmware()
710 cmd.len = 8; cx24117_load_firmware()
711 ret = cx24117_cmd_execute_nolock(fe, &cmd); cx24117_load_firmware()
721 cmd.args[0] = CMD_FWVERSION; cx24117_load_firmware()
722 cmd.len = 2; cx24117_load_firmware()
724 cmd.args[1] = i; cx24117_load_firmware()
725 ret = cx24117_cmd_execute_nolock(fe, &cmd); cx24117_load_firmware()
793 struct cx24117_cmd cmd; cx24117_read_signal_strength() local
801 cmd.args[0] = CMD_GET_AGCACC; cx24117_read_signal_strength()
802 cmd.args[1] = (u8) state->demod; cx24117_read_signal_strength()
803 cmd.len = 2; cx24117_read_signal_strength()
804 ret = cx24117_cmd_execute(fe, &cmd); cx24117_read_signal_strength()
910 struct cx24117_cmd cmd; cx24117_set_voltage() local
921 cmd.args[0] = CMD_SET_GPIOOUT; cx24117_set_voltage()
922 cmd.args[2] = reg; /* mask */ cx24117_set_voltage()
923 cmd.len = 3; cx24117_set_voltage()
928 cmd.args[1] = reg; cx24117_set_voltage()
929 ret = cx24117_cmd_execute(fe, &cmd); cx24117_set_voltage()
941 cmd.args[0] = CMD_LNBDCLEVEL; cx24117_set_voltage()
942 cmd.args[1] = state->demod ? 0 : 1; cx24117_set_voltage()
943 cmd.args[2] = (voltage == SEC_VOLTAGE_18 ? 0x01 : 0x00); cx24117_set_voltage()
944 cmd.len = 3; cx24117_set_voltage()
945 ret = cx24117_cmd_execute(fe, &cmd); cx24117_set_voltage()
951 cmd.args[1] = 0x00; cx24117_set_voltage()
952 ret = cx24117_cmd_execute(fe, &cmd); cx24117_set_voltage()
962 struct cx24117_cmd cmd; cx24117_set_tone() local
982 cmd.args[0] = CMD_LNBPCBCONFIG; cx24117_set_tone()
983 cmd.args[1] = (state->demod ? 0 : 1); cx24117_set_tone()
984 cmd.args[2] = 0x00; cx24117_set_tone()
985 cmd.args[3] = 0x00; cx24117_set_tone()
986 cmd.len = 5; cx24117_set_tone()
989 cmd.args[4] = 0x01; cx24117_set_tone()
992 cmd.args[4] = 0x00; cx24117_set_tone()
998 return cx24117_cmd_execute(fe, &cmd); cx24117_set_tone()
1228 struct cx24117_cmd cmd; cx24117_initfe() local
1237 cmd.args[0] = CMD_SET_SLEEPMODE; cx24117_initfe()
1238 cmd.args[1] = (state->demod ? 1 : 0); cx24117_initfe()
1239 cmd.args[2] = 0; cx24117_initfe()
1240 cmd.len = 3; cx24117_initfe()
1241 ret = cx24117_cmd_execute_nolock(fe, &cmd); cx24117_initfe()
1250 cmd.args[0] = CMD_BERCTRL; cx24117_initfe()
1251 cmd.args[1] = (state->demod ? 1 : 0); cx24117_initfe()
1252 cmd.args[2] = 0x10; cx24117_initfe()
1253 cmd.args[3] = 0x10; cx24117_initfe()
1254 cmd.len = 4; cx24117_initfe()
1255 ret = cx24117_cmd_execute_nolock(fe, &cmd); cx24117_initfe()
1260 cmd.args[0] = CMD_ENABLERSCORR; cx24117_initfe()
1261 cmd.args[1] = (state->demod ? 1 : 0); cx24117_initfe()
1262 cmd.args[2] = CX24117_OCC; cx24117_initfe()
1263 cmd.len = 3; cx24117_initfe()
1264 ret = cx24117_cmd_execute_nolock(fe, &cmd); cx24117_initfe()
1270 cmd.args[0] = CMD_SET_GPIODIR; cx24117_initfe()
1271 cmd.args[1] = 0x30; cx24117_initfe()
1272 cmd.args[2] = 0x30; cx24117_initfe()
1273 cmd.len = 3; cx24117_initfe()
1274 ret = cx24117_cmd_execute_nolock(fe, &cmd); cx24117_initfe()
1288 struct cx24117_cmd cmd; cx24117_sleep() local
1294 cmd.args[0] = CMD_SET_SLEEPMODE; cx24117_sleep()
1295 cmd.args[1] = (state->demod ? 1 : 0); cx24117_sleep()
1296 cmd.args[2] = 1; cx24117_sleep()
1297 cmd.len = 3; cx24117_sleep()
1298 return cx24117_cmd_execute(fe, &cmd); cx24117_sleep()
1308 struct cx24117_cmd cmd; cx24117_set_frontend() local
1444 cmd.args[0] = CMD_TUNEREQUEST; cx24117_set_frontend()
1447 cmd.args[1] = state->demod; cx24117_set_frontend()
1450 cmd.args[2] = (state->dcur.frequency & 0xff0000) >> 16; cx24117_set_frontend()
1451 cmd.args[3] = (state->dcur.frequency & 0x00ff00) >> 8; cx24117_set_frontend()
1452 cmd.args[4] = (state->dcur.frequency & 0x0000ff); cx24117_set_frontend()
1455 cmd.args[5] = ((state->dcur.symbol_rate / 1000) & 0xff00) >> 8; cx24117_set_frontend()
1456 cmd.args[6] = ((state->dcur.symbol_rate / 1000) & 0x00ff); cx24117_set_frontend()
1459 cmd.args[7] = state->dcur.inversion_val; cx24117_set_frontend()
1462 cmd.args[8] = state->dcur.fec_val | state->dcur.pilot_val; cx24117_set_frontend()
1464 cmd.args[9] = CX24117_SEARCH_RANGE_KHZ >> 8; cx24117_set_frontend()
1465 cmd.args[10] = CX24117_SEARCH_RANGE_KHZ & 0xff; cx24117_set_frontend()
1467 cmd.args[11] = state->dcur.rolloff_val; cx24117_set_frontend()
1468 cmd.args[12] = state->dcur.fec_mask; cx24117_set_frontend()
1481 cmd.args[13] = reg_ratediv; cx24117_set_frontend()
1482 cmd.args[14] = reg_clkdiv; cx24117_set_frontend()
1489 cmd.args[15] = CX24117_PNE; cx24117_set_frontend()
1490 cmd.len = 16; cx24117_set_frontend()
1506 ret = cx24117_cmd_execute(fe, &cmd); cx24117_set_frontend()
1533 cmd.args[11]--; cx24117_set_frontend()
1565 struct cx24117_cmd cmd; cx24117_get_frontend() local
1574 cmd.args[0] = CMD_GETCTLACC; cx24117_get_frontend()
1575 cmd.args[1] = (u8) state->demod; cx24117_get_frontend()
1576 cmd.len = 2; cx24117_get_frontend()
1577 ret = cx24117_cmd_execute(fe, &cmd); cx24117_get_frontend()
290 cx24117_writecmd(struct cx24117_state *state, struct cx24117_cmd *cmd) cx24117_writecmd() argument
504 cx24117_cmd_execute_nolock(struct dvb_frontend *fe, struct cx24117_cmd *cmd) cx24117_cmd_execute_nolock() argument
H A Dcx24116.c528 static int cx24116_cmd_execute(struct dvb_frontend *fe, struct cx24116_cmd *cmd) cx24116_cmd_execute() argument
544 for (i = 0; i < cmd->len ; i++) { cx24116_cmd_execute()
545 dprintk("%s: 0x%02x == 0x%02x\n", __func__, i, cmd->args[i]); cx24116_cmd_execute()
546 cx24116_writereg(state, i, cmd->args[i]); cx24116_cmd_execute()
549 /* Start execution and wait for cmd to terminate */ cx24116_cmd_execute()
568 struct cx24116_cmd cmd; cx24116_load_firmware() local
627 cmd.args[0x00] = CMD_SET_VCO; cx24116_load_firmware()
628 cmd.args[0x01] = 0x05; cx24116_load_firmware()
629 cmd.args[0x02] = 0xdc; cx24116_load_firmware()
630 cmd.args[0x03] = 0xda; cx24116_load_firmware()
631 cmd.args[0x04] = 0xae; cx24116_load_firmware()
632 cmd.args[0x05] = 0xaa; cx24116_load_firmware()
633 cmd.args[0x06] = 0x04; cx24116_load_firmware()
634 cmd.args[0x07] = 0x9d; cx24116_load_firmware()
635 cmd.args[0x08] = 0xfc; cx24116_load_firmware()
636 cmd.args[0x09] = 0x06; cx24116_load_firmware()
637 cmd.len = 0x0a; cx24116_load_firmware()
638 ret = cx24116_cmd_execute(fe, &cmd); cx24116_load_firmware()
645 cmd.args[0x00] = CMD_TUNERINIT; cx24116_load_firmware()
646 cmd.args[0x01] = 0x00; cx24116_load_firmware()
647 cmd.args[0x02] = 0x00; cx24116_load_firmware()
648 cmd.len = 0x03; cx24116_load_firmware()
649 ret = cx24116_cmd_execute(fe, &cmd); cx24116_load_firmware()
656 cmd.args[0x00] = CMD_MPEGCONFIG; cx24116_load_firmware()
657 cmd.args[0x01] = 0x01; cx24116_load_firmware()
658 cmd.args[0x02] = 0x75; cx24116_load_firmware()
659 cmd.args[0x03] = 0x00; cx24116_load_firmware()
661 cmd.args[0x04] = state->config->mpg_clk_pos_pol; cx24116_load_firmware()
663 cmd.args[0x04] = 0x02; cx24116_load_firmware()
664 cmd.args[0x05] = 0x00; cx24116_load_firmware()
665 cmd.len = 0x06; cx24116_load_firmware()
666 ret = cx24116_cmd_execute(fe, &cmd); cx24116_load_firmware()
671 cmd.args[0x00] = CMD_UPDFWVERS; cx24116_load_firmware()
672 cmd.len = 0x02; cx24116_load_firmware()
674 cmd.args[0x01] = i; cx24116_load_firmware()
675 ret = cx24116_cmd_execute(fe, &cmd); cx24116_load_firmware()
728 struct cx24116_cmd cmd; cx24116_read_signal_strength() local
735 cmd.args[0x00] = CMD_GETAGC; cx24116_read_signal_strength()
736 cmd.len = 0x01; cx24116_read_signal_strength()
737 ret = cx24116_cmd_execute(fe, &cmd); cx24116_read_signal_strength()
849 struct cx24116_cmd cmd; cx24116_set_voltage() local
864 cmd.args[0x00] = CMD_LNBDCLEVEL; cx24116_set_voltage()
865 cmd.args[0x01] = (voltage == SEC_VOLTAGE_18 ? 0x01 : 0x00); cx24116_set_voltage()
866 cmd.len = 0x02; cx24116_set_voltage()
871 return cx24116_cmd_execute(fe, &cmd); cx24116_set_voltage()
877 struct cx24116_cmd cmd; cx24116_set_tone() local
895 cmd.args[0x00] = CMD_SET_TONE; cx24116_set_tone()
896 cmd.args[0x01] = 0x00; cx24116_set_tone()
897 cmd.args[0x02] = 0x00; cx24116_set_tone()
902 cmd.args[0x03] = 0x01; cx24116_set_tone()
906 cmd.args[0x03] = 0x00; cx24116_set_tone()
909 cmd.len = 0x04; cx24116_set_tone()
914 return cx24116_cmd_execute(fe, &cmd); cx24116_set_tone()
921 struct cx24116_cmd cmd; cx24116_diseqc_init() local
925 cmd.args[0x00] = CMD_LNBCONFIG; cx24116_diseqc_init()
926 cmd.args[0x01] = 0x00; cx24116_diseqc_init()
927 cmd.args[0x02] = 0x10; cx24116_diseqc_init()
928 cmd.args[0x03] = 0x00; cx24116_diseqc_init()
929 cmd.args[0x04] = 0x8f; cx24116_diseqc_init()
930 cmd.args[0x05] = 0x28; cx24116_diseqc_init()
931 cmd.args[0x06] = (toneburst == CX24116_DISEQC_TONEOFF) ? 0x00 : 0x01; cx24116_diseqc_init()
932 cmd.args[0x07] = 0x01; cx24116_diseqc_init()
933 cmd.len = 0x08; cx24116_diseqc_init()
934 ret = cx24116_cmd_execute(fe, &cmd); cx24116_diseqc_init()
1162 struct cx24116_cmd cmd; cx24116_initfe() local
1173 cmd.args[0x00] = CMD_TUNERSLEEP; cx24116_initfe()
1174 cmd.args[0x01] = 0; cx24116_initfe()
1175 cmd.len = 0x02; cx24116_initfe()
1176 ret = cx24116_cmd_execute(fe, &cmd); cx24116_initfe()
1194 struct cx24116_cmd cmd; cx24116_sleep() local
1200 cmd.args[0x00] = CMD_TUNERSLEEP; cx24116_sleep()
1201 cmd.args[0x01] = 1; cx24116_sleep()
1202 cmd.len = 0x02; cx24116_sleep()
1203 ret = cx24116_cmd_execute(fe, &cmd); cx24116_sleep()
1222 struct cx24116_cmd cmd; cx24116_set_frontend() local
1346 cmd.args[0x00] = CMD_BANDWIDTH; cx24116_set_frontend()
1347 cmd.args[0x01] = 0x01; cx24116_set_frontend()
1348 cmd.len = 0x02; cx24116_set_frontend()
1349 ret = cx24116_cmd_execute(fe, &cmd); cx24116_set_frontend()
1354 cmd.args[0x00] = CMD_TUNEREQUEST; cx24116_set_frontend()
1357 cmd.args[0x01] = (state->dcur.frequency & 0xff0000) >> 16; cx24116_set_frontend()
1358 cmd.args[0x02] = (state->dcur.frequency & 0x00ff00) >> 8; cx24116_set_frontend()
1359 cmd.args[0x03] = (state->dcur.frequency & 0x0000ff); cx24116_set_frontend()
1362 cmd.args[0x04] = ((state->dcur.symbol_rate / 1000) & 0xff00) >> 8; cx24116_set_frontend()
1363 cmd.args[0x05] = ((state->dcur.symbol_rate / 1000) & 0x00ff); cx24116_set_frontend()
1366 cmd.args[0x06] = state->dcur.inversion_val; cx24116_set_frontend()
1369 cmd.args[0x07] = state->dcur.fec_val | state->dcur.pilot_val; cx24116_set_frontend()
1371 cmd.args[0x08] = CX24116_SEARCH_RANGE_KHZ >> 8; cx24116_set_frontend()
1372 cmd.args[0x09] = CX24116_SEARCH_RANGE_KHZ & 0xff; cx24116_set_frontend()
1373 cmd.args[0x0a] = 0x00; cx24116_set_frontend()
1374 cmd.args[0x0b] = 0x00; cx24116_set_frontend()
1375 cmd.args[0x0c] = state->dcur.rolloff_val; cx24116_set_frontend()
1376 cmd.args[0x0d] = state->dcur.fec_mask; cx24116_set_frontend()
1379 cmd.args[0x0e] = 0x04; cx24116_set_frontend()
1380 cmd.args[0x0f] = 0x00; cx24116_set_frontend()
1381 cmd.args[0x10] = 0x01; cx24116_set_frontend()
1382 cmd.args[0x11] = 0x77; cx24116_set_frontend()
1383 cmd.args[0x12] = 0x36; cx24116_set_frontend()
1387 cmd.args[0x0e] = 0x06; cx24116_set_frontend()
1388 cmd.args[0x0f] = 0x00; cx24116_set_frontend()
1389 cmd.args[0x10] = 0x00; cx24116_set_frontend()
1390 cmd.args[0x11] = 0xFA; cx24116_set_frontend()
1391 cmd.args[0x12] = 0x24; cx24116_set_frontend()
1396 cmd.len = 0x13; cx24116_set_frontend()
1409 ret = cx24116_cmd_execute(fe, &cmd); cx24116_set_frontend()
1433 cmd.args[0x07] ^= CX24116_PILOT_ON; cx24116_set_frontend()
1437 cmd.args[0x00] = CMD_BANDWIDTH; cx24116_set_frontend()
1438 cmd.args[0x01] = 0x00; cx24116_set_frontend()
1439 cmd.len = 0x02; cx24116_set_frontend()
1440 return cx24116_cmd_execute(fe, &cmd); cx24116_set_frontend()
/linux-4.1.27/net/bluetooth/
H A Dmgmt_util.c60 int mgmt_cmd_status(struct sock *sk, u16 index, u16 cmd, u8 status) mgmt_cmd_status() argument
67 BT_DBG("sock %p, index %u, cmd %u, status %u", sk, index, cmd, status); mgmt_cmd_status()
81 ev->opcode = cpu_to_le16(cmd); mgmt_cmd_status()
90 int mgmt_cmd_complete(struct sock *sk, u16 index, u16 cmd, u8 status, mgmt_cmd_complete() argument
111 ev->opcode = cpu_to_le16(cmd); mgmt_cmd_complete()
127 struct mgmt_pending_cmd *cmd; mgmt_pending_find() local
129 list_for_each_entry(cmd, &hdev->mgmt_pending, list) { mgmt_pending_find()
130 if (hci_sock_get_channel(cmd->sk) != channel) mgmt_pending_find()
132 if (cmd->opcode == opcode) mgmt_pending_find()
133 return cmd; mgmt_pending_find()
144 struct mgmt_pending_cmd *cmd; mgmt_pending_find_data() local
146 list_for_each_entry(cmd, &hdev->mgmt_pending, list) { mgmt_pending_find_data()
147 if (cmd->user_data != data) mgmt_pending_find_data()
149 if (cmd->opcode == opcode) mgmt_pending_find_data()
150 return cmd; mgmt_pending_find_data()
157 void (*cb)(struct mgmt_pending_cmd *cmd, void *data), mgmt_pending_foreach()
160 struct mgmt_pending_cmd *cmd, *tmp; mgmt_pending_foreach() local
162 list_for_each_entry_safe(cmd, tmp, &hdev->mgmt_pending, list) { mgmt_pending_foreach()
163 if (opcode > 0 && cmd->opcode != opcode) mgmt_pending_foreach()
166 cb(cmd, data); mgmt_pending_foreach()
174 struct mgmt_pending_cmd *cmd; mgmt_pending_add() local
176 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mgmt_pending_add()
177 if (!cmd) mgmt_pending_add()
180 cmd->opcode = opcode; mgmt_pending_add()
181 cmd->index = hdev->id; mgmt_pending_add()
183 cmd->param = kmemdup(data, len, GFP_KERNEL); mgmt_pending_add()
184 if (!cmd->param) { mgmt_pending_add()
185 kfree(cmd); mgmt_pending_add()
189 cmd->param_len = len; mgmt_pending_add()
191 cmd->sk = sk; mgmt_pending_add()
194 list_add(&cmd->list, &hdev->mgmt_pending); mgmt_pending_add()
196 return cmd; mgmt_pending_add()
199 void mgmt_pending_free(struct mgmt_pending_cmd *cmd) mgmt_pending_free() argument
201 sock_put(cmd->sk); mgmt_pending_free()
202 kfree(cmd->param); mgmt_pending_free()
203 kfree(cmd); mgmt_pending_free()
206 void mgmt_pending_remove(struct mgmt_pending_cmd *cmd) mgmt_pending_remove() argument
208 list_del(&cmd->list); mgmt_pending_remove()
209 mgmt_pending_free(cmd); mgmt_pending_remove()
156 mgmt_pending_foreach(u16 opcode, struct hci_dev *hdev, void (*cb)(struct mgmt_pending_cmd *cmd, void *data), void *data) mgmt_pending_foreach() argument
H A Dmgmt.c922 struct mgmt_pending_cmd *cmd; get_adv_discov_flags() local
927 cmd = pending_find(MGMT_OP_SET_DISCOVERABLE, hdev); get_adv_discov_flags()
928 if (cmd) { get_adv_discov_flags()
929 struct mgmt_mode *cp = cmd->param; get_adv_discov_flags()
960 struct mgmt_pending_cmd *cmd; get_connectable() local
965 cmd = pending_find(MGMT_OP_SET_CONNECTABLE, hdev); get_connectable()
966 if (cmd) { get_connectable()
967 struct mgmt_mode *cp = cmd->param; get_connectable()
1551 struct mgmt_pending_cmd *cmd; set_powered() local
1584 cmd = mgmt_pending_add(sk, MGMT_OP_SET_POWERED, hdev, data, len); set_powered()
1585 if (!cmd) { set_powered()
1632 static void settings_rsp(struct mgmt_pending_cmd *cmd, void *data) settings_rsp() argument
1636 send_settings_rsp(cmd->sk, cmd->opcode, match->hdev); settings_rsp()
1638 list_del(&cmd->list); settings_rsp()
1641 match->sk = cmd->sk; settings_rsp()
1645 mgmt_pending_free(cmd); settings_rsp()
1648 static void cmd_status_rsp(struct mgmt_pending_cmd *cmd, void *data) cmd_status_rsp() argument
1652 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, *status); cmd_status_rsp()
1653 mgmt_pending_remove(cmd); cmd_status_rsp()
1656 static void cmd_complete_rsp(struct mgmt_pending_cmd *cmd, void *data) cmd_complete_rsp() argument
1658 if (cmd->cmd_complete) { cmd_complete_rsp()
1661 cmd->cmd_complete(cmd, *status); cmd_complete_rsp()
1662 mgmt_pending_remove(cmd); cmd_complete_rsp()
1667 cmd_status_rsp(cmd, data); cmd_complete_rsp()
1670 static int generic_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status) generic_cmd_complete() argument
1672 return mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status, generic_cmd_complete()
1673 cmd->param, cmd->param_len); generic_cmd_complete()
1676 static int addr_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status) addr_cmd_complete() argument
1678 return mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status, addr_cmd_complete()
1679 cmd->param, sizeof(struct mgmt_addr_info)); addr_cmd_complete()
1705 struct mgmt_pending_cmd *cmd; set_discoverable_complete() local
1714 cmd = pending_find(MGMT_OP_SET_DISCOVERABLE, hdev); set_discoverable_complete()
1715 if (!cmd) set_discoverable_complete()
1720 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err); set_discoverable_complete()
1725 cp = cmd->param; set_discoverable_complete()
1738 send_settings_rsp(cmd->sk, MGMT_OP_SET_DISCOVERABLE, hdev); set_discoverable_complete()
1741 new_settings(hdev, cmd->sk); set_discoverable_complete()
1754 mgmt_pending_remove(cmd); set_discoverable_complete()
1764 struct mgmt_pending_cmd *cmd; set_discoverable() local
1854 cmd = mgmt_pending_add(sk, MGMT_OP_SET_DISCOVERABLE, hdev, data, len); set_discoverable()
1855 if (!cmd) { set_discoverable()
1918 mgmt_pending_remove(cmd); set_discoverable()
1963 struct mgmt_pending_cmd *cmd; set_connectable_complete() local
1971 cmd = pending_find(MGMT_OP_SET_CONNECTABLE, hdev); set_connectable_complete()
1972 if (!cmd) set_connectable_complete()
1977 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err); set_connectable_complete()
1981 cp = cmd->param; set_connectable_complete()
1993 send_settings_rsp(cmd->sk, MGMT_OP_SET_CONNECTABLE, hdev); set_connectable_complete()
1996 new_settings(hdev, cmd->sk); set_connectable_complete()
2004 mgmt_pending_remove(cmd); set_connectable_complete()
2043 struct mgmt_pending_cmd *cmd; set_connectable() local
2073 cmd = mgmt_pending_add(sk, MGMT_OP_SET_CONNECTABLE, hdev, data, len); set_connectable()
2074 if (!cmd) { set_connectable()
2124 mgmt_pending_remove(cmd); set_connectable()
2172 struct mgmt_pending_cmd *cmd; set_link_security() local
2220 cmd = mgmt_pending_add(sk, MGMT_OP_SET_LINK_SECURITY, hdev, data, len); set_link_security()
2221 if (!cmd) { set_link_security()
2228 mgmt_pending_remove(cmd); set_link_security()
2240 struct mgmt_pending_cmd *cmd; set_ssp() local
2297 cmd = mgmt_pending_add(sk, MGMT_OP_SET_SSP, hdev, data, len); set_ssp()
2298 if (!cmd) { set_ssp()
2309 mgmt_pending_remove(cmd); set_ssp()
2419 struct mgmt_pending_cmd *cmd; set_le() local
2486 cmd = mgmt_pending_add(sk, MGMT_OP_SET_LE, hdev, data, len); set_le()
2487 if (!cmd) { set_le()
2509 mgmt_pending_remove(cmd); set_le()
2524 struct mgmt_pending_cmd *cmd; pending_eir_or_class() local
2526 list_for_each_entry(cmd, &hdev->mgmt_pending, list) { pending_eir_or_class()
2527 switch (cmd->opcode) { pending_eir_or_class()
2560 struct mgmt_pending_cmd *cmd; mgmt_class_complete() local
2564 cmd = pending_find(mgmt_op, hdev); mgmt_class_complete()
2565 if (!cmd) mgmt_class_complete()
2568 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_class_complete()
2571 mgmt_pending_remove(cmd); mgmt_class_complete()
2587 struct mgmt_pending_cmd *cmd; add_uuid() local
2629 cmd = mgmt_pending_add(sk, MGMT_OP_ADD_UUID, hdev, data, len); add_uuid()
2630 if (!cmd) { add_uuid()
2667 struct mgmt_pending_cmd *cmd; remove_uuid() local
2729 cmd = mgmt_pending_add(sk, MGMT_OP_REMOVE_UUID, hdev, data, len); remove_uuid()
2730 if (!cmd) { remove_uuid()
2753 struct mgmt_pending_cmd *cmd; set_dev_class() local
2807 cmd = mgmt_pending_add(sk, MGMT_OP_SET_DEV_CLASS, hdev, data, len); set_dev_class()
2808 if (!cmd) { set_dev_class()
2920 struct mgmt_pending_cmd *cmd; unpair_device() local
3011 cmd = mgmt_pending_add(sk, MGMT_OP_UNPAIR_DEVICE, hdev, cp, unpair_device()
3013 if (!cmd) { unpair_device()
3018 cmd->cmd_complete = addr_cmd_complete; unpair_device()
3024 mgmt_pending_remove(cmd); unpair_device()
3036 struct mgmt_pending_cmd *cmd; disconnect() local
3079 cmd = mgmt_pending_add(sk, MGMT_OP_DISCONNECT, hdev, data, len); disconnect()
3080 if (!cmd) { disconnect()
3085 cmd->cmd_complete = generic_cmd_complete; disconnect()
3089 mgmt_pending_remove(cmd); disconnect()
3176 struct mgmt_pending_cmd *cmd; send_pin_code_neg_reply() local
3179 cmd = mgmt_pending_add(sk, MGMT_OP_PIN_CODE_NEG_REPLY, hdev, cp, send_pin_code_neg_reply()
3181 if (!cmd) send_pin_code_neg_reply()
3187 mgmt_pending_remove(cmd); send_pin_code_neg_reply()
3198 struct mgmt_pending_cmd *cmd; pin_code_reply() local
3233 cmd = mgmt_pending_add(sk, MGMT_OP_PIN_CODE_REPLY, hdev, data, len); pin_code_reply()
3234 if (!cmd) { pin_code_reply()
3239 cmd->cmd_complete = addr_cmd_complete; pin_code_reply()
3247 mgmt_pending_remove(cmd); pin_code_reply()
3281 struct mgmt_pending_cmd *cmd; find_pairing() local
3283 list_for_each_entry(cmd, &hdev->mgmt_pending, list) { find_pairing()
3284 if (cmd->opcode != MGMT_OP_PAIR_DEVICE) find_pairing()
3287 if (cmd->user_data != conn) find_pairing()
3290 return cmd; find_pairing()
3296 static int pairing_complete(struct mgmt_pending_cmd *cmd, u8 status) pairing_complete() argument
3299 struct hci_conn *conn = cmd->user_data; pairing_complete()
3305 err = mgmt_cmd_complete(cmd->sk, cmd->index, MGMT_OP_PAIR_DEVICE, pairing_complete()
3328 struct mgmt_pending_cmd *cmd; mgmt_smp_complete() local
3330 cmd = find_pairing(conn); mgmt_smp_complete()
3331 if (cmd) { mgmt_smp_complete()
3332 cmd->cmd_complete(cmd, status); mgmt_smp_complete()
3333 mgmt_pending_remove(cmd); mgmt_smp_complete()
3339 struct mgmt_pending_cmd *cmd; pairing_complete_cb() local
3343 cmd = find_pairing(conn); pairing_complete_cb()
3344 if (!cmd) { pairing_complete_cb()
3349 cmd->cmd_complete(cmd, mgmt_status(status)); pairing_complete_cb()
3350 mgmt_pending_remove(cmd); pairing_complete_cb()
3355 struct mgmt_pending_cmd *cmd; le_pairing_complete_cb() local
3362 cmd = find_pairing(conn); le_pairing_complete_cb()
3363 if (!cmd) { le_pairing_complete_cb()
3368 cmd->cmd_complete(cmd, mgmt_status(status)); le_pairing_complete_cb()
3369 mgmt_pending_remove(cmd); le_pairing_complete_cb()
3377 struct mgmt_pending_cmd *cmd; pair_device() local
3470 cmd = mgmt_pending_add(sk, MGMT_OP_PAIR_DEVICE, hdev, data, len); pair_device()
3471 if (!cmd) { pair_device()
3477 cmd->cmd_complete = pairing_complete; pair_device()
3491 cmd->user_data = hci_conn_get(conn); pair_device()
3495 cmd->cmd_complete(cmd, 0); pair_device()
3496 mgmt_pending_remove(cmd); pair_device()
3510 struct mgmt_pending_cmd *cmd; cancel_pair_device() local
3524 cmd = pending_find(MGMT_OP_PAIR_DEVICE, hdev); cancel_pair_device()
3525 if (!cmd) { cancel_pair_device()
3531 conn = cmd->user_data; cancel_pair_device()
3539 cmd->cmd_complete(cmd, MGMT_STATUS_CANCELLED); cancel_pair_device()
3540 mgmt_pending_remove(cmd); cancel_pair_device()
3553 struct mgmt_pending_cmd *cmd; user_pairing_resp() local
3592 cmd = mgmt_pending_add(sk, mgmt_op, hdev, addr, sizeof(*addr)); user_pairing_resp()
3593 if (!cmd) { user_pairing_resp()
3598 cmd->cmd_complete = addr_cmd_complete; user_pairing_resp()
3612 mgmt_pending_remove(cmd); user_pairing_resp()
3696 struct mgmt_pending_cmd *cmd; set_name_complete() local
3702 cmd = pending_find(MGMT_OP_SET_LOCAL_NAME, hdev); set_name_complete()
3703 if (!cmd) set_name_complete()
3706 cp = cmd->param; set_name_complete()
3709 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_LOCAL_NAME, set_name_complete()
3712 mgmt_cmd_complete(cmd->sk, hdev->id, MGMT_OP_SET_LOCAL_NAME, 0, set_name_complete()
3715 mgmt_pending_remove(cmd); set_name_complete()
3725 struct mgmt_pending_cmd *cmd; set_local_name() local
3760 cmd = mgmt_pending_add(sk, MGMT_OP_SET_LOCAL_NAME, hdev, data, len); set_local_name()
3761 if (!cmd) { set_local_name()
3783 mgmt_pending_remove(cmd); set_local_name()
3795 struct mgmt_pending_cmd *cmd; read_local_oob_data_complete() local
3799 cmd = pending_find(MGMT_OP_READ_LOCAL_OOB_DATA, hdev); read_local_oob_data_complete()
3800 if (!cmd) read_local_oob_data_complete()
3804 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_READ_LOCAL_OOB_DATA, read_local_oob_data_complete()
3815 mgmt_cmd_status(cmd->sk, hdev->id, read_local_oob_data_complete()
3829 mgmt_cmd_status(cmd->sk, hdev->id, read_local_oob_data_complete()
3842 mgmt_cmd_complete(cmd->sk, hdev->id, MGMT_OP_READ_LOCAL_OOB_DATA, read_local_oob_data_complete()
3846 mgmt_pending_remove(cmd); read_local_oob_data_complete()
3852 struct mgmt_pending_cmd *cmd; read_local_oob_data() local
3878 cmd = mgmt_pending_add(sk, MGMT_OP_READ_LOCAL_OOB_DATA, hdev, NULL, 0); read_local_oob_data()
3879 if (!cmd) { read_local_oob_data()
3893 mgmt_pending_remove(cmd); read_local_oob_data()
4180 struct mgmt_pending_cmd *cmd; start_discovery_complete() local
4187 cmd = pending_find(MGMT_OP_START_DISCOVERY, hdev); start_discovery_complete()
4188 if (!cmd) start_discovery_complete()
4189 cmd = pending_find(MGMT_OP_START_SERVICE_DISCOVERY, hdev); start_discovery_complete()
4191 if (cmd) { start_discovery_complete()
4192 cmd->cmd_complete(cmd, mgmt_status(status)); start_discovery_complete()
4193 mgmt_pending_remove(cmd); start_discovery_complete()
4258 struct mgmt_pending_cmd *cmd; start_discovery() local
4282 cmd = mgmt_pending_add(sk, MGMT_OP_START_DISCOVERY, hdev, data, len); start_discovery()
4283 if (!cmd) { start_discovery()
4288 cmd->cmd_complete = generic_cmd_complete; start_discovery()
4303 mgmt_pending_remove(cmd); start_discovery()
4309 mgmt_pending_remove(cmd); start_discovery()
4320 static int service_discovery_cmd_complete(struct mgmt_pending_cmd *cmd, service_discovery_cmd_complete() argument
4323 return mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status, service_discovery_cmd_complete()
4324 cmd->param, 1); service_discovery_cmd_complete()
4331 struct mgmt_pending_cmd *cmd; start_service_discovery() local
4381 cmd = mgmt_pending_add(sk, MGMT_OP_START_SERVICE_DISCOVERY, start_service_discovery()
4383 if (!cmd) { start_service_discovery()
4388 cmd->cmd_complete = service_discovery_cmd_complete; start_service_discovery()
4408 mgmt_pending_remove(cmd); start_service_discovery()
4419 mgmt_pending_remove(cmd); start_service_discovery()
4425 mgmt_pending_remove(cmd); start_service_discovery()
4438 struct mgmt_pending_cmd *cmd; stop_discovery_complete() local
4444 cmd = pending_find(MGMT_OP_STOP_DISCOVERY, hdev); stop_discovery_complete()
4445 if (cmd) { stop_discovery_complete()
4446 cmd->cmd_complete(cmd, mgmt_status(status)); stop_discovery_complete()
4447 mgmt_pending_remove(cmd); stop_discovery_complete()
4460 struct mgmt_pending_cmd *cmd; stop_discovery() local
4482 cmd = mgmt_pending_add(sk, MGMT_OP_STOP_DISCOVERY, hdev, data, len); stop_discovery()
4483 if (!cmd) { stop_discovery()
4488 cmd->cmd_complete = generic_cmd_complete; stop_discovery()
4500 mgmt_pending_remove(cmd); stop_discovery()
4721 struct mgmt_pending_cmd *cmd; set_advertising() local
4782 cmd = mgmt_pending_add(sk, MGMT_OP_SET_ADVERTISING, hdev, data, len); set_advertising()
4783 if (!cmd) { set_advertising()
4806 mgmt_pending_remove(cmd); set_advertising()
4917 struct mgmt_pending_cmd *cmd; fast_connectable_complete() local
4923 cmd = pending_find(MGMT_OP_SET_FAST_CONNECTABLE, hdev); fast_connectable_complete()
4924 if (!cmd) fast_connectable_complete()
4928 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_FAST_CONNECTABLE, fast_connectable_complete()
4931 struct mgmt_mode *cp = cmd->param; fast_connectable_complete()
4938 send_settings_rsp(cmd->sk, MGMT_OP_SET_FAST_CONNECTABLE, hdev); fast_connectable_complete()
4939 new_settings(hdev, cmd->sk); fast_connectable_complete()
4942 mgmt_pending_remove(cmd); fast_connectable_complete()
4952 struct mgmt_pending_cmd *cmd; set_fast_connectable() local
4989 cmd = mgmt_pending_add(sk, MGMT_OP_SET_FAST_CONNECTABLE, hdev, set_fast_connectable()
4991 if (!cmd) { set_fast_connectable()
5004 mgmt_pending_remove(cmd); set_fast_connectable()
5015 struct mgmt_pending_cmd *cmd; set_bredr_complete() local
5021 cmd = pending_find(MGMT_OP_SET_BREDR, hdev); set_bredr_complete()
5022 if (!cmd) set_bredr_complete()
5033 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err); set_bredr_complete()
5035 send_settings_rsp(cmd->sk, MGMT_OP_SET_BREDR, hdev); set_bredr_complete()
5036 new_settings(hdev, cmd->sk); set_bredr_complete()
5039 mgmt_pending_remove(cmd); set_bredr_complete()
5048 struct mgmt_pending_cmd *cmd; set_bredr() local
5127 cmd = mgmt_pending_add(sk, MGMT_OP_SET_BREDR, hdev, data, len); set_bredr()
5128 if (!cmd) { set_bredr()
5150 mgmt_pending_remove(cmd); set_bredr()
5159 struct mgmt_pending_cmd *cmd; sc_enable_complete() local
5166 cmd = pending_find(MGMT_OP_SET_SECURE_CONN, hdev); sc_enable_complete()
5167 if (!cmd) sc_enable_complete()
5171 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, sc_enable_complete()
5176 cp = cmd->param; sc_enable_complete()
5193 send_settings_rsp(cmd->sk, MGMT_OP_SET_SECURE_CONN, hdev); sc_enable_complete()
5194 new_settings(hdev, cmd->sk); sc_enable_complete()
5197 mgmt_pending_remove(cmd); sc_enable_complete()
5206 struct mgmt_pending_cmd *cmd; set_secure_conn() local
5271 cmd = mgmt_pending_add(sk, MGMT_OP_SET_SECURE_CONN, hdev, data, len); set_secure_conn()
5272 if (!cmd) { set_secure_conn()
5281 mgmt_pending_remove(cmd); set_secure_conn()
5581 static int conn_info_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status) conn_info_cmd_complete() argument
5583 struct hci_conn *conn = cmd->user_data; conn_info_cmd_complete()
5587 memcpy(&rp.addr, cmd->param, sizeof(rp.addr)); conn_info_cmd_complete()
5599 err = mgmt_cmd_complete(cmd->sk, cmd->index, MGMT_OP_GET_CONN_INFO, conn_info_cmd_complete()
5612 struct mgmt_pending_cmd *cmd; conn_info_refresh_complete() local
5650 cmd = pending_find_data(MGMT_OP_GET_CONN_INFO, hdev, conn); conn_info_refresh_complete()
5651 if (!cmd) conn_info_refresh_complete()
5654 cmd->cmd_complete(cmd, status); conn_info_refresh_complete()
5655 mgmt_pending_remove(cmd); conn_info_refresh_complete()
5725 struct mgmt_pending_cmd *cmd; get_conn_info() local
5755 cmd = mgmt_pending_add(sk, MGMT_OP_GET_CONN_INFO, hdev, get_conn_info()
5757 if (!cmd) { get_conn_info()
5763 cmd->user_data = hci_conn_get(conn); get_conn_info()
5764 cmd->cmd_complete = conn_info_cmd_complete; get_conn_info()
5782 static int clock_info_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status) clock_info_cmd_complete() argument
5784 struct hci_conn *conn = cmd->user_data; clock_info_cmd_complete()
5790 memcpy(&rp.addr, &cmd->param, sizeof(rp.addr)); clock_info_cmd_complete()
5795 hdev = hci_dev_get(cmd->index); clock_info_cmd_complete()
5807 err = mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status, &rp, clock_info_cmd_complete()
5821 struct mgmt_pending_cmd *cmd; get_clock_info_complete() local
5839 cmd = pending_find_data(MGMT_OP_GET_CLOCK_INFO, hdev, conn); get_clock_info_complete()
5840 if (!cmd) get_clock_info_complete()
5843 cmd->cmd_complete(cmd, mgmt_status(status)); get_clock_info_complete()
5844 mgmt_pending_remove(cmd); get_clock_info_complete()
5856 struct mgmt_pending_cmd *cmd; get_clock_info() local
5895 cmd = mgmt_pending_add(sk, MGMT_OP_GET_CLOCK_INFO, hdev, data, len); get_clock_info()
5896 if (!cmd) { get_clock_info()
5901 cmd->cmd_complete = clock_info_cmd_complete; get_clock_info()
5910 cmd->user_data = hci_conn_get(conn); get_clock_info()
5919 mgmt_pending_remove(cmd); get_clock_info()
5999 struct mgmt_pending_cmd *cmd; add_device_complete() local
6005 cmd = pending_find(MGMT_OP_ADD_DEVICE, hdev); add_device_complete()
6006 if (!cmd) add_device_complete()
6009 cmd->cmd_complete(cmd, mgmt_status(status)); add_device_complete()
6010 mgmt_pending_remove(cmd); add_device_complete()
6020 struct mgmt_pending_cmd *cmd; add_device() local
6042 cmd = mgmt_pending_add(sk, MGMT_OP_ADD_DEVICE, hdev, data, len); add_device()
6043 if (!cmd) { add_device()
6048 cmd->cmd_complete = addr_cmd_complete; add_device()
6053 err = cmd->cmd_complete(cmd, add_device()
6055 mgmt_pending_remove(cmd); add_device()
6086 err = cmd->cmd_complete(cmd, MGMT_STATUS_FAILED); add_device()
6087 mgmt_pending_remove(cmd); add_device()
6100 err = cmd->cmd_complete(cmd, MGMT_STATUS_SUCCESS); add_device()
6101 mgmt_pending_remove(cmd); add_device()
6122 struct mgmt_pending_cmd *cmd; remove_device_complete() local
6128 cmd = pending_find(MGMT_OP_REMOVE_DEVICE, hdev); remove_device_complete()
6129 if (!cmd) remove_device_complete()
6132 cmd->cmd_complete(cmd, mgmt_status(status)); remove_device_complete()
6133 mgmt_pending_remove(cmd); remove_device_complete()
6143 struct mgmt_pending_cmd *cmd; remove_device() local
6153 cmd = mgmt_pending_add(sk, MGMT_OP_REMOVE_DEVICE, hdev, data, len); remove_device()
6154 if (!cmd) { remove_device()
6159 cmd->cmd_complete = addr_cmd_complete; remove_device()
6166 err = cmd->cmd_complete(cmd, remove_device()
6168 mgmt_pending_remove(cmd); remove_device()
6177 err = cmd->cmd_complete(cmd, remove_device()
6179 mgmt_pending_remove(cmd); remove_device()
6198 err = cmd->cmd_complete(cmd, remove_device()
6200 mgmt_pending_remove(cmd); remove_device()
6205 err = cmd->cmd_complete(cmd, remove_device()
6207 mgmt_pending_remove(cmd); remove_device()
6222 err = cmd->cmd_complete(cmd, remove_device()
6224 mgmt_pending_remove(cmd); remove_device()
6257 err = cmd->cmd_complete(cmd, MGMT_STATUS_SUCCESS); remove_device()
6258 mgmt_pending_remove(cmd); remove_device()
6477 struct mgmt_pending_cmd *cmd; read_local_oob_ext_data_complete() local
6483 cmd = pending_find(MGMT_OP_READ_LOCAL_OOB_EXT_DATA, hdev); read_local_oob_ext_data_complete()
6484 if (!cmd) read_local_oob_ext_data_complete()
6487 mgmt_cp = cmd->param; read_local_oob_ext_data_complete()
6566 err = mgmt_cmd_complete(cmd->sk, hdev->id, read_local_oob_ext_data_complete()
6572 hci_sock_set_flag(cmd->sk, HCI_MGMT_OOB_DATA_EVENTS); read_local_oob_ext_data_complete()
6576 HCI_MGMT_OOB_DATA_EVENTS, cmd->sk); read_local_oob_ext_data_complete()
6579 mgmt_pending_remove(cmd); read_local_oob_ext_data_complete()
6585 struct mgmt_pending_cmd *cmd; read_local_ssp_oob_req() local
6589 cmd = mgmt_pending_add(sk, MGMT_OP_READ_LOCAL_OOB_EXT_DATA, hdev, read_local_ssp_oob_req()
6591 if (!cmd) read_local_ssp_oob_req()
6603 mgmt_pending_remove(cmd); read_local_ssp_oob_req()
6886 struct mgmt_pending_cmd *cmd; add_advertising_complete() local
6893 cmd = pending_find(MGMT_OP_ADD_ADVERTISING, hdev); add_advertising_complete()
6898 advertising_removed(cmd ? cmd->sk : NULL, hdev, 1); add_advertising_complete()
6901 if (!cmd) add_advertising_complete()
6907 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, add_advertising_complete()
6910 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, add_advertising_complete()
6913 mgmt_pending_remove(cmd); add_advertising_complete()
6941 struct mgmt_pending_cmd *cmd; add_advertising() local
7026 cmd = mgmt_pending_add(sk, MGMT_OP_ADD_ADVERTISING, hdev, data, add_advertising()
7028 if (!cmd) { add_advertising()
7041 mgmt_pending_remove(cmd); add_advertising()
7052 struct mgmt_pending_cmd *cmd; remove_advertising_complete() local
7063 cmd = pending_find(MGMT_OP_REMOVE_ADVERTISING, hdev); remove_advertising_complete()
7064 if (!cmd) remove_advertising_complete()
7069 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, MGMT_STATUS_SUCCESS, remove_advertising_complete()
7071 mgmt_pending_remove(cmd); remove_advertising_complete()
7083 struct mgmt_pending_cmd *cmd; remove_advertising() local
7132 cmd = mgmt_pending_add(sk, MGMT_OP_REMOVE_ADVERTISING, hdev, data, remove_advertising()
7134 if (!cmd) { remove_advertising()
7144 mgmt_pending_remove(cmd); remove_advertising()
7485 struct mgmt_pending_cmd *cmd; mgmt_set_powered_failed() local
7488 cmd = pending_find(MGMT_OP_SET_POWERED, hdev); mgmt_set_powered_failed()
7489 if (!cmd) mgmt_set_powered_failed()
7497 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_POWERED, status); mgmt_set_powered_failed()
7499 mgmt_pending_remove(cmd); mgmt_set_powered_failed()
7731 static void disconnect_rsp(struct mgmt_pending_cmd *cmd, void *data) disconnect_rsp() argument
7735 cmd->cmd_complete(cmd, 0); disconnect_rsp()
7737 *sk = cmd->sk; disconnect_rsp()
7740 mgmt_pending_remove(cmd); disconnect_rsp()
7743 static void unpair_device_rsp(struct mgmt_pending_cmd *cmd, void *data) unpair_device_rsp() argument
7746 struct mgmt_cp_unpair_device *cp = cmd->param; unpair_device_rsp()
7748 device_unpaired(hdev, &cp->addr.bdaddr, cp->addr.type, cmd->sk); unpair_device_rsp()
7750 cmd->cmd_complete(cmd, 0); unpair_device_rsp()
7751 mgmt_pending_remove(cmd); unpair_device_rsp()
7756 struct mgmt_pending_cmd *cmd; mgmt_powering_down() local
7759 cmd = pending_find(MGMT_OP_SET_POWERED, hdev); mgmt_powering_down()
7760 if (!cmd) mgmt_powering_down()
7763 cp = cmd->param; mgmt_powering_down()
7811 struct mgmt_pending_cmd *cmd; mgmt_disconnect_failed() local
7816 cmd = pending_find(MGMT_OP_DISCONNECT, hdev); mgmt_disconnect_failed()
7817 if (!cmd) mgmt_disconnect_failed()
7820 cp = cmd->param; mgmt_disconnect_failed()
7828 cmd->cmd_complete(cmd, mgmt_status(status)); mgmt_disconnect_failed()
7829 mgmt_pending_remove(cmd); mgmt_disconnect_failed()
7866 struct mgmt_pending_cmd *cmd; mgmt_pin_code_reply_complete() local
7868 cmd = pending_find(MGMT_OP_PIN_CODE_REPLY, hdev); mgmt_pin_code_reply_complete()
7869 if (!cmd) mgmt_pin_code_reply_complete()
7872 cmd->cmd_complete(cmd, mgmt_status(status)); mgmt_pin_code_reply_complete()
7873 mgmt_pending_remove(cmd); mgmt_pin_code_reply_complete()
7879 struct mgmt_pending_cmd *cmd; mgmt_pin_code_neg_reply_complete() local
7881 cmd = pending_find(MGMT_OP_PIN_CODE_NEG_REPLY, hdev); mgmt_pin_code_neg_reply_complete()
7882 if (!cmd) mgmt_pin_code_neg_reply_complete()
7885 cmd->cmd_complete(cmd, mgmt_status(status)); mgmt_pin_code_neg_reply_complete()
7886 mgmt_pending_remove(cmd); mgmt_pin_code_neg_reply_complete()
7924 struct mgmt_pending_cmd *cmd; user_pairing_resp_complete() local
7926 cmd = pending_find(opcode, hdev); user_pairing_resp_complete()
7927 if (!cmd) user_pairing_resp_complete()
7930 cmd->cmd_complete(cmd, mgmt_status(status)); user_pairing_resp_complete()
7931 mgmt_pending_remove(cmd); user_pairing_resp_complete()
7985 struct mgmt_pending_cmd *cmd; mgmt_auth_failed() local
7992 cmd = find_pairing(conn); mgmt_auth_failed()
7995 cmd ? cmd->sk : NULL); mgmt_auth_failed()
7997 if (cmd) { mgmt_auth_failed()
7998 cmd->cmd_complete(cmd, status); mgmt_auth_failed()
7999 mgmt_pending_remove(cmd); mgmt_auth_failed()
8098 static void sk_lookup(struct mgmt_pending_cmd *cmd, void *data) sk_lookup() argument
8103 match->sk = cmd->sk; sk_lookup()
8128 struct mgmt_pending_cmd *cmd; mgmt_set_local_name_complete() local
8137 cmd = pending_find(MGMT_OP_SET_LOCAL_NAME, hdev); mgmt_set_local_name_complete()
8138 if (!cmd) { mgmt_set_local_name_complete()
8149 cmd ? cmd->sk : NULL); mgmt_set_local_name_complete()
/linux-4.1.27/drivers/net/wireless/libertas_tf/
H A DMakefile1 libertas_tf-objs := main.o cmd.o
H A Dcmd.c85 struct cmd_ds_get_hw_spec cmd; lbtf_update_hw_spec() local
91 memset(&cmd, 0, sizeof(cmd)); lbtf_update_hw_spec()
92 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbtf_update_hw_spec()
93 memcpy(cmd.permanentaddr, priv->current_addr, ETH_ALEN); lbtf_update_hw_spec()
94 ret = lbtf_cmd_with_response(priv, CMD_GET_HW_SPEC, &cmd); lbtf_update_hw_spec()
98 priv->fwcapinfo = le32_to_cpu(cmd.fwcapinfo); lbtf_update_hw_spec()
102 priv->fwrelease = le32_to_cpu(cmd.fwrelease); lbtf_update_hw_spec()
107 cmd.permanentaddr, lbtf_update_hw_spec()
114 cmd.hwifversion, cmd.version); lbtf_update_hw_spec()
120 priv->regioncode = le16_to_cpu(cmd.regioncode) & 0xFF; lbtf_update_hw_spec()
135 memmove(priv->current_addr, cmd.permanentaddr, ETH_ALEN); lbtf_update_hw_spec()
156 struct cmd_ds_802_11_rf_channel cmd; lbtf_set_channel() local
160 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbtf_set_channel()
161 cmd.action = cpu_to_le16(CMD_OPT_802_11_RF_CHANNEL_SET); lbtf_set_channel()
162 cmd.channel = cpu_to_le16(channel); lbtf_set_channel()
164 ret = lbtf_cmd_with_response(priv, CMD_802_11_RF_CHANNEL, &cmd); lbtf_set_channel()
171 struct cmd_ds_802_11_beacon_set cmd; lbtf_beacon_set() local
180 size = sizeof(cmd) - sizeof(cmd.beacon) + beacon->len; lbtf_beacon_set()
181 cmd.hdr.size = cpu_to_le16(size); lbtf_beacon_set()
182 cmd.len = cpu_to_le16(beacon->len); lbtf_beacon_set()
183 memcpy(cmd.beacon, (u8 *) beacon->data, beacon->len); lbtf_beacon_set()
185 lbtf_cmd_async(priv, CMD_802_11_BEACON_SET, &cmd.hdr, size); lbtf_beacon_set()
194 struct cmd_ds_802_11_beacon_control cmd; lbtf_beacon_ctrl() local
197 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbtf_beacon_ctrl()
198 cmd.action = cpu_to_le16(CMD_ACT_SET); lbtf_beacon_ctrl()
199 cmd.beacon_enable = cpu_to_le16(beacon_enable); lbtf_beacon_ctrl()
200 cmd.beacon_period = cpu_to_le16(beacon_int); lbtf_beacon_ctrl()
202 lbtf_cmd_async(priv, CMD_802_11_BEACON_CTRL, &cmd.hdr, sizeof(cmd)); lbtf_beacon_ctrl()
220 lbtf_deb_host("DNLD_CMD: cmd size is zero\n"); lbtf_queue_cmd()
240 struct cmd_header *cmd; lbtf_submit_command() local
248 cmd = cmdnode->cmdbuf; lbtf_submit_command()
252 cmdsize = le16_to_cpu(cmd->size); lbtf_submit_command()
253 command = le16_to_cpu(cmd->command); lbtf_submit_command()
256 command, le16_to_cpu(cmd->seqnum), cmdsize); lbtf_submit_command()
259 ret = priv->hw_host_to_card(priv, MVMS_CMD, (u8 *) cmd, cmdsize); lbtf_submit_command()
308 void lbtf_complete_command(struct lbtf_private *priv, struct cmd_ctrl_node *cmd, lbtf_complete_command() argument
311 cmd->result = result; lbtf_complete_command()
312 cmd->cmdwaitqwoken = 1; lbtf_complete_command()
313 wake_up_interruptible(&cmd->cmdwait_q); lbtf_complete_command()
315 if (!cmd->callback) lbtf_complete_command()
316 __lbtf_cleanup_and_insert_cmd(priv, cmd); lbtf_complete_command()
322 struct cmd_ds_mac_multicast_addr cmd; lbtf_cmd_set_mac_multicast_addr() local
326 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbtf_cmd_set_mac_multicast_addr()
327 cmd.action = cpu_to_le16(CMD_ACT_SET); lbtf_cmd_set_mac_multicast_addr()
329 cmd.nr_of_adrs = cpu_to_le16((u16) priv->nr_of_multicastmacaddr); lbtf_cmd_set_mac_multicast_addr()
331 lbtf_deb_cmd("MULTICAST_ADR: setting %d addresses\n", cmd.nr_of_adrs); lbtf_cmd_set_mac_multicast_addr()
333 memcpy(cmd.maclist, priv->multicastlist, lbtf_cmd_set_mac_multicast_addr()
336 lbtf_cmd_async(priv, CMD_MAC_MULTICAST_ADR, &cmd.hdr, sizeof(cmd)); lbtf_cmd_set_mac_multicast_addr()
344 struct cmd_ds_set_mode cmd; lbtf_set_mode() local
347 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbtf_set_mode()
348 cmd.mode = cpu_to_le16(mode); lbtf_set_mode()
350 lbtf_cmd_async(priv, CMD_802_11_SET_MODE, &cmd.hdr, sizeof(cmd)); lbtf_set_mode()
357 struct cmd_ds_set_bssid cmd; lbtf_set_bssid() local
360 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbtf_set_bssid()
361 cmd.activate = activate ? 1 : 0; lbtf_set_bssid()
363 memcpy(cmd.bssid, bssid, ETH_ALEN); lbtf_set_bssid()
365 lbtf_cmd_async(priv, CMD_802_11_SET_BSSID, &cmd.hdr, sizeof(cmd)); lbtf_set_bssid()
371 struct cmd_ds_802_11_mac_address cmd; lbtf_set_mac_address() local
374 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbtf_set_mac_address()
375 cmd.action = cpu_to_le16(CMD_ACT_SET); lbtf_set_mac_address()
377 memcpy(cmd.macadd, mac_addr, ETH_ALEN); lbtf_set_mac_address()
379 lbtf_cmd_async(priv, CMD_802_11_MAC_ADDRESS, &cmd.hdr, sizeof(cmd)); lbtf_set_mac_address()
387 struct cmd_ds_802_11_radio_control cmd; lbtf_set_radio_control() local
391 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbtf_set_radio_control()
392 cmd.action = cpu_to_le16(CMD_ACT_SET); lbtf_set_radio_control()
396 cmd.control = cpu_to_le16(SET_SHORT_PREAMBLE); lbtf_set_radio_control()
400 cmd.control = cpu_to_le16(SET_LONG_PREAMBLE); lbtf_set_radio_control()
405 cmd.control = cpu_to_le16(SET_AUTO_PREAMBLE); lbtf_set_radio_control()
410 cmd.control |= cpu_to_le16(TURN_ON_RF); lbtf_set_radio_control()
412 cmd.control &= cpu_to_le16(~TURN_ON_RF); lbtf_set_radio_control()
417 ret = lbtf_cmd_with_response(priv, CMD_802_11_RADIO_CONTROL, &cmd); lbtf_set_radio_control()
425 struct cmd_ds_mac_control cmd; lbtf_set_mac_control() local
428 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbtf_set_mac_control()
429 cmd.action = cpu_to_le16(priv->mac_control); lbtf_set_mac_control()
430 cmd.reserved = 0; lbtf_set_mac_control()
433 &cmd.hdr, sizeof(cmd)); lbtf_set_mac_control()
439 * lbtf_allocate_cmd_buffer - Allocates cmd buffer, links it to free cmd queue
487 * lbtf_free_cmd_buffer - Frees the cmd buffer.
500 /* need to check if cmd array is allocated or not */ lbtf_free_cmd_buffer()
524 * lbtf_get_cmd_ctrl_node - Gets free cmd node from free cmd queue.
558 * lbtf_execute_next_command: execute next command in cmd pending queue.
567 struct cmd_header *cmd; lbtf_execute_next_command() local
591 cmd = cmdnode->cmdbuf; lbtf_execute_next_command()
595 le16_to_cpu(cmd->command)); lbtf_execute_next_command()
741 pr_info("libertastf: cmd response 0x%04x, seq %d, size %d\n", lbtf_process_rx_command()
/linux-4.1.27/drivers/net/wireless/ti/wl12xx/
H A DMakefile1 wl12xx-objs = main.o cmd.o acx.o debugfs.o scan.o event.o
H A Dscan.c99 struct wl1271_cmd_scan *cmd; wl1271_scan_send() local
108 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl1271_scan_send()
110 if (!cmd || !trigger) { wl1271_scan_send()
121 cmd->params.role_id = wlvif->role_id; wl1271_scan_send()
123 if (WARN_ON(cmd->params.role_id == WL12XX_INVALID_ROLE_ID)) { wl1271_scan_send()
128 cmd->params.scan_options = cpu_to_le16(scan_options); wl1271_scan_send()
130 cmd->params.n_ch = wl1271_get_scan_channels(wl, wl->scan.req, wl1271_scan_send()
131 cmd->channels, wl1271_scan_send()
133 if (cmd->params.n_ch == 0) { wl1271_scan_send()
138 cmd->params.tx_rate = cpu_to_le32(basic_rate); wl1271_scan_send()
139 cmd->params.n_probe_reqs = wl->conf.scan.num_probe_reqs; wl1271_scan_send()
140 cmd->params.tid_trigger = CONF_TX_AC_ANY_TID; wl1271_scan_send()
141 cmd->params.scan_tag = WL1271_SCAN_DEFAULT_TAG; wl1271_scan_send()
144 cmd->params.band = WL1271_SCAN_BAND_2_4_GHZ; wl1271_scan_send()
146 cmd->params.band = WL1271_SCAN_BAND_5_GHZ; wl1271_scan_send()
149 cmd->params.ssid_len = wl->scan.ssid_len; wl1271_scan_send()
150 memcpy(cmd->params.ssid, wl->scan.ssid, wl->scan.ssid_len); wl1271_scan_send()
153 memcpy(cmd->addr, vif->addr, ETH_ALEN); wl1271_scan_send()
156 cmd->params.role_id, band, wl1271_scan_send()
173 wl1271_dump(DEBUG_SCAN, "SCAN: ", cmd, sizeof(*cmd)); wl1271_scan_send()
175 ret = wl1271_cmd_send(wl, CMD_SCAN, cmd, sizeof(*cmd), 0); wl1271_scan_send()
182 kfree(cmd); wl1271_scan_send()
189 struct wl1271_cmd_header *cmd = NULL; wl12xx_scan_stop() local
195 wl1271_debug(DEBUG_CMD, "cmd scan stop"); wl12xx_scan_stop()
197 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); wl12xx_scan_stop()
198 if (!cmd) { wl12xx_scan_stop()
203 ret = wl1271_cmd_send(wl, CMD_STOP_SCAN, cmd, wl12xx_scan_stop()
204 sizeof(*cmd), 0); wl12xx_scan_stop()
206 wl1271_error("cmd stop_scan failed"); wl12xx_scan_stop()
210 kfree(cmd); wl12xx_scan_stop()
302 static void wl12xx_adjust_channels(struct wl1271_cmd_sched_scan_config *cmd, wl12xx_adjust_channels() argument
305 memcpy(cmd->passive, cmd_channels->passive, sizeof(cmd->passive)); wl12xx_adjust_channels()
306 memcpy(cmd->active, cmd_channels->active, sizeof(cmd->active)); wl12xx_adjust_channels()
307 cmd->dfs = cmd_channels->dfs; wl12xx_adjust_channels()
308 cmd->n_pactive_ch = cmd_channels->passive_active; wl12xx_adjust_channels()
310 memcpy(cmd->channels_2, cmd_channels->channels_2, wl12xx_adjust_channels()
311 sizeof(cmd->channels_2)); wl12xx_adjust_channels()
312 memcpy(cmd->channels_5, cmd_channels->channels_5, wl12xx_adjust_channels()
313 sizeof(cmd->channels_5)); wl12xx_adjust_channels()
328 wl1271_debug(DEBUG_CMD, "cmd sched_scan scan config"); wl1271_scan_sched_scan_config()
428 wl1271_debug(DEBUG_CMD, "cmd periodic scan start"); wl1271_scan_sched_scan_start()
474 wl1271_debug(DEBUG_CMD, "cmd periodic scan stop"); wl12xx_scan_sched_scan_stop()
/linux-4.1.27/tools/perf/tests/
H A Dpython-use.c13 char *cmd; test__python_use() local
16 if (asprintf(&cmd, "echo \"import sys ; sys.path.append('%s'); import perf\" | %s %s", test__python_use()
20 ret = system(cmd) ? -1 : 0; test__python_use()
21 free(cmd); test__python_use()
/linux-4.1.27/drivers/clk/
H A Dclk-mb86s7x.c55 struct mb86s7x_peri_clk cmd; crg_gate_control() local
58 cmd.payload_size = sizeof(cmd); crg_gate_control()
59 cmd.cntrlr = crgclk->cntrlr; crg_gate_control()
60 cmd.domain = crgclk->domain; crg_gate_control()
61 cmd.port = crgclk->port; crg_gate_control()
62 cmd.en = en; crg_gate_control()
65 if (cmd.port == 8) crg_gate_control()
69 __func__, __LINE__, cmd.cntrlr, crg_gate_control()
70 cmd.domain, cmd.port, cmd.en); crg_gate_control()
73 &cmd, sizeof(cmd)); crg_gate_control()
80 __func__, __LINE__, cmd.cntrlr, crg_gate_control()
81 cmd.domain, cmd.port, cmd.en); crg_gate_control()
84 if (cmd.en != en) crg_gate_control()
106 struct mb86s7x_peri_clk cmd; crg_rate_control() local
109 cmd.payload_size = sizeof(cmd); crg_rate_control()
110 cmd.cntrlr = crgclk->cntrlr; crg_rate_control()
111 cmd.domain = crgclk->domain; crg_rate_control()
112 cmd.port = crgclk->port; crg_rate_control()
113 cmd.frequency = *rate; crg_rate_control()
118 __func__, __LINE__, cmd.cntrlr, crg_rate_control()
119 cmd.domain, cmd.port, cmd.frequency); crg_rate_control()
123 __func__, __LINE__, cmd.cntrlr, crg_rate_control()
124 cmd.domain, cmd.port); crg_rate_control()
127 ret = mb86s7x_send_packet(code, &cmd, sizeof(cmd)); crg_rate_control()
135 __func__, __LINE__, cmd.cntrlr, crg_rate_control()
136 cmd.domain, cmd.port, cmd.frequency); crg_rate_control()
139 __func__, __LINE__, cmd.cntrlr, crg_rate_control()
140 cmd.domain, cmd.port, cmd.frequency); crg_rate_control()
142 *rate = cmd.frequency; crg_rate_control()
266 struct mb86s7x_cpu_freq cmd; mhu_cluster_rate() local
269 cmd.payload_size = sizeof(cmd); mhu_cluster_rate()
270 cmd.cluster_class = 0; mhu_cluster_rate()
271 cmd.cluster_id = clc->cluster; mhu_cluster_rate()
272 cmd.cpu_id = 0; mhu_cluster_rate()
273 cmd.frequency = *rate; mhu_cluster_rate()
281 __func__, __LINE__, cmd.cluster_class, mhu_cluster_rate()
282 cmd.cluster_id, cmd.cpu_id, cmd.frequency); mhu_cluster_rate()
284 ret = mb86s7x_send_packet(code, &cmd, sizeof(cmd)); mhu_cluster_rate()
291 __func__, __LINE__, cmd.cluster_class, mhu_cluster_rate()
292 cmd.cluster_id, cmd.cpu_id, cmd.frequency); mhu_cluster_rate()
294 *rate = cmd.frequency; mhu_cluster_rate()
/linux-4.1.27/drivers/video/fbdev/mb862xx/
H A Dmb862xxfb_accel.c49 __u32 cmd[6]; mb86290fb_copyarea() local
51 cmd[0] = (GDC_TYPE_SETREGISTER << 24) | (1 << 16) | GDC_REG_MODE_BITMAP; mb86290fb_copyarea()
53 cmd[1] = (2 << 7) | (GDC_ROP_COPY << 9); mb86290fb_copyarea()
54 cmd[2] = GDC_TYPE_BLTCOPYP << 24; mb86290fb_copyarea()
57 cmd[2] |= GDC_CMD_BLTCOPY_TOP_LEFT << 16; mb86290fb_copyarea()
59 cmd[2] |= GDC_CMD_BLTCOPY_BOTTOM_LEFT << 16; mb86290fb_copyarea()
61 cmd[2] |= GDC_CMD_BLTCOPY_TOP_RIGHT << 16; mb86290fb_copyarea()
63 cmd[2] |= GDC_CMD_BLTCOPY_BOTTOM_RIGHT << 16; mb86290fb_copyarea()
65 cmd[3] = (area->sy << 16) | area->sx; mb86290fb_copyarea()
66 cmd[4] = (area->dy << 16) | area->dx; mb86290fb_copyarea()
67 cmd[5] = (area->height << 16) | area->width; mb86290fb_copyarea()
68 mb862xxfb_write_fifo(6, cmd, info); mb86290fb_copyarea()
72 * Fill in the cmd array /GDC FIFO commands/ to draw a 1bit image.
73 * Make sure cmd has enough room!
75 static void mb86290fb_imageblit1(u32 *cmd, u16 step, u16 dx, u16 dy, mb86290fb_imageblit1() argument
85 cmd[0] = (GDC_TYPE_SETREGISTER << 24) | (1 << 16) | GDC_REG_MODE_BITMAP; mb86290fb_imageblit1()
87 cmd[1] = (2 << 7) | (GDC_ROP_COPY << 9); mb86290fb_imageblit1()
88 cmd[2] = mb86290fb_imageblit1()
90 cmd[3] = fgcolor; mb86290fb_imageblit1()
91 cmd[4] = mb86290fb_imageblit1()
93 cmd[5] = bgcolor; mb86290fb_imageblit1()
100 cmd[6] = (GDC_TYPE_DRAWBITMAPP << 24) | mb86290fb_imageblit1()
102 cmd[7] = (dy << 16) | dx; mb86290fb_imageblit1()
103 cmd[8] = (height << 16) | width; mb86290fb_imageblit1()
106 memcpy(&cmd[9 + i * step], line, step << 2); mb86290fb_imageblit1()
111 cmd[9 + i * step + k] = mb86290fb_imageblit1()
112 cpu_to_be32(cmd[9 + i * step + k]); mb86290fb_imageblit1()
121 * Fill in the cmd array /GDC FIFO commands/ to draw a 8bit image.
122 * Make sure cmd has enough room!
124 static void mb86290fb_imageblit8(u32 *cmd, u16 step, u16 dx, u16 dy, mb86290fb_imageblit8() argument
133 cmd[0] = (GDC_TYPE_DRAWBITMAPP << 24) | mb86290fb_imageblit8()
135 cmd[1] = (dy << 16) | dx; mb86290fb_imageblit8()
136 cmd[2] = (height << 16) | width; mb86290fb_imageblit8()
145 cmd[3 + i * step + j] = mb86290fb_imageblit8()
148 cmd[3 + i * step + j] |= mb86290fb_imageblit8()
160 * Fill in the cmd array /GDC FIFO commands/ to draw a 16bit image.
161 * Make sure cmd has enough room!
163 static void mb86290fb_imageblit16(u32 *cmd, u16 step, u16 dx, u16 dy, mb86290fb_imageblit16() argument
176 cmd[0] = (GDC_TYPE_DRAWBITMAPP << 24) | mb86290fb_imageblit16()
178 cmd[1] = (dy << 16) | dx; mb86290fb_imageblit16()
179 cmd[2] = (height << 16) | width; mb86290fb_imageblit16()
182 memcpy(&cmd[3 + i * step], line, step); mb86290fb_imageblit16()
192 u32 *cmd = NULL; mb86290fb_imageblit() local
248 cmd = kmalloc(cmdlen * 4, GFP_DMA); mb86290fb_imageblit()
249 if (!cmd) mb86290fb_imageblit()
251 cmdfn(cmd, step, dx, dy, width, height, fgcolor, bgcolor, image, info); mb86290fb_imageblit()
252 mb862xxfb_write_fifo(cmdlen, cmd, info); mb86290fb_imageblit()
253 kfree(cmd); mb86290fb_imageblit()
261 u32 cmd[7]; mb86290fb_fillrect() local
288 cmd[1] = (2 << 7) | (GDC_ROP_XOR << 9); mb86290fb_fillrect()
293 cmd[1] = (2 << 7) | (GDC_ROP_COPY << 9); mb86290fb_fillrect()
298 cmd[0] = (GDC_TYPE_SETREGISTER << 24) | (1 << 16) | GDC_REG_MODE_BITMAP; mb86290fb_fillrect()
299 /* cmd[1] set earlier */ mb86290fb_fillrect()
300 cmd[2] = mb86290fb_fillrect()
302 cmd[3] = fg; mb86290fb_fillrect()
303 cmd[4] = (GDC_TYPE_DRAWRECTP << 24) | (GDC_CMD_BLT_FILL << 16); mb86290fb_fillrect()
304 cmd[5] = (rect->dy << 16) | (rect->dx); mb86290fb_fillrect()
305 cmd[6] = (height << 16) | width; mb86290fb_fillrect()
307 mb862xxfb_write_fifo(7, cmd, info); mb86290fb_fillrect()
/linux-4.1.27/drivers/target/tcm_fc/
H A Dtfc_cmd.c49 * Dump cmd state for debugging.
51 static void _ft_dump_cmd(struct ft_cmd *cmd, const char *caller) _ft_dump_cmd() argument
59 se_cmd = &cmd->se_cmd; _ft_dump_cmd()
60 pr_debug("%s: cmd %p sess %p seq %p se_cmd %p\n", _ft_dump_cmd()
61 caller, cmd, cmd->sess, cmd->seq, se_cmd); _ft_dump_cmd()
63 pr_debug("%s: cmd %p data_nents %u len %u se_cmd_flags <0x%x>\n", _ft_dump_cmd()
64 caller, cmd, se_cmd->t_data_nents, _ft_dump_cmd()
68 pr_debug("%s: cmd %p sg %p page %p " _ft_dump_cmd()
70 caller, cmd, sg, _ft_dump_cmd()
73 sp = cmd->seq; _ft_dump_cmd()
76 pr_debug("%s: cmd %p sid %x did %x " _ft_dump_cmd()
78 caller, cmd, ep->sid, ep->did, ep->oxid, ep->rxid, _ft_dump_cmd()
83 void ft_dump_cmd(struct ft_cmd *cmd, const char *caller) ft_dump_cmd() argument
86 _ft_dump_cmd(cmd, caller); ft_dump_cmd()
89 static void ft_free_cmd(struct ft_cmd *cmd) ft_free_cmd() argument
95 if (!cmd) ft_free_cmd()
97 sess = cmd->sess; ft_free_cmd()
98 fp = cmd->req_frame; ft_free_cmd()
103 percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag); ft_free_cmd()
109 struct ft_cmd *cmd = container_of(se_cmd, struct ft_cmd, se_cmd); ft_release_cmd() local
111 ft_free_cmd(cmd); ft_release_cmd()
125 struct ft_cmd *cmd = container_of(se_cmd, struct ft_cmd, se_cmd); ft_queue_status() local
133 if (cmd->aborted) ft_queue_status()
135 ft_dump_cmd(cmd, __func__); ft_queue_status()
136 ep = fc_seq_exch(cmd->seq); ft_queue_status()
171 cmd->seq = lport->tt.seq_start_next(cmd->seq); ft_queue_status()
175 rc = lport->tt.seq_send(lport, cmd->seq, fp); ft_queue_status()
187 lport->tt.exch_done(cmd->seq); ft_queue_status()
193 struct ft_cmd *cmd = container_of(se_cmd, struct ft_cmd, se_cmd); ft_write_pending_status() local
195 return cmd->write_data_len != se_cmd->data_length; ft_write_pending_status()
203 struct ft_cmd *cmd = container_of(se_cmd, struct ft_cmd, se_cmd); ft_write_pending() local
211 ft_dump_cmd(cmd, __func__); ft_write_pending()
213 if (cmd->aborted) ft_write_pending()
215 ep = fc_seq_exch(cmd->seq); ft_write_pending()
225 cmd->seq = lport->tt.seq_start_next(cmd->seq); ft_write_pending()
243 cmd->was_ddp_setup = 1; ft_write_pending()
246 lport->tt.seq_send(lport, cmd->seq, fp); ft_write_pending()
252 struct ft_cmd *cmd = container_of(se_cmd, struct ft_cmd, se_cmd); ft_get_task_tag() local
254 if (cmd->aborted) ft_get_task_tag()
256 return fc_seq_exch(cmd->seq)->rxid; ft_get_task_tag()
269 struct ft_cmd *cmd = arg; ft_recv_seq() local
273 /* XXX need to find cmd if queued */ ft_recv_seq()
274 cmd->seq = NULL; ft_recv_seq()
275 cmd->aborted = true; ft_recv_seq()
283 ft_recv_write_data(cmd, fp); ft_recv_seq()
291 ft_invl_hw_context(cmd); ft_recv_seq()
293 transport_generic_free_cmd(&cmd->se_cmd, 0); ft_recv_seq()
346 static void ft_send_resp_code(struct ft_cmd *cmd, ft_send_resp_code() argument
349 ft_send_resp_status(cmd->sess->tport->lport, ft_send_resp_code()
350 cmd->req_frame, SAM_STAT_GOOD, code); ft_send_resp_code()
356 * Always frees the cmd and associated state.
358 static void ft_send_resp_code_and_free(struct ft_cmd *cmd, ft_send_resp_code_and_free() argument
361 ft_send_resp_code(cmd, code); ft_send_resp_code_and_free()
362 ft_free_cmd(cmd); ft_send_resp_code_and_free()
368 static void ft_send_tm(struct ft_cmd *cmd) ft_send_tm() argument
374 fcp = fc_frame_payload_get(cmd->req_frame, sizeof(*fcp)); ft_send_tm()
398 ft_send_resp_code_and_free(cmd, FCP_CMND_FIELDS_INVALID); ft_send_tm()
403 rc = target_submit_tmr(&cmd->se_cmd, cmd->sess->se_sess, ft_send_tm()
404 &cmd->ft_sense_buffer[0], scsilun_to_int(&fcp->fc_lun), ft_send_tm()
405 cmd, tm_func, GFP_KERNEL, 0, 0); ft_send_tm()
407 ft_send_resp_code_and_free(cmd, FCP_TMF_FAILED); ft_send_tm()
415 struct ft_cmd *cmd = container_of(se_cmd, struct ft_cmd, se_cmd); ft_queue_tm_resp() local
419 if (cmd->aborted) ft_queue_tm_resp()
439 ft_send_resp_code(cmd, code); ft_queue_tm_resp()
454 struct ft_cmd *cmd; ft_recv_cmd() local
463 cmd = &((struct ft_cmd *)se_sess->sess_cmd_map)[tag]; ft_recv_cmd()
464 memset(cmd, 0, sizeof(struct ft_cmd)); ft_recv_cmd()
466 cmd->se_cmd.map_tag = tag; ft_recv_cmd()
467 cmd->sess = sess; ft_recv_cmd()
468 cmd->seq = lport->tt.seq_assign(lport, fp); ft_recv_cmd()
469 if (!cmd->seq) { ft_recv_cmd()
473 cmd->req_frame = fp; /* hold frame during cmd */ ft_recv_cmd()
475 INIT_WORK(&cmd->work, ft_send_work); ft_recv_cmd()
476 queue_work(sess->tport->tpg->workqueue, &cmd->work); ft_recv_cmd()
480 pr_debug("cmd or seq allocation failure - sending BUSY\n"); ft_recv_cmd()
518 struct ft_cmd *cmd = container_of(work, struct ft_cmd, work); ft_send_work() local
519 struct fc_frame_header *fh = fc_frame_header_get(cmd->req_frame); ft_send_work()
524 fcp = fc_frame_payload_get(cmd->req_frame, sizeof(*fcp)); ft_send_work()
535 ft_send_tm(cmd); ft_send_work()
570 fc_seq_exch(cmd->seq)->lp->tt.seq_set_resp(cmd->seq, ft_recv_seq, cmd); ft_send_work()
575 if (target_submit_cmd(&cmd->se_cmd, cmd->sess->se_sess, fcp->fc_cdb, ft_send_work()
576 &cmd->ft_sense_buffer[0], scsilun_to_int(&fcp->fc_lun), ft_send_work()
584 ft_send_resp_code_and_free(cmd, FCP_CMND_FIELDS_INVALID); ft_send_work()
H A Dtfc_io.c62 struct ft_cmd *cmd = container_of(se_cmd, struct ft_cmd, se_cmd); ft_queue_data_in() local
83 if (cmd->aborted) ft_queue_data_in()
89 ep = fc_seq_exch(cmd->seq); ft_queue_data_in()
91 cmd->seq = lport->tt.seq_start_next(cmd->seq); ft_queue_data_in()
110 struct fc_seq *seq = cmd->seq; ft_queue_data_in()
130 cmd->sess->max_frame; ft_queue_data_in()
144 fr_max_payload(fp) = cmd->sess->max_frame; ft_queue_data_in()
207 struct ft_cmd *cmd = container_of(work, struct ft_cmd, work); ft_execute_work() local
209 target_execute_cmd(&cmd->se_cmd); ft_execute_work()
215 void ft_recv_write_data(struct ft_cmd *cmd, struct fc_frame *fp) ft_recv_write_data() argument
217 struct se_cmd *se_cmd = &cmd->se_cmd; ft_recv_write_data()
218 struct fc_seq *seq = cmd->seq; ft_recv_write_data()
242 if (cmd->was_ddp_setup) { ft_recv_write_data()
251 pr_err("%s: xid 0x%x, f_ctl 0x%x, cmd->sg %p, " ft_recv_write_data()
252 "cmd->sg_cnt 0x%x. DDP was setup" ft_recv_write_data()
263 ft_invl_hw_context(cmd); ft_recv_write_data()
333 cmd->write_data_len += tlen; ft_recv_write_data()
336 if (cmd->write_data_len == se_cmd->data_length) { ft_recv_write_data()
337 INIT_WORK(&cmd->work, ft_execute_work); ft_recv_write_data()
338 queue_work(cmd->sess->tport->tpg->workqueue, &cmd->work); ft_recv_write_data()
348 void ft_invl_hw_context(struct ft_cmd *cmd) ft_invl_hw_context() argument
354 BUG_ON(!cmd); ft_invl_hw_context()
355 seq = cmd->seq; ft_invl_hw_context()
358 if (cmd->was_ddp_setup && seq) { ft_invl_hw_context()
367 cmd->write_data_len = lport->tt.ddp_done(lport, ft_invl_hw_context()
376 cmd->was_ddp_setup = 0; ft_invl_hw_context()
/linux-4.1.27/drivers/misc/ibmasm/
H A Dcommand.c36 struct command *cmd; ibmasm_new_command() local
41 cmd = kzalloc(sizeof(struct command), GFP_KERNEL); ibmasm_new_command()
42 if (cmd == NULL) ibmasm_new_command()
46 cmd->buffer = kzalloc(buffer_size, GFP_KERNEL); ibmasm_new_command()
47 if (cmd->buffer == NULL) { ibmasm_new_command()
48 kfree(cmd); ibmasm_new_command()
51 cmd->buffer_size = buffer_size; ibmasm_new_command()
53 kref_init(&cmd->kref); ibmasm_new_command()
54 cmd->lock = &sp->lock; ibmasm_new_command()
56 cmd->status = IBMASM_CMD_PENDING; ibmasm_new_command()
57 init_waitqueue_head(&cmd->wait); ibmasm_new_command()
58 INIT_LIST_HEAD(&cmd->queue_node); ibmasm_new_command()
63 return cmd; ibmasm_new_command()
68 struct command *cmd = to_command(kref); ibmasm_free_command() local
70 list_del(&cmd->queue_node); ibmasm_free_command()
73 kfree(cmd->buffer); ibmasm_free_command()
74 kfree(cmd); ibmasm_free_command()
77 static void enqueue_command(struct service_processor *sp, struct command *cmd) enqueue_command() argument
79 list_add_tail(&cmd->queue_node, &sp->command_queue); enqueue_command()
84 struct command *cmd; dequeue_command() local
92 cmd = list_entry(next, struct command, queue_node); dequeue_command()
94 return cmd; dequeue_command()
119 void ibmasm_exec_command(struct service_processor *sp, struct command *cmd) ibmasm_exec_command() argument
129 sp->current_command = cmd; ibmasm_exec_command()
134 enqueue_command(sp, cmd); ibmasm_exec_command()
162 void ibmasm_wait_for_response(struct command *cmd, int timeout) ibmasm_wait_for_response() argument
164 wait_event_interruptible_timeout(cmd->wait, ibmasm_wait_for_response()
165 cmd->status == IBMASM_CMD_COMPLETE || ibmasm_wait_for_response()
166 cmd->status == IBMASM_CMD_FAILED, ibmasm_wait_for_response()
177 struct command *cmd = sp->current_command; ibmasm_receive_command_response() local
182 memcpy_fromio(cmd->buffer, response, min(size, cmd->buffer_size)); ibmasm_receive_command_response()
183 cmd->status = IBMASM_CMD_COMPLETE; ibmasm_receive_command_response()
H A Ddot_command.h55 struct dot_command_header *cmd = (struct dot_command_header *)buffer; get_dot_command_size() local
56 return sizeof(struct dot_command_header) + cmd->command_size + cmd->data_size; get_dot_command_size()
62 unsigned char *cmd = buffer + sizeof(struct dot_command_header); get_dot_command_timeout() local
67 if ((cmd[0] == 6) && (cmd[1] == 3) && (cmd[2] == 1)) get_dot_command_timeout()
70 if ((cmd[0] == 7) && (cmd[1] == 1)) get_dot_command_timeout()
72 if (cmd[0] == 8) get_dot_command_timeout()
H A Dr_heartbeat.c63 struct command *cmd; ibmasm_start_reverse_heartbeat() local
67 cmd = ibmasm_new_command(sp, sizeof rhb_dot_cmd); ibmasm_start_reverse_heartbeat()
68 if (!cmd) ibmasm_start_reverse_heartbeat()
72 memcpy(cmd->buffer, (void *)&rhb_dot_cmd, sizeof rhb_dot_cmd); ibmasm_start_reverse_heartbeat()
73 cmd->status = IBMASM_CMD_PENDING; ibmasm_start_reverse_heartbeat()
74 ibmasm_exec_command(sp, cmd); ibmasm_start_reverse_heartbeat()
75 ibmasm_wait_for_response(cmd, IBMASM_CMD_TIMEOUT_NORMAL); ibmasm_start_reverse_heartbeat()
77 if (cmd->status != IBMASM_CMD_COMPLETE) ibmasm_start_reverse_heartbeat()
89 command_put(cmd); ibmasm_start_reverse_heartbeat()
/linux-4.1.27/drivers/macintosh/
H A Dsmu.c16 * - maybe avoid some data copies with i2c by directly using the smu cmd
68 u8 cmd; member in struct:smu_cmd_buf
112 struct smu_cmd *cmd; smu_start_cmd() local
118 cmd = list_entry(smu->cmd_list.next, struct smu_cmd, link); smu_start_cmd()
119 smu->cmd_cur = cmd; smu_start_cmd()
120 list_del(&cmd->link); smu_start_cmd()
122 DPRINTK("SMU: starting cmd %x, %d bytes data\n", cmd->cmd, smu_start_cmd()
123 cmd->data_len); smu_start_cmd()
124 DPRINTK("SMU: data buffer: %8ph\n", cmd->data_buf); smu_start_cmd()
127 smu->cmd_buf->cmd = cmd->cmd; smu_start_cmd()
128 smu->cmd_buf->length = cmd->data_len; smu_start_cmd()
129 memcpy(smu->cmd_buf->data, cmd->data_buf, cmd->data_len); smu_start_cmd()
163 struct smu_cmd *cmd; smu_db_intr() local
164 void (*done)(struct smu_cmd *cmd, void *misc) = NULL; smu_db_intr()
180 cmd = smu->cmd_cur; smu_db_intr()
182 if (cmd == NULL) smu_db_intr()
199 ack = (~cmd->cmd) & 0xff; smu_db_intr()
200 if (ack != smu->cmd_buf->cmd) { smu_db_intr()
202 ack, smu->cmd_buf->cmd); smu_db_intr()
207 if (reply_len > cmd->reply_len) { smu_db_intr()
210 reply_len, cmd->reply_len); smu_db_intr()
211 reply_len = cmd->reply_len; smu_db_intr()
213 cmd->reply_len = reply_len; smu_db_intr()
214 if (cmd->reply_buf && reply_len) smu_db_intr()
215 memcpy(cmd->reply_buf, smu->cmd_buf->data, reply_len); smu_db_intr()
221 done = cmd->done; smu_db_intr()
222 misc = cmd->misc; smu_db_intr()
224 cmd->status = rc; smu_db_intr()
236 done(cmd, misc); smu_db_intr()
262 int smu_queue_cmd(struct smu_cmd *cmd) smu_queue_cmd() argument
268 if (cmd->data_len > SMU_MAX_DATA || smu_queue_cmd()
269 cmd->reply_len > SMU_MAX_DATA) smu_queue_cmd()
272 cmd->status = 1; smu_queue_cmd()
274 list_add_tail(&cmd->link, &smu->cmd_list); smu_queue_cmd()
281 smu_spinwait_cmd(cmd); smu_queue_cmd()
290 void (*done)(struct smu_cmd *cmd, void *misc), smu_queue_simple()
293 struct smu_cmd *cmd = &scmd->cmd; smu_queue_simple() local
301 cmd->cmd = command; smu_queue_simple()
302 cmd->data_len = data_len; smu_queue_simple()
303 cmd->data_buf = scmd->buffer; smu_queue_simple()
304 cmd->reply_len = sizeof(scmd->buffer); smu_queue_simple()
305 cmd->reply_buf = scmd->buffer; smu_queue_simple()
306 cmd->done = done; smu_queue_simple()
307 cmd->misc = misc; smu_queue_simple()
314 return smu_queue_cmd(cmd); smu_queue_simple()
333 void smu_done_complete(struct smu_cmd *cmd, void *misc) smu_done_complete() argument
342 void smu_spinwait_cmd(struct smu_cmd *cmd) smu_spinwait_cmd() argument
344 while(cmd->status == 1) smu_spinwait_cmd()
366 cmd_buf->cmd = 0x8e; smu_fill_set_rtc_cmd()
381 struct smu_simple_cmd cmd; smu_get_rtc_time() local
388 rc = smu_queue_simple(&cmd, SMU_CMD_RTC_COMMAND, 1, NULL, NULL, smu_get_rtc_time()
392 smu_spinwait_simple(&cmd); smu_get_rtc_time()
394 time->tm_sec = bcd2hex(cmd.buffer[0]); smu_get_rtc_time()
395 time->tm_min = bcd2hex(cmd.buffer[1]); smu_get_rtc_time()
396 time->tm_hour = bcd2hex(cmd.buffer[2]); smu_get_rtc_time()
397 time->tm_wday = bcd2hex(cmd.buffer[3]); smu_get_rtc_time()
398 time->tm_mday = bcd2hex(cmd.buffer[4]); smu_get_rtc_time()
399 time->tm_mon = bcd2hex(cmd.buffer[5]) - 1; smu_get_rtc_time()
400 time->tm_year = bcd2hex(cmd.buffer[6]) + 100; smu_get_rtc_time()
408 struct smu_simple_cmd cmd; smu_set_rtc_time() local
414 rc = smu_queue_simple(&cmd, SMU_CMD_RTC_COMMAND, 8, NULL, NULL, smu_set_rtc_time()
425 smu_spinwait_simple(&cmd); smu_set_rtc_time()
433 struct smu_simple_cmd cmd; smu_shutdown() local
438 if (smu_queue_simple(&cmd, SMU_CMD_POWER_COMMAND, 9, NULL, NULL, smu_shutdown()
441 smu_spinwait_simple(&cmd); smu_shutdown()
449 struct smu_simple_cmd cmd; smu_restart() local
454 if (smu_queue_simple(&cmd, SMU_CMD_POWER_COMMAND, 8, NULL, NULL, smu_restart()
457 smu_spinwait_simple(&cmd); smu_restart()
700 static void smu_i2c_complete_command(struct smu_i2c_cmd *cmd, int fail) smu_i2c_complete_command() argument
702 void (*done)(struct smu_i2c_cmd *cmd, void *misc) = cmd->done; smu_i2c_complete_command()
703 void *misc = cmd->misc; smu_i2c_complete_command()
707 if (!fail && cmd->read) { smu_i2c_complete_command()
708 if (cmd->pdata[0] < 1) smu_i2c_complete_command()
711 memcpy(cmd->info.data, &cmd->pdata[1], smu_i2c_complete_command()
712 cmd->info.datalen); smu_i2c_complete_command()
724 cmd->status = fail ? -EIO : 0; smu_i2c_complete_command()
734 list_del(&cmd->link); smu_i2c_complete_command()
737 list_add_tail(&cmd->scmd.link, &smu->cmd_list); smu_i2c_complete_command()
745 done(cmd, misc); smu_i2c_complete_command()
752 struct smu_i2c_cmd *cmd = smu->cmd_i2c_cur; smu_i2c_retry() local
757 cmd->pdata[0] = 0xff; smu_i2c_retry()
758 cmd->scmd.reply_len = sizeof(cmd->pdata); smu_i2c_retry()
759 smu_queue_cmd(&cmd->scmd); smu_i2c_retry()
765 struct smu_i2c_cmd *cmd = misc; smu_i2c_low_completion() local
769 cmd->stage, scmd->status, cmd->pdata[0], scmd->reply_len); smu_i2c_low_completion()
774 else if (cmd->read) { smu_i2c_low_completion()
775 if (cmd->stage == 0) smu_i2c_low_completion()
776 fail = cmd->pdata[0] != 0; smu_i2c_low_completion()
778 fail = cmd->pdata[0] >= 0x80; smu_i2c_low_completion()
780 fail = cmd->pdata[0] != 0; smu_i2c_low_completion()
785 if (fail && --cmd->retries > 0) { smu_i2c_low_completion()
787 BUG_ON(cmd != smu->cmd_i2c_cur); smu_i2c_low_completion()
798 if (fail || cmd->stage != 0) { smu_i2c_low_completion()
799 smu_i2c_complete_command(cmd, fail); smu_i2c_low_completion()
806 scmd->reply_buf = cmd->pdata; smu_i2c_low_completion()
807 scmd->reply_len = sizeof(cmd->pdata); smu_i2c_low_completion()
808 scmd->data_buf = cmd->pdata; smu_i2c_low_completion()
810 cmd->pdata[0] = 0; smu_i2c_low_completion()
811 cmd->stage = 1; smu_i2c_low_completion()
812 cmd->retries = 20; smu_i2c_low_completion()
817 int smu_queue_i2c(struct smu_i2c_cmd *cmd) smu_queue_i2c() argument
825 cmd->scmd.cmd = SMU_CMD_I2C_COMMAND; smu_queue_i2c()
826 cmd->scmd.done = smu_i2c_low_completion; smu_queue_i2c()
827 cmd->scmd.misc = cmd; smu_queue_i2c()
828 cmd->scmd.reply_buf = cmd->pdata; smu_queue_i2c()
829 cmd->scmd.reply_len = sizeof(cmd->pdata); smu_queue_i2c()
830 cmd->scmd.data_buf = (u8 *)(char *)&cmd->info; smu_queue_i2c()
831 cmd->scmd.status = 1; smu_queue_i2c()
832 cmd->stage = 0; smu_queue_i2c()
833 cmd->pdata[0] = 0xff; smu_queue_i2c()
834 cmd->retries = 20; smu_queue_i2c()
835 cmd->status = 1; smu_queue_i2c()
840 cmd->info.caddr = cmd->info.devaddr; smu_queue_i2c()
841 cmd->read = cmd->info.devaddr & 0x01; smu_queue_i2c()
842 switch(cmd->info.type) { smu_queue_i2c()
844 memset(&cmd->info.sublen, 0, 4); smu_queue_i2c()
847 cmd->info.devaddr &= 0xfe; smu_queue_i2c()
849 if (cmd->info.sublen > 3) smu_queue_i2c()
858 if (cmd->read) { smu_queue_i2c()
859 if (cmd->info.datalen > SMU_I2C_READ_MAX) smu_queue_i2c()
861 memset(cmd->info.data, 0xff, cmd->info.datalen); smu_queue_i2c()
862 cmd->scmd.data_len = 9; smu_queue_i2c()
864 if (cmd->info.datalen > SMU_I2C_WRITE_MAX) smu_queue_i2c()
866 cmd->scmd.data_len = 9 + cmd->info.datalen; smu_queue_i2c()
871 cmd->read ? "read" : "write", cmd->info.datalen, smu_queue_i2c()
872 cmd->info.bus, cmd->info.caddr, smu_queue_i2c()
873 cmd->info.subaddr[0], cmd->info.type); smu_queue_i2c()
881 smu->cmd_i2c_cur = cmd; smu_queue_i2c()
882 list_add_tail(&cmd->scmd.link, &smu->cmd_list); smu_queue_i2c()
886 list_add_tail(&cmd->link, &smu->cmd_i2c_list); smu_queue_i2c()
900 struct smu_cmd cmd; smu_read_datablock() local
912 cmd.cmd = SMU_CMD_MISC_ee_COMMAND; smu_read_datablock()
913 cmd.data_len = 7; smu_read_datablock()
914 cmd.data_buf = params; smu_read_datablock()
915 cmd.reply_len = chunk; smu_read_datablock()
916 cmd.reply_buf = dest; smu_read_datablock()
917 cmd.done = smu_done_complete; smu_read_datablock()
918 cmd.misc = &comp; smu_read_datablock()
924 rc = smu_queue_cmd(&cmd); smu_read_datablock()
928 if (cmd.status != 0) smu_read_datablock()
930 if (cmd.reply_len != clen) { smu_read_datablock()
933 cmd.reply_len, clen); smu_read_datablock()
946 struct smu_simple_cmd cmd; smu_create_sdb_partition() local
953 smu_queue_simple(&cmd, SMU_CMD_PARTITION_COMMAND, 2, smu_create_sdb_partition()
958 cmd.cmd.status, cmd.cmd.reply_len); smu_create_sdb_partition()
961 if (cmd.cmd.status != 0 || cmd.cmd.reply_len != 6) smu_create_sdb_partition()
965 addr = *((u16 *)cmd.buffer); smu_create_sdb_partition()
966 len = cmd.buffer[3] << 2; smu_create_sdb_partition()
1068 struct smu_cmd cmd; member in struct:smu_private
1098 static void smu_user_cmd_done(struct smu_cmd *cmd, void *misc) smu_user_cmd_done() argument
1123 part = __smu_get_sdb_partition(hdr.cmd, NULL, 1); smu_write()
1142 pp->cmd.status = 1; smu_write()
1150 pp->cmd.cmd = hdr.cmd; smu_write()
1151 pp->cmd.data_len = hdr.data_len; smu_write()
1152 pp->cmd.reply_len = SMU_MAX_DATA; smu_write()
1153 pp->cmd.data_buf = pp->buffer; smu_write()
1154 pp->cmd.reply_buf = pp->buffer; smu_write()
1155 pp->cmd.done = smu_user_cmd_done; smu_write()
1156 pp->cmd.misc = pp; smu_write()
1157 rc = smu_queue_cmd(&pp->cmd); smu_write()
1177 if (pp->cmd.status == 1) { smu_read_command()
1186 if (pp->cmd.status != 1) smu_read_command()
1201 if (pp->cmd.status != 0) smu_read_command()
1202 pp->cmd.reply_len = 0; smu_read_command()
1203 size = sizeof(hdr) + pp->cmd.reply_len; smu_read_command()
1207 hdr.status = pp->cmd.status; smu_read_command()
1208 hdr.reply_len = pp->cmd.reply_len; smu_read_command()
1255 if (pp->busy && pp->cmd.status != 1) smu_fpoll()
1282 if (busy && pp->cmd.status == 1) { smu_release()
1288 if (pp->cmd.status != 1) smu_release()
288 smu_queue_simple(struct smu_simple_cmd *scmd, u8 command, unsigned int data_len, void (*done)(struct smu_cmd *cmd, void *misc), void *misc, ...) smu_queue_simple() argument
/linux-4.1.27/fs/ocfs2/
H A Dioctl.h13 long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
14 long ocfs2_compat_ioctl(struct file *file, unsigned cmd, unsigned long arg);
/linux-4.1.27/drivers/net/wireless/ath/carl9170/
H A DMakefile1 carl9170-objs := main.o usb.o cmd.o mac.o phy.o led.o fw.o tx.o rx.o
H A Dcmd.c41 #include "cmd.h"
119 const enum carl9170_cmd_oids cmd, const unsigned int len) carl9170_cmd_buf()
125 tmp->hdr.cmd = cmd; carl9170_cmd_buf()
134 struct carl9170_cmd *cmd; carl9170_reboot() local
137 cmd = carl9170_cmd_buf(ar, CARL9170_CMD_REBOOT_ASYNC, 0); carl9170_reboot()
138 if (!cmd) carl9170_reboot()
141 err = __carl9170_exec_cmd(ar, cmd, true); carl9170_reboot()
154 struct carl9170_cmd *cmd; carl9170_bcn_ctrl() local
156 cmd = carl9170_cmd_buf(ar, CARL9170_CMD_BCN_CTRL_ASYNC, carl9170_bcn_ctrl()
158 if (!cmd) carl9170_bcn_ctrl()
161 cmd->bcn_ctrl.vif_id = cpu_to_le32(vif_id); carl9170_bcn_ctrl()
162 cmd->bcn_ctrl.mode = cpu_to_le32(mode); carl9170_bcn_ctrl()
163 cmd->bcn_ctrl.bcn_addr = cpu_to_le32(addr); carl9170_bcn_ctrl()
164 cmd->bcn_ctrl.bcn_len = cpu_to_le32(len); carl9170_bcn_ctrl()
166 return __carl9170_exec_cmd(ar, cmd, true); carl9170_bcn_ctrl()
204 struct carl9170_cmd *cmd; carl9170_powersave() local
207 cmd = carl9170_cmd_buf(ar, CARL9170_CMD_PSM_ASYNC, carl9170_powersave()
209 if (!cmd) carl9170_powersave()
220 cmd->psm.state = cpu_to_le32(state); carl9170_powersave()
221 return __carl9170_exec_cmd(ar, cmd, true); carl9170_powersave()
118 carl9170_cmd_buf(struct ar9170 *ar, const enum carl9170_cmd_oids cmd, const unsigned int len) carl9170_cmd_buf() argument
/linux-4.1.27/drivers/net/wireless/iwlwifi/dvm/
H A Dpower.c61 struct iwl_powertable_cmd cmd; member in struct:iwl_power_vec_entry
160 struct iwl_powertable_cmd *cmd, iwl_static_sleep_cmd()
184 memset(cmd, 0, sizeof(*cmd)); iwl_static_sleep_cmd()
186 *cmd = table[lvl].cmd; iwl_static_sleep_cmd()
197 max_sleep[i] = le32_to_cpu(cmd->sleep_interval[i]); iwl_static_sleep_cmd()
201 slp_itrvl = le32_to_cpu(cmd->sleep_interval[IWL_POWER_VEC_SIZE - 1]); iwl_static_sleep_cmd()
204 cmd->sleep_interval[IWL_POWER_VEC_SIZE - 1] = iwl_static_sleep_cmd()
207 slp_itrvl = le32_to_cpu(cmd->sleep_interval[IWL_POWER_VEC_SIZE - 1]); iwl_static_sleep_cmd()
209 cmd->sleep_interval[IWL_POWER_VEC_SIZE - 1] = iwl_static_sleep_cmd()
213 cmd->flags |= IWL_POWER_SLEEP_OVER_DTIM_MSK; iwl_static_sleep_cmd()
215 cmd->flags &= ~IWL_POWER_SLEEP_OVER_DTIM_MSK; iwl_static_sleep_cmd()
218 cmd->flags |= IWL_POWER_SHADOW_REG_ENA; iwl_static_sleep_cmd()
220 cmd->flags &= ~IWL_POWER_SHADOW_REG_ENA; iwl_static_sleep_cmd()
224 cmd->flags |= IWL_POWER_BT_SCO_ENA; iwl_static_sleep_cmd()
226 cmd->flags &= ~IWL_POWER_BT_SCO_ENA; iwl_static_sleep_cmd()
230 slp_itrvl = le32_to_cpu(cmd->sleep_interval[IWL_POWER_VEC_SIZE - 1]); iwl_static_sleep_cmd()
232 cmd->sleep_interval[IWL_POWER_VEC_SIZE - 1] = iwl_static_sleep_cmd()
237 if (le32_to_cpu(cmd->sleep_interval[i]) > iwl_static_sleep_cmd()
239 cmd->sleep_interval[i] = iwl_static_sleep_cmd()
242 if (le32_to_cpu(cmd->sleep_interval[i]) > iwl_static_sleep_cmd()
243 le32_to_cpu(cmd->sleep_interval[i+1])) iwl_static_sleep_cmd()
244 cmd->sleep_interval[i] = iwl_static_sleep_cmd()
245 cmd->sleep_interval[i+1]; iwl_static_sleep_cmd()
250 cmd->flags |= IWL_POWER_PCI_PM_MSK; iwl_static_sleep_cmd()
252 cmd->flags &= ~IWL_POWER_PCI_PM_MSK; iwl_static_sleep_cmd()
262 struct iwl_powertable_cmd *cmd) iwl_power_sleep_cam_cmd()
264 memset(cmd, 0, sizeof(*cmd)); iwl_power_sleep_cam_cmd()
267 cmd->flags |= IWL_POWER_PCI_PM_MSK; iwl_power_sleep_cam_cmd()
272 static int iwl_set_power(struct iwl_priv *priv, struct iwl_powertable_cmd *cmd) iwl_set_power() argument
275 IWL_DEBUG_POWER(priv, "Flags value = 0x%08X\n", cmd->flags); iwl_set_power()
276 IWL_DEBUG_POWER(priv, "Tx timeout = %u\n", le32_to_cpu(cmd->tx_data_timeout)); iwl_set_power()
277 IWL_DEBUG_POWER(priv, "Rx timeout = %u\n", le32_to_cpu(cmd->rx_data_timeout)); iwl_set_power()
279 le32_to_cpu(cmd->sleep_interval[0]), iwl_set_power()
280 le32_to_cpu(cmd->sleep_interval[1]), iwl_set_power()
281 le32_to_cpu(cmd->sleep_interval[2]), iwl_set_power()
282 le32_to_cpu(cmd->sleep_interval[3]), iwl_set_power()
283 le32_to_cpu(cmd->sleep_interval[4])); iwl_set_power()
286 sizeof(struct iwl_powertable_cmd), cmd); iwl_set_power()
290 struct iwl_powertable_cmd *cmd) iwl_power_build_cmd()
296 iwl_power_sleep_cam_cmd(priv, cmd); iwl_power_build_cmd()
303 iwl_static_sleep_cmd(priv, cmd, IWL_POWER_INDEX_5, dtimper); iwl_power_build_cmd()
306 iwl_static_sleep_cmd(priv, cmd, IWL_POWER_INDEX_5, 20); iwl_power_build_cmd()
309 iwl_static_sleep_cmd(priv, cmd, iwl_power_build_cmd()
312 iwl_power_sleep_cam_cmd(priv, cmd); iwl_power_build_cmd()
314 iwl_static_sleep_cmd(priv, cmd, iwl_power_build_cmd()
322 iwl_static_sleep_cmd(priv, cmd, iwl_power_build_cmd()
325 iwl_static_sleep_cmd(priv, cmd, iwl_power_build_cmd()
330 int iwl_power_set_mode(struct iwl_priv *priv, struct iwl_powertable_cmd *cmd, iwl_power_set_mode() argument
342 if (!memcmp(&priv->power_data.sleep_cmd, cmd, sizeof(*cmd)) && !force) iwl_power_set_mode()
349 memcpy(&priv->power_data.sleep_cmd_next, cmd, sizeof(*cmd)); iwl_power_set_mode()
355 if (cmd->flags & IWL_POWER_DRIVER_ALLOW_SLEEP_MSK) iwl_power_set_mode()
358 ret = iwl_set_power(priv, cmd); iwl_power_set_mode()
360 if (!(cmd->flags & IWL_POWER_DRIVER_ALLOW_SLEEP_MSK)) iwl_power_set_mode()
371 memcpy(&priv->power_data.sleep_cmd, cmd, sizeof(*cmd)); iwl_power_set_mode()
380 struct iwl_powertable_cmd cmd; iwl_power_update_mode() local
382 iwl_power_build_cmd(priv, &cmd); iwl_power_update_mode()
383 return iwl_power_set_mode(priv, &cmd, force); iwl_power_update_mode()
159 iwl_static_sleep_cmd(struct iwl_priv *priv, struct iwl_powertable_cmd *cmd, enum iwl_power_level lvl, int period) iwl_static_sleep_cmd() argument
261 iwl_power_sleep_cam_cmd(struct iwl_priv *priv, struct iwl_powertable_cmd *cmd) iwl_power_sleep_cam_cmd() argument
289 iwl_power_build_cmd(struct iwl_priv *priv, struct iwl_powertable_cmd *cmd) iwl_power_build_cmd() argument
H A Ducode.c62 struct iwl_calib_xtal_freq_cmd cmd; iwl_set_Xtal_calib() local
65 iwl_set_calib_hdr(&cmd.hdr, IWL_PHY_CALIBRATE_CRYSTAL_FRQ_CMD); iwl_set_Xtal_calib()
66 cmd.cap_pin1 = le16_to_cpu(xtal_calib[0]); iwl_set_Xtal_calib()
67 cmd.cap_pin2 = le16_to_cpu(xtal_calib[1]); iwl_set_Xtal_calib()
68 return iwl_calib_set(priv, (void *)&cmd, sizeof(cmd)); iwl_set_Xtal_calib()
73 struct iwl_calib_temperature_offset_cmd cmd; iwl_set_temperature_offset_calib() local
75 memset(&cmd, 0, sizeof(cmd)); iwl_set_temperature_offset_calib()
76 iwl_set_calib_hdr(&cmd.hdr, IWL_PHY_CALIBRATE_TEMP_OFFSET_CMD); iwl_set_temperature_offset_calib()
77 cmd.radio_sensor_offset = priv->nvm_data->raw_temperature; iwl_set_temperature_offset_calib()
78 if (!(cmd.radio_sensor_offset)) iwl_set_temperature_offset_calib()
79 cmd.radio_sensor_offset = DEFAULT_RADIO_SENSOR_OFFSET; iwl_set_temperature_offset_calib()
82 le16_to_cpu(cmd.radio_sensor_offset)); iwl_set_temperature_offset_calib()
83 return iwl_calib_set(priv, (void *)&cmd, sizeof(cmd)); iwl_set_temperature_offset_calib()
88 struct iwl_calib_temperature_offset_v2_cmd cmd; iwl_set_temperature_offset_calib_v2() local
90 memset(&cmd, 0, sizeof(cmd)); iwl_set_temperature_offset_calib_v2()
91 iwl_set_calib_hdr(&cmd.hdr, IWL_PHY_CALIBRATE_TEMP_OFFSET_CMD); iwl_set_temperature_offset_calib_v2()
92 cmd.radio_sensor_offset_high = priv->nvm_data->kelvin_temperature; iwl_set_temperature_offset_calib_v2()
93 cmd.radio_sensor_offset_low = priv->nvm_data->raw_temperature; iwl_set_temperature_offset_calib_v2()
94 if (!cmd.radio_sensor_offset_low) { iwl_set_temperature_offset_calib_v2()
96 cmd.radio_sensor_offset_low = DEFAULT_RADIO_SENSOR_OFFSET; iwl_set_temperature_offset_calib_v2()
97 cmd.radio_sensor_offset_high = DEFAULT_RADIO_SENSOR_OFFSET; iwl_set_temperature_offset_calib_v2()
99 cmd.burntVoltageRef = priv->nvm_data->calib_voltage; iwl_set_temperature_offset_calib_v2()
102 le16_to_cpu(cmd.radio_sensor_offset_high)); iwl_set_temperature_offset_calib_v2()
104 le16_to_cpu(cmd.radio_sensor_offset_low)); iwl_set_temperature_offset_calib_v2()
106 le16_to_cpu(cmd.burntVoltageRef)); iwl_set_temperature_offset_calib_v2()
108 return iwl_calib_set(priv, (void *)&cmd, sizeof(cmd)); iwl_set_temperature_offset_calib_v2()
114 struct iwl_host_cmd cmd = { iwl_send_calib_cfg() local
127 return iwl_dvm_send_cmd(priv, &cmd); iwl_send_calib_cfg()
392 if (pkt->hdr.cmd != CALIBRATION_RES_NOTIFICATION) { iwlagn_wait_calib()
393 WARN_ON(pkt->hdr.cmd != CALIBRATION_COMPLETE_NOTIFICATION); iwlagn_wait_calib()
/linux-4.1.27/drivers/net/wireless/libertas/
H A Dcmd.c15 #include "cmd.h"
63 * @cmd: the command ID
67 static u8 is_command_allowed_in_ps(u16 cmd) is_command_allowed_in_ps() argument
69 switch (cmd) { is_command_allowed_in_ps()
90 struct cmd_ds_get_hw_spec cmd; lbs_update_hw_spec() local
96 memset(&cmd, 0, sizeof(cmd)); lbs_update_hw_spec()
97 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_update_hw_spec()
98 memcpy(cmd.permanentaddr, priv->current_addr, ETH_ALEN); lbs_update_hw_spec()
99 ret = lbs_cmd_with_response(priv, CMD_GET_HW_SPEC, &cmd); lbs_update_hw_spec()
103 priv->fwcapinfo = le32_to_cpu(cmd.fwcapinfo); lbs_update_hw_spec()
107 priv->fwrelease = le32_to_cpu(cmd.fwrelease); lbs_update_hw_spec()
116 cmd.permanentaddr, lbs_update_hw_spec()
123 cmd.hwifversion, cmd.version); lbs_update_hw_spec()
133 priv->regioncode = (le16_to_cpu(cmd.regioncode) >> 8) & 0xFF; lbs_update_hw_spec()
135 priv->regioncode = le16_to_cpu(cmd.regioncode) & 0xFF; lbs_update_hw_spec()
151 memmove(priv->current_addr, cmd.permanentaddr, ETH_ALEN); lbs_update_hw_spec()
236 struct cmd_ds_802_11_ps_mode cmd; lbs_set_ps_mode() local
241 memset(&cmd, 0, sizeof(cmd)); lbs_set_ps_mode()
242 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_ps_mode()
243 cmd.action = cpu_to_le16(cmd_action); lbs_set_ps_mode()
247 cmd.multipledtim = cpu_to_le16(1); /* Default DTIM multiple */ lbs_set_ps_mode()
260 ret = lbs_cmd_with_response(priv, CMD_802_11_PS_MODE, &cmd); lbs_set_ps_mode()
262 lbs_cmd_async(priv, CMD_802_11_PS_MODE, &cmd.hdr, sizeof (cmd)); lbs_set_ps_mode()
272 struct cmd_ds_802_11_sleep_params cmd; lbs_cmd_802_11_sleep_params() local
278 memset(&cmd, 0, sizeof(cmd)); lbs_cmd_802_11_sleep_params()
280 cmd.error = cpu_to_le16(sp->sp_error); lbs_cmd_802_11_sleep_params()
281 cmd.offset = cpu_to_le16(sp->sp_offset); lbs_cmd_802_11_sleep_params()
282 cmd.stabletime = cpu_to_le16(sp->sp_stabletime); lbs_cmd_802_11_sleep_params()
283 cmd.calcontrol = sp->sp_calcontrol; lbs_cmd_802_11_sleep_params()
284 cmd.externalsleepclk = sp->sp_extsleepclk; lbs_cmd_802_11_sleep_params()
285 cmd.reserved = cpu_to_le16(sp->sp_reserved); lbs_cmd_802_11_sleep_params()
287 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_cmd_802_11_sleep_params()
288 cmd.action = cpu_to_le16(cmd_action); lbs_cmd_802_11_sleep_params()
290 ret = lbs_cmd_with_response(priv, CMD_802_11_SLEEP_PARAMS, &cmd); lbs_cmd_802_11_sleep_params()
295 le16_to_cpu(cmd.error), le16_to_cpu(cmd.offset), lbs_cmd_802_11_sleep_params()
296 le16_to_cpu(cmd.stabletime), cmd.calcontrol, lbs_cmd_802_11_sleep_params()
297 cmd.externalsleepclk); lbs_cmd_802_11_sleep_params()
299 sp->sp_error = le16_to_cpu(cmd.error); lbs_cmd_802_11_sleep_params()
300 sp->sp_offset = le16_to_cpu(cmd.offset); lbs_cmd_802_11_sleep_params()
301 sp->sp_stabletime = le16_to_cpu(cmd.stabletime); lbs_cmd_802_11_sleep_params()
302 sp->sp_calcontrol = cmd.calcontrol; lbs_cmd_802_11_sleep_params()
303 sp->sp_extsleepclk = cmd.externalsleepclk; lbs_cmd_802_11_sleep_params()
304 sp->sp_reserved = le16_to_cpu(cmd.reserved); lbs_cmd_802_11_sleep_params()
367 struct cmd_header *cmd) lbs_ret_host_sleep_activate()
378 struct cmd_header cmd; lbs_set_host_sleep() local
386 memset(&cmd, 0, sizeof(cmd)); lbs_set_host_sleep()
398 &cmd, lbs_set_host_sleep()
399 sizeof(cmd), lbs_set_host_sleep()
438 struct cmd_ds_802_11_snmp_mib cmd; lbs_set_snmp_mib() local
443 memset(&cmd, 0, sizeof (cmd)); lbs_set_snmp_mib()
444 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_snmp_mib()
445 cmd.action = cpu_to_le16(CMD_ACT_SET); lbs_set_snmp_mib()
446 cmd.oid = cpu_to_le16((u16) oid); lbs_set_snmp_mib()
450 cmd.bufsize = cpu_to_le16(sizeof(u8)); lbs_set_snmp_mib()
451 cmd.value[0] = val; lbs_set_snmp_mib()
458 cmd.bufsize = cpu_to_le16(sizeof(u16)); lbs_set_snmp_mib()
459 *((__le16 *)(&cmd.value)) = cpu_to_le16(val); lbs_set_snmp_mib()
468 le16_to_cpu(cmd.oid), le16_to_cpu(cmd.bufsize), val); lbs_set_snmp_mib()
470 ret = lbs_cmd_with_response(priv, CMD_802_11_SNMP_MIB, &cmd); lbs_set_snmp_mib()
488 struct cmd_ds_802_11_snmp_mib cmd; lbs_get_snmp_mib() local
493 memset(&cmd, 0, sizeof (cmd)); lbs_get_snmp_mib()
494 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_get_snmp_mib()
495 cmd.action = cpu_to_le16(CMD_ACT_GET); lbs_get_snmp_mib()
496 cmd.oid = cpu_to_le16(oid); lbs_get_snmp_mib()
498 ret = lbs_cmd_with_response(priv, CMD_802_11_SNMP_MIB, &cmd); lbs_get_snmp_mib()
502 switch (le16_to_cpu(cmd.bufsize)) { lbs_get_snmp_mib()
504 *out_val = cmd.value[0]; lbs_get_snmp_mib()
507 *out_val = le16_to_cpu(*((__le16 *)(&cmd.value))); lbs_get_snmp_mib()
511 oid, le16_to_cpu(cmd.bufsize)); lbs_get_snmp_mib()
533 struct cmd_ds_802_11_rf_tx_power cmd; lbs_get_tx_power() local
538 memset(&cmd, 0, sizeof(cmd)); lbs_get_tx_power()
539 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_get_tx_power()
540 cmd.action = cpu_to_le16(CMD_ACT_GET); lbs_get_tx_power()
542 ret = lbs_cmd_with_response(priv, CMD_802_11_RF_TX_POWER, &cmd); lbs_get_tx_power()
544 *curlevel = le16_to_cpu(cmd.curlevel); lbs_get_tx_power()
546 *minlevel = cmd.minlevel; lbs_get_tx_power()
548 *maxlevel = cmd.maxlevel; lbs_get_tx_power()
565 struct cmd_ds_802_11_rf_tx_power cmd; lbs_set_tx_power() local
570 memset(&cmd, 0, sizeof(cmd)); lbs_set_tx_power()
571 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_tx_power()
572 cmd.action = cpu_to_le16(CMD_ACT_SET); lbs_set_tx_power()
573 cmd.curlevel = cpu_to_le16(dbm); lbs_set_tx_power()
577 ret = lbs_cmd_with_response(priv, CMD_802_11_RF_TX_POWER, &cmd); lbs_set_tx_power()
594 struct cmd_ds_802_11_monitor_mode cmd; lbs_set_monitor_mode() local
597 memset(&cmd, 0, sizeof(cmd)); lbs_set_monitor_mode()
598 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_monitor_mode()
599 cmd.action = cpu_to_le16(CMD_ACT_SET); lbs_set_monitor_mode()
601 cmd.mode = cpu_to_le16(0x1); lbs_set_monitor_mode()
605 ret = lbs_cmd_with_response(priv, CMD_802_11_MONITOR_MODE, &cmd); lbs_set_monitor_mode()
624 struct cmd_ds_802_11_rf_channel cmd; lbs_get_channel() local
629 memset(&cmd, 0, sizeof(cmd)); lbs_get_channel()
630 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_get_channel()
631 cmd.action = cpu_to_le16(CMD_OPT_802_11_RF_CHANNEL_GET); lbs_get_channel()
633 ret = lbs_cmd_with_response(priv, CMD_802_11_RF_CHANNEL, &cmd); lbs_get_channel()
637 ret = le16_to_cpu(cmd.channel); lbs_get_channel()
671 struct cmd_ds_802_11_rf_channel cmd; lbs_set_channel() local
679 memset(&cmd, 0, sizeof(cmd)); lbs_set_channel()
680 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_channel()
681 cmd.action = cpu_to_le16(CMD_OPT_802_11_RF_CHANNEL_SET); lbs_set_channel()
682 cmd.channel = cpu_to_le16(channel); lbs_set_channel()
684 ret = lbs_cmd_with_response(priv, CMD_802_11_RF_CHANNEL, &cmd); lbs_set_channel()
688 priv->channel = (uint8_t) le16_to_cpu(cmd.channel); lbs_set_channel()
708 struct cmd_ds_802_11_rssi cmd; lbs_get_rssi() local
716 memset(&cmd, 0, sizeof(cmd)); lbs_get_rssi()
717 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_get_rssi()
719 cmd.n_or_snr = cpu_to_le16(8); lbs_get_rssi()
721 ret = lbs_cmd_with_response(priv, CMD_802_11_RSSI, &cmd); lbs_get_rssi()
723 *nf = CAL_NF(le16_to_cpu(cmd.nf)); lbs_get_rssi()
724 *rssi = CAL_RSSI(le16_to_cpu(cmd.n_or_snr), le16_to_cpu(cmd.nf)); lbs_get_rssi()
743 struct cmd_ds_802_11d_domain_info cmd; lbs_set_11d_domain_info() local
744 struct mrvl_ie_domain_param_set *domain = &cmd.domain; lbs_set_11d_domain_info()
759 memset(&cmd, 0, sizeof(cmd)); lbs_set_11d_domain_info()
760 cmd.action = cpu_to_le16(CMD_ACT_SET); lbs_set_11d_domain_info()
840 (u8 *) &cmd.domain.country_code, lbs_set_11d_domain_info()
843 cmd.hdr.size = cpu_to_le16(sizeof(cmd.hdr) + lbs_set_11d_domain_info()
844 sizeof(cmd.action) + lbs_set_11d_domain_info()
845 sizeof(cmd.domain.header) + lbs_set_11d_domain_info()
846 sizeof(cmd.domain.country_code) + lbs_set_11d_domain_info()
849 ret = lbs_cmd_with_response(priv, CMD_802_11D_DOMAIN_INFO, &cmd); lbs_set_11d_domain_info()
869 struct cmd_ds_reg_access cmd; lbs_get_reg() local
876 memset(&cmd, 0, sizeof(cmd)); lbs_get_reg()
877 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_get_reg()
878 cmd.action = cpu_to_le16(CMD_ACT_GET); lbs_get_reg()
879 cmd.offset = cpu_to_le16(offset); lbs_get_reg()
888 ret = lbs_cmd_with_response(priv, reg, &cmd); lbs_get_reg()
891 *value = cmd.value.bbp_rf; lbs_get_reg()
893 *value = le32_to_cpu(cmd.value.mac); lbs_get_reg()
914 struct cmd_ds_reg_access cmd; lbs_set_reg() local
919 memset(&cmd, 0, sizeof(cmd)); lbs_set_reg()
920 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_reg()
921 cmd.action = cpu_to_le16(CMD_ACT_SET); lbs_set_reg()
922 cmd.offset = cpu_to_le16(offset); lbs_set_reg()
925 cmd.value.bbp_rf = (u8) (value & 0xFF); lbs_set_reg()
927 cmd.value.mac = cpu_to_le32(value); lbs_set_reg()
933 ret = lbs_cmd_with_response(priv, reg, &cmd); lbs_set_reg()
953 lbs_deb_host("DNLD_CMD: cmd size is zero\n"); lbs_queue_cmd()
991 struct cmd_header *cmd; lbs_submit_command() local
999 cmd = cmdnode->cmdbuf; lbs_submit_command()
1003 cmd->seqnum = cpu_to_le16(priv->seqnum); lbs_submit_command()
1007 cmdsize = le16_to_cpu(cmd->size); lbs_submit_command()
1008 command = le16_to_cpu(cmd->command); lbs_submit_command()
1015 command, le16_to_cpu(cmd->seqnum), cmdsize); lbs_submit_command()
1018 ret = priv->hw_host_to_card(priv, MVMS_CMD, (u8 *) cmd, cmdsize); lbs_submit_command()
1075 void __lbs_complete_command(struct lbs_private *priv, struct cmd_ctrl_node *cmd, __lbs_complete_command() argument
1084 list_del_init(&cmd->list); __lbs_complete_command()
1086 cmd->result = result; __lbs_complete_command()
1087 cmd->cmdwaitqwoken = 1; __lbs_complete_command()
1088 wake_up(&cmd->cmdwait_q); __lbs_complete_command()
1090 if (!cmd->callback || cmd->callback == lbs_cmd_async_callback) __lbs_complete_command()
1091 __lbs_cleanup_and_insert_cmd(priv, cmd); __lbs_complete_command()
1096 void lbs_complete_command(struct lbs_private *priv, struct cmd_ctrl_node *cmd, lbs_complete_command() argument
1101 __lbs_complete_command(priv, cmd, result); lbs_complete_command()
1107 struct cmd_ds_802_11_radio_control cmd; lbs_set_radio() local
1112 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_radio()
1113 cmd.action = cpu_to_le16(CMD_ACT_SET); lbs_set_radio()
1114 cmd.control = 0; lbs_set_radio()
1122 cmd.control = cpu_to_le16(preamble); lbs_set_radio()
1130 cmd.control |= cpu_to_le16(0x1); lbs_set_radio()
1132 cmd.control &= cpu_to_le16(~0x1); lbs_set_radio()
1141 ret = lbs_cmd_with_response(priv, CMD_802_11_RADIO_CONTROL, &cmd); lbs_set_radio()
1150 struct cmd_ds_mac_control cmd; lbs_set_mac_control() local
1154 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_mac_control()
1155 cmd.action = cpu_to_le16(priv->mac_control); lbs_set_mac_control()
1156 cmd.reserved = 0; lbs_set_mac_control()
1158 lbs_cmd_async(priv, CMD_MAC_CONTROL, &cmd.hdr, sizeof(cmd)); lbs_set_mac_control()
1165 struct cmd_ds_mac_control cmd; lbs_set_mac_control_sync() local
1170 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_mac_control_sync()
1171 cmd.action = cpu_to_le16(priv->mac_control); lbs_set_mac_control_sync()
1172 cmd.reserved = 0; lbs_set_mac_control_sync()
1173 ret = lbs_cmd_with_response(priv, CMD_MAC_CONTROL, &cmd); lbs_set_mac_control_sync()
1240 /* need to check if cmd array is allocated or not */ lbs_free_cmd_buffer()
1314 struct cmd_header *cmd; lbs_execute_next_command() local
1341 cmd = cmdnode->cmdbuf; lbs_execute_next_command()
1343 if (is_command_allowed_in_ps(le16_to_cpu(cmd->command))) { lbs_execute_next_command()
1347 "EXEC_NEXT_CMD: cannot send cmd 0x%04x in psstate %d\n", lbs_execute_next_command()
1348 le16_to_cpu(cmd->command), lbs_execute_next_command()
1355 le16_to_cpu(cmd->command), priv->psstate); lbs_execute_next_command()
1368 if (cmd->command != cpu_to_le16(CMD_802_11_PS_MODE)) { lbs_execute_next_command()
1390 struct cmd_ds_802_11_ps_mode *psm = (void *)&cmd[1]; lbs_execute_next_command()
1393 "EXEC_NEXT_CMD: PS cmd, action 0x%02x\n", lbs_execute_next_command()
1398 "EXEC_NEXT_CMD: ignore ENTER_PS cmd\n"); lbs_execute_next_command()
1408 "EXEC_NEXT_CMD: ignore EXIT_PS cmd in sleep\n"); lbs_execute_next_command()
1424 le16_to_cpu(cmd->command)); lbs_execute_next_command()
1569 struct cmd_ds_802_11_tpc_cfg cmd; lbs_set_tpc_cfg() local
1572 memset(&cmd, 0, sizeof(cmd)); lbs_set_tpc_cfg()
1573 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_tpc_cfg()
1574 cmd.action = cpu_to_le16(CMD_ACT_SET); lbs_set_tpc_cfg()
1575 cmd.enable = !!enable; lbs_set_tpc_cfg()
1576 cmd.usesnr = !!usesnr; lbs_set_tpc_cfg()
1577 cmd.P0 = p0; lbs_set_tpc_cfg()
1578 cmd.P1 = p1; lbs_set_tpc_cfg()
1579 cmd.P2 = p2; lbs_set_tpc_cfg()
1581 ret = lbs_cmd_with_response(priv, CMD_802_11_TPC_CFG, &cmd); lbs_set_tpc_cfg()
1601 struct cmd_ds_802_11_pa_cfg cmd; lbs_set_power_adapt_cfg() local
1604 memset(&cmd, 0, sizeof(cmd)); lbs_set_power_adapt_cfg()
1605 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_power_adapt_cfg()
1606 cmd.action = cpu_to_le16(CMD_ACT_SET); lbs_set_power_adapt_cfg()
1607 cmd.enable = !!enable; lbs_set_power_adapt_cfg()
1608 cmd.P0 = p0; lbs_set_power_adapt_cfg()
1609 cmd.P1 = p1; lbs_set_power_adapt_cfg()
1610 cmd.P2 = p2; lbs_set_power_adapt_cfg()
1612 ret = lbs_cmd_with_response(priv, CMD_802_11_PA_CFG , &cmd); lbs_set_power_adapt_cfg()
365 lbs_ret_host_sleep_activate(struct lbs_private *priv, unsigned long dummy, struct cmd_header *cmd) lbs_ret_host_sleep_activate() argument
H A Dethtool.c7 #include "cmd.h"
41 struct cmd_ds_802_11_eeprom_access cmd; lbs_ethtool_get_eeprom() local
52 cmd.hdr.size = cpu_to_le16(sizeof(struct cmd_ds_802_11_eeprom_access) - lbs_ethtool_get_eeprom()
54 cmd.action = cpu_to_le16(CMD_ACT_GET); lbs_ethtool_get_eeprom()
55 cmd.offset = cpu_to_le16(eeprom->offset); lbs_ethtool_get_eeprom()
56 cmd.len = cpu_to_le16(eeprom->len); lbs_ethtool_get_eeprom()
57 ret = lbs_cmd_with_response(priv, CMD_802_11_EEPROM_ACCESS, &cmd); lbs_ethtool_get_eeprom()
59 memcpy(bytes, cmd.value, eeprom->len); lbs_ethtool_get_eeprom()
H A Dcfg.c21 #include "cmd.h"
879 struct cmd_ds_802_11_set_wep cmd; lbs_remove_wep_keys() local
884 memset(&cmd, 0, sizeof(cmd)); lbs_remove_wep_keys()
885 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_remove_wep_keys()
886 cmd.keyindex = cpu_to_le16(priv->wep_tx_key); lbs_remove_wep_keys()
887 cmd.action = cpu_to_le16(CMD_ACT_REMOVE); lbs_remove_wep_keys()
889 ret = lbs_cmd_with_response(priv, CMD_802_11_SET_WEP, &cmd); lbs_remove_wep_keys()
900 struct cmd_ds_802_11_set_wep cmd; lbs_set_wep_keys() local
928 memset(&cmd, 0, sizeof(cmd)); lbs_set_wep_keys()
929 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_wep_keys()
930 cmd.keyindex = cpu_to_le16(priv->wep_tx_key); lbs_set_wep_keys()
931 cmd.action = cpu_to_le16(CMD_ACT_ADD); lbs_set_wep_keys()
936 cmd.keytype[i] = CMD_TYPE_WEP_40_BIT; lbs_set_wep_keys()
939 cmd.keytype[i] = CMD_TYPE_WEP_104_BIT; lbs_set_wep_keys()
942 cmd.keytype[i] = 0; lbs_set_wep_keys()
945 memcpy(cmd.keymaterial[i], priv->wep_key[i], lbs_set_wep_keys()
949 ret = lbs_cmd_with_response(priv, CMD_802_11_SET_WEP, &cmd); lbs_set_wep_keys()
965 struct cmd_ds_802_11_enable_rsn cmd; lbs_enable_rsn() local
971 * cmd 2f 00 lbs_enable_rsn()
978 memset(&cmd, 0, sizeof(cmd)); lbs_enable_rsn()
979 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_enable_rsn()
980 cmd.action = cpu_to_le16(CMD_ACT_SET); lbs_enable_rsn()
981 cmd.enable = cpu_to_le16(enable); lbs_enable_rsn()
983 ret = lbs_cmd_with_response(priv, CMD_802_11_ENABLE_RSN, &cmd); lbs_enable_rsn()
1010 struct cmd_key_material cmd; lbs_set_key_material() local
1018 * cmd 5e 00 lbs_set_key_material()
1030 memset(&cmd, 0, sizeof(cmd)); lbs_set_key_material()
1031 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_key_material()
1032 cmd.action = cpu_to_le16(CMD_ACT_SET); lbs_set_key_material()
1033 cmd.param.type = cpu_to_le16(TLV_TYPE_KEY_MATERIAL); lbs_set_key_material()
1034 cmd.param.length = cpu_to_le16(sizeof(cmd.param) - 4); lbs_set_key_material()
1035 cmd.param.keytypeid = cpu_to_le16(key_type); lbs_set_key_material()
1036 cmd.param.keyinfo = cpu_to_le16(key_info); lbs_set_key_material()
1037 cmd.param.keylen = cpu_to_le16(key_len); lbs_set_key_material()
1039 memcpy(cmd.param.key, key, key_len); lbs_set_key_material()
1041 ret = lbs_cmd_with_response(priv, CMD_802_11_KEY_MATERIAL, &cmd); lbs_set_key_material()
1057 struct cmd_ds_802_11_authenticate cmd; lbs_set_authtype() local
1063 * cmd 11 00 lbs_set_authtype()
1071 memset(&cmd, 0, sizeof(cmd)); lbs_set_authtype()
1072 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_set_authtype()
1074 memcpy(cmd.bssid, sme->bssid, ETH_ALEN); lbs_set_authtype()
1080 cmd.authtype = ret; lbs_set_authtype()
1081 ret = lbs_cmd_with_response(priv, CMD_802_11_AUTHENTICATE, &cmd); lbs_set_authtype()
1106 struct cmd_ds_802_11_associate *cmd = kzalloc(LBS_ASSOC_MAX_CMD_SIZE, lbs_associate() local
1112 u8 *pos = &(cmd->iebuf[0]); lbs_associate()
1117 if (!cmd) { lbs_associate()
1123 * cmd 50 00 lbs_associate()
1134 cmd->hdr.command = cpu_to_le16(CMD_802_11_ASSOCIATE); lbs_associate()
1137 memcpy(cmd->bssid, bss->bssid, ETH_ALEN); lbs_associate()
1138 cmd->listeninterval = cpu_to_le16(MRVDRV_DEFAULT_LISTEN_INTERVAL); lbs_associate()
1139 cmd->capability = cpu_to_le16(bss->capability); lbs_associate()
1172 len = (sizeof(*cmd) - sizeof(cmd->iebuf)) + lbs_associate()
1173 (u16)(pos - (u8 *) &cmd->iebuf); lbs_associate()
1174 cmd->hdr.size = cpu_to_le16(len); lbs_associate()
1176 lbs_deb_hex(LBS_DEB_ASSOC, "ASSOC_CMD", (u8 *) cmd, lbs_associate()
1177 le16_to_cpu(cmd->hdr.size)); lbs_associate()
1182 ret = lbs_cmd_with_response(priv, CMD_802_11_ASSOCIATE, cmd); lbs_associate()
1188 resp = (void *) cmd; /* recast for easier field access */ lbs_associate()
1258 kfree(cmd); lbs_associate()
1446 struct cmd_ds_802_11_deauthenticate cmd; lbs_disconnect() local
1449 memset(&cmd, 0, sizeof(cmd)); lbs_disconnect()
1450 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_disconnect()
1452 memcpy(cmd.macaddr, &priv->assoc_bss, ETH_ALEN); lbs_disconnect()
1453 cmd.reasoncode = cpu_to_le16(reason); lbs_disconnect()
1455 ret = lbs_cmd_with_response(priv, CMD_802_11_DEAUTHENTICATE, &cmd); lbs_disconnect()
1784 struct cmd_ds_802_11_ad_hoc_join cmd; lbs_ibss_join_existing() local
1825 memset(&cmd, 0, sizeof(cmd)); lbs_ibss_join_existing()
1826 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_ibss_join_existing()
1828 memcpy(cmd.bss.bssid, bss->bssid, ETH_ALEN); lbs_ibss_join_existing()
1829 memcpy(cmd.bss.ssid, params->ssid, params->ssid_len); lbs_ibss_join_existing()
1830 cmd.bss.type = CMD_BSS_TYPE_IBSS; lbs_ibss_join_existing()
1831 cmd.bss.beaconperiod = cpu_to_le16(params->beacon_interval); lbs_ibss_join_existing()
1832 cmd.bss.ds.header.id = WLAN_EID_DS_PARAMS; lbs_ibss_join_existing()
1833 cmd.bss.ds.header.len = 1; lbs_ibss_join_existing()
1834 cmd.bss.ds.channel = params->chandef.chan->hw_value; lbs_ibss_join_existing()
1835 cmd.bss.ibss.header.id = WLAN_EID_IBSS_PARAMS; lbs_ibss_join_existing()
1836 cmd.bss.ibss.header.len = 2; lbs_ibss_join_existing()
1837 cmd.bss.ibss.atimwindow = 0; lbs_ibss_join_existing()
1838 cmd.bss.capability = cpu_to_le16(bss->capability & CAPINFO_MASK); lbs_ibss_join_existing()
1845 lbs_add_rates(cmd.bss.rates); lbs_ibss_join_existing()
1849 u8 *rates = cmd.bss.rates; lbs_ibss_join_existing()
1867 cmd.failtimeout = cpu_to_le16(MRVDRV_ASSOCIATION_TIME_OUT); lbs_ibss_join_existing()
1868 cmd.probedelay = cpu_to_le16(CMD_SCAN_PROBE_DELAY_TIME); lbs_ibss_join_existing()
1870 ret = lbs_cmd_with_response(priv, CMD_802_11_AD_HOC_JOIN, &cmd); lbs_ibss_join_existing()
1895 struct cmd_ds_802_11_ad_hoc_start cmd; lbs_ibss_start_new() local
1897 (struct cmd_ds_802_11_ad_hoc_result *) &cmd; lbs_ibss_start_new()
1936 memset(&cmd, 0, sizeof(cmd)); lbs_ibss_start_new()
1937 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_ibss_start_new()
1938 memcpy(cmd.ssid, params->ssid, params->ssid_len); lbs_ibss_start_new()
1939 cmd.bsstype = CMD_BSS_TYPE_IBSS; lbs_ibss_start_new()
1940 cmd.beaconperiod = cpu_to_le16(params->beacon_interval); lbs_ibss_start_new()
1941 cmd.ibss.header.id = WLAN_EID_IBSS_PARAMS; lbs_ibss_start_new()
1942 cmd.ibss.header.len = 2; lbs_ibss_start_new()
1943 cmd.ibss.atimwindow = 0; lbs_ibss_start_new()
1944 cmd.ds.header.id = WLAN_EID_DS_PARAMS; lbs_ibss_start_new()
1945 cmd.ds.header.len = 1; lbs_ibss_start_new()
1946 cmd.ds.channel = params->chandef.chan->hw_value; lbs_ibss_start_new()
1949 cmd.probedelay = cpu_to_le16(CMD_SCAN_PROBE_DELAY_TIME); lbs_ibss_start_new()
1952 cmd.capability = cpu_to_le16(capability); lbs_ibss_start_new()
1953 lbs_add_rates(cmd.rates); lbs_ibss_start_new()
1956 ret = lbs_cmd_with_response(priv, CMD_802_11_AD_HOC_START, &cmd); lbs_ibss_start_new()
2021 struct cmd_ds_802_11_ad_hoc_stop cmd; lbs_leave_ibss() local
2029 memset(&cmd, 0, sizeof(cmd)); lbs_leave_ibss()
2030 cmd.hdr.size = cpu_to_le16(sizeof(cmd)); lbs_leave_ibss()
2031 ret = lbs_cmd_with_response(priv, CMD_802_11_AD_HOC_STOP, &cmd); lbs_leave_ibss()
/linux-4.1.27/include/trace/events/
H A Dscsi.h203 TP_PROTO(struct scsi_cmnd *cmd),
205 TP_ARGS(cmd),
217 __dynamic_array(unsigned char, cmnd, cmd->cmd_len)
221 __entry->host_no = cmd->device->host->host_no;
222 __entry->channel = cmd->device->channel;
223 __entry->id = cmd->device->id;
224 __entry->lun = cmd->device->lun;
225 __entry->opcode = cmd->cmnd[0];
226 __entry->cmd_len = cmd->cmd_len;
227 __entry->data_sglen = scsi_sg_count(cmd);
228 __entry->prot_sglen = scsi_prot_sg_count(cmd);
229 __entry->prot_op = scsi_get_prot_op(cmd);
230 memcpy(__get_dynamic_array(cmnd), cmd->cmnd, cmd->cmd_len);
245 TP_PROTO(struct scsi_cmnd *cmd, int rtn),
247 TP_ARGS(cmd, rtn),
260 __dynamic_array(unsigned char, cmnd, cmd->cmd_len)
264 __entry->host_no = cmd->device->host->host_no;
265 __entry->channel = cmd->device->channel;
266 __entry->id = cmd->device->id;
267 __entry->lun = cmd->device->lun;
269 __entry->opcode = cmd->cmnd[0];
270 __entry->cmd_len = cmd->cmd_len;
271 __entry->data_sglen = scsi_sg_count(cmd);
272 __entry->prot_sglen = scsi_prot_sg_count(cmd);
273 __entry->prot_op = scsi_get_prot_op(cmd);
274 memcpy(__get_dynamic_array(cmnd), cmd->cmnd, cmd->cmd_len);
290 TP_PROTO(struct scsi_cmnd *cmd),
292 TP_ARGS(cmd),
305 __dynamic_array(unsigned char, cmnd, cmd->cmd_len)
309 __entry->host_no = cmd->device->host->host_no;
310 __entry->channel = cmd->device->channel;
311 __entry->id = cmd->device->id;
312 __entry->lun = cmd->device->lun;
313 __entry->result = cmd->result;
314 __entry->opcode = cmd->cmnd[0];
315 __entry->cmd_len = cmd->cmd_len;
316 __entry->data_sglen = scsi_sg_count(cmd);
317 __entry->prot_sglen = scsi_prot_sg_count(cmd);
318 __entry->prot_op = scsi_get_prot_op(cmd);
319 memcpy(__get_dynamic_array(cmnd), cmd->cmnd, cmd->cmd_len);
338 TP_PROTO(struct scsi_cmnd *cmd),
339 TP_ARGS(cmd));
342 TP_PROTO(struct scsi_cmnd *cmd),
343 TP_ARGS(cmd));
H A Dtarget.h133 TP_PROTO(struct se_cmd *cmd),
135 TP_ARGS(cmd),
143 __string( initiator, cmd->se_sess->se_node_acl->initiatorname )
147 __entry->unpacked_lun = cmd->orig_fe_lun;
148 __entry->opcode = cmd->t_task_cdb[0];
149 __entry->data_length = cmd->data_length;
150 __entry->task_attribute = cmd->sam_task_attr;
151 memcpy(__entry->cdb, cmd->t_task_cdb, TCM_MAX_COMMAND_SIZE);
152 __assign_str(initiator, cmd->se_sess->se_node_acl->initiatorname);
168 TP_PROTO(struct se_cmd *cmd),
170 TP_ARGS(cmd),
181 __string(initiator, cmd->se_sess->se_node_acl->initiatorname)
185 __entry->unpacked_lun = cmd->orig_fe_lun;
186 __entry->opcode = cmd->t_task_cdb[0];
187 __entry->data_length = cmd->data_length;
188 __entry->task_attribute = cmd->sam_task_attr;
189 __entry->scsi_status = cmd->scsi_status;
190 __entry->sense_length = cmd->scsi_status == SAM_STAT_CHECK_CONDITION ?
191 min(18, ((u8 *) cmd->sense_buffer)[SPC_ADD_SENSE_LEN_OFFSET] + 8) : 0;
192 memcpy(__entry->cdb, cmd->t_task_cdb, TCM_MAX_COMMAND_SIZE);
193 memcpy(__entry->sense_data, cmd->sense_buffer, __entry->sense_length);
194 __assign_str(initiator, cmd->se_sess->se_node_acl->initiatorname);
/linux-4.1.27/drivers/net/ethernet/qlogic/netxen/
H A Dnetxen_nic_ctx.c49 netxen_issue_cmd(struct netxen_adapter *adapter, struct netxen_cmd_args *cmd) netxen_issue_cmd() argument
63 NXWR32(adapter, NX_ARG1_CRB_OFFSET, cmd->req.arg1); netxen_issue_cmd()
65 NXWR32(adapter, NX_ARG2_CRB_OFFSET, cmd->req.arg2); netxen_issue_cmd()
67 NXWR32(adapter, NX_ARG3_CRB_OFFSET, cmd->req.arg3); netxen_issue_cmd()
69 NXWR32(adapter, NX_CDRP_CRB_OFFSET, NX_CDRP_FORM_CMD(cmd->req.cmd)); netxen_issue_cmd()
84 cmd->rsp.cmd = NX_RCODE_SUCCESS; netxen_issue_cmd()
85 if (cmd->rsp.arg2) netxen_issue_cmd()
86 cmd->rsp.arg2 = NXRD32(adapter, NX_ARG2_CRB_OFFSET); netxen_issue_cmd()
87 if (cmd->rsp.arg3) netxen_issue_cmd()
88 cmd->rsp.arg3 = NXRD32(adapter, NX_ARG3_CRB_OFFSET); netxen_issue_cmd()
91 if (cmd->rsp.arg1) netxen_issue_cmd()
92 cmd->rsp.arg1 = NXRD32(adapter, NX_ARG1_CRB_OFFSET); netxen_issue_cmd()
102 struct netxen_cmd_args cmd; netxen_get_minidump_template_size() local
103 memset(&cmd, 0, sizeof(cmd)); netxen_get_minidump_template_size()
104 cmd.req.cmd = NX_CDRP_CMD_TEMP_SIZE; netxen_get_minidump_template_size()
105 memset(&cmd.rsp, 1, sizeof(struct _cdrp_cmd)); netxen_get_minidump_template_size()
106 netxen_issue_cmd(adapter, &cmd); netxen_get_minidump_template_size()
107 if (cmd.rsp.cmd != NX_RCODE_SUCCESS) { netxen_get_minidump_template_size()
109 "Can't get template size %d\n", cmd.rsp.cmd); netxen_get_minidump_template_size()
112 adapter->mdump.md_template_size = cmd.rsp.arg2; netxen_get_minidump_template_size()
113 adapter->mdump.md_template_ver = cmd.rsp.arg3; netxen_get_minidump_template_size()
123 struct netxen_cmd_args cmd; netxen_get_minidump_template() local
138 memset(&cmd, 0, sizeof(cmd)); netxen_get_minidump_template()
139 memset(&cmd.rsp, 1, sizeof(struct _cdrp_cmd)); netxen_get_minidump_template()
140 cmd.req.cmd = NX_CDRP_CMD_GET_TEMP_HDR; netxen_get_minidump_template()
141 cmd.req.arg1 = LSD(md_template_addr); netxen_get_minidump_template()
142 cmd.req.arg2 = MSD(md_template_addr); netxen_get_minidump_template()
143 cmd.req.arg3 |= size; netxen_get_minidump_template()
144 netxen_issue_cmd(adapter, &cmd); netxen_get_minidump_template()
146 if ((cmd.rsp.cmd == NX_RCODE_SUCCESS) && (size == cmd.rsp.arg2)) { netxen_get_minidump_template()
151 cmd.rsp.cmd, size, cmd.rsp.arg2); netxen_get_minidump_template()
241 struct netxen_cmd_args cmd; nx_fw_cmd_set_mtu() local
243 memset(&cmd, 0, sizeof(cmd)); nx_fw_cmd_set_mtu()
244 cmd.req.cmd = NX_CDRP_CMD_SET_MTU; nx_fw_cmd_set_mtu()
245 cmd.req.arg1 = recv_ctx->context_id; nx_fw_cmd_set_mtu()
246 cmd.req.arg2 = mtu; nx_fw_cmd_set_mtu()
247 cmd.req.arg3 = 0; nx_fw_cmd_set_mtu()
250 netxen_issue_cmd(adapter, &cmd); nx_fw_cmd_set_mtu()
262 struct netxen_cmd_args cmd; nx_fw_cmd_set_gbe_port() local
264 memset(&cmd, 0, sizeof(cmd)); nx_fw_cmd_set_gbe_port()
265 cmd.req.cmd = NX_CDRP_CMD_CONFIG_GBE_PORT; nx_fw_cmd_set_gbe_port()
266 cmd.req.arg1 = speed; nx_fw_cmd_set_gbe_port()
267 cmd.req.arg2 = duplex; nx_fw_cmd_set_gbe_port()
268 cmd.req.arg3 = autoneg; nx_fw_cmd_set_gbe_port()
269 return netxen_issue_cmd(adapter, &cmd); nx_fw_cmd_set_gbe_port()
284 struct netxen_cmd_args cmd; nx_fw_cmd_create_rx_ctx() local
367 memset(&cmd, 0, sizeof(cmd)); nx_fw_cmd_create_rx_ctx()
368 cmd.req.arg1 = (u32)(phys_addr >> 32); nx_fw_cmd_create_rx_ctx()
369 cmd.req.arg2 = (u32)(phys_addr & 0xffffffff); nx_fw_cmd_create_rx_ctx()
370 cmd.req.arg3 = rq_size; nx_fw_cmd_create_rx_ctx()
371 cmd.req.cmd = NX_CDRP_CMD_CREATE_RX_CTX; nx_fw_cmd_create_rx_ctx()
372 err = netxen_issue_cmd(adapter, &cmd); nx_fw_cmd_create_rx_ctx()
421 struct netxen_cmd_args cmd; nx_fw_cmd_destroy_rx_ctx() local
423 memset(&cmd, 0, sizeof(cmd)); nx_fw_cmd_destroy_rx_ctx()
424 cmd.req.arg1 = recv_ctx->context_id; nx_fw_cmd_destroy_rx_ctx()
425 cmd.req.arg2 = NX_DESTROY_CTX_RESET; nx_fw_cmd_destroy_rx_ctx()
426 cmd.req.arg3 = 0; nx_fw_cmd_destroy_rx_ctx()
427 cmd.req.cmd = NX_CDRP_CMD_DESTROY_RX_CTX; nx_fw_cmd_destroy_rx_ctx()
429 if (netxen_issue_cmd(adapter, &cmd)) { nx_fw_cmd_destroy_rx_ctx()
450 struct netxen_cmd_args cmd; nx_fw_cmd_create_tx_ctx() local
494 memset(&cmd, 0, sizeof(cmd)); nx_fw_cmd_create_tx_ctx()
495 cmd.req.arg1 = (u32)(phys_addr >> 32); nx_fw_cmd_create_tx_ctx()
496 cmd.req.arg2 = ((u32)phys_addr & 0xffffffff); nx_fw_cmd_create_tx_ctx()
497 cmd.req.arg3 = rq_size; nx_fw_cmd_create_tx_ctx()
498 cmd.req.cmd = NX_CDRP_CMD_CREATE_TX_CTX; nx_fw_cmd_create_tx_ctx()
499 err = netxen_issue_cmd(adapter, &cmd); nx_fw_cmd_create_tx_ctx()
528 struct netxen_cmd_args cmd; nx_fw_cmd_destroy_tx_ctx() local
530 memset(&cmd, 0, sizeof(cmd)); nx_fw_cmd_destroy_tx_ctx()
531 cmd.req.arg1 = adapter->tx_context_id; nx_fw_cmd_destroy_tx_ctx()
532 cmd.req.arg2 = NX_DESTROY_CTX_RESET; nx_fw_cmd_destroy_tx_ctx()
533 cmd.req.arg3 = 0; nx_fw_cmd_destroy_tx_ctx()
534 cmd.req.cmd = NX_CDRP_CMD_DESTROY_TX_CTX; nx_fw_cmd_destroy_tx_ctx()
535 if (netxen_issue_cmd(adapter, &cmd)) { nx_fw_cmd_destroy_tx_ctx()
546 struct netxen_cmd_args cmd; nx_fw_cmd_query_phy() local
548 memset(&cmd, 0, sizeof(cmd)); nx_fw_cmd_query_phy()
549 cmd.req.arg1 = reg; nx_fw_cmd_query_phy()
550 cmd.req.arg2 = 0; nx_fw_cmd_query_phy()
551 cmd.req.arg3 = 0; nx_fw_cmd_query_phy()
552 cmd.req.cmd = NX_CDRP_CMD_READ_PHY; nx_fw_cmd_query_phy()
553 cmd.rsp.arg1 = 1; nx_fw_cmd_query_phy()
554 rcode = netxen_issue_cmd(adapter, &cmd); nx_fw_cmd_query_phy()
561 *val = cmd.rsp.arg1; nx_fw_cmd_query_phy()
569 struct netxen_cmd_args cmd; nx_fw_cmd_set_phy() local
571 memset(&cmd, 0, sizeof(cmd)); nx_fw_cmd_set_phy()
572 cmd.req.arg1 = reg; nx_fw_cmd_set_phy()
573 cmd.req.arg2 = val; nx_fw_cmd_set_phy()
574 cmd.req.arg3 = 0; nx_fw_cmd_set_phy()
575 cmd.req.cmd = NX_CDRP_CMD_WRITE_PHY; nx_fw_cmd_set_phy()
576 rcode = netxen_issue_cmd(adapter, &cmd); nx_fw_cmd_set_phy()
788 /* cmd desc ring */ netxen_alloc_hw_resources()
/linux-4.1.27/drivers/net/ethernet/apm/xgene/
H A Dxgene_enet_ethtool.c57 static int xgene_get_settings(struct net_device *ndev, struct ethtool_cmd *cmd) xgene_get_settings() argument
66 return phy_ethtool_gset(phydev, cmd); xgene_get_settings()
68 cmd->supported = SUPPORTED_1000baseT_Full | xgene_get_settings()
70 cmd->advertising = cmd->supported; xgene_get_settings()
71 ethtool_cmd_speed_set(cmd, SPEED_1000); xgene_get_settings()
72 cmd->duplex = DUPLEX_FULL; xgene_get_settings()
73 cmd->port = PORT_MII; xgene_get_settings()
74 cmd->transceiver = XCVR_INTERNAL; xgene_get_settings()
75 cmd->autoneg = AUTONEG_ENABLE; xgene_get_settings()
77 cmd->supported = SUPPORTED_10000baseT_Full | SUPPORTED_FIBRE; xgene_get_settings()
78 cmd->advertising = cmd->supported; xgene_get_settings()
79 ethtool_cmd_speed_set(cmd, SPEED_10000); xgene_get_settings()
80 cmd->duplex = DUPLEX_FULL; xgene_get_settings()
81 cmd->port = PORT_FIBRE; xgene_get_settings()
82 cmd->transceiver = XCVR_INTERNAL; xgene_get_settings()
83 cmd->autoneg = AUTONEG_DISABLE; xgene_get_settings()
89 static int xgene_set_settings(struct net_device *ndev, struct ethtool_cmd *cmd) xgene_set_settings() argument
98 return phy_ethtool_sset(phydev, cmd); xgene_set_settings()
/linux-4.1.27/drivers/net/wireless/ath/ath10k/
H A Dbmi.c32 struct bmi_cmd cmd; ath10k_bmi_done() local
33 u32 cmdlen = sizeof(cmd.id) + sizeof(cmd.done); ath10k_bmi_done()
44 cmd.id = __cpu_to_le32(BMI_DONE); ath10k_bmi_done()
46 ret = ath10k_hif_exchange_bmi_msg(ar, &cmd, cmdlen, NULL, NULL); ath10k_bmi_done()
58 struct bmi_cmd cmd; ath10k_bmi_get_target_info() local
60 u32 cmdlen = sizeof(cmd.id) + sizeof(cmd.get_target_info); ath10k_bmi_get_target_info()
71 cmd.id = __cpu_to_le32(BMI_GET_TARGET_INFO); ath10k_bmi_get_target_info()
73 ret = ath10k_hif_exchange_bmi_msg(ar, &cmd, cmdlen, &resp, &resplen); ath10k_bmi_get_target_info()
94 struct bmi_cmd cmd; ath10k_bmi_read_memory() local
96 u32 cmdlen = sizeof(cmd.id) + sizeof(cmd.read_mem); ath10k_bmi_read_memory()
111 cmd.id = __cpu_to_le32(BMI_READ_MEMORY); ath10k_bmi_read_memory()
112 cmd.read_mem.addr = __cpu_to_le32(address); ath10k_bmi_read_memory()
113 cmd.read_mem.len = __cpu_to_le32(rxlen); ath10k_bmi_read_memory()
115 ret = ath10k_hif_exchange_bmi_msg(ar, &cmd, cmdlen, ath10k_bmi_read_memory()
135 struct bmi_cmd cmd; ath10k_bmi_write_memory() local
136 u32 hdrlen = sizeof(cmd.id) + sizeof(cmd.write_mem); ath10k_bmi_write_memory()
152 memcpy(cmd.write_mem.payload, buffer, txlen); ath10k_bmi_write_memory()
155 cmd.id = __cpu_to_le32(BMI_WRITE_MEMORY); ath10k_bmi_write_memory()
156 cmd.write_mem.addr = __cpu_to_le32(address); ath10k_bmi_write_memory()
157 cmd.write_mem.len = __cpu_to_le32(txlen); ath10k_bmi_write_memory()
159 ret = ath10k_hif_exchange_bmi_msg(ar, &cmd, hdrlen + txlen, ath10k_bmi_write_memory()
180 struct bmi_cmd cmd; ath10k_bmi_execute() local
182 u32 cmdlen = sizeof(cmd.id) + sizeof(cmd.execute); ath10k_bmi_execute()
194 cmd.id = __cpu_to_le32(BMI_EXECUTE); ath10k_bmi_execute()
195 cmd.execute.addr = __cpu_to_le32(address); ath10k_bmi_execute()
196 cmd.execute.param = __cpu_to_le32(param); ath10k_bmi_execute()
198 ret = ath10k_hif_exchange_bmi_msg(ar, &cmd, cmdlen, &resp, &resplen); ath10k_bmi_execute()
219 struct bmi_cmd cmd; ath10k_bmi_lz_data() local
220 u32 hdrlen = sizeof(cmd.id) + sizeof(cmd.lz_data); ath10k_bmi_lz_data()
237 cmd.id = __cpu_to_le32(BMI_LZ_DATA); ath10k_bmi_lz_data()
238 cmd.lz_data.len = __cpu_to_le32(txlen); ath10k_bmi_lz_data()
239 memcpy(cmd.lz_data.payload, buffer, txlen); ath10k_bmi_lz_data()
241 ret = ath10k_hif_exchange_bmi_msg(ar, &cmd, hdrlen + txlen, ath10k_bmi_lz_data()
257 struct bmi_cmd cmd; ath10k_bmi_lz_stream_start() local
258 u32 cmdlen = sizeof(cmd.id) + sizeof(cmd.lz_start); ath10k_bmi_lz_stream_start()
269 cmd.id = __cpu_to_le32(BMI_LZ_STREAM_START); ath10k_bmi_lz_stream_start()
270 cmd.lz_start.addr = __cpu_to_le32(address); ath10k_bmi_lz_stream_start()
272 ret = ath10k_hif_exchange_bmi_msg(ar, &cmd, cmdlen, NULL, NULL); ath10k_bmi_lz_stream_start()
H A Dwmi-tlv.c1018 struct wmi_tlv_pdev_suspend *cmd; ath10k_wmi_tlv_op_gen_pdev_suspend() local
1022 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_pdev_suspend()
1028 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_pdev_suspend()
1029 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_pdev_suspend()
1030 cmd->opt = __cpu_to_le32(opt); ath10k_wmi_tlv_op_gen_pdev_suspend()
1039 struct wmi_tlv_resume_cmd *cmd; ath10k_wmi_tlv_op_gen_pdev_resume() local
1043 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_pdev_resume()
1049 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_pdev_resume()
1050 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_pdev_resume()
1051 cmd->reserved = __cpu_to_le32(0); ath10k_wmi_tlv_op_gen_pdev_resume()
1063 struct wmi_tlv_pdev_set_rd_cmd *cmd; ath10k_wmi_tlv_op_gen_pdev_set_rd() local
1067 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_pdev_set_rd()
1073 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_pdev_set_rd()
1074 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_pdev_set_rd()
1075 cmd->regd = __cpu_to_le32(rd); ath10k_wmi_tlv_op_gen_pdev_set_rd()
1076 cmd->regd_2ghz = __cpu_to_le32(rd2g); ath10k_wmi_tlv_op_gen_pdev_set_rd()
1077 cmd->regd_5ghz = __cpu_to_le32(rd5g); ath10k_wmi_tlv_op_gen_pdev_set_rd()
1078 cmd->conform_limit_2ghz = __cpu_to_le32(rd2g); ath10k_wmi_tlv_op_gen_pdev_set_rd()
1079 cmd->conform_limit_5ghz = __cpu_to_le32(rd5g); ath10k_wmi_tlv_op_gen_pdev_set_rd()
1089 struct wmi_tlv_pdev_set_param_cmd *cmd; ath10k_wmi_tlv_op_gen_pdev_set_param() local
1093 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_pdev_set_param()
1099 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_pdev_set_param()
1100 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_pdev_set_param()
1101 cmd->param_id = __cpu_to_le32(param_id); ath10k_wmi_tlv_op_gen_pdev_set_param()
1102 cmd->param_value = __cpu_to_le32(param_value); ath10k_wmi_tlv_op_gen_pdev_set_param()
1112 struct wmi_tlv_init_cmd *cmd; ath10k_wmi_tlv_op_gen_init() local
1119 len = (sizeof(*tlv) + sizeof(*cmd)) + ath10k_wmi_tlv_op_gen_init()
1131 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_init()
1132 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_init()
1134 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_init()
1151 cmd->abi.abi_ver0 = __cpu_to_le32(WMI_TLV_ABI_VER0); ath10k_wmi_tlv_op_gen_init()
1152 cmd->abi.abi_ver1 = __cpu_to_le32(WMI_TLV_ABI_VER1); ath10k_wmi_tlv_op_gen_init()
1153 cmd->abi.abi_ver_ns0 = __cpu_to_le32(WMI_TLV_ABI_VER_NS0); ath10k_wmi_tlv_op_gen_init()
1154 cmd->abi.abi_ver_ns1 = __cpu_to_le32(WMI_TLV_ABI_VER_NS1); ath10k_wmi_tlv_op_gen_init()
1155 cmd->abi.abi_ver_ns2 = __cpu_to_le32(WMI_TLV_ABI_VER_NS2); ath10k_wmi_tlv_op_gen_init()
1156 cmd->abi.abi_ver_ns3 = __cpu_to_le32(WMI_TLV_ABI_VER_NS3); ath10k_wmi_tlv_op_gen_init()
1157 cmd->num_host_mem_chunks = __cpu_to_le32(ar->wmi.num_mem_chunks); ath10k_wmi_tlv_op_gen_init()
1216 struct wmi_tlv_start_scan_cmd *cmd; ath10k_wmi_tlv_op_gen_start_scan() local
1234 len = (sizeof(*tlv) + sizeof(*cmd)) + ath10k_wmi_tlv_op_gen_start_scan()
1247 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_start_scan()
1248 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_start_scan()
1250 ath10k_wmi_put_start_scan_common(&cmd->common, arg); ath10k_wmi_tlv_op_gen_start_scan()
1251 cmd->burst_duration_ms = __cpu_to_le32(0); ath10k_wmi_tlv_op_gen_start_scan()
1252 cmd->num_channels = __cpu_to_le32(arg->n_channels); ath10k_wmi_tlv_op_gen_start_scan()
1253 cmd->num_ssids = __cpu_to_le32(arg->n_ssids); ath10k_wmi_tlv_op_gen_start_scan()
1254 cmd->num_bssids = __cpu_to_le32(arg->n_bssids); ath10k_wmi_tlv_op_gen_start_scan()
1255 cmd->ie_len = __cpu_to_le32(arg->ie_len); ath10k_wmi_tlv_op_gen_start_scan()
1256 cmd->num_probes = __cpu_to_le32(3); ath10k_wmi_tlv_op_gen_start_scan()
1261 cmd->common.scan_ctrl_flags ^= __cpu_to_le32(WMI_SCAN_FILTER_PROBE_REQ); ath10k_wmi_tlv_op_gen_start_scan()
1264 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_start_scan()
1314 struct wmi_stop_scan_cmd *cmd; ath10k_wmi_tlv_op_gen_stop_scan() local
1325 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_stop_scan()
1337 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_stop_scan()
1338 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_stop_scan()
1339 cmd->req_type = __cpu_to_le32(arg->req_type); ath10k_wmi_tlv_op_gen_stop_scan()
1340 cmd->vdev_id = __cpu_to_le32(arg->u.vdev_id); ath10k_wmi_tlv_op_gen_stop_scan()
1341 cmd->scan_id = __cpu_to_le32(scan_id); ath10k_wmi_tlv_op_gen_stop_scan()
1342 cmd->scan_req_id = __cpu_to_le32(req_id); ath10k_wmi_tlv_op_gen_stop_scan()
1355 struct wmi_vdev_create_cmd *cmd; ath10k_wmi_tlv_op_gen_vdev_create() local
1359 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_create()
1365 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_create()
1366 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_vdev_create()
1367 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_vdev_create()
1368 cmd->vdev_type = __cpu_to_le32(vdev_type); ath10k_wmi_tlv_op_gen_vdev_create()
1369 cmd->vdev_subtype = __cpu_to_le32(vdev_subtype); ath10k_wmi_tlv_op_gen_vdev_create()
1370 ether_addr_copy(cmd->vdev_macaddr.addr, mac_addr); ath10k_wmi_tlv_op_gen_vdev_create()
1379 struct wmi_vdev_delete_cmd *cmd; ath10k_wmi_tlv_op_gen_vdev_delete() local
1383 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_delete()
1389 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_delete()
1390 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_vdev_delete()
1391 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_vdev_delete()
1402 struct wmi_tlv_vdev_start_cmd *cmd; ath10k_wmi_tlv_op_gen_vdev_start() local
1415 if (WARN_ON(arg->ssid_len > sizeof(cmd->ssid.ssid))) ath10k_wmi_tlv_op_gen_vdev_start()
1418 len = (sizeof(*tlv) + sizeof(*cmd)) + ath10k_wmi_tlv_op_gen_vdev_start()
1434 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_start()
1435 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_vdev_start()
1436 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); ath10k_wmi_tlv_op_gen_vdev_start()
1437 cmd->bcn_intval = __cpu_to_le32(arg->bcn_intval); ath10k_wmi_tlv_op_gen_vdev_start()
1438 cmd->dtim_period = __cpu_to_le32(arg->dtim_period); ath10k_wmi_tlv_op_gen_vdev_start()
1439 cmd->flags = __cpu_to_le32(flags); ath10k_wmi_tlv_op_gen_vdev_start()
1440 cmd->bcn_tx_rate = __cpu_to_le32(arg->bcn_tx_rate); ath10k_wmi_tlv_op_gen_vdev_start()
1441 cmd->bcn_tx_power = __cpu_to_le32(arg->bcn_tx_power); ath10k_wmi_tlv_op_gen_vdev_start()
1442 cmd->disable_hw_ack = __cpu_to_le32(arg->disable_hw_ack); ath10k_wmi_tlv_op_gen_vdev_start()
1445 cmd->ssid.ssid_len = __cpu_to_le32(arg->ssid_len); ath10k_wmi_tlv_op_gen_vdev_start()
1446 memcpy(cmd->ssid.ssid, arg->ssid, arg->ssid_len); ath10k_wmi_tlv_op_gen_vdev_start()
1450 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_vdev_start()
1480 struct wmi_vdev_stop_cmd *cmd; ath10k_wmi_tlv_op_gen_vdev_stop() local
1484 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_stop()
1490 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_stop()
1491 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_vdev_stop()
1492 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_vdev_stop()
1503 struct wmi_vdev_up_cmd *cmd; ath10k_wmi_tlv_op_gen_vdev_up() local
1507 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_up()
1513 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_up()
1514 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_vdev_up()
1515 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_vdev_up()
1516 cmd->vdev_assoc_id = __cpu_to_le32(aid); ath10k_wmi_tlv_op_gen_vdev_up()
1517 ether_addr_copy(cmd->vdev_bssid.addr, bssid); ath10k_wmi_tlv_op_gen_vdev_up()
1526 struct wmi_vdev_down_cmd *cmd; ath10k_wmi_tlv_op_gen_vdev_down() local
1530 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_down()
1536 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_down()
1537 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_vdev_down()
1538 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_vdev_down()
1548 struct wmi_vdev_set_param_cmd *cmd; ath10k_wmi_tlv_op_gen_vdev_set_param() local
1552 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_set_param()
1558 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_set_param()
1559 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_vdev_set_param()
1560 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_vdev_set_param()
1561 cmd->param_id = __cpu_to_le32(param_id); ath10k_wmi_tlv_op_gen_vdev_set_param()
1562 cmd->param_value = __cpu_to_le32(param_value); ath10k_wmi_tlv_op_gen_vdev_set_param()
1572 struct wmi_vdev_install_key_cmd *cmd; ath10k_wmi_tlv_op_gen_vdev_install_key() local
1583 len = sizeof(*tlv) + sizeof(*cmd) + ath10k_wmi_tlv_op_gen_vdev_install_key()
1592 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_install_key()
1593 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_vdev_install_key()
1594 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); ath10k_wmi_tlv_op_gen_vdev_install_key()
1595 cmd->key_idx = __cpu_to_le32(arg->key_idx); ath10k_wmi_tlv_op_gen_vdev_install_key()
1596 cmd->key_flags = __cpu_to_le32(arg->key_flags); ath10k_wmi_tlv_op_gen_vdev_install_key()
1597 cmd->key_cipher = __cpu_to_le32(arg->key_cipher); ath10k_wmi_tlv_op_gen_vdev_install_key()
1598 cmd->key_len = __cpu_to_le32(arg->key_len); ath10k_wmi_tlv_op_gen_vdev_install_key()
1599 cmd->key_txmic_len = __cpu_to_le32(arg->key_txmic_len); ath10k_wmi_tlv_op_gen_vdev_install_key()
1600 cmd->key_rxmic_len = __cpu_to_le32(arg->key_rxmic_len); ath10k_wmi_tlv_op_gen_vdev_install_key()
1603 ether_addr_copy(cmd->peer_macaddr.addr, arg->macaddr); ath10k_wmi_tlv_op_gen_vdev_install_key()
1606 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_vdev_install_key()
1652 struct wmi_sta_uapsd_auto_trig_cmd_fixed_param *cmd; ath10k_wmi_tlv_op_gen_vdev_sta_uapsd() local
1662 len = sizeof(*tlv) + sizeof(*cmd) + ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
1671 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
1672 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
1673 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
1674 cmd->num_ac = __cpu_to_le32(num_ac); ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
1675 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
1678 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
1712 struct wmi_tlv_vdev_set_wmm_cmd *cmd; ath10k_wmi_tlv_op_gen_vdev_wmm_conf() local
1718 len = sizeof(*tlv) + sizeof(*cmd); ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
1726 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
1727 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
1728 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
1730 ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[0].params, &arg->ac_be); ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
1731 ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[1].params, &arg->ac_bk); ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
1732 ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[2].params, &arg->ac_vi); ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
1733 ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[3].params, &arg->ac_vo); ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
1743 struct wmi_tlv_sta_keepalive_cmd *cmd; ath10k_wmi_tlv_op_gen_sta_keepalive() local
1750 len = sizeof(*tlv) + sizeof(*cmd) + ath10k_wmi_tlv_op_gen_sta_keepalive()
1759 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_sta_keepalive()
1760 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_sta_keepalive()
1761 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); ath10k_wmi_tlv_op_gen_sta_keepalive()
1762 cmd->enabled = __cpu_to_le32(arg->enabled); ath10k_wmi_tlv_op_gen_sta_keepalive()
1763 cmd->method = __cpu_to_le32(arg->method); ath10k_wmi_tlv_op_gen_sta_keepalive()
1764 cmd->interval = __cpu_to_le32(arg->interval); ath10k_wmi_tlv_op_gen_sta_keepalive()
1767 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_sta_keepalive()
1787 struct wmi_tlv_peer_create_cmd *cmd; ath10k_wmi_tlv_op_gen_peer_create() local
1791 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_peer_create()
1797 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_peer_create()
1798 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_peer_create()
1799 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_peer_create()
1800 cmd->peer_type = __cpu_to_le32(WMI_TLV_PEER_TYPE_DEFAULT); /* FIXME */ ath10k_wmi_tlv_op_gen_peer_create()
1801 ether_addr_copy(cmd->peer_addr.addr, peer_addr); ath10k_wmi_tlv_op_gen_peer_create()
1811 struct wmi_peer_delete_cmd *cmd; ath10k_wmi_tlv_op_gen_peer_delete() local
1815 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_peer_delete()
1821 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_peer_delete()
1822 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_peer_delete()
1823 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_peer_delete()
1824 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); ath10k_wmi_tlv_op_gen_peer_delete()
1834 struct wmi_peer_flush_tids_cmd *cmd; ath10k_wmi_tlv_op_gen_peer_flush() local
1838 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_peer_flush()
1844 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_peer_flush()
1845 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_peer_flush()
1846 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_peer_flush()
1847 cmd->peer_tid_bitmap = __cpu_to_le32(tid_bitmap); ath10k_wmi_tlv_op_gen_peer_flush()
1848 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); ath10k_wmi_tlv_op_gen_peer_flush()
1860 struct wmi_peer_set_param_cmd *cmd; ath10k_wmi_tlv_op_gen_peer_set_param() local
1864 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_peer_set_param()
1870 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_peer_set_param()
1871 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_peer_set_param()
1872 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_peer_set_param()
1873 cmd->param_id = __cpu_to_le32(param_id); ath10k_wmi_tlv_op_gen_peer_set_param()
1874 cmd->param_value = __cpu_to_le32(param_value); ath10k_wmi_tlv_op_gen_peer_set_param()
1875 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); ath10k_wmi_tlv_op_gen_peer_set_param()
1885 struct wmi_tlv_peer_assoc_cmd *cmd; ath10k_wmi_tlv_op_gen_peer_assoc() local
1902 len = (sizeof(*tlv) + sizeof(*cmd)) + ath10k_wmi_tlv_op_gen_peer_assoc()
1913 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_peer_assoc()
1914 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_peer_assoc()
1916 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); ath10k_wmi_tlv_op_gen_peer_assoc()
1917 cmd->new_assoc = __cpu_to_le32(arg->peer_reassoc ? 0 : 1); ath10k_wmi_tlv_op_gen_peer_assoc()
1918 cmd->assoc_id = __cpu_to_le32(arg->peer_aid); ath10k_wmi_tlv_op_gen_peer_assoc()
1919 cmd->flags = __cpu_to_le32(arg->peer_flags); ath10k_wmi_tlv_op_gen_peer_assoc()
1920 cmd->caps = __cpu_to_le32(arg->peer_caps); ath10k_wmi_tlv_op_gen_peer_assoc()
1921 cmd->listen_intval = __cpu_to_le32(arg->peer_listen_intval); ath10k_wmi_tlv_op_gen_peer_assoc()
1922 cmd->ht_caps = __cpu_to_le32(arg->peer_ht_caps); ath10k_wmi_tlv_op_gen_peer_assoc()
1923 cmd->max_mpdu = __cpu_to_le32(arg->peer_max_mpdu); ath10k_wmi_tlv_op_gen_peer_assoc()
1924 cmd->mpdu_density = __cpu_to_le32(arg->peer_mpdu_density); ath10k_wmi_tlv_op_gen_peer_assoc()
1925 cmd->rate_caps = __cpu_to_le32(arg->peer_rate_caps); ath10k_wmi_tlv_op_gen_peer_assoc()
1926 cmd->nss = __cpu_to_le32(arg->peer_num_spatial_streams); ath10k_wmi_tlv_op_gen_peer_assoc()
1927 cmd->vht_caps = __cpu_to_le32(arg->peer_vht_caps); ath10k_wmi_tlv_op_gen_peer_assoc()
1928 cmd->phy_mode = __cpu_to_le32(arg->peer_phymode); ath10k_wmi_tlv_op_gen_peer_assoc()
1929 cmd->num_legacy_rates = __cpu_to_le32(arg->peer_legacy_rates.num_rates); ath10k_wmi_tlv_op_gen_peer_assoc()
1930 cmd->num_ht_rates = __cpu_to_le32(arg->peer_ht_rates.num_rates); ath10k_wmi_tlv_op_gen_peer_assoc()
1931 ether_addr_copy(cmd->mac_addr.addr, arg->addr); ath10k_wmi_tlv_op_gen_peer_assoc()
1934 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_peer_assoc()
1975 struct wmi_sta_powersave_mode_cmd *cmd; ath10k_wmi_tlv_op_gen_set_psmode() local
1979 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_set_psmode()
1985 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_set_psmode()
1986 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_set_psmode()
1987 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_set_psmode()
1988 cmd->sta_ps_mode = __cpu_to_le32(psmode); ath10k_wmi_tlv_op_gen_set_psmode()
1999 struct wmi_sta_powersave_param_cmd *cmd; ath10k_wmi_tlv_op_gen_set_sta_ps() local
2003 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_set_sta_ps()
2009 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_set_sta_ps()
2010 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_set_sta_ps()
2011 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_set_sta_ps()
2012 cmd->param_id = __cpu_to_le32(param_id); ath10k_wmi_tlv_op_gen_set_sta_ps()
2013 cmd->param_value = __cpu_to_le32(param_value); ath10k_wmi_tlv_op_gen_set_sta_ps()
2023 struct wmi_ap_ps_peer_cmd *cmd; ath10k_wmi_tlv_op_gen_set_ap_ps() local
2030 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); ath10k_wmi_tlv_op_gen_set_ap_ps()
2036 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_set_ap_ps()
2037 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_set_ap_ps()
2038 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_set_ap_ps()
2039 cmd->param_id = __cpu_to_le32(param_id); ath10k_wmi_tlv_op_gen_set_ap_ps()
2040 cmd->param_value = __cpu_to_le32(value); ath10k_wmi_tlv_op_gen_set_ap_ps()
2041 ether_addr_copy(cmd->peer_macaddr.addr, mac); ath10k_wmi_tlv_op_gen_set_ap_ps()
2051 struct wmi_tlv_scan_chan_list_cmd *cmd; ath10k_wmi_tlv_op_gen_scan_chan_list() local
2061 len = (sizeof(*tlv) + sizeof(*cmd)) + ath10k_wmi_tlv_op_gen_scan_chan_list()
2071 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_scan_chan_list()
2072 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_scan_chan_list()
2073 cmd->num_scan_chans = __cpu_to_le32(arg->n_channels); ath10k_wmi_tlv_op_gen_scan_chan_list()
2076 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_scan_chan_list()
2111 struct wmi_bcn_tx_ref_cmd *cmd; ath10k_wmi_tlv_op_gen_beacon_dma() local
2117 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_beacon_dma()
2126 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_beacon_dma()
2127 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_beacon_dma()
2128 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_beacon_dma()
2129 cmd->data_len = __cpu_to_le32(bcn_len); ath10k_wmi_tlv_op_gen_beacon_dma()
2130 cmd->data_ptr = __cpu_to_le32(bcn_paddr); ath10k_wmi_tlv_op_gen_beacon_dma()
2131 cmd->msdu_id = 0; ath10k_wmi_tlv_op_gen_beacon_dma()
2132 cmd->frame_control = __cpu_to_le32(fc); ath10k_wmi_tlv_op_gen_beacon_dma()
2133 cmd->flags = 0; ath10k_wmi_tlv_op_gen_beacon_dma()
2136 cmd->flags |= __cpu_to_le32(WMI_BCN_TX_REF_FLAG_DTIM_ZERO); ath10k_wmi_tlv_op_gen_beacon_dma()
2139 cmd->flags |= __cpu_to_le32(WMI_BCN_TX_REF_FLAG_DELIVER_CAB); ath10k_wmi_tlv_op_gen_beacon_dma()
2149 struct wmi_tlv_pdev_set_wmm_cmd *cmd; ath10k_wmi_tlv_op_gen_pdev_set_wmm() local
2156 len = (sizeof(*tlv) + sizeof(*cmd)) + ath10k_wmi_tlv_op_gen_pdev_set_wmm()
2166 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_pdev_set_wmm()
2167 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_pdev_set_wmm()
2172 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_pdev_set_wmm()
2186 struct wmi_request_stats_cmd *cmd; ath10k_wmi_tlv_op_gen_request_stats() local
2190 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_request_stats()
2196 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_request_stats()
2197 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_request_stats()
2198 cmd->stats_id = __cpu_to_le32(stats_mask); ath10k_wmi_tlv_op_gen_request_stats()
2209 struct wmi_force_fw_hang_cmd *cmd; ath10k_wmi_tlv_op_gen_force_fw_hang() local
2213 skb = ath10k_wmi_alloc_skb(ar, sizeof(*tlv) + sizeof(*cmd)); ath10k_wmi_tlv_op_gen_force_fw_hang()
2219 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_force_fw_hang()
2220 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_force_fw_hang()
2221 cmd->type = __cpu_to_le32(type); ath10k_wmi_tlv_op_gen_force_fw_hang()
2222 cmd->delay_ms = __cpu_to_le32(delay_ms); ath10k_wmi_tlv_op_gen_force_fw_hang()
2231 struct wmi_tlv_dbglog_cmd *cmd; ath10k_wmi_tlv_op_gen_dbglog_cfg() local
2249 len = sizeof(*tlv) + sizeof(*cmd) + sizeof(*tlv) + bmap_len; ath10k_wmi_tlv_op_gen_dbglog_cfg()
2258 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_dbglog_cfg()
2259 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_dbglog_cfg()
2260 cmd->param = __cpu_to_le32(WMI_TLV_DBGLOG_PARAM_LOG_LEVEL); ath10k_wmi_tlv_op_gen_dbglog_cfg()
2261 cmd->value = __cpu_to_le32(value); ath10k_wmi_tlv_op_gen_dbglog_cfg()
2264 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_dbglog_cfg()
2282 struct wmi_tlv_pktlog_enable *cmd; ath10k_wmi_tlv_op_gen_pktlog_enable() local
2288 len = sizeof(*tlv) + sizeof(*cmd); ath10k_wmi_tlv_op_gen_pktlog_enable()
2296 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_pktlog_enable()
2297 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_pktlog_enable()
2298 cmd->filter = __cpu_to_le32(filter); ath10k_wmi_tlv_op_gen_pktlog_enable()
2301 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_pktlog_enable()
2311 struct wmi_tlv_pktlog_disable *cmd; ath10k_wmi_tlv_op_gen_pktlog_disable() local
2317 len = sizeof(*tlv) + sizeof(*cmd); ath10k_wmi_tlv_op_gen_pktlog_disable()
2325 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_pktlog_disable()
2326 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_pktlog_disable()
2329 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_pktlog_disable()
2341 struct wmi_tlv_bcn_tmpl_cmd *cmd; ath10k_wmi_tlv_op_gen_bcn_tmpl() local
2351 len = sizeof(*tlv) + sizeof(*cmd) + ath10k_wmi_tlv_op_gen_bcn_tmpl()
2361 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_bcn_tmpl()
2362 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_bcn_tmpl()
2363 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_bcn_tmpl()
2364 cmd->tim_ie_offset = __cpu_to_le32(tim_ie_offset); ath10k_wmi_tlv_op_gen_bcn_tmpl()
2365 cmd->buf_len = __cpu_to_le32(bcn->len); ath10k_wmi_tlv_op_gen_bcn_tmpl()
2368 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_bcn_tmpl()
2403 struct wmi_tlv_prb_tmpl_cmd *cmd; ath10k_wmi_tlv_op_gen_prb_tmpl() local
2410 len = sizeof(*tlv) + sizeof(*cmd) + ath10k_wmi_tlv_op_gen_prb_tmpl()
2420 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_prb_tmpl()
2421 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_prb_tmpl()
2422 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_prb_tmpl()
2423 cmd->buf_len = __cpu_to_le32(prb->len); ath10k_wmi_tlv_op_gen_prb_tmpl()
2426 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_prb_tmpl()
2452 struct wmi_tlv_p2p_go_bcn_ie *cmd; ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie() local
2458 len = sizeof(*tlv) + sizeof(*cmd) + ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
2467 tlv->len = __cpu_to_le16(sizeof(*cmd)); ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
2468 cmd = (void *)tlv->value; ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
2469 cmd->vdev_id = __cpu_to_le32(vdev_id); ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
2470 cmd->ie_len = __cpu_to_le32(p2p_ie[1] + 2); ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
2473 ptr += sizeof(*cmd); ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
2792 ar->wmi.cmd = &wmi_tlv_cmd_map; ath10k_wmi_tlv_attach()
/linux-4.1.27/drivers/infiniband/hw/ocrdma/
H A Docrdma_hw.c388 struct ocrdma_delete_q_req *cmd = dev->mbx_cmd; ocrdma_mbx_delete_q() local
403 memset(cmd, 0, sizeof(*cmd)); ocrdma_mbx_delete_q()
404 ocrdma_init_mch(&cmd->req, opcode, OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); ocrdma_mbx_delete_q()
405 cmd->id = q->id; ocrdma_mbx_delete_q()
408 cmd, sizeof(*cmd), NULL, NULL); ocrdma_mbx_delete_q()
417 struct ocrdma_create_eq_req *cmd = dev->mbx_cmd; ocrdma_mbx_create_eq() local
420 memset(cmd, 0, sizeof(*cmd)); ocrdma_mbx_create_eq()
421 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_EQ, OCRDMA_SUBSYS_COMMON, ocrdma_mbx_create_eq()
422 sizeof(*cmd)); ocrdma_mbx_create_eq()
424 cmd->req.rsvd_version = 2; ocrdma_mbx_create_eq()
425 cmd->num_pages = 4; ocrdma_mbx_create_eq()
426 cmd->valid = OCRDMA_CREATE_EQ_VALID; ocrdma_mbx_create_eq()
427 cmd->cnt = 4 << OCRDMA_CREATE_EQ_CNT_SHIFT; ocrdma_mbx_create_eq()
429 ocrdma_build_q_pages(&cmd->pa[0], cmd->num_pages, eq->q.dma, ocrdma_mbx_create_eq()
431 status = be_roce_mcc_cmd(dev->nic_info.netdev, cmd, sizeof(*cmd), NULL, ocrdma_mbx_create_eq()
508 struct ocrdma_create_cq_cmd *cmd = dev->mbx_cmd; ocrdma_mbx_mq_cq_create() local
512 memset(cmd, 0, sizeof(*cmd)); ocrdma_mbx_mq_cq_create()
513 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_CQ, ocrdma_mbx_mq_cq_create()
514 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); ocrdma_mbx_mq_cq_create()
516 cmd->req.rsvd_version = OCRDMA_CREATE_CQ_VER2; ocrdma_mbx_mq_cq_create()
517 cmd->pgsz_pgcnt = (cq->size / OCRDMA_MIN_Q_PAGE_SIZE) << ocrdma_mbx_mq_cq_create()
519 cmd->pgsz_pgcnt |= PAGES_4K_SPANNED(cq->va, cq->size); ocrdma_mbx_mq_cq_create()
521 cmd->ev_cnt_flags = OCRDMA_CREATE_CQ_DEF_FLAGS; ocrdma_mbx_mq_cq_create()
522 cmd->eqn = eq->id; ocrdma_mbx_mq_cq_create()
523 cmd->pdid_cqecnt = cq->size / sizeof(struct ocrdma_mcqe); ocrdma_mbx_mq_cq_create()
525 ocrdma_build_q_pages(&cmd->pa[0], cq->size / OCRDMA_MIN_Q_PAGE_SIZE, ocrdma_mbx_mq_cq_create()
528 cmd, sizeof(*cmd), NULL, NULL); ocrdma_mbx_mq_cq_create()
550 struct ocrdma_create_mq_req *cmd = dev->mbx_cmd; ocrdma_mbx_create_mq() local
554 memset(cmd, 0, sizeof(*cmd)); ocrdma_mbx_create_mq()
557 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_CREATE_MQ_EXT, ocrdma_mbx_create_mq()
558 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); ocrdma_mbx_create_mq()
559 cmd->req.rsvd_version = 1; ocrdma_mbx_create_mq()
560 cmd->cqid_pages = num_pages; ocrdma_mbx_create_mq()
561 cmd->cqid_pages |= (cq->id << OCRDMA_CREATE_MQ_CQ_ID_SHIFT); ocrdma_mbx_create_mq()
562 cmd->async_cqid_valid = OCRDMA_CREATE_MQ_ASYNC_CQ_VALID; ocrdma_mbx_create_mq()
564 cmd->async_event_bitmap = BIT(OCRDMA_ASYNC_GRP5_EVE_CODE); ocrdma_mbx_create_mq()
565 cmd->async_event_bitmap |= BIT(OCRDMA_ASYNC_RDMA_EVE_CODE); ocrdma_mbx_create_mq()
567 cmd->async_cqid_ringsize = cq->id; ocrdma_mbx_create_mq()
568 cmd->async_cqid_ringsize |= (ocrdma_encoded_q_len(mq->len) << ocrdma_mbx_create_mq()
570 cmd->valid = OCRDMA_CREATE_MQ_VALID; ocrdma_mbx_create_mq()
571 pa = &cmd->pa[0]; ocrdma_mbx_create_mq()
575 cmd, sizeof(*cmd), NULL, NULL); ocrdma_mbx_create_mq()
974 static void ocrdma_post_mqe(struct ocrdma_dev *dev, struct ocrdma_mqe *cmd) ocrdma_post_mqe() argument
981 cmd->hdr.tag_lo = dev->mq.sq.head; ocrdma_post_mqe()
982 ocrdma_copy_cpu_to_le32(mqe, cmd, sizeof(*mqe)); ocrdma_post_mqe()
1172 struct ocrdma_mqe *cmd; ocrdma_mbx_query_fw_ver() local
1175 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_GET_FW_VER, sizeof(*cmd)); ocrdma_mbx_query_fw_ver()
1176 if (!cmd) ocrdma_mbx_query_fw_ver()
1178 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], ocrdma_mbx_query_fw_ver()
1180 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); ocrdma_mbx_query_fw_ver()
1182 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_query_fw_ver()
1185 rsp = (struct ocrdma_fw_ver_rsp *)cmd; ocrdma_mbx_query_fw_ver()
1191 kfree(cmd); ocrdma_mbx_query_fw_ver()
1199 struct ocrdma_mqe *cmd; ocrdma_mbx_query_fw_config() local
1202 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_GET_FW_CONFIG, sizeof(*cmd)); ocrdma_mbx_query_fw_config()
1203 if (!cmd) ocrdma_mbx_query_fw_config()
1205 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], ocrdma_mbx_query_fw_config()
1207 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); ocrdma_mbx_query_fw_config()
1208 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_query_fw_config()
1211 rsp = (struct ocrdma_fw_conf_rsp *)cmd; ocrdma_mbx_query_fw_config()
1214 kfree(cmd); ocrdma_mbx_query_fw_config()
1313 struct ocrdma_mqe *cmd; ocrdma_mbx_query_dev() local
1315 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_CONFIG, sizeof(*cmd)); ocrdma_mbx_query_dev()
1316 if (!cmd) ocrdma_mbx_query_dev()
1318 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_query_dev()
1321 rsp = (struct ocrdma_mbx_query_config *)cmd; ocrdma_mbx_query_dev()
1324 kfree(cmd); ocrdma_mbx_query_dev()
1332 struct ocrdma_mqe *cmd; ocrdma_mbx_get_link_speed() local
1334 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_NTWK_LINK_CONFIG_V1, ocrdma_mbx_get_link_speed()
1335 sizeof(*cmd)); ocrdma_mbx_get_link_speed()
1336 if (!cmd) ocrdma_mbx_get_link_speed()
1338 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], ocrdma_mbx_get_link_speed()
1340 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); ocrdma_mbx_get_link_speed()
1342 ((struct ocrdma_mbx_hdr *)cmd->u.cmd)->rsvd_version = 0x1; ocrdma_mbx_get_link_speed()
1344 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_get_link_speed()
1348 rsp = (struct ocrdma_get_link_speed_rsp *)cmd; ocrdma_mbx_get_link_speed()
1353 kfree(cmd); ocrdma_mbx_get_link_speed()
1360 struct ocrdma_mqe *cmd; ocrdma_mbx_get_phy_info() local
1363 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_PHY_DETAILS, sizeof(*cmd)); ocrdma_mbx_get_phy_info()
1364 if (!cmd) ocrdma_mbx_get_phy_info()
1367 ocrdma_init_mch((struct ocrdma_mbx_hdr *)&cmd->u.cmd[0], ocrdma_mbx_get_phy_info()
1369 sizeof(*cmd)); ocrdma_mbx_get_phy_info()
1371 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_get_phy_info()
1375 rsp = (struct ocrdma_get_phy_info_rsp *)cmd; ocrdma_mbx_get_phy_info()
1387 kfree(cmd); ocrdma_mbx_get_phy_info()
1394 struct ocrdma_alloc_pd *cmd; ocrdma_mbx_alloc_pd() local
1397 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD, sizeof(*cmd)); ocrdma_mbx_alloc_pd()
1398 if (!cmd) ocrdma_mbx_alloc_pd()
1401 cmd->enable_dpp_rsvd |= OCRDMA_ALLOC_PD_ENABLE_DPP; ocrdma_mbx_alloc_pd()
1402 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_alloc_pd()
1405 rsp = (struct ocrdma_alloc_pd_rsp *)cmd; ocrdma_mbx_alloc_pd()
1416 kfree(cmd); ocrdma_mbx_alloc_pd()
1423 struct ocrdma_dealloc_pd *cmd; ocrdma_mbx_dealloc_pd() local
1425 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD, sizeof(*cmd)); ocrdma_mbx_dealloc_pd()
1426 if (!cmd) ocrdma_mbx_dealloc_pd()
1428 cmd->id = pd->id; ocrdma_mbx_dealloc_pd()
1429 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_dealloc_pd()
1430 kfree(cmd); ocrdma_mbx_dealloc_pd()
1439 struct ocrdma_alloc_pd_range *cmd; ocrdma_mbx_alloc_pd_range() local
1444 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD_RANGE, ocrdma_mbx_alloc_pd_range()
1445 sizeof(*cmd)); ocrdma_mbx_alloc_pd_range()
1446 if (!cmd) ocrdma_mbx_alloc_pd_range()
1448 cmd->pd_count = dev->attr.max_dpp_pds; ocrdma_mbx_alloc_pd_range()
1449 cmd->enable_dpp_rsvd |= OCRDMA_ALLOC_PD_ENABLE_DPP; ocrdma_mbx_alloc_pd_range()
1450 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_alloc_pd_range()
1451 rsp = (struct ocrdma_alloc_pd_range_rsp *)cmd; ocrdma_mbx_alloc_pd_range()
1465 kfree(cmd); ocrdma_mbx_alloc_pd_range()
1468 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_PD_RANGE, sizeof(*cmd)); ocrdma_mbx_alloc_pd_range()
1469 if (!cmd) ocrdma_mbx_alloc_pd_range()
1472 cmd->pd_count = dev->attr.max_pd - dev->attr.max_dpp_pds; ocrdma_mbx_alloc_pd_range()
1473 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_alloc_pd_range()
1474 rsp = (struct ocrdma_alloc_pd_range_rsp *)cmd; ocrdma_mbx_alloc_pd_range()
1483 kfree(cmd); ocrdma_mbx_alloc_pd_range()
1495 struct ocrdma_dealloc_pd_range *cmd; ocrdma_mbx_dealloc_pd_range() local
1498 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD_RANGE, sizeof(*cmd)); ocrdma_mbx_dealloc_pd_range()
1499 if (!cmd) ocrdma_mbx_dealloc_pd_range()
1503 cmd->start_pd_id = dev->pd_mgr->pd_norm_start; ocrdma_mbx_dealloc_pd_range()
1504 cmd->pd_count = dev->pd_mgr->max_normal_pd; ocrdma_mbx_dealloc_pd_range()
1505 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_dealloc_pd_range()
1509 kfree(cmd); ocrdma_mbx_dealloc_pd_range()
1511 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_PD_RANGE, ocrdma_mbx_dealloc_pd_range()
1512 sizeof(*cmd)); ocrdma_mbx_dealloc_pd_range()
1513 if (!cmd) ocrdma_mbx_dealloc_pd_range()
1516 cmd->start_pd_id = dev->pd_mgr->pd_dpp_start; ocrdma_mbx_dealloc_pd_range()
1517 cmd->pd_count = dev->pd_mgr->max_dpp_pd; ocrdma_mbx_dealloc_pd_range()
1518 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_dealloc_pd_range()
1521 kfree(cmd); ocrdma_mbx_dealloc_pd_range()
1578 struct ocrdma_create_ah_tbl *cmd; ocrdma_mbx_create_ah_tbl() local
1584 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_AH_TBL, sizeof(*cmd)); ocrdma_mbx_create_ah_tbl()
1585 if (!cmd) ocrdma_mbx_create_ah_tbl()
1592 cmd->ah_conf = (OCRDMA_AH_TBL_PAGES << ocrdma_mbx_create_ah_tbl()
1601 cmd->ah_conf |= (i << OCRDMA_CREATE_AH_PAGE_SIZE_SHIFT) & ocrdma_mbx_create_ah_tbl()
1605 cmd->ah_conf |= (sizeof(struct ocrdma_av) << ocrdma_mbx_create_ah_tbl()
1629 cmd->tbl_addr[0].lo = (u32)(dev->av_tbl.pbl.pa & 0xFFFFFFFF); ocrdma_mbx_create_ah_tbl()
1630 cmd->tbl_addr[0].hi = (u32)upper_32_bits(dev->av_tbl.pbl.pa); ocrdma_mbx_create_ah_tbl()
1631 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_create_ah_tbl()
1634 rsp = (struct ocrdma_create_ah_tbl_rsp *)cmd; ocrdma_mbx_create_ah_tbl()
1636 kfree(cmd); ocrdma_mbx_create_ah_tbl()
1649 kfree(cmd); ocrdma_mbx_create_ah_tbl()
1655 struct ocrdma_delete_ah_tbl *cmd; ocrdma_mbx_delete_ah_tbl() local
1661 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_AH_TBL, sizeof(*cmd)); ocrdma_mbx_delete_ah_tbl()
1662 if (!cmd) ocrdma_mbx_delete_ah_tbl()
1664 cmd->ahid = dev->av_tbl.ahid; ocrdma_mbx_delete_ah_tbl()
1666 ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_delete_ah_tbl()
1672 kfree(cmd); ocrdma_mbx_delete_ah_tbl()
1719 struct ocrdma_create_cq *cmd; ocrdma_mbx_create_cq() local
1745 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_CQ, sizeof(*cmd)); ocrdma_mbx_create_cq()
1746 if (!cmd) ocrdma_mbx_create_cq()
1748 ocrdma_init_mch(&cmd->cmd.req, OCRDMA_CMD_CREATE_CQ, ocrdma_mbx_create_cq()
1749 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); ocrdma_mbx_create_cq()
1757 cmd->cmd.pgsz_pgcnt = (page_size / OCRDMA_MIN_Q_PAGE_SIZE) << ocrdma_mbx_create_cq()
1759 cmd->cmd.pgsz_pgcnt |= hw_pages; ocrdma_mbx_create_cq()
1760 cmd->cmd.ev_cnt_flags = OCRDMA_CREATE_CQ_DEF_FLAGS; ocrdma_mbx_create_cq()
1763 cmd->cmd.req.rsvd_version = OCRDMA_CREATE_CQ_VER3; ocrdma_mbx_create_cq()
1768 cmd->cmd.ev_cnt_flags |= (0x3 << OCRDMA_CREATE_CQ_CNT_SHIFT); ocrdma_mbx_create_cq()
1784 cmd->cmd.ev_cnt_flags |= (count << OCRDMA_CREATE_CQ_CNT_SHIFT); ocrdma_mbx_create_cq()
1787 cmd->cmd.eqn = cq->eqn; ocrdma_mbx_create_cq()
1790 cmd->cmd.pgsz_pgcnt |= OCRDMA_CREATE_CQ_DPP << ocrdma_mbx_create_cq()
1793 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size); ocrdma_mbx_create_cq()
1795 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size) - 1; ocrdma_mbx_create_cq()
1796 cmd->cmd.ev_cnt_flags |= OCRDMA_CREATE_CQ_FLAGS_AUTO_VALID; ocrdma_mbx_create_cq()
1801 cmd->cmd.pdid_cqecnt |= (pd_id << ocrdma_mbx_create_cq()
1803 ocrdma_build_q_pages(&cmd->cmd.pa[0], hw_pages, cq->pa, page_size); ocrdma_mbx_create_cq()
1804 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_create_cq()
1808 rsp = (struct ocrdma_create_cq_rsp *)cmd; ocrdma_mbx_create_cq()
1810 kfree(cmd); ocrdma_mbx_create_cq()
1816 kfree(cmd); ocrdma_mbx_create_cq()
1823 struct ocrdma_destroy_cq *cmd; ocrdma_mbx_destroy_cq() local
1825 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_CQ, sizeof(*cmd)); ocrdma_mbx_destroy_cq()
1826 if (!cmd) ocrdma_mbx_destroy_cq()
1828 ocrdma_init_mch(&cmd->req, OCRDMA_CMD_DELETE_CQ, ocrdma_mbx_destroy_cq()
1829 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); ocrdma_mbx_destroy_cq()
1831 cmd->bypass_flush_qid |= ocrdma_mbx_destroy_cq()
1835 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_destroy_cq()
1838 kfree(cmd); ocrdma_mbx_destroy_cq()
1846 struct ocrdma_alloc_lkey *cmd; ocrdma_mbx_alloc_lkey() local
1849 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_ALLOC_LKEY, sizeof(*cmd)); ocrdma_mbx_alloc_lkey()
1850 if (!cmd) ocrdma_mbx_alloc_lkey()
1852 cmd->pdid = pdid; ocrdma_mbx_alloc_lkey()
1853 cmd->pbl_sz_flags |= addr_check; ocrdma_mbx_alloc_lkey()
1854 cmd->pbl_sz_flags |= (hwmr->fr_mr << OCRDMA_ALLOC_LKEY_FMR_SHIFT); ocrdma_mbx_alloc_lkey()
1855 cmd->pbl_sz_flags |= ocrdma_mbx_alloc_lkey()
1857 cmd->pbl_sz_flags |= ocrdma_mbx_alloc_lkey()
1859 cmd->pbl_sz_flags |= ocrdma_mbx_alloc_lkey()
1861 cmd->pbl_sz_flags |= ocrdma_mbx_alloc_lkey()
1863 cmd->pbl_sz_flags |= ocrdma_mbx_alloc_lkey()
1866 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_alloc_lkey()
1869 rsp = (struct ocrdma_alloc_lkey_rsp *)cmd; ocrdma_mbx_alloc_lkey()
1872 kfree(cmd); ocrdma_mbx_alloc_lkey()
1879 struct ocrdma_dealloc_lkey *cmd; ocrdma_mbx_dealloc_lkey() local
1881 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DEALLOC_LKEY, sizeof(*cmd)); ocrdma_mbx_dealloc_lkey()
1882 if (!cmd) ocrdma_mbx_dealloc_lkey()
1884 cmd->lkey = lkey; ocrdma_mbx_dealloc_lkey()
1885 cmd->rsvd_frmr = fr_mr ? 1 : 0; ocrdma_mbx_dealloc_lkey()
1886 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_dealloc_lkey()
1890 kfree(cmd); ocrdma_mbx_dealloc_lkey()
1899 struct ocrdma_reg_nsmr *cmd; ocrdma_mbx_reg_mr() local
1902 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_REGISTER_NSMR, sizeof(*cmd)); ocrdma_mbx_reg_mr()
1903 if (!cmd) ocrdma_mbx_reg_mr()
1905 cmd->num_pbl_pdid = ocrdma_mbx_reg_mr()
1907 cmd->fr_mr = hwmr->fr_mr; ocrdma_mbx_reg_mr()
1909 cmd->flags_hpage_pbe_sz |= (hwmr->remote_wr << ocrdma_mbx_reg_mr()
1911 cmd->flags_hpage_pbe_sz |= (hwmr->remote_rd << ocrdma_mbx_reg_mr()
1913 cmd->flags_hpage_pbe_sz |= (hwmr->local_wr << ocrdma_mbx_reg_mr()
1915 cmd->flags_hpage_pbe_sz |= (hwmr->remote_atomic << ocrdma_mbx_reg_mr()
1917 cmd->flags_hpage_pbe_sz |= (hwmr->mw_bind << ocrdma_mbx_reg_mr()
1919 cmd->flags_hpage_pbe_sz |= (last << OCRDMA_REG_NSMR_LAST_SHIFT); ocrdma_mbx_reg_mr()
1921 cmd->flags_hpage_pbe_sz |= (hwmr->pbe_size / OCRDMA_MIN_HPAGE_SIZE); ocrdma_mbx_reg_mr()
1922 cmd->flags_hpage_pbe_sz |= (hwmr->pbl_size / OCRDMA_MIN_HPAGE_SIZE) << ocrdma_mbx_reg_mr()
1924 cmd->totlen_low = hwmr->len; ocrdma_mbx_reg_mr()
1925 cmd->totlen_high = upper_32_bits(hwmr->len); ocrdma_mbx_reg_mr()
1926 cmd->fbo_low = (u32) (hwmr->fbo & 0xffffffff); ocrdma_mbx_reg_mr()
1927 cmd->fbo_high = (u32) upper_32_bits(hwmr->fbo); ocrdma_mbx_reg_mr()
1928 cmd->va_loaddr = (u32) hwmr->va; ocrdma_mbx_reg_mr()
1929 cmd->va_hiaddr = (u32) upper_32_bits(hwmr->va); ocrdma_mbx_reg_mr()
1932 cmd->pbl[i].lo = (u32) (hwmr->pbl_table[i].pa & 0xffffffff); ocrdma_mbx_reg_mr()
1933 cmd->pbl[i].hi = upper_32_bits(hwmr->pbl_table[i].pa); ocrdma_mbx_reg_mr()
1935 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_reg_mr()
1938 rsp = (struct ocrdma_reg_nsmr_rsp *)cmd; ocrdma_mbx_reg_mr()
1941 kfree(cmd); ocrdma_mbx_reg_mr()
1951 struct ocrdma_reg_nsmr_cont *cmd; ocrdma_mbx_reg_mr_cont() local
1953 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_REGISTER_NSMR_CONT, sizeof(*cmd)); ocrdma_mbx_reg_mr_cont()
1954 if (!cmd) ocrdma_mbx_reg_mr_cont()
1956 cmd->lrkey = hwmr->lkey; ocrdma_mbx_reg_mr_cont()
1957 cmd->num_pbl_offset = (pbl_cnt << OCRDMA_REG_NSMR_CONT_NUM_PBL_SHIFT) | ocrdma_mbx_reg_mr_cont()
1959 cmd->last = last << OCRDMA_REG_NSMR_CONT_LAST_SHIFT; ocrdma_mbx_reg_mr_cont()
1962 cmd->pbl[i].lo = ocrdma_mbx_reg_mr_cont()
1964 cmd->pbl[i].hi = ocrdma_mbx_reg_mr_cont()
1967 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_reg_mr_cont()
1971 kfree(cmd); ocrdma_mbx_reg_mr_cont()
2119 static int ocrdma_set_create_qp_sq_cmd(struct ocrdma_create_qp_req *cmd, ocrdma_set_create_qp_sq_cmd() argument
2153 ocrdma_build_q_pages(&cmd->wq_addr[0], hw_pages, pa, hw_page_size); ocrdma_set_create_qp_sq_cmd()
2155 cmd->type_pgsz_pdn |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) ocrdma_set_create_qp_sq_cmd()
2157 cmd->num_wq_rq_pages |= (hw_pages << ocrdma_set_create_qp_sq_cmd()
2160 cmd->max_sge_send_write |= (max_sges << ocrdma_set_create_qp_sq_cmd()
2163 cmd->max_sge_send_write |= (max_sges << ocrdma_set_create_qp_sq_cmd()
2166 cmd->max_wqe_rqe |= (ilog2(qp->sq.max_cnt) << ocrdma_set_create_qp_sq_cmd()
2169 cmd->wqe_rqe_size |= (dev->attr.wqe_size << ocrdma_set_create_qp_sq_cmd()
2175 static int ocrdma_set_create_qp_rq_cmd(struct ocrdma_create_qp_req *cmd, ocrdma_set_create_qp_rq_cmd() argument
2205 ocrdma_build_q_pages(&cmd->rq_addr[0], hw_pages, pa, hw_page_size); ocrdma_set_create_qp_rq_cmd()
2206 cmd->type_pgsz_pdn |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) << ocrdma_set_create_qp_rq_cmd()
2208 cmd->num_wq_rq_pages |= ocrdma_set_create_qp_rq_cmd()
2211 cmd->max_sge_recv_flags |= (attrs->cap.max_recv_sge << ocrdma_set_create_qp_rq_cmd()
2214 cmd->max_wqe_rqe |= (ilog2(qp->rq.max_cnt) << ocrdma_set_create_qp_rq_cmd()
2217 cmd->wqe_rqe_size |= (dev->attr.rqe_size << ocrdma_set_create_qp_rq_cmd()
2223 static void ocrdma_set_create_qp_dpp_cmd(struct ocrdma_create_qp_req *cmd, ocrdma_set_create_qp_dpp_cmd() argument
2230 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_ENABLE_DPP_MASK; ocrdma_set_create_qp_dpp_cmd()
2233 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_ENABLE_DPP_MASK; ocrdma_set_create_qp_dpp_cmd()
2234 cmd->dpp_credits_cqid = dpp_cq_id; ocrdma_set_create_qp_dpp_cmd()
2235 cmd->dpp_credits_cqid |= OCRDMA_CREATE_QP_REQ_DPP_CREDIT_LIMIT << ocrdma_set_create_qp_dpp_cmd()
2239 static int ocrdma_set_create_qp_ird_cmd(struct ocrdma_create_qp_req *cmd, ocrdma_set_create_qp_ird_cmd() argument
2259 ocrdma_build_q_pages(&cmd->ird_addr[0], dev->attr.num_ird_pages, ocrdma_set_create_qp_ird_cmd()
2318 struct ocrdma_create_qp_req *cmd; ocrdma_mbx_create_qp() local
2336 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_QP, sizeof(*cmd)); ocrdma_mbx_create_qp()
2337 if (!cmd) ocrdma_mbx_create_qp()
2339 cmd->type_pgsz_pdn |= (qptype << OCRDMA_CREATE_QP_REQ_QPT_SHIFT) & ocrdma_mbx_create_qp()
2341 status = ocrdma_set_create_qp_sq_cmd(cmd, attrs, qp); ocrdma_mbx_create_qp()
2347 cmd->max_sge_recv_flags |= OCRDMA_CREATE_QP_REQ_USE_SRQ_MASK; ocrdma_mbx_create_qp()
2348 cmd->rq_addr[0].lo = srq->id; ocrdma_mbx_create_qp()
2351 status = ocrdma_set_create_qp_rq_cmd(cmd, attrs, qp); ocrdma_mbx_create_qp()
2356 status = ocrdma_set_create_qp_ird_cmd(cmd, qp); ocrdma_mbx_create_qp()
2360 cmd->type_pgsz_pdn |= (pd->id << OCRDMA_CREATE_QP_REQ_PD_ID_SHIFT) & ocrdma_mbx_create_qp()
2365 cmd->max_sge_recv_flags |= flags; ocrdma_mbx_create_qp()
2366 cmd->max_ord_ird |= (dev->attr.max_ord_per_qp << ocrdma_mbx_create_qp()
2369 cmd->max_ord_ird |= (dev->attr.max_ird_per_qp << ocrdma_mbx_create_qp()
2373 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_WQ_CQID_SHIFT) & ocrdma_mbx_create_qp()
2377 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_RQ_CQID_SHIFT) & ocrdma_mbx_create_qp()
2383 ocrdma_set_create_qp_dpp_cmd(cmd, pd, qp, enable_dpp_cq, ocrdma_mbx_create_qp()
2387 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_create_qp()
2390 rsp = (struct ocrdma_create_qp_rsp *)cmd; ocrdma_mbx_create_qp()
2393 kfree(cmd); ocrdma_mbx_create_qp()
2403 kfree(cmd); ocrdma_mbx_create_qp()
2411 struct ocrdma_query_qp *cmd; ocrdma_mbx_query_qp() local
2414 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_QP, sizeof(*rsp)); ocrdma_mbx_query_qp()
2415 if (!cmd) ocrdma_mbx_query_qp()
2417 cmd->qp_id = qp->id; ocrdma_mbx_query_qp()
2418 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_query_qp()
2421 rsp = (struct ocrdma_query_qp_rsp *)cmd; ocrdma_mbx_query_qp()
2424 kfree(cmd); ocrdma_mbx_query_qp()
2429 struct ocrdma_modify_qp *cmd, ocrdma_set_av_params()
2444 cmd->params.tclass_sq_psn |= ocrdma_set_av_params()
2446 cmd->params.rnt_rc_sl_fl |= ocrdma_set_av_params()
2448 cmd->params.rnt_rc_sl_fl |= (ah_attr->sl << OCRDMA_QP_PARAMS_SL_SHIFT); ocrdma_set_av_params()
2449 cmd->params.hop_lmt_rq_psn |= ocrdma_set_av_params()
2451 cmd->flags |= OCRDMA_QP_PARA_FLOW_LBL_VALID; ocrdma_set_av_params()
2452 memcpy(&cmd->params.dgid[0], &ah_attr->grh.dgid.raw[0], ocrdma_set_av_params()
2453 sizeof(cmd->params.dgid)); ocrdma_set_av_params()
2464 memcpy(&cmd->params.sgid[0], &sgid.raw[0], sizeof(cmd->params.sgid)); ocrdma_set_av_params()
2468 cmd->params.dmac_b0_to_b3 = mac_addr[0] | (mac_addr[1] << 8) | ocrdma_set_av_params()
2471 ocrdma_cpu_to_le32(&cmd->params.dgid[0], sizeof(cmd->params.dgid)); ocrdma_set_av_params()
2472 ocrdma_cpu_to_le32(&cmd->params.sgid[0], sizeof(cmd->params.sgid)); ocrdma_set_av_params()
2473 cmd->params.vlan_dmac_b4_to_b5 = mac_addr[4] | (mac_addr[5] << 8); ocrdma_set_av_params()
2485 cmd->params.vlan_dmac_b4_to_b5 |= ocrdma_set_av_params()
2487 cmd->flags |= OCRDMA_QP_PARA_VLAN_EN_VALID; ocrdma_set_av_params()
2488 cmd->params.rnt_rc_sl_fl |= ocrdma_set_av_params()
2496 struct ocrdma_modify_qp *cmd, ocrdma_set_qp_params()
2503 cmd->params.path_mtu_pkey_indx |= (attrs->pkey_index & ocrdma_set_qp_params()
2505 cmd->flags |= OCRDMA_QP_PARA_PKEY_VALID; ocrdma_set_qp_params()
2509 cmd->params.qkey = attrs->qkey; ocrdma_set_qp_params()
2510 cmd->flags |= OCRDMA_QP_PARA_QKEY_VALID; ocrdma_set_qp_params()
2513 status = ocrdma_set_av_params(qp, cmd, attrs, attr_mask); ocrdma_set_qp_params()
2518 cmd->params.dmac_b0_to_b3 = dev->nic_info.mac_addr[0] | ocrdma_set_qp_params()
2522 cmd->params.vlan_dmac_b4_to_b5 = dev->nic_info.mac_addr[4] | ocrdma_set_qp_params()
2527 cmd->params.max_sge_recv_flags |= ocrdma_set_qp_params()
2529 cmd->flags |= OCRDMA_QP_PARA_DST_QPN_VALID; ocrdma_set_qp_params()
2532 cmd->params.ack_to_rnr_rtc_dest_qpn |= (attrs->dest_qp_num & ocrdma_set_qp_params()
2534 cmd->flags |= OCRDMA_QP_PARA_DST_QPN_VALID; ocrdma_set_qp_params()
2544 cmd->params.path_mtu_pkey_indx |= ocrdma_set_qp_params()
2548 cmd->flags |= OCRDMA_QP_PARA_PMTU_VALID; ocrdma_set_qp_params()
2551 cmd->params.ack_to_rnr_rtc_dest_qpn |= attrs->timeout << ocrdma_set_qp_params()
2553 cmd->flags |= OCRDMA_QP_PARA_ACK_TO_VALID; ocrdma_set_qp_params()
2556 cmd->params.rnt_rc_sl_fl |= (attrs->retry_cnt << ocrdma_set_qp_params()
2559 cmd->flags |= OCRDMA_QP_PARA_RETRY_CNT_VALID; ocrdma_set_qp_params()
2562 cmd->params.rnt_rc_sl_fl |= (attrs->min_rnr_timer << ocrdma_set_qp_params()
2565 cmd->flags |= OCRDMA_QP_PARA_RNT_VALID; ocrdma_set_qp_params()
2568 cmd->params.ack_to_rnr_rtc_dest_qpn |= (attrs->rnr_retry << ocrdma_set_qp_params()
2571 cmd->flags |= OCRDMA_QP_PARA_RRC_VALID; ocrdma_set_qp_params()
2574 cmd->params.tclass_sq_psn |= (attrs->sq_psn & 0x00ffffff); ocrdma_set_qp_params()
2575 cmd->flags |= OCRDMA_QP_PARA_SQPSN_VALID; ocrdma_set_qp_params()
2578 cmd->params.hop_lmt_rq_psn |= (attrs->rq_psn & 0x00ffffff); ocrdma_set_qp_params()
2579 cmd->flags |= OCRDMA_QP_PARA_RQPSN_VALID; ocrdma_set_qp_params()
2587 cmd->flags |= OCRDMA_QP_PARA_MAX_ORD_VALID; ocrdma_set_qp_params()
2595 cmd->flags |= OCRDMA_QP_PARA_MAX_IRD_VALID; ocrdma_set_qp_params()
2597 cmd->params.max_ord_ird = (qp->max_ord << ocrdma_set_qp_params()
2608 struct ocrdma_modify_qp *cmd; ocrdma_mbx_modify_qp() local
2610 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_QP, sizeof(*cmd)); ocrdma_mbx_modify_qp()
2611 if (!cmd) ocrdma_mbx_modify_qp()
2614 cmd->params.id = qp->id; ocrdma_mbx_modify_qp()
2615 cmd->flags = 0; ocrdma_mbx_modify_qp()
2617 cmd->params.max_sge_recv_flags |= ocrdma_mbx_modify_qp()
2621 cmd->flags |= OCRDMA_QP_PARA_QPS_VALID; ocrdma_mbx_modify_qp()
2623 cmd->params.max_sge_recv_flags |= ocrdma_mbx_modify_qp()
2628 status = ocrdma_set_qp_params(qp, cmd, attrs, attr_mask); ocrdma_mbx_modify_qp()
2631 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_modify_qp()
2636 kfree(cmd); ocrdma_mbx_modify_qp()
2643 struct ocrdma_destroy_qp *cmd; ocrdma_mbx_destroy_qp() local
2646 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_QP, sizeof(*cmd)); ocrdma_mbx_destroy_qp()
2647 if (!cmd) ocrdma_mbx_destroy_qp()
2649 cmd->qp_id = qp->id; ocrdma_mbx_destroy_qp()
2650 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_destroy_qp()
2655 kfree(cmd); ocrdma_mbx_destroy_qp()
2673 struct ocrdma_create_srq *cmd; ocrdma_mbx_create_srq() local
2678 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_CREATE_SRQ, sizeof(*cmd)); ocrdma_mbx_create_srq()
2679 if (!cmd) ocrdma_mbx_create_srq()
2682 cmd->pgsz_pdid = pd->id & OCRDMA_CREATE_SRQ_PD_ID_MASK; ocrdma_mbx_create_srq()
2699 ocrdma_build_q_pages(&cmd->rq_addr[0], hw_pages, pa, hw_page_size); ocrdma_mbx_create_srq()
2706 cmd->max_sge_rqe = ilog2(max_rqe_allocated); ocrdma_mbx_create_srq()
2707 cmd->max_sge_rqe |= srq_attr->attr.max_sge << ocrdma_mbx_create_srq()
2710 cmd->pgsz_pdid |= (ilog2(hw_page_size / OCRDMA_MIN_Q_PAGE_SIZE) ocrdma_mbx_create_srq()
2712 cmd->pages_rqe_sz |= (dev->attr.rqe_size ocrdma_mbx_create_srq()
2715 cmd->pages_rqe_sz |= hw_pages << OCRDMA_CREATE_SRQ_NUM_RQ_PAGES_SHIFT; ocrdma_mbx_create_srq()
2717 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_create_srq()
2720 rsp = (struct ocrdma_create_srq_rsp *)cmd; ocrdma_mbx_create_srq()
2736 kfree(cmd); ocrdma_mbx_create_srq()
2743 struct ocrdma_modify_srq *cmd; ocrdma_mbx_modify_srq() local
2747 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_SRQ, sizeof(*cmd)); ocrdma_mbx_modify_srq()
2748 if (!cmd) ocrdma_mbx_modify_srq()
2750 cmd->id = srq->id; ocrdma_mbx_modify_srq()
2751 cmd->limit_max_rqe |= srq_attr->srq_limit << ocrdma_mbx_modify_srq()
2753 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_modify_srq()
2754 kfree(cmd); ocrdma_mbx_modify_srq()
2761 struct ocrdma_query_srq *cmd; ocrdma_mbx_query_srq() local
2764 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_QUERY_SRQ, sizeof(*cmd)); ocrdma_mbx_query_srq()
2765 if (!cmd) ocrdma_mbx_query_srq()
2767 cmd->id = srq->rq.dbid; ocrdma_mbx_query_srq()
2768 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_query_srq()
2771 (struct ocrdma_query_srq_rsp *)cmd; ocrdma_mbx_query_srq()
2780 kfree(cmd); ocrdma_mbx_query_srq()
2787 struct ocrdma_destroy_srq *cmd; ocrdma_mbx_destroy_srq() local
2789 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_DELETE_SRQ, sizeof(*cmd)); ocrdma_mbx_destroy_srq()
2790 if (!cmd) ocrdma_mbx_destroy_srq()
2792 cmd->id = srq->id; ocrdma_mbx_destroy_srq()
2793 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_destroy_srq()
2797 kfree(cmd); ocrdma_mbx_destroy_srq()
2806 struct ocrdma_mqe cmd; ocrdma_mbx_get_dcbx_config() local
2811 struct ocrdma_mqe_sge *mqe_sge = cmd.u.nonemb_req.sge; ocrdma_mbx_get_dcbx_config()
2813 memset(&cmd, 0, sizeof(struct ocrdma_mqe)); ocrdma_mbx_get_dcbx_config()
2814 cmd.hdr.pyld_len = max_t (u32, sizeof(struct ocrdma_get_dcbx_cfg_rsp), ocrdma_mbx_get_dcbx_config()
2816 req = dma_alloc_coherent(&pdev->dev, cmd.hdr.pyld_len, &pa, GFP_KERNEL); ocrdma_mbx_get_dcbx_config()
2822 cmd.hdr.spcl_sge_cnt_emb |= (1 << OCRDMA_MQE_HDR_SGE_CNT_SHIFT) & ocrdma_mbx_get_dcbx_config()
2826 mqe_sge->len = cmd.hdr.pyld_len; ocrdma_mbx_get_dcbx_config()
2830 OCRDMA_SUBSYS_DCBX, cmd.hdr.pyld_len); ocrdma_mbx_get_dcbx_config()
2833 status = ocrdma_mbx_cmd(dev, &cmd); ocrdma_mbx_get_dcbx_config()
2842 dma_free_coherent(&pdev->dev, cmd.hdr.pyld_len, req, pa); ocrdma_mbx_get_dcbx_config()
3047 struct ocrdma_modify_eqd_req *cmd; ocrdma_mbx_modify_eqd() local
3049 cmd = ocrdma_init_emb_mqe(OCRDMA_CMD_MODIFY_EQ_DELAY, sizeof(*cmd)); ocrdma_mbx_modify_eqd()
3050 if (!cmd) ocrdma_mbx_modify_eqd()
3053 ocrdma_init_mch(&cmd->cmd.req, OCRDMA_CMD_MODIFY_EQ_DELAY, ocrdma_mbx_modify_eqd()
3054 OCRDMA_SUBSYS_COMMON, sizeof(*cmd)); ocrdma_mbx_modify_eqd()
3056 cmd->cmd.num_eq = num; ocrdma_mbx_modify_eqd()
3058 cmd->cmd.set_eqd[i].eq_id = eq[i].q.id; ocrdma_mbx_modify_eqd()
3059 cmd->cmd.set_eqd[i].phase = 0; ocrdma_mbx_modify_eqd()
3060 cmd->cmd.set_eqd[i].delay_multiplier = ocrdma_mbx_modify_eqd()
3063 status = ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); ocrdma_mbx_modify_eqd()
3067 kfree(cmd); ocrdma_mbx_modify_eqd()
2428 ocrdma_set_av_params(struct ocrdma_qp *qp, struct ocrdma_modify_qp *cmd, struct ib_qp_attr *attrs, int attr_mask) ocrdma_set_av_params() argument
2495 ocrdma_set_qp_params(struct ocrdma_qp *qp, struct ocrdma_modify_qp *cmd, struct ib_qp_attr *attrs, int attr_mask) ocrdma_set_qp_params() argument
/linux-4.1.27/drivers/isdn/sc/
H A Devent.c43 isdn_ctrl cmd; indicate_status() local
54 memcpy(&cmd.parm.length, Data, sizeof(cmd.parm.length)); indicate_status()
57 memcpy(&cmd.parm.setup, Data, sizeof(cmd.parm.setup)); indicate_status()
60 strlcpy(cmd.parm.num, Data, sizeof(cmd.parm.num)); indicate_status()
64 cmd.command = event; indicate_status()
65 cmd.driver = sc_adapter[card]->driverId; indicate_status()
66 cmd.arg = Channel; indicate_status()
67 return sc_adapter[card]->card->statcallb(&cmd); indicate_status()
/linux-4.1.27/sound/pci/hda/
H A Dhda_intel_trace.h15 TP_PROTO(struct azx *chip, struct azx_dev *dev, int cmd),
17 TP_ARGS(chip, dev, cmd),
22 __field( int, cmd )
28 __entry->cmd = cmd;
31 TP_printk("[%d:%d] cmd=%d", __entry->card, __entry->idx, __entry->cmd)
/linux-4.1.27/drivers/net/ethernet/qlogic/qlcnic/
H A Dqlcnic_sriov_pf.c28 u32 cmd; member in struct:qlcnic_sriov_fw_cmd_handler
36 struct qlcnic_cmd_args cmd; qlcnic_sriov_pf_set_vport_info() local
39 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO)) qlcnic_sriov_pf_set_vport_info()
42 cmd.req.arg[1] = (vport_id << 16) | 0x1; qlcnic_sriov_pf_set_vport_info()
43 cmd.req.arg[2] = npar_info->bit_offsets; qlcnic_sriov_pf_set_vport_info()
44 cmd.req.arg[2] |= npar_info->min_tx_bw << 16; qlcnic_sriov_pf_set_vport_info()
45 cmd.req.arg[3] = npar_info->max_tx_bw | (npar_info->max_tx_ques << 16); qlcnic_sriov_pf_set_vport_info()
46 cmd.req.arg[4] = npar_info->max_tx_mac_filters; qlcnic_sriov_pf_set_vport_info()
47 cmd.req.arg[4] |= npar_info->max_rx_mcast_mac_filters << 16; qlcnic_sriov_pf_set_vport_info()
48 cmd.req.arg[5] = npar_info->max_rx_ucast_mac_filters | qlcnic_sriov_pf_set_vport_info()
50 cmd.req.arg[6] = npar_info->max_rx_lro_flow | qlcnic_sriov_pf_set_vport_info()
52 cmd.req.arg[7] = npar_info->max_rx_buf_rings | qlcnic_sriov_pf_set_vport_info()
54 cmd.req.arg[8] = npar_info->max_tx_vlan_keys; qlcnic_sriov_pf_set_vport_info()
55 cmd.req.arg[8] |= npar_info->max_local_ipv6_addrs << 16; qlcnic_sriov_pf_set_vport_info()
56 cmd.req.arg[9] = npar_info->max_remote_ipv6_addrs; qlcnic_sriov_pf_set_vport_info()
58 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_sriov_pf_set_vport_info()
63 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_pf_set_vport_info()
178 struct qlcnic_cmd_args cmd; qlcnic_sriov_get_pf_info() local
180 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_NIC_INFO)) qlcnic_sriov_get_pf_info()
183 cmd.req.arg[1] = 0x2; qlcnic_sriov_get_pf_info()
184 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_sriov_get_pf_info()
191 npar_info->total_pf = cmd.rsp.arg[2] & 0xff; qlcnic_sriov_get_pf_info()
192 npar_info->total_rss_engines = (cmd.rsp.arg[2] >> 8) & 0xff; qlcnic_sriov_get_pf_info()
193 npar_info->max_vports = MSW(cmd.rsp.arg[2]); qlcnic_sriov_get_pf_info()
194 npar_info->max_tx_ques = LSW(cmd.rsp.arg[3]); qlcnic_sriov_get_pf_info()
195 npar_info->max_tx_mac_filters = MSW(cmd.rsp.arg[3]); qlcnic_sriov_get_pf_info()
196 npar_info->max_rx_mcast_mac_filters = LSW(cmd.rsp.arg[4]); qlcnic_sriov_get_pf_info()
197 npar_info->max_rx_ucast_mac_filters = MSW(cmd.rsp.arg[4]); qlcnic_sriov_get_pf_info()
198 npar_info->max_rx_ip_addr = LSW(cmd.rsp.arg[5]); qlcnic_sriov_get_pf_info()
199 npar_info->max_rx_lro_flow = MSW(cmd.rsp.arg[5]); qlcnic_sriov_get_pf_info()
200 npar_info->max_rx_status_rings = LSW(cmd.rsp.arg[6]); qlcnic_sriov_get_pf_info()
201 npar_info->max_rx_buf_rings = MSW(cmd.rsp.arg[6]); qlcnic_sriov_get_pf_info()
202 npar_info->max_rx_ques = LSW(cmd.rsp.arg[7]); qlcnic_sriov_get_pf_info()
203 npar_info->max_tx_vlan_keys = MSW(cmd.rsp.arg[7]); qlcnic_sriov_get_pf_info()
204 npar_info->max_local_ipv6_addrs = LSW(cmd.rsp.arg[8]); qlcnic_sriov_get_pf_info()
205 npar_info->max_remote_ipv6_addrs = MSW(cmd.rsp.arg[8]); qlcnic_sriov_get_pf_info()
228 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_get_pf_info()
291 struct qlcnic_cmd_args cmd; qlcnic_sriov_pf_config_vport() local
295 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_VPORT)) qlcnic_sriov_pf_config_vport()
299 cmd.req.arg[3] = func << 8; qlcnic_sriov_pf_config_vport()
306 cmd.req.arg[3] = ((vpid & 0xffff) << 8) | 1; qlcnic_sriov_pf_config_vport()
309 ret = qlcnic_issue_cmd(adapter, &cmd); qlcnic_sriov_pf_config_vport()
318 vpid = cmd.rsp.arg[2] & 0xffff; qlcnic_sriov_pf_config_vport()
325 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_pf_config_vport()
332 struct qlcnic_cmd_args cmd; qlcnic_sriov_pf_cfg_vlan_filtering() local
335 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); qlcnic_sriov_pf_cfg_vlan_filtering()
339 cmd.req.arg[1] = 0x4; qlcnic_sriov_pf_cfg_vlan_filtering()
342 cmd.req.arg[1] |= BIT_16; qlcnic_sriov_pf_cfg_vlan_filtering()
344 cmd.req.arg[1] |= QLC_SRIOV_ALLOW_VLAN0; qlcnic_sriov_pf_cfg_vlan_filtering()
349 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_sriov_pf_cfg_vlan_filtering()
354 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_pf_cfg_vlan_filtering()
361 struct qlcnic_cmd_args cmd; qlcnic_sriov_pf_cfg_flood() local
364 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); qlcnic_sriov_pf_cfg_flood()
368 cmd.req.arg[1] = QLC_FLOOD_MODE | QLC_VF_FLOOD_BIT; qlcnic_sriov_pf_cfg_flood()
370 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_sriov_pf_cfg_flood()
376 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_pf_cfg_flood()
383 struct qlcnic_cmd_args cmd; qlcnic_sriov_pf_cfg_eswitch() local
386 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_TOGGLE_ESWITCH)) qlcnic_sriov_pf_cfg_eswitch()
389 cmd.req.arg[0] |= (3 << 29); qlcnic_sriov_pf_cfg_eswitch()
390 cmd.req.arg[1] = ((func & 0xf) << 2) | BIT_6 | BIT_1; qlcnic_sriov_pf_cfg_eswitch()
392 cmd.req.arg[1] |= BIT_0; qlcnic_sriov_pf_cfg_eswitch()
394 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_sriov_pf_cfg_eswitch()
402 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_pf_cfg_eswitch()
684 struct qlcnic_cmd_args cmd; qlcnic_sriov_set_vf_acl() local
694 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); qlcnic_sriov_set_vf_acl()
698 cmd.req.arg[1] = 0x3 | func << 16; qlcnic_sriov_set_vf_acl()
701 cmd.req.arg[2] |= BIT_1 | BIT_3 | BIT_8; qlcnic_sriov_set_vf_acl()
702 cmd.req.arg[4] = mac[5] | mac[4] << 8 | mac[3] << 16 | qlcnic_sriov_set_vf_acl()
704 cmd.req.arg[5] = mac[1] | mac[0] << 8; qlcnic_sriov_set_vf_acl()
708 cmd.req.arg[2] |= BIT_6; qlcnic_sriov_set_vf_acl()
709 cmd.req.arg[3] |= vp->pvid << 8; qlcnic_sriov_set_vf_acl()
712 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_sriov_set_vf_acl()
717 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_set_vf_acl()
739 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_channel_cfg_cmd()
772 cmd->rsp.arg[0] |= (1 << 25); qlcnic_sriov_pf_channel_cfg_cmd()
782 cmd->rsp.arg[0] |= (2 << 25); qlcnic_sriov_pf_channel_cfg_cmd()
790 struct qlcnic_cmd_args *cmd; qlcnic_sriov_cfg_vf_def_mac() local
800 cmd = kzalloc(sizeof(*cmd), GFP_ATOMIC); qlcnic_sriov_cfg_vf_def_mac()
801 if (!cmd) qlcnic_sriov_cfg_vf_def_mac()
804 err = qlcnic_alloc_mbx_args(cmd, adapter, QLCNIC_CMD_CONFIG_MAC_VLAN); qlcnic_sriov_cfg_vf_def_mac()
808 cmd->type = QLC_83XX_MBX_CMD_NO_WAIT; qlcnic_sriov_cfg_vf_def_mac()
819 cmd->req.arg[1] = op | (1 << 8) | (3 << 6); qlcnic_sriov_cfg_vf_def_mac()
820 cmd->req.arg[1] |= ((vpid & 0xffff) << 16) | BIT_31; qlcnic_sriov_cfg_vf_def_mac()
830 buf = &cmd->req.arg[2]; qlcnic_sriov_cfg_vf_def_mac()
833 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_cfg_vf_def_mac()
839 qlcnic_free_mbx_args(cmd); qlcnic_sriov_cfg_vf_def_mac()
841 kfree(cmd); qlcnic_sriov_cfg_vf_def_mac()
845 static int qlcnic_sriov_validate_create_rx_ctx(struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_create_rx_ctx() argument
847 if ((cmd->req.arg[0] >> 29) != 0x3) qlcnic_sriov_validate_create_rx_ctx()
883 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_create_rx_ctx_cmd()
890 err = qlcnic_sriov_validate_create_rx_ctx(cmd); qlcnic_sriov_pf_create_rx_ctx_cmd()
892 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_create_rx_ctx_cmd()
896 cmd->req.arg[6] = vf->vp->handle; qlcnic_sriov_pf_create_rx_ctx_cmd()
897 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_create_rx_ctx_cmd()
900 mbx_out = (struct qlcnic_rcv_mbx_out *)&cmd->rsp.arg[1]; qlcnic_sriov_pf_create_rx_ctx_cmd()
911 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_mac_address_cmd()
916 type = cmd->req.arg[1]; qlcnic_sriov_pf_mac_address_cmd()
920 cmd->rsp.arg[0] = (2 << 25); qlcnic_sriov_pf_mac_address_cmd()
923 cmd->rsp.arg[0] = (1 << 25); qlcnic_sriov_pf_mac_address_cmd()
925 cmd->rsp.arg[2] = mac[1] | ((mac[0] << 8) & 0xff00); qlcnic_sriov_pf_mac_address_cmd()
926 cmd->rsp.arg[1] = mac[5] | ((mac[4] << 8) & 0xff00) | qlcnic_sriov_pf_mac_address_cmd()
934 static int qlcnic_sriov_validate_create_tx_ctx(struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_create_tx_ctx() argument
936 if ((cmd->req.arg[0] >> 29) != 0x3) qlcnic_sriov_validate_create_tx_ctx()
943 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_create_tx_ctx_cmd()
950 err = qlcnic_sriov_validate_create_tx_ctx(cmd); qlcnic_sriov_pf_create_tx_ctx_cmd()
952 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_create_tx_ctx_cmd()
956 cmd->req.arg[5] |= vf->vp->handle << 16; qlcnic_sriov_pf_create_tx_ctx_cmd()
957 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_create_tx_ctx_cmd()
959 mbx_out = (struct qlcnic_tx_mbx_out *)&cmd->rsp.arg[2]; qlcnic_sriov_pf_create_tx_ctx_cmd()
969 struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_del_rx_ctx()
971 if ((cmd->req.arg[0] >> 29) != 0x3) qlcnic_sriov_validate_del_rx_ctx()
974 if ((cmd->req.arg[1] & 0xffff) != vf->rx_ctx_id) qlcnic_sriov_validate_del_rx_ctx()
981 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_del_rx_ctx_cmd()
987 err = qlcnic_sriov_validate_del_rx_ctx(vf, cmd); qlcnic_sriov_pf_del_rx_ctx_cmd()
989 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_del_rx_ctx_cmd()
994 cmd->req.arg[1] |= vf->vp->handle << 16; qlcnic_sriov_pf_del_rx_ctx_cmd()
995 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_del_rx_ctx_cmd()
1004 struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_del_tx_ctx()
1006 if ((cmd->req.arg[0] >> 29) != 0x3) qlcnic_sriov_validate_del_tx_ctx()
1009 if ((cmd->req.arg[1] & 0xffff) != vf->tx_ctx_id) qlcnic_sriov_validate_del_tx_ctx()
1016 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_del_tx_ctx_cmd()
1022 err = qlcnic_sriov_validate_del_tx_ctx(vf, cmd); qlcnic_sriov_pf_del_tx_ctx_cmd()
1024 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_del_tx_ctx_cmd()
1028 cmd->req.arg[1] |= vf->vp->handle << 16; qlcnic_sriov_pf_del_tx_ctx_cmd()
1029 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_del_tx_ctx_cmd()
1038 struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_cfg_lro()
1040 if ((cmd->req.arg[1] >> 16) != vf->rx_ctx_id) qlcnic_sriov_validate_cfg_lro()
1047 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_lro_cmd()
1053 err = qlcnic_sriov_validate_cfg_lro(vf, cmd); qlcnic_sriov_pf_cfg_lro_cmd()
1055 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_cfg_lro_cmd()
1059 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_cfg_lro_cmd()
1064 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_ip_cmd()
1071 op = cmd->req.arg[1] & 0xff; qlcnic_sriov_pf_cfg_ip_cmd()
1073 cmd->req.arg[1] |= vf->vp->handle << 16; qlcnic_sriov_pf_cfg_ip_cmd()
1074 cmd->req.arg[1] |= BIT_31; qlcnic_sriov_pf_cfg_ip_cmd()
1076 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_cfg_ip_cmd()
1081 struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_cfg_intrpt()
1083 if (((cmd->req.arg[1] >> 8) & 0xff) != vf->pci_func) qlcnic_sriov_validate_cfg_intrpt()
1086 if (!(cmd->req.arg[1] & BIT_16)) qlcnic_sriov_validate_cfg_intrpt()
1089 if ((cmd->req.arg[1] & 0xff) != 0x1) qlcnic_sriov_validate_cfg_intrpt()
1096 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_intrpt_cmd()
1102 err = qlcnic_sriov_validate_cfg_intrpt(vf, cmd); qlcnic_sriov_pf_cfg_intrpt_cmd()
1104 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_cfg_intrpt_cmd()
1106 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_cfg_intrpt_cmd()
1113 struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_mtu()
1115 if (cmd->req.arg[1] != vf->rx_ctx_id) qlcnic_sriov_validate_mtu()
1118 if (cmd->req.arg[2] > adapter->ahw->max_mtu) qlcnic_sriov_validate_mtu()
1125 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_set_mtu_cmd()
1131 err = qlcnic_sriov_validate_mtu(adapter, vf, cmd); qlcnic_sriov_pf_set_mtu_cmd()
1133 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_set_mtu_cmd()
1135 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_set_mtu_cmd()
1141 struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_get_nic_info()
1143 if (cmd->req.arg[1] & BIT_31) { qlcnic_sriov_validate_get_nic_info()
1144 if (((cmd->req.arg[1] >> 16) & 0x7fff) != vf->pci_func) qlcnic_sriov_validate_get_nic_info()
1147 cmd->req.arg[1] |= vf->vp->handle << 16; qlcnic_sriov_validate_get_nic_info()
1154 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_get_nic_info_cmd()
1160 err = qlcnic_sriov_validate_get_nic_info(vf, cmd); qlcnic_sriov_pf_get_nic_info_cmd()
1162 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_get_nic_info_cmd()
1166 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_get_nic_info_cmd()
1171 struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_cfg_rss()
1173 if (cmd->req.arg[1] != vf->rx_ctx_id) qlcnic_sriov_validate_cfg_rss()
1180 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_rss_cmd()
1186 err = qlcnic_sriov_validate_cfg_rss(vf, cmd); qlcnic_sriov_pf_cfg_rss_cmd()
1188 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_cfg_rss_cmd()
1190 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_cfg_rss_cmd()
1197 struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_cfg_intrcoal()
1204 type = cmd->req.arg[1] & QLC_INTR_COAL_TYPE_MASK; qlcnic_sriov_validate_cfg_intrcoal()
1205 ctx_id = cmd->req.arg[1] >> 16; qlcnic_sriov_validate_cfg_intrcoal()
1206 pkts = cmd->req.arg[2] & 0xffff; qlcnic_sriov_validate_cfg_intrcoal()
1207 time = cmd->req.arg[2] >> 16; qlcnic_sriov_validate_cfg_intrcoal()
1239 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_intrcoal_cmd()
1245 err = qlcnic_sriov_validate_cfg_intrcoal(adapter, vf, cmd); qlcnic_sriov_pf_cfg_intrcoal_cmd()
1247 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_cfg_intrcoal_cmd()
1251 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_cfg_intrcoal_cmd()
1257 struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_cfg_macvlan()
1262 if (!(cmd->req.arg[1] & BIT_8)) qlcnic_sriov_validate_cfg_macvlan()
1265 cmd->req.arg[1] |= (vf->vp->handle << 16); qlcnic_sriov_validate_cfg_macvlan()
1266 cmd->req.arg[1] |= BIT_31; qlcnic_sriov_validate_cfg_macvlan()
1269 op = cmd->req.arg[1] & 0x7; qlcnic_sriov_validate_cfg_macvlan()
1270 cmd->req.arg[1] &= ~0x7; qlcnic_sriov_validate_cfg_macvlan()
1273 cmd->req.arg[3] |= vp->pvid << 16; qlcnic_sriov_validate_cfg_macvlan()
1274 cmd->req.arg[1] |= new_op; qlcnic_sriov_validate_cfg_macvlan()
1281 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_macvlan_cmd()
1287 err = qlcnic_sriov_validate_cfg_macvlan(adapter, vf, cmd); qlcnic_sriov_pf_cfg_macvlan_cmd()
1289 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_cfg_macvlan_cmd()
1293 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_cfg_macvlan_cmd()
1298 struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_linkevent()
1300 if ((cmd->req.arg[1] >> 16) != vf->rx_ctx_id) qlcnic_sriov_validate_linkevent()
1307 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_linkevent_cmd()
1313 err = qlcnic_sriov_validate_linkevent(vf, cmd); qlcnic_sriov_pf_linkevent_cmd()
1315 cmd->rsp.arg[0] |= (0x6 << 25); qlcnic_sriov_pf_linkevent_cmd()
1319 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_linkevent_cmd()
1324 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_promisc_cmd()
1330 cmd->req.arg[1] |= vf->vp->handle << 16; qlcnic_sriov_pf_cfg_promisc_cmd()
1331 cmd->req.arg[1] |= BIT_31; qlcnic_sriov_pf_cfg_promisc_cmd()
1332 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_cfg_promisc_cmd()
1337 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_get_acl_cmd()
1349 cmd->rsp.arg[0] |= 1 << 25; qlcnic_sriov_pf_get_acl_cmd()
1359 cmd->rsp.arg[1] = mode | 1 << 8; qlcnic_sriov_pf_get_acl_cmd()
1360 cmd->rsp.arg[2] = sriov->num_allowed_vlans << 16; qlcnic_sriov_pf_get_acl_cmd()
1363 cmd->rsp.arg[1] = mode | 1 << 8 | vp->pvid << 16; qlcnic_sriov_pf_get_acl_cmd()
1372 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_del_guest_vlan()
1380 vlan = cmd->req.arg[1] >> 16; qlcnic_sriov_pf_del_guest_vlan()
1397 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_add_guest_vlan()
1406 vlan = cmd->req.arg[1] >> 16; qlcnic_sriov_pf_add_guest_vlan()
1434 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_guest_vlan_cmd()
1443 cmd->rsp.arg[0] |= 2 << 25; qlcnic_sriov_pf_cfg_guest_vlan_cmd()
1447 op = cmd->req.arg[1] & 0xf; qlcnic_sriov_pf_cfg_guest_vlan_cmd()
1450 err = qlcnic_sriov_pf_add_guest_vlan(adapter, vf, cmd); qlcnic_sriov_pf_cfg_guest_vlan_cmd()
1452 err = qlcnic_sriov_pf_del_guest_vlan(adapter, vf, cmd); qlcnic_sriov_pf_cfg_guest_vlan_cmd()
1454 cmd->rsp.arg[0] |= err ? 2 << 25 : 1 << 25; qlcnic_sriov_pf_cfg_guest_vlan_cmd()
1493 struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_process_bc_cmd()
1502 qlcnic_pf_bc_cmd_hdlr[cmd_op].fn(trans, cmd); qlcnic_sriov_pf_process_bc_cmd()
1509 if (cmd_op == qlcnic_pf_fw_cmd_hdlr[i].cmd) { qlcnic_sriov_pf_process_bc_cmd()
1510 qlcnic_pf_fw_cmd_hdlr[i].fn(trans, cmd); qlcnic_sriov_pf_process_bc_cmd()
1518 qlcnic_issue_cmd(adapter, cmd); qlcnic_sriov_pf_process_bc_cmd()
1524 cmd->rsp.arg[0] |= (0x9 << 25); qlcnic_sriov_pf_process_bc_cmd()
1600 struct qlcnic_cmd_args cmd; qlcnic_sriov_del_rx_ctx() local
1606 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_RX_CTX)) qlcnic_sriov_del_rx_ctx()
1611 cmd.req.arg[1] = vf->rx_ctx_id | (vpid & 0xffff) << 16; qlcnic_sriov_del_rx_ctx()
1612 if (qlcnic_issue_cmd(adapter, &cmd)) qlcnic_sriov_del_rx_ctx()
1620 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_del_rx_ctx()
1626 struct qlcnic_cmd_args cmd; qlcnic_sriov_del_tx_ctx() local
1632 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_TX_CTX)) qlcnic_sriov_del_tx_ctx()
1637 cmd.req.arg[1] |= vf->tx_ctx_id | (vpid & 0xffff) << 16; qlcnic_sriov_del_tx_ctx()
1638 if (qlcnic_issue_cmd(adapter, &cmd)) qlcnic_sriov_del_tx_ctx()
1646 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_del_tx_ctx()
738 qlcnic_sriov_pf_channel_cfg_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_channel_cfg_cmd() argument
882 qlcnic_sriov_pf_create_rx_ctx_cmd(struct qlcnic_bc_trans *tran, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_create_rx_ctx_cmd() argument
910 qlcnic_sriov_pf_mac_address_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_mac_address_cmd() argument
942 qlcnic_sriov_pf_create_tx_ctx_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_create_tx_ctx_cmd() argument
968 qlcnic_sriov_validate_del_rx_ctx(struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_del_rx_ctx() argument
980 qlcnic_sriov_pf_del_rx_ctx_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_del_rx_ctx_cmd() argument
1003 qlcnic_sriov_validate_del_tx_ctx(struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_del_tx_ctx() argument
1015 qlcnic_sriov_pf_del_tx_ctx_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_del_tx_ctx_cmd() argument
1037 qlcnic_sriov_validate_cfg_lro(struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_cfg_lro() argument
1046 qlcnic_sriov_pf_cfg_lro_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_lro_cmd() argument
1063 qlcnic_sriov_pf_cfg_ip_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_ip_cmd() argument
1080 qlcnic_sriov_validate_cfg_intrpt(struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_cfg_intrpt() argument
1095 qlcnic_sriov_pf_cfg_intrpt_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_intrpt_cmd() argument
1111 qlcnic_sriov_validate_mtu(struct qlcnic_adapter *adapter, struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_mtu() argument
1124 qlcnic_sriov_pf_set_mtu_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_set_mtu_cmd() argument
1140 qlcnic_sriov_validate_get_nic_info(struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_get_nic_info() argument
1153 qlcnic_sriov_pf_get_nic_info_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_get_nic_info_cmd() argument
1170 qlcnic_sriov_validate_cfg_rss(struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_cfg_rss() argument
1179 qlcnic_sriov_pf_cfg_rss_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_rss_cmd() argument
1195 qlcnic_sriov_validate_cfg_intrcoal(struct qlcnic_adapter *adapter, struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_cfg_intrcoal() argument
1238 qlcnic_sriov_pf_cfg_intrcoal_cmd(struct qlcnic_bc_trans *tran, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_intrcoal_cmd() argument
1255 qlcnic_sriov_validate_cfg_macvlan(struct qlcnic_adapter *adapter, struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_cfg_macvlan() argument
1280 qlcnic_sriov_pf_cfg_macvlan_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_macvlan_cmd() argument
1297 qlcnic_sriov_validate_linkevent(struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_validate_linkevent() argument
1306 qlcnic_sriov_pf_linkevent_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_linkevent_cmd() argument
1323 qlcnic_sriov_pf_cfg_promisc_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_promisc_cmd() argument
1336 qlcnic_sriov_pf_get_acl_cmd(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_get_acl_cmd() argument
1370 qlcnic_sriov_pf_del_guest_vlan(struct qlcnic_adapter *adapter, struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_del_guest_vlan() argument
1395 qlcnic_sriov_pf_add_guest_vlan(struct qlcnic_adapter *adapter, struct qlcnic_vf_info *vf, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_add_guest_vlan() argument
1433 qlcnic_sriov_pf_cfg_guest_vlan_cmd(struct qlcnic_bc_trans *tran, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_cfg_guest_vlan_cmd() argument
1491 qlcnic_sriov_pf_process_bc_cmd(struct qlcnic_adapter *adapter, struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) qlcnic_sriov_pf_process_bc_cmd() argument
H A Dqlcnic_ctx.c62 if (type == mbx_tbl[i].cmd) { qlcnic_82xx_alloc_mbx_args()
86 void qlcnic_free_mbx_args(struct qlcnic_cmd_args *cmd) qlcnic_free_mbx_args() argument
88 kfree(cmd->req.arg); qlcnic_free_mbx_args()
89 cmd->req.arg = NULL; qlcnic_free_mbx_args()
90 kfree(cmd->rsp.arg); qlcnic_free_mbx_args()
91 cmd->rsp.arg = NULL; qlcnic_free_mbx_args()
114 struct qlcnic_cmd_args *cmd) qlcnic_82xx_issue_cmd()
127 cmd->rsp.arg[0] = QLCNIC_RCODE_TIMEOUT; qlcnic_82xx_issue_cmd()
128 return cmd->rsp.arg[0]; qlcnic_82xx_issue_cmd()
132 for (i = 1; i < cmd->req.num; i++) qlcnic_82xx_issue_cmd()
133 QLCWR32(adapter, QLCNIC_CDRP_ARG(i), cmd->req.arg[i]); qlcnic_82xx_issue_cmd()
135 QLCNIC_CDRP_FORM_CMD(cmd->req.arg[0])); qlcnic_82xx_issue_cmd()
140 cmd->rsp.arg[0] = QLCNIC_RCODE_TIMEOUT; qlcnic_82xx_issue_cmd()
142 cmd->rsp.arg[0] = QLCRD32(adapter, QLCNIC_CDRP_ARG(1), &err); qlcnic_82xx_issue_cmd()
143 switch (cmd->rsp.arg[0]) { qlcnic_82xx_issue_cmd()
155 fmt = "CDRP invalid or unknown cmd received: [%d]\n"; qlcnic_82xx_issue_cmd()
164 dev_err(&pdev->dev, fmt, cmd->rsp.arg[0]); qlcnic_82xx_issue_cmd()
165 qlcnic_dump_mbx(adapter, cmd); qlcnic_82xx_issue_cmd()
167 cmd->rsp.arg[0] = QLCNIC_RCODE_SUCCESS; qlcnic_82xx_issue_cmd()
169 for (i = 1; i < cmd->rsp.num; i++) qlcnic_82xx_issue_cmd()
170 cmd->rsp.arg[i] = QLCRD32(adapter, QLCNIC_CDRP_ARG(i), &err); qlcnic_82xx_issue_cmd()
174 return cmd->rsp.arg[0]; qlcnic_82xx_issue_cmd()
179 struct qlcnic_cmd_args cmd; qlcnic_fw_cmd_set_drv_version() local
189 err = qlcnic_alloc_mbx_args(&cmd, adapter, fw_cmd); qlcnic_fw_cmd_set_drv_version()
197 cmd.req.arg[1] = arg1; qlcnic_fw_cmd_set_drv_version()
198 cmd.req.arg[2] = arg2; qlcnic_fw_cmd_set_drv_version()
199 cmd.req.arg[3] = arg3; qlcnic_fw_cmd_set_drv_version()
201 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_fw_cmd_set_drv_version()
207 qlcnic_free_mbx_args(&cmd); qlcnic_fw_cmd_set_drv_version()
215 struct qlcnic_cmd_args cmd; qlcnic_fw_cmd_set_mtu() local
220 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_MTU); qlcnic_fw_cmd_set_mtu()
224 cmd.req.arg[1] = recv_ctx->context_id; qlcnic_fw_cmd_set_mtu()
225 cmd.req.arg[2] = mtu; qlcnic_fw_cmd_set_mtu()
227 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_fw_cmd_set_mtu()
232 qlcnic_free_mbx_args(&cmd); qlcnic_fw_cmd_set_mtu()
252 struct qlcnic_cmd_args cmd; qlcnic_82xx_fw_cmd_create_rx_ctx() local
340 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CREATE_RX_CTX); qlcnic_82xx_fw_cmd_create_rx_ctx()
344 cmd.req.arg[1] = MSD(phys_addr); qlcnic_82xx_fw_cmd_create_rx_ctx()
345 cmd.req.arg[2] = LSD(phys_addr); qlcnic_82xx_fw_cmd_create_rx_ctx()
346 cmd.req.arg[3] = rq_size; qlcnic_82xx_fw_cmd_create_rx_ctx()
347 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_82xx_fw_cmd_create_rx_ctx()
384 qlcnic_free_mbx_args(&cmd); qlcnic_82xx_fw_cmd_create_rx_ctx()
398 struct qlcnic_cmd_args cmd; qlcnic_82xx_fw_cmd_del_rx_ctx() local
401 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_RX_CTX); qlcnic_82xx_fw_cmd_del_rx_ctx()
405 cmd.req.arg[1] = recv_ctx->context_id; qlcnic_82xx_fw_cmd_del_rx_ctx()
406 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_82xx_fw_cmd_del_rx_ctx()
412 qlcnic_free_mbx_args(&cmd); qlcnic_82xx_fw_cmd_del_rx_ctx()
424 struct qlcnic_cmd_args cmd; qlcnic_82xx_fw_cmd_create_tx_ctx() local
486 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CREATE_TX_CTX); qlcnic_82xx_fw_cmd_create_tx_ctx()
490 cmd.req.arg[1] = MSD(phys_addr); qlcnic_82xx_fw_cmd_create_tx_ctx()
491 cmd.req.arg[2] = LSD(phys_addr); qlcnic_82xx_fw_cmd_create_tx_ctx()
492 cmd.req.arg[3] = rq_size; qlcnic_82xx_fw_cmd_create_tx_ctx()
493 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_82xx_fw_cmd_create_tx_ctx()
515 qlcnic_free_mbx_args(&cmd); qlcnic_82xx_fw_cmd_create_tx_ctx()
529 struct qlcnic_cmd_args cmd; qlcnic_82xx_fw_cmd_del_tx_ctx() local
532 ret = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_TX_CTX); qlcnic_82xx_fw_cmd_del_tx_ctx()
536 cmd.req.arg[1] = tx_ring->ctx_id; qlcnic_82xx_fw_cmd_del_tx_ctx()
537 if (qlcnic_issue_cmd(adapter, &cmd)) qlcnic_82xx_fw_cmd_del_tx_ctx()
540 qlcnic_free_mbx_args(&cmd); qlcnic_82xx_fw_cmd_del_tx_ctx()
547 struct qlcnic_cmd_args cmd; qlcnic_fw_cmd_set_port() local
549 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_PORT); qlcnic_fw_cmd_set_port()
553 cmd.req.arg[1] = config; qlcnic_fw_cmd_set_port()
554 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_fw_cmd_set_port()
555 qlcnic_free_mbx_args(&cmd); qlcnic_fw_cmd_set_port()
582 /* cmd desc ring */ qlcnic_alloc_hw_resources()
772 struct qlcnic_cmd_args cmd; qlcnic_82xx_config_intrpt() local
777 qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_82xx_config_intrpt()
783 cmd.req.arg[1] = val; qlcnic_82xx_config_intrpt()
784 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_82xx_config_intrpt()
789 qlcnic_free_mbx_args(&cmd); qlcnic_82xx_config_intrpt()
792 val = cmd.rsp.arg[1]; qlcnic_82xx_config_intrpt()
802 ahw->intr_tbl[i].src = cmd.rsp.arg[2]; qlcnic_82xx_config_intrpt()
808 qlcnic_free_mbx_args(&cmd); qlcnic_82xx_config_intrpt()
818 struct qlcnic_cmd_args cmd; qlcnic_82xx_get_mac_address() local
821 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_MAC_ADDRESS); qlcnic_82xx_get_mac_address()
825 cmd.req.arg[1] = function | BIT_8; qlcnic_82xx_get_mac_address()
826 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_82xx_get_mac_address()
829 mac_low = cmd.rsp.arg[1]; qlcnic_82xx_get_mac_address()
830 mac_high = cmd.rsp.arg[2]; qlcnic_82xx_get_mac_address()
841 qlcnic_free_mbx_args(&cmd); qlcnic_82xx_get_mac_address()
853 struct qlcnic_cmd_args cmd; qlcnic_82xx_get_nic_info() local
863 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_NIC_INFO); qlcnic_82xx_get_nic_info()
867 cmd.req.arg[1] = MSD(nic_dma_t); qlcnic_82xx_get_nic_info()
868 cmd.req.arg[2] = LSD(nic_dma_t); qlcnic_82xx_get_nic_info()
869 cmd.req.arg[3] = (func_id << 16 | nic_size); qlcnic_82xx_get_nic_info()
870 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_82xx_get_nic_info()
888 qlcnic_free_mbx_args(&cmd); qlcnic_82xx_get_nic_info()
903 struct qlcnic_cmd_args cmd; qlcnic_82xx_set_nic_info() local
928 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); qlcnic_82xx_set_nic_info()
932 cmd.req.arg[1] = MSD(nic_dma_t); qlcnic_82xx_set_nic_info()
933 cmd.req.arg[2] = LSD(nic_dma_t); qlcnic_82xx_set_nic_info()
934 cmd.req.arg[3] = ((nic->pci_func << 16) | nic_size); qlcnic_82xx_set_nic_info()
935 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_82xx_set_nic_info()
943 qlcnic_free_mbx_args(&cmd); qlcnic_82xx_set_nic_info()
960 struct qlcnic_cmd_args cmd; qlcnic_82xx_get_pci_info() local
971 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PCI_INFO); qlcnic_82xx_get_pci_info()
975 cmd.req.arg[1] = MSD(pci_info_dma_t); qlcnic_82xx_get_pci_info()
976 cmd.req.arg[2] = LSD(pci_info_dma_t); qlcnic_82xx_get_pci_info()
977 cmd.req.arg[3] = pci_size; qlcnic_82xx_get_pci_info()
978 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_82xx_get_pci_info()
1012 qlcnic_free_mbx_args(&cmd); qlcnic_82xx_get_pci_info()
1025 struct qlcnic_cmd_args cmd; qlcnic_config_port_mirroring() local
1039 err = qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_config_port_mirroring()
1044 cmd.req.arg[1] = arg1; qlcnic_config_port_mirroring()
1045 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_config_port_mirroring()
1053 qlcnic_free_mbx_args(&cmd); qlcnic_config_port_mirroring()
1066 struct qlcnic_cmd_args cmd; qlcnic_get_port_stats() local
1087 err = qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_get_port_stats()
1092 cmd.req.arg[1] = arg1; qlcnic_get_port_stats()
1093 cmd.req.arg[2] = MSD(stats_dma_t); qlcnic_get_port_stats()
1094 cmd.req.arg[3] = LSD(stats_dma_t); qlcnic_get_port_stats()
1095 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_get_port_stats()
1113 qlcnic_free_mbx_args(&cmd); qlcnic_get_port_stats()
1126 struct qlcnic_cmd_args cmd; qlcnic_get_mac_stats() local
1140 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_MAC_STATS); qlcnic_get_mac_stats()
1144 cmd.req.arg[1] = stats_size << 16; qlcnic_get_mac_stats()
1145 cmd.req.arg[2] = MSD(stats_dma_t); qlcnic_get_mac_stats()
1146 cmd.req.arg[3] = LSD(stats_dma_t); qlcnic_get_mac_stats()
1147 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_get_mac_stats()
1174 qlcnic_free_mbx_args(&cmd); qlcnic_get_mac_stats()
1241 struct qlcnic_cmd_args cmd; qlcnic_clear_esw_stats() local
1264 err = qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_clear_esw_stats()
1269 cmd.req.arg[1] = arg1; qlcnic_clear_esw_stats()
1270 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_clear_esw_stats()
1271 qlcnic_free_mbx_args(&cmd); qlcnic_clear_esw_stats()
1285 struct qlcnic_cmd_args cmd; __qlcnic_get_eswitch_port_config() local
1289 err = qlcnic_alloc_mbx_args(&cmd, adapter, __qlcnic_get_eswitch_port_config()
1294 cmd.req.arg[1] = *arg1; __qlcnic_get_eswitch_port_config()
1295 err = qlcnic_issue_cmd(adapter, &cmd); __qlcnic_get_eswitch_port_config()
1296 *arg1 = cmd.rsp.arg[1]; __qlcnic_get_eswitch_port_config()
1297 *arg2 = cmd.rsp.arg[2]; __qlcnic_get_eswitch_port_config()
1298 qlcnic_free_mbx_args(&cmd); __qlcnic_get_eswitch_port_config()
1319 struct qlcnic_cmd_args cmd; qlcnic_config_switch_port() local
1378 err = qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_config_switch_port()
1383 cmd.req.arg[1] = arg1; qlcnic_config_switch_port()
1384 cmd.req.arg[2] = arg2; qlcnic_config_switch_port()
1385 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_config_switch_port()
1386 qlcnic_free_mbx_args(&cmd); qlcnic_config_switch_port()
113 qlcnic_82xx_issue_cmd(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_82xx_issue_cmd() argument
H A Dqlcnic_83xx_hw.c447 struct qlcnic_cmd_args *cmd) qlcnic_83xx_get_mbx_data()
451 if (cmd->op_type == QLC_83XX_MBX_POST_BC_OP) qlcnic_83xx_get_mbx_data()
454 for (i = 0; i < cmd->rsp.num; i++) qlcnic_83xx_get_mbx_data()
455 cmd->rsp.arg[i] = readl(QLCNIC_MBX_FW(adapter->ahw, i)); qlcnic_83xx_get_mbx_data()
796 struct qlcnic_cmd_args *cmd) qlcnic_dump_mbx()
800 if (cmd->op_type == QLC_83XX_MBX_POST_BC_OP) qlcnic_dump_mbx()
804 "Host MBX regs(%d)\n", cmd->req.num); qlcnic_dump_mbx()
805 for (i = 0; i < cmd->req.num; i++) { qlcnic_dump_mbx()
808 pr_info("%08x ", cmd->req.arg[i]); qlcnic_dump_mbx()
812 "FW MBX regs(%d)\n", cmd->rsp.num); qlcnic_dump_mbx()
813 for (i = 0; i < cmd->rsp.num; i++) { qlcnic_dump_mbx()
816 pr_info("%08x ", cmd->rsp.arg[i]); qlcnic_dump_mbx()
822 struct qlcnic_cmd_args *cmd) qlcnic_83xx_poll_for_mbx_completion()
825 int opcode = LSW(cmd->req.arg[0]); qlcnic_83xx_poll_for_mbx_completion()
828 max_loops = cmd->total_cmds * QLC_83XX_MBX_CMD_LOOP; qlcnic_83xx_poll_for_mbx_completion()
831 if (atomic_read(&cmd->rsp_status) == qlcnic_83xx_poll_for_mbx_completion()
840 __func__, opcode, cmd->type, ahw->pci_func, ahw->op_mode); qlcnic_83xx_poll_for_mbx_completion()
846 struct qlcnic_cmd_args *cmd) qlcnic_83xx_issue_cmd()
856 opcode = LSW(cmd->req.arg[0]); qlcnic_83xx_issue_cmd()
857 cmd_type = cmd->type; qlcnic_83xx_issue_cmd()
858 err = mbx->ops->enqueue_cmd(adapter, cmd, &timeout); qlcnic_83xx_issue_cmd()
862 __func__, opcode, cmd->type, ahw->pci_func, qlcnic_83xx_issue_cmd()
869 if (!wait_for_completion_timeout(&cmd->completion, timeout)) { qlcnic_83xx_issue_cmd()
880 qlcnic_83xx_poll_for_mbx_completion(adapter, cmd); qlcnic_83xx_issue_cmd()
890 return cmd->rsp_opcode; qlcnic_83xx_issue_cmd()
904 if (type == mbx_tbl[i].cmd) { qlcnic_83xx_alloc_mbx_args()
936 struct qlcnic_cmd_args cmd; qlcnic_83xx_idc_aen_work() local
940 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_IDC_ACK); qlcnic_83xx_idc_aen_work()
945 cmd.req.arg[i] = adapter->ahw->mbox_aen[i]; qlcnic_83xx_idc_aen_work()
947 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_idc_aen_work()
951 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_idc_aen_work()
1069 struct qlcnic_cmd_args cmd; qlcnic_83xx_add_rings() local
1079 ahw->hw_ops->alloc_mbx_args(&cmd, adapter, qlcnic_83xx_add_rings()
1081 cmd.req.arg[1] = 0 | (num_sds << 8) | (context_id << 16); qlcnic_83xx_add_rings()
1104 buf = &cmd.req.arg[index]; qlcnic_83xx_add_rings()
1110 err = ahw->hw_ops->mbx_cmd(adapter, &cmd); qlcnic_83xx_add_rings()
1117 mbx_out = (struct qlcnic_add_rings_mbx_out *)&cmd.rsp.arg[1]; qlcnic_83xx_add_rings()
1133 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_add_rings()
1141 struct qlcnic_cmd_args cmd; qlcnic_83xx_del_rx_ctx() local
1144 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_RX_CTX)) qlcnic_83xx_del_rx_ctx()
1148 cmd.req.arg[0] |= (0x3 << 29); qlcnic_83xx_del_rx_ctx()
1153 cmd.req.arg[1] = recv_ctx->context_id | temp; qlcnic_83xx_del_rx_ctx()
1154 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_del_rx_ctx()
1160 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_del_rx_ctx()
1172 struct qlcnic_cmd_args cmd; qlcnic_83xx_create_rx_ctx() local
1191 err = qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_83xx_create_rx_ctx()
1197 cmd.req.arg[0] |= (0x3 << 29); qlcnic_83xx_create_rx_ctx()
1199 cmd.req.arg[1] = cap; qlcnic_83xx_create_rx_ctx()
1200 cmd.req.arg[5] = 1 | (num_rds << 5) | (num_sds << 8) | qlcnic_83xx_create_rx_ctx()
1205 &cmd.req.arg[6]); qlcnic_83xx_create_rx_ctx()
1225 buf = &cmd.req.arg[index]; qlcnic_83xx_create_rx_ctx()
1245 buf = &cmd.req.arg[index]; qlcnic_83xx_create_rx_ctx()
1249 err = ahw->hw_ops->mbx_cmd(adapter, &cmd); qlcnic_83xx_create_rx_ctx()
1255 mbx_out = (struct qlcnic_rcv_mbx_out *)&cmd.rsp.arg[1]; qlcnic_83xx_create_rx_ctx()
1285 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_create_rx_ctx()
1292 struct qlcnic_cmd_args cmd; qlcnic_83xx_del_tx_ctx() local
1295 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_TX_CTX)) qlcnic_83xx_del_tx_ctx()
1299 cmd.req.arg[0] |= (0x3 << 29); qlcnic_83xx_del_tx_ctx()
1304 cmd.req.arg[1] = tx_ring->ctx_id | temp; qlcnic_83xx_del_tx_ctx()
1305 if (qlcnic_issue_cmd(adapter, &cmd)) qlcnic_83xx_del_tx_ctx()
1308 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_del_tx_ctx()
1317 struct qlcnic_cmd_args cmd; qlcnic_83xx_create_tx_ctx() local
1352 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CREATE_TX_CTX); qlcnic_83xx_create_tx_ctx()
1357 cmd.req.arg[0] |= (0x3 << 29); qlcnic_83xx_create_tx_ctx()
1362 cmd.req.arg[1] = QLCNIC_CAP0_LEGACY_CONTEXT; qlcnic_83xx_create_tx_ctx()
1363 cmd.req.arg[5] = QLCNIC_SINGLE_RING | temp; qlcnic_83xx_create_tx_ctx()
1365 buf = &cmd.req.arg[6]; qlcnic_83xx_create_tx_ctx()
1368 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_create_tx_ctx()
1374 mbx_out = (struct qlcnic_tx_mbx_out *)&cmd.rsp.arg[2]; qlcnic_83xx_create_tx_ctx()
1386 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_create_tx_ctx()
1484 struct qlcnic_cmd_args cmd; qlcnic_83xx_get_beacon_state() local
1488 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_LED_CONFIG); qlcnic_83xx_get_beacon_state()
1490 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_get_beacon_state()
1492 beacon_state = cmd.rsp.arg[4]; qlcnic_83xx_get_beacon_state()
1503 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_get_beacon_state()
1511 struct qlcnic_cmd_args cmd; qlcnic_83xx_config_led() local
1517 status = qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_83xx_config_led()
1522 status = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_config_led()
1529 adapter->ahw->mbox_reg[i] = cmd.rsp.arg[i+1]; qlcnic_83xx_config_led()
1531 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_config_led()
1535 status = qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_83xx_config_led()
1540 cmd.req.arg[1] = mbx_in; qlcnic_83xx_config_led()
1541 cmd.req.arg[2] = mbx_in; qlcnic_83xx_config_led()
1542 cmd.req.arg[3] = mbx_in; qlcnic_83xx_config_led()
1544 cmd.req.arg[4] = QLC_83XX_ENABLE_BEACON; qlcnic_83xx_config_led()
1545 status = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_config_led()
1551 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_config_led()
1556 status = qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_83xx_config_led()
1561 cmd.req.arg[1] = adapter->ahw->mbox_reg[0]; qlcnic_83xx_config_led()
1562 cmd.req.arg[2] = adapter->ahw->mbox_reg[1]; qlcnic_83xx_config_led()
1563 cmd.req.arg[3] = adapter->ahw->mbox_reg[2]; qlcnic_83xx_config_led()
1565 cmd.req.arg[4] = adapter->ahw->mbox_reg[3]; qlcnic_83xx_config_led()
1566 status = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_config_led()
1570 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_config_led()
1622 struct qlcnic_cmd_args cmd; qlcnic_83xx_initialize_nic() local
1629 status = qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_83xx_initialize_nic()
1632 status = qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_83xx_initialize_nic()
1638 cmd.req.arg[1] = QLC_REGISTER_LB_IDC | QLC_INIT_FW_RESOURCES; qlcnic_83xx_initialize_nic()
1641 cmd.req.arg[1] |= QLC_REGISTER_DCB_AEN; qlcnic_83xx_initialize_nic()
1643 status = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_initialize_nic()
1649 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_initialize_nic()
1654 struct qlcnic_cmd_args cmd; qlcnic_83xx_set_port_config() local
1657 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_PORT_CONFIG); qlcnic_83xx_set_port_config()
1661 cmd.req.arg[1] = adapter->ahw->port_config; qlcnic_83xx_set_port_config()
1662 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_set_port_config()
1665 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_set_port_config()
1671 struct qlcnic_cmd_args cmd; qlcnic_83xx_get_port_config() local
1674 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PORT_CONFIG); qlcnic_83xx_get_port_config()
1678 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_get_port_config()
1682 adapter->ahw->port_config = cmd.rsp.arg[1]; qlcnic_83xx_get_port_config()
1683 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_get_port_config()
1691 struct qlcnic_cmd_args cmd; qlcnic_83xx_setup_link_event() local
1693 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_LINK_EVENT); qlcnic_83xx_setup_link_event()
1698 cmd.req.arg[1] = (enable ? 1 : 0) | BIT_8 | temp; qlcnic_83xx_setup_link_event()
1699 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_setup_link_event()
1703 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_setup_link_event()
1722 struct qlcnic_cmd_args *cmd = NULL; qlcnic_83xx_nic_set_promisc() local
1729 cmd = kzalloc(sizeof(*cmd), GFP_ATOMIC); qlcnic_83xx_nic_set_promisc()
1730 if (!cmd) qlcnic_83xx_nic_set_promisc()
1733 err = qlcnic_alloc_mbx_args(cmd, adapter, qlcnic_83xx_nic_set_promisc()
1738 cmd->type = QLC_83XX_MBX_CMD_NO_WAIT; qlcnic_83xx_nic_set_promisc()
1744 cmd->req.arg[1] = mode | temp; qlcnic_83xx_nic_set_promisc()
1745 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_83xx_nic_set_promisc()
1749 qlcnic_free_mbx_args(cmd); qlcnic_83xx_nic_set_promisc()
1752 kfree(cmd); qlcnic_83xx_nic_set_promisc()
1976 struct qlcnic_cmd_args cmd; qlcnic_83xx_config_ipaddr() local
1978 err = qlcnic_alloc_mbx_args(&cmd, adapter, qlcnic_83xx_config_ipaddr()
1986 cmd.req.arg[1] = 1 | temp; qlcnic_83xx_config_ipaddr()
1988 cmd.req.arg[1] = 2 | temp; qlcnic_83xx_config_ipaddr()
1999 memcpy(&cmd.req.arg[2], &temp_ip, sizeof(u32)); qlcnic_83xx_config_ipaddr()
2000 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_config_ipaddr()
2006 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_config_ipaddr()
2013 struct qlcnic_cmd_args cmd; qlcnic_83xx_config_hw_lro() local
2021 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIGURE_HW_LRO); qlcnic_83xx_config_hw_lro()
2027 cmd.req.arg[1] = arg1; qlcnic_83xx_config_hw_lro()
2029 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_config_hw_lro()
2032 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_config_hw_lro()
2041 struct qlcnic_cmd_args cmd; qlcnic_83xx_config_rss() local
2046 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIGURE_RSS); qlcnic_83xx_config_rss()
2062 cmd.req.arg[1] = (adapter->recv_ctx->context_id); qlcnic_83xx_config_rss()
2063 cmd.req.arg[2] = word; qlcnic_83xx_config_rss()
2064 memcpy(&cmd.req.arg[4], key, sizeof(key)); qlcnic_83xx_config_rss()
2066 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_config_rss()
2070 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_config_rss()
2090 struct qlcnic_cmd_args *cmd = NULL; qlcnic_83xx_sre_macaddr_change() local
2098 cmd = kzalloc(sizeof(*cmd), GFP_ATOMIC); qlcnic_83xx_sre_macaddr_change()
2099 if (!cmd) qlcnic_83xx_sre_macaddr_change()
2102 err = qlcnic_alloc_mbx_args(cmd, adapter, QLCNIC_CMD_CONFIG_MAC_VLAN); qlcnic_83xx_sre_macaddr_change()
2106 cmd->type = QLC_83XX_MBX_CMD_NO_WAIT; qlcnic_83xx_sre_macaddr_change()
2112 cmd->req.arg[1] = op | (1 << 8); qlcnic_83xx_sre_macaddr_change()
2114 cmd->req.arg[1] |= temp; qlcnic_83xx_sre_macaddr_change()
2122 buf = &cmd->req.arg[2]; qlcnic_83xx_sre_macaddr_change()
2124 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_83xx_sre_macaddr_change()
2128 qlcnic_free_mbx_args(cmd); qlcnic_83xx_sre_macaddr_change()
2130 kfree(cmd); qlcnic_83xx_sre_macaddr_change()
2143 u8 type, struct qlcnic_cmd_args *cmd) qlcnic_83xx_configure_mac()
2148 memcpy(&cmd->req.arg[2], mac, sizeof(u32)); qlcnic_83xx_configure_mac()
2149 memcpy(&cmd->req.arg[3], &mac[4], sizeof(u16)); qlcnic_83xx_configure_mac()
2152 cmd->req.arg[1] = type; qlcnic_83xx_configure_mac()
2159 struct qlcnic_cmd_args cmd; qlcnic_83xx_get_mac_address() local
2163 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_MAC_ADDRESS); qlcnic_83xx_get_mac_address()
2167 qlcnic_83xx_configure_mac(adapter, mac, QLCNIC_GET_CURRENT_MAC, &cmd); qlcnic_83xx_get_mac_address()
2168 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_get_mac_address()
2171 mac_low = cmd.rsp.arg[1]; qlcnic_83xx_get_mac_address()
2172 mac_high = cmd.rsp.arg[2]; qlcnic_83xx_get_mac_address()
2183 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_get_mac_address()
2190 struct qlcnic_cmd_args cmd; qlcnic_83xx_set_rx_intr_coal() local
2194 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_INTR_COAL); qlcnic_83xx_set_rx_intr_coal()
2199 cmd.req.arg[1] = QLCNIC_INTR_COAL_TYPE_RX | temp << 16; qlcnic_83xx_set_rx_intr_coal()
2201 cmd.req.arg[2] = coal->rx_packets | temp << 16; qlcnic_83xx_set_rx_intr_coal()
2202 cmd.req.arg[3] = coal->flag; qlcnic_83xx_set_rx_intr_coal()
2204 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_set_rx_intr_coal()
2209 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_set_rx_intr_coal()
2217 struct qlcnic_cmd_args cmd; qlcnic_83xx_set_tx_intr_coal() local
2221 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_INTR_COAL); qlcnic_83xx_set_tx_intr_coal()
2226 cmd.req.arg[1] = QLCNIC_INTR_COAL_TYPE_TX | temp << 16; qlcnic_83xx_set_tx_intr_coal()
2228 cmd.req.arg[2] = coal->tx_packets | temp << 16; qlcnic_83xx_set_tx_intr_coal()
2229 cmd.req.arg[3] = coal->flag; qlcnic_83xx_set_tx_intr_coal()
2231 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_set_tx_intr_coal()
2236 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_set_tx_intr_coal()
2369 struct qlcnic_cmd_args cmd; qlcnic_83xx_set_nic_info() local
2378 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); qlcnic_83xx_set_nic_info()
2382 cmd.req.arg[1] = (nic->pci_func << 16); qlcnic_83xx_set_nic_info()
2383 cmd.req.arg[2] = 0x1 << 16; qlcnic_83xx_set_nic_info()
2384 cmd.req.arg[3] = nic->phys_port | (nic->switch_mode << 16); qlcnic_83xx_set_nic_info()
2385 cmd.req.arg[4] = nic->capabilities; qlcnic_83xx_set_nic_info()
2386 cmd.req.arg[5] = (nic->max_mac_filters & 0xFF) | ((nic->max_mtu) << 16); qlcnic_83xx_set_nic_info()
2387 cmd.req.arg[6] = (nic->max_tx_ques) | ((nic->max_rx_ques) << 16); qlcnic_83xx_set_nic_info()
2388 cmd.req.arg[7] = (nic->min_tx_bw) | ((nic->max_tx_bw) << 16); qlcnic_83xx_set_nic_info()
2390 cmd.req.arg[i] = 0; qlcnic_83xx_set_nic_info()
2392 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_set_nic_info()
2400 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_set_nic_info()
2411 struct qlcnic_cmd_args cmd; qlcnic_83xx_get_nic_info() local
2414 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_NIC_INFO); qlcnic_83xx_get_nic_info()
2420 cmd.req.arg[1] = op | BIT_31 | temp; qlcnic_83xx_get_nic_info()
2422 cmd.req.arg[1] = ahw->pci_func << 16; qlcnic_83xx_get_nic_info()
2424 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_get_nic_info()
2431 npar_info->op_type = cmd.rsp.arg[1]; qlcnic_83xx_get_nic_info()
2432 npar_info->pci_func = cmd.rsp.arg[2] & 0xFFFF; qlcnic_83xx_get_nic_info()
2433 npar_info->op_mode = (cmd.rsp.arg[2] & 0xFFFF0000) >> 16; qlcnic_83xx_get_nic_info()
2434 npar_info->phys_port = cmd.rsp.arg[3] & 0xFFFF; qlcnic_83xx_get_nic_info()
2435 npar_info->switch_mode = (cmd.rsp.arg[3] & 0xFFFF0000) >> 16; qlcnic_83xx_get_nic_info()
2436 npar_info->capabilities = cmd.rsp.arg[4]; qlcnic_83xx_get_nic_info()
2437 npar_info->max_mac_filters = cmd.rsp.arg[5] & 0xFF; qlcnic_83xx_get_nic_info()
2438 npar_info->max_mtu = (cmd.rsp.arg[5] & 0xFFFF0000) >> 16; qlcnic_83xx_get_nic_info()
2439 npar_info->max_tx_ques = cmd.rsp.arg[6] & 0xFFFF; qlcnic_83xx_get_nic_info()
2440 npar_info->max_rx_ques = (cmd.rsp.arg[6] & 0xFFFF0000) >> 16; qlcnic_83xx_get_nic_info()
2441 npar_info->min_tx_bw = cmd.rsp.arg[7] & 0xFFFF; qlcnic_83xx_get_nic_info()
2442 npar_info->max_tx_bw = (cmd.rsp.arg[7] & 0xFFFF0000) >> 16; qlcnic_83xx_get_nic_info()
2443 if (cmd.rsp.arg[8] & 0x1) qlcnic_83xx_get_nic_info()
2444 npar_info->max_bw_reg_offset = (cmd.rsp.arg[8] & 0x7FFE) >> 1; qlcnic_83xx_get_nic_info()
2445 if (cmd.rsp.arg[8] & 0x10000) { qlcnic_83xx_get_nic_info()
2446 temp = (cmd.rsp.arg[8] & 0x7FFE0000) >> 17; qlcnic_83xx_get_nic_info()
2450 memcpy(ahw->extra_capability, &cmd.rsp.arg[16], qlcnic_83xx_get_nic_info()
2454 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_get_nic_info()
2489 struct qlcnic_cmd_args cmd; qlcnic_83xx_get_pci_info() local
2493 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PCI_INFO); qlcnic_83xx_get_pci_info()
2497 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_get_pci_info()
2501 ahw->max_pci_func = cmd.rsp.arg[1] & 0xFF; qlcnic_83xx_get_pci_info()
2503 pci_info->id = cmd.rsp.arg[i] & 0xFFFF; qlcnic_83xx_get_pci_info()
2504 pci_info->active = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16; qlcnic_83xx_get_pci_info()
2510 pci_info->type = cmd.rsp.arg[i] & 0xFFFF; qlcnic_83xx_get_pci_info()
2513 temp = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16; qlcnic_83xx_get_pci_info()
2516 pci_info->tx_min_bw = cmd.rsp.arg[i] & 0xFFFF; qlcnic_83xx_get_pci_info()
2517 temp = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16; qlcnic_83xx_get_pci_info()
2520 memcpy(pci_info->mac, &cmd.rsp.arg[i], ETH_ALEN - 2); qlcnic_83xx_get_pci_info()
2522 memcpy(pci_info->mac + sizeof(u32), &cmd.rsp.arg[i], 2); qlcnic_83xx_get_pci_info()
2537 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_get_pci_info()
2547 struct qlcnic_cmd_args cmd; qlcnic_83xx_config_intrpt() local
2550 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_INTRPT); qlcnic_83xx_config_intrpt()
2554 cmd.req.arg[1] = max_ints; qlcnic_83xx_config_intrpt()
2557 cmd.req.arg[1] |= (adapter->ahw->pci_func << 8) | BIT_16; qlcnic_83xx_config_intrpt()
2564 cmd.req.arg[index++] = val; qlcnic_83xx_config_intrpt()
2566 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_config_intrpt()
2573 max_ints = cmd.rsp.arg[1]; qlcnic_83xx_config_intrpt()
2575 val = cmd.rsp.arg[index]; qlcnic_83xx_config_intrpt()
2585 temp = cmd.rsp.arg[index + 1]; qlcnic_83xx_config_intrpt()
2594 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_config_intrpt()
2716 u32 cmd; qlcnic_83xx_enable_flash_write() local
2717 cmd = adapter->ahw->fdt.write_statusreg_cmd; qlcnic_83xx_enable_flash_write()
2719 (QLC_83XX_FLASH_FDT_WRITE_DEF_SIG | cmd)); qlcnic_83xx_enable_flash_write()
2801 u32 reversed_addr, addr1, addr2, cmd; qlcnic_83xx_erase_flash_sector() local
2832 cmd = QLC_83XX_FLASH_FDT_ERASE_DEF_SIG | adapter->ahw->fdt.erase_cmd; qlcnic_83xx_erase_flash_sector()
2834 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, cmd); qlcnic_83xx_erase_flash_sector()
3173 struct qlcnic_cmd_args cmd; qlcnic_83xx_test_link() local
3187 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_LINK_STATUS); qlcnic_83xx_test_link()
3191 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_test_link()
3197 config = cmd.rsp.arg[1]; qlcnic_83xx_test_link()
3215 config = cmd.rsp.arg[3]; qlcnic_83xx_test_link()
3248 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_test_link()
3407 static inline u64 *qlcnic_83xx_copy_stats(struct qlcnic_cmd_args *cmd, qlcnic_83xx_copy_stats() argument
3413 low = cmd->rsp.arg[index]; qlcnic_83xx_copy_stats()
3414 hi = cmd->rsp.arg[index + 1]; qlcnic_83xx_copy_stats()
3421 struct qlcnic_cmd_args *cmd, u64 *data, qlcnic_83xx_fill_stats()
3427 err = qlcnic_issue_cmd(adapter, cmd); qlcnic_83xx_fill_stats()
3434 total_regs = cmd->rsp.num; qlcnic_83xx_fill_stats()
3439 data = qlcnic_83xx_copy_stats(cmd, data, k); qlcnic_83xx_fill_stats()
3443 data = qlcnic_83xx_copy_stats(cmd, data, k); qlcnic_83xx_fill_stats()
3447 data = qlcnic_83xx_copy_stats(cmd, data, k); qlcnic_83xx_fill_stats()
3450 data = qlcnic_83xx_copy_stats(cmd, data, k); qlcnic_83xx_fill_stats()
3454 data = qlcnic_83xx_copy_stats(cmd, data, k); qlcnic_83xx_fill_stats()
3457 data = qlcnic_83xx_copy_stats(cmd, data, k); qlcnic_83xx_fill_stats()
3460 data = qlcnic_83xx_copy_stats(cmd, data, k); qlcnic_83xx_fill_stats()
3464 data = qlcnic_83xx_copy_stats(cmd, data, k); qlcnic_83xx_fill_stats()
3467 data = qlcnic_83xx_copy_stats(cmd, data, k); qlcnic_83xx_fill_stats()
3478 struct qlcnic_cmd_args cmd; qlcnic_83xx_get_stats() local
3482 ret = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_STATISTICS); qlcnic_83xx_get_stats()
3486 cmd.req.arg[1] = BIT_1 | (adapter->tx_ring->ctx_id << 16); qlcnic_83xx_get_stats()
3487 cmd.rsp.num = QLC_83XX_TX_STAT_REGS; qlcnic_83xx_get_stats()
3488 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, qlcnic_83xx_get_stats()
3495 cmd.req.arg[1] = BIT_2 | (adapter->portnum << 16); qlcnic_83xx_get_stats()
3496 cmd.rsp.num = QLC_83XX_MAC_STAT_REGS; qlcnic_83xx_get_stats()
3497 memset(cmd.rsp.arg, 0, sizeof(u32) * cmd.rsp.num); qlcnic_83xx_get_stats()
3498 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, qlcnic_83xx_get_stats()
3505 cmd.req.arg[1] = adapter->recv_ctx->context_id << 16; qlcnic_83xx_get_stats()
3506 cmd.rsp.num = QLC_83XX_RX_STAT_REGS; qlcnic_83xx_get_stats()
3507 memset(cmd.rsp.arg, 0, sizeof(u32) * cmd.rsp.num); qlcnic_83xx_get_stats()
3508 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, qlcnic_83xx_get_stats()
3513 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_get_stats()
3557 struct qlcnic_cmd_args cmd; qlcnic_83xx_interrupt_test() local
3580 ret = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_INTRPT_TEST); qlcnic_83xx_interrupt_test()
3589 cmd.req.arg[1] = 1; qlcnic_83xx_interrupt_test()
3590 cmd.req.arg[2] = intrpt_id; qlcnic_83xx_interrupt_test()
3591 cmd.req.arg[3] = BIT_0; qlcnic_83xx_interrupt_test()
3593 ret = qlcnic_issue_cmd(adapter, &cmd); qlcnic_83xx_interrupt_test()
3594 data = cmd.rsp.arg[2]; qlcnic_83xx_interrupt_test()
3611 qlcnic_free_mbx_args(&cmd); qlcnic_83xx_interrupt_test()
3806 struct qlcnic_cmd_args *cmd) qlcnic_83xx_notify_cmd_completion()
3808 atomic_set(&cmd->rsp_status, QLC_83XX_MBX_RESPONSE_ARRIVED); qlcnic_83xx_notify_cmd_completion()
3810 if (cmd->type == QLC_83XX_MBX_CMD_NO_WAIT) { qlcnic_83xx_notify_cmd_completion()
3811 qlcnic_free_mbx_args(cmd); qlcnic_83xx_notify_cmd_completion()
3812 kfree(cmd); qlcnic_83xx_notify_cmd_completion()
3815 complete(&cmd->completion); qlcnic_83xx_notify_cmd_completion()
3822 struct qlcnic_cmd_args *cmd = NULL; qlcnic_83xx_flush_mbx_queue() local
3827 cmd = list_entry(head->next, struct qlcnic_cmd_args, list); qlcnic_83xx_flush_mbx_queue()
3829 __func__, cmd->cmd_op); qlcnic_83xx_flush_mbx_queue()
3830 list_del(&cmd->list); qlcnic_83xx_flush_mbx_queue()
3832 qlcnic_83xx_notify_cmd_completion(adapter, cmd); qlcnic_83xx_flush_mbx_queue()
3867 struct qlcnic_cmd_args *cmd) qlcnic_83xx_dequeue_mbx_cmd()
3873 list_del(&cmd->list); qlcnic_83xx_dequeue_mbx_cmd()
3878 qlcnic_83xx_notify_cmd_completion(adapter, cmd); qlcnic_83xx_dequeue_mbx_cmd()
3882 struct qlcnic_cmd_args *cmd) qlcnic_83xx_encode_mbx_cmd()
3888 if (cmd->op_type != QLC_83XX_MBX_POST_BC_OP) { qlcnic_83xx_encode_mbx_cmd()
3889 mbx_cmd = cmd->req.arg[0]; qlcnic_83xx_encode_mbx_cmd()
3891 for (i = 1; i < cmd->req.num; i++) qlcnic_83xx_encode_mbx_cmd()
3892 writel(cmd->req.arg[i], QLCNIC_MBX_HOST(ahw, i)); qlcnic_83xx_encode_mbx_cmd()
3896 total_size = cmd->pay_size + hdr_size; qlcnic_83xx_encode_mbx_cmd()
3905 mbx_cmd |= cmd->func_num << 5; qlcnic_83xx_encode_mbx_cmd()
3910 writel(*(cmd->hdr++), QLCNIC_MBX_HOST(ahw, i)); qlcnic_83xx_encode_mbx_cmd()
3911 for (j = 0; j < cmd->pay_size; j++, i++) qlcnic_83xx_encode_mbx_cmd()
3912 writel(*(cmd->pay++), QLCNIC_MBX_HOST(ahw, i)); qlcnic_83xx_encode_mbx_cmd()
3931 struct qlcnic_cmd_args *cmd, qlcnic_83xx_enqueue_mbx_cmd()
3937 atomic_set(&cmd->rsp_status, QLC_83XX_MBX_RESPONSE_WAIT); qlcnic_83xx_enqueue_mbx_cmd()
3938 init_completion(&cmd->completion); qlcnic_83xx_enqueue_mbx_cmd()
3939 cmd->rsp_opcode = QLC_83XX_MBX_RESPONSE_UNKNOWN; qlcnic_83xx_enqueue_mbx_cmd()
3943 list_add_tail(&cmd->list, &mbx->cmd_q); qlcnic_83xx_enqueue_mbx_cmd()
3945 cmd->total_cmds = mbx->num_cmds; qlcnic_83xx_enqueue_mbx_cmd()
3946 *timeout = cmd->total_cmds * QLC_83XX_MBX_TIMEOUT; qlcnic_83xx_enqueue_mbx_cmd()
3958 struct qlcnic_cmd_args *cmd) qlcnic_83xx_check_mac_rcode()
3963 if (cmd->cmd_op == QLCNIC_CMD_CONFIG_MAC_VLAN) { qlcnic_83xx_check_mac_rcode()
3969 cmd->rsp_opcode = QLCNIC_RCODE_SUCCESS; qlcnic_83xx_check_mac_rcode()
3978 struct qlcnic_cmd_args *cmd) qlcnic_83xx_decode_mbx_rsp()
3987 qlcnic_83xx_get_mbx_data(adapter, cmd); qlcnic_83xx_decode_mbx_rsp()
3992 cmd->rsp_opcode = QLCNIC_RCODE_SUCCESS; qlcnic_83xx_decode_mbx_rsp()
3995 if (!qlcnic_83xx_check_mac_rcode(adapter, cmd)) qlcnic_83xx_decode_mbx_rsp()
3999 __func__, cmd->cmd_op, cmd->type, ahw->pci_func, qlcnic_83xx_decode_mbx_rsp()
4001 cmd->rsp_opcode = QLC_83XX_MBX_RESPONSE_FAILED; qlcnic_83xx_decode_mbx_rsp()
4002 qlcnic_dump_mbx(adapter, cmd); qlcnic_83xx_decode_mbx_rsp()
4031 struct qlcnic_cmd_args *cmd = NULL; qlcnic_83xx_mailbox_worker() local
4049 cmd = list_entry(head->next, struct qlcnic_cmd_args, list); qlcnic_83xx_mailbox_worker()
4053 mbx_ops->encode_cmd(adapter, cmd); qlcnic_83xx_mailbox_worker()
4058 mbx_ops->decode_resp(adapter, cmd); qlcnic_83xx_mailbox_worker()
4062 __func__, cmd->cmd_op, cmd->type, ahw->pci_func, qlcnic_83xx_mailbox_worker()
4066 qlcnic_83xx_get_mbx_data(adapter, cmd); qlcnic_83xx_mailbox_worker()
4067 qlcnic_dump_mbx(adapter, cmd); qlcnic_83xx_mailbox_worker()
4070 cmd->rsp_opcode = QLCNIC_RCODE_TIMEOUT; qlcnic_83xx_mailbox_worker()
4072 mbx_ops->dequeue_cmd(adapter, cmd); qlcnic_83xx_mailbox_worker()
446 qlcnic_83xx_get_mbx_data(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_83xx_get_mbx_data() argument
795 qlcnic_dump_mbx(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_dump_mbx() argument
821 qlcnic_83xx_poll_for_mbx_completion(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_83xx_poll_for_mbx_completion() argument
845 qlcnic_83xx_issue_cmd(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_83xx_issue_cmd() argument
2142 qlcnic_83xx_configure_mac(struct qlcnic_adapter *adapter, u8 *mac, u8 type, struct qlcnic_cmd_args *cmd) qlcnic_83xx_configure_mac() argument
3420 qlcnic_83xx_fill_stats(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd, u64 *data, int type, int *ret) qlcnic_83xx_fill_stats() argument
3805 qlcnic_83xx_notify_cmd_completion(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_83xx_notify_cmd_completion() argument
3866 qlcnic_83xx_dequeue_mbx_cmd(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_83xx_dequeue_mbx_cmd() argument
3881 qlcnic_83xx_encode_mbx_cmd(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_83xx_encode_mbx_cmd() argument
3930 qlcnic_83xx_enqueue_mbx_cmd(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd, unsigned long *timeout) qlcnic_83xx_enqueue_mbx_cmd() argument
3957 qlcnic_83xx_check_mac_rcode(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_83xx_check_mac_rcode() argument
3977 qlcnic_83xx_decode_mbx_rsp(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_83xx_decode_mbx_rsp() argument
H A Dqlcnic_sriov_common.c232 struct qlcnic_cmd_args cmd; qlcnic_sriov_cleanup_list() local
242 cmd.req.arg = (u32 *)trans->req_pay; qlcnic_sriov_cleanup_list()
243 cmd.rsp.arg = (u32 *)trans->rsp_pay; qlcnic_sriov_cleanup_list()
244 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_cleanup_list()
306 struct qlcnic_cmd_args cmd; qlcnic_sriov_post_bc_msg() local
310 memset(&cmd, 0, sizeof(struct qlcnic_cmd_args)); qlcnic_sriov_post_bc_msg()
311 cmd.hdr = hdr; qlcnic_sriov_post_bc_msg()
312 cmd.pay = pay; qlcnic_sriov_post_bc_msg()
313 cmd.pay_size = size; qlcnic_sriov_post_bc_msg()
314 cmd.func_num = pci_func; qlcnic_sriov_post_bc_msg()
315 cmd.op_type = QLC_83XX_MBX_POST_BC_OP; qlcnic_sriov_post_bc_msg()
316 cmd.cmd_op = ((struct qlcnic_bc_hdr *)hdr)->cmd_op; qlcnic_sriov_post_bc_msg()
318 err = mbx->ops->enqueue_cmd(adapter, &cmd, &timeout); qlcnic_sriov_post_bc_msg()
322 __func__, cmd.cmd_op, cmd.type, ahw->pci_func, qlcnic_sriov_post_bc_msg()
327 if (!wait_for_completion_timeout(&cmd.completion, timeout)) { qlcnic_sriov_post_bc_msg()
330 __func__, cmd.cmd_op, cmd.type, ahw->pci_func, qlcnic_sriov_post_bc_msg()
335 return cmd.rsp_opcode; qlcnic_sriov_post_bc_msg()
352 struct qlcnic_cmd_args cmd; qlcnic_sriov_get_vf_vport_info() local
356 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_NIC_INFO); qlcnic_sriov_get_vf_vport_info()
360 cmd.req.arg[1] = vport_id << 16 | 0x1; qlcnic_sriov_get_vf_vport_info()
361 err = qlcnic_issue_cmd(adapter, &cmd); qlcnic_sriov_get_vf_vport_info()
365 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_get_vf_vport_info()
369 status = cmd.rsp.arg[2] & 0xffff; qlcnic_sriov_get_vf_vport_info()
371 npar_info->min_tx_bw = MSW(cmd.rsp.arg[2]); qlcnic_sriov_get_vf_vport_info()
373 npar_info->max_tx_bw = LSW(cmd.rsp.arg[3]); qlcnic_sriov_get_vf_vport_info()
375 npar_info->max_tx_ques = MSW(cmd.rsp.arg[3]); qlcnic_sriov_get_vf_vport_info()
377 npar_info->max_tx_mac_filters = LSW(cmd.rsp.arg[4]); qlcnic_sriov_get_vf_vport_info()
379 npar_info->max_rx_mcast_mac_filters = MSW(cmd.rsp.arg[4]); qlcnic_sriov_get_vf_vport_info()
381 npar_info->max_rx_ucast_mac_filters = LSW(cmd.rsp.arg[5]); qlcnic_sriov_get_vf_vport_info()
383 npar_info->max_rx_ip_addr = MSW(cmd.rsp.arg[5]); qlcnic_sriov_get_vf_vport_info()
385 npar_info->max_rx_lro_flow = LSW(cmd.rsp.arg[6]); qlcnic_sriov_get_vf_vport_info()
387 npar_info->max_rx_status_rings = MSW(cmd.rsp.arg[6]); qlcnic_sriov_get_vf_vport_info()
389 npar_info->max_rx_buf_rings = LSW(cmd.rsp.arg[7]); qlcnic_sriov_get_vf_vport_info()
391 npar_info->max_rx_ques = MSW(cmd.rsp.arg[7]); qlcnic_sriov_get_vf_vport_info()
392 npar_info->max_tx_vlan_keys = LSW(cmd.rsp.arg[8]); qlcnic_sriov_get_vf_vport_info()
393 npar_info->max_local_ipv6_addrs = MSW(cmd.rsp.arg[8]); qlcnic_sriov_get_vf_vport_info()
394 npar_info->max_remote_ipv6_addrs = LSW(cmd.rsp.arg[9]); qlcnic_sriov_get_vf_vport_info()
411 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_get_vf_vport_info()
416 struct qlcnic_cmd_args *cmd) qlcnic_sriov_set_pvid_mode()
418 adapter->rx_pvid = MSW(cmd->rsp.arg[1]) & 0xffff; qlcnic_sriov_set_pvid_mode()
424 struct qlcnic_cmd_args *cmd) qlcnic_sriov_set_guest_vlan_mode()
433 sriov->any_vlan = cmd->rsp.arg[2] & 0xf; qlcnic_sriov_set_guest_vlan_mode()
434 sriov->num_allowed_vlans = cmd->rsp.arg[2] >> 16; qlcnic_sriov_set_guest_vlan_mode()
448 vlans = (u16 *)&cmd->rsp.arg[3]; qlcnic_sriov_set_guest_vlan_mode()
458 struct qlcnic_cmd_args cmd; qlcnic_sriov_get_vf_acl() local
461 memset(&cmd, 0, sizeof(cmd)); qlcnic_sriov_get_vf_acl()
462 ret = qlcnic_sriov_alloc_bc_mbx_args(&cmd, QLCNIC_BC_CMD_GET_ACL); qlcnic_sriov_get_vf_acl()
466 ret = qlcnic_issue_cmd(adapter, &cmd); qlcnic_sriov_get_vf_acl()
471 sriov->vlan_mode = cmd.rsp.arg[1] & 0x3; qlcnic_sriov_get_vf_acl()
474 ret = qlcnic_sriov_set_guest_vlan_mode(adapter, &cmd); qlcnic_sriov_get_vf_acl()
477 ret = qlcnic_sriov_set_pvid_mode(adapter, &cmd); qlcnic_sriov_get_vf_acl()
482 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_get_vf_acl()
716 if (type == mbx_tbl[i].cmd) { qlcnic_sriov_alloc_bc_mbx_args()
743 struct qlcnic_cmd_args *cmd, qlcnic_sriov_prepare_bc_hdr()
754 trans->req_pay = (struct qlcnic_bc_payload *)cmd->req.arg; qlcnic_sriov_prepare_bc_hdr()
755 trans->rsp_pay = (struct qlcnic_bc_payload *)cmd->rsp.arg; qlcnic_sriov_prepare_bc_hdr()
756 num_regs = cmd->req.num; qlcnic_sriov_prepare_bc_hdr()
758 num_regs = cmd->rsp.num; qlcnic_sriov_prepare_bc_hdr()
760 cmd_op = cmd->req.arg[0] & 0xff; qlcnic_sriov_prepare_bc_hdr()
777 cmd->req.arg = (u32 *)trans->req_pay; qlcnic_sriov_prepare_bc_hdr()
778 cmd->rsp.arg = (u32 *)trans->rsp_pay; qlcnic_sriov_prepare_bc_hdr()
779 cmd_op = cmd->req.arg[0] & 0xff; qlcnic_sriov_prepare_bc_hdr()
780 cmd->cmd_op = cmd_op; qlcnic_sriov_prepare_bc_hdr()
785 cmd->req.num = trans->req_pay_size / 4; qlcnic_sriov_prepare_bc_hdr()
786 cmd->rsp.num = trans->rsp_pay_size / 4; qlcnic_sriov_prepare_bc_hdr()
788 cmd->op_type = trans->req_hdr->op_type; qlcnic_sriov_prepare_bc_hdr()
796 hdr[i].op_type = cmd->op_type; qlcnic_sriov_prepare_bc_hdr()
1032 struct qlcnic_cmd_args *cmd) __qlcnic_sriov_process_bc_cmd()
1036 qlcnic_sriov_pf_process_bc_cmd(adapter, trans, cmd); __qlcnic_sriov_process_bc_cmd()
1040 cmd->rsp.arg[0] |= (0x9 << 25); __qlcnic_sriov_process_bc_cmd()
1050 struct qlcnic_cmd_args cmd; qlcnic_sriov_process_bc_cmd() local
1059 memset(&cmd, 0, sizeof(struct qlcnic_cmd_args)); qlcnic_sriov_process_bc_cmd()
1064 if (qlcnic_sriov_prepare_bc_hdr(trans, &cmd, trans->req_hdr->seq_id, qlcnic_sriov_process_bc_cmd()
1068 __qlcnic_sriov_process_bc_cmd(adapter, trans, &cmd); qlcnic_sriov_process_bc_cmd()
1073 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_process_bc_cmd()
1191 struct qlcnic_cmd_args cmd; qlcnic_sriov_handle_bc_cmd() local
1209 memset(&cmd, 0, sizeof(struct qlcnic_cmd_args)); qlcnic_sriov_handle_bc_cmd()
1215 err = qlcnic_sriov_alloc_bc_mbx_args(&cmd, cmd_op); qlcnic_sriov_handle_bc_cmd()
1217 err = qlcnic_alloc_mbx_args(&cmd, adapter, cmd_op); qlcnic_sriov_handle_bc_cmd()
1224 cmd.op_type = hdr->op_type; qlcnic_sriov_handle_bc_cmd()
1225 if (qlcnic_sriov_prepare_bc_hdr(trans, &cmd, hdr->seq_id, qlcnic_sriov_handle_bc_cmd()
1227 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_handle_bc_cmd()
1248 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_handle_bc_cmd()
1323 struct qlcnic_cmd_args cmd; qlcnic_sriov_cfg_bc_intr() local
1329 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_BC_EVENT_SETUP)) qlcnic_sriov_cfg_bc_intr()
1333 cmd.req.arg[1] = (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7); qlcnic_sriov_cfg_bc_intr()
1335 err = qlcnic_83xx_issue_cmd(adapter, &cmd); qlcnic_sriov_cfg_bc_intr()
1343 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_cfg_bc_intr()
1368 struct qlcnic_cmd_args *cmd) __qlcnic_sriov_issue_cmd()
1383 rsp = qlcnic_sriov_prepare_bc_hdr(trans, cmd, seq, QLC_BC_COMMAND); __qlcnic_sriov_issue_cmd()
1390 QLCDB(adapter, DRV, "MBX not Ready!(cmd 0x%x) for VF 0x%x\n", __qlcnic_sriov_issue_cmd()
1391 QLCNIC_MBX_RSP(cmd->req.arg[0]), func); __qlcnic_sriov_issue_cmd()
1398 (cmd->req.arg[0] & 0xffff), func); __qlcnic_sriov_issue_cmd()
1411 rsp_data = cmd->rsp.arg[0]; __qlcnic_sriov_issue_cmd()
1413 opcode = QLCNIC_MBX_RSP(cmd->req.arg[0]); __qlcnic_sriov_issue_cmd()
1419 if (cmd->type == QLC_83XX_MBX_CMD_NO_WAIT) { __qlcnic_sriov_issue_cmd()
1443 if (cmd->type == QLC_83XX_MBX_CMD_NO_WAIT) { __qlcnic_sriov_issue_cmd()
1444 qlcnic_free_mbx_args(cmd); __qlcnic_sriov_issue_cmd()
1445 kfree(cmd); __qlcnic_sriov_issue_cmd()
1453 struct qlcnic_cmd_args *cmd) qlcnic_sriov_issue_cmd()
1455 if (cmd->type == QLC_83XX_MBX_CMD_NO_WAIT) qlcnic_sriov_issue_cmd()
1456 return qlcnic_sriov_async_issue_cmd(adapter, cmd); qlcnic_sriov_issue_cmd()
1458 return __qlcnic_sriov_issue_cmd(adapter, cmd); qlcnic_sriov_issue_cmd()
1463 struct qlcnic_cmd_args cmd; qlcnic_sriov_channel_cfg_cmd() local
1467 memset(&cmd, 0, sizeof(cmd)); qlcnic_sriov_channel_cfg_cmd()
1468 if (qlcnic_sriov_alloc_bc_mbx_args(&cmd, cmd_op)) qlcnic_sriov_channel_cfg_cmd()
1471 ret = qlcnic_issue_cmd(adapter, &cmd); qlcnic_sriov_channel_cfg_cmd()
1479 cmd_op = (cmd.rsp.arg[0] & 0xff); qlcnic_sriov_channel_cfg_cmd()
1480 if (cmd.rsp.arg[0] >> 25 == 2) qlcnic_sriov_channel_cfg_cmd()
1488 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_channel_cfg_cmd()
1593 struct qlcnic_cmd_args *cmd; qlcnic_sriov_handle_async_issue_cmd() local
1597 cmd = entry->cmd; qlcnic_sriov_handle_async_issue_cmd()
1598 __qlcnic_sriov_issue_cmd(adapter, cmd); qlcnic_sriov_handle_async_issue_cmd()
1630 struct qlcnic_cmd_args *cmd) qlcnic_sriov_schedule_async_cmd()
1639 entry->cmd = cmd; qlcnic_sriov_schedule_async_cmd()
1645 struct qlcnic_cmd_args *cmd) qlcnic_sriov_async_issue_cmd()
1654 adapter, cmd); qlcnic_sriov_async_issue_cmd()
2040 struct qlcnic_cmd_args cmd; qlcnic_sriov_cfg_vf_guest_vlan() local
2043 memset(&cmd, 0, sizeof(cmd)); qlcnic_sriov_cfg_vf_guest_vlan()
2052 ret = qlcnic_sriov_alloc_bc_mbx_args(&cmd, qlcnic_sriov_cfg_vf_guest_vlan()
2057 cmd.req.arg[1] = (enable & 1) | vid << 16; qlcnic_sriov_cfg_vf_guest_vlan()
2060 ret = qlcnic_issue_cmd(adapter, &cmd); qlcnic_sriov_cfg_vf_guest_vlan()
2079 qlcnic_free_mbx_args(&cmd); qlcnic_sriov_cfg_vf_guest_vlan()
415 qlcnic_sriov_set_pvid_mode(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_sriov_set_pvid_mode() argument
423 qlcnic_sriov_set_guest_vlan_mode(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_sriov_set_guest_vlan_mode() argument
742 qlcnic_sriov_prepare_bc_hdr(struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd, u16 seq, u8 msg_type) qlcnic_sriov_prepare_bc_hdr() argument
1030 __qlcnic_sriov_process_bc_cmd(struct qlcnic_adapter *adapter, struct qlcnic_bc_trans *trans, struct qlcnic_cmd_args *cmd) __qlcnic_sriov_process_bc_cmd() argument
1367 __qlcnic_sriov_issue_cmd(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) __qlcnic_sriov_issue_cmd() argument
1452 qlcnic_sriov_issue_cmd(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_sriov_issue_cmd() argument
1628 qlcnic_sriov_schedule_async_cmd(struct qlcnic_back_channel *bc, work_func_t func, void *data, struct qlcnic_cmd_args *cmd) qlcnic_sriov_schedule_async_cmd() argument
1644 qlcnic_sriov_async_issue_cmd(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) qlcnic_sriov_async_issue_cmd() argument
/linux-4.1.27/drivers/net/ethernet/mellanox/mlx5/core/
H A Dcmd.c97 static struct mlx5_cmd_work_ent *alloc_cmd(struct mlx5_cmd *cmd, alloc_cmd() argument
117 ent->cmd = cmd; alloc_cmd()
123 static u8 alloc_token(struct mlx5_cmd *cmd) alloc_token() argument
127 spin_lock(&cmd->token_lock); alloc_token()
128 cmd->token++; alloc_token()
129 if (cmd->token == 0) alloc_token()
130 cmd->token++; alloc_token()
131 token = cmd->token; alloc_token()
132 spin_unlock(&cmd->token_lock); alloc_token()
137 static int alloc_ent(struct mlx5_cmd *cmd) alloc_ent() argument
142 spin_lock_irqsave(&cmd->alloc_lock, flags); alloc_ent()
143 ret = find_first_bit(&cmd->bitmask, cmd->max_reg_cmds); alloc_ent()
144 if (ret < cmd->max_reg_cmds) alloc_ent()
145 clear_bit(ret, &cmd->bitmask); alloc_ent()
146 spin_unlock_irqrestore(&cmd->alloc_lock, flags); alloc_ent()
148 return ret < cmd->max_reg_cmds ? ret : -ENOMEM; alloc_ent()
151 static void free_ent(struct mlx5_cmd *cmd, int idx) free_ent() argument
155 spin_lock_irqsave(&cmd->alloc_lock, flags); free_ent()
156 set_bit(idx, &cmd->bitmask); free_ent()
157 spin_unlock_irqrestore(&cmd->alloc_lock, flags); free_ent()
160 static struct mlx5_cmd_layout *get_inst(struct mlx5_cmd *cmd, int idx) get_inst() argument
162 return cmd->cmd_buf + (idx << cmd->log_stride); get_inst()
482 struct mlx5_cmd *cmd = ent->cmd; cmd_work_handler() local
483 struct mlx5_core_dev *dev = container_of(cmd, struct mlx5_core_dev, cmd); cmd_work_handler()
487 sem = ent->page_queue ? &cmd->pages_sem : &cmd->sem; cmd_work_handler()
490 ent->idx = alloc_ent(cmd); cmd_work_handler()
497 ent->idx = cmd->max_reg_cmds; cmd_work_handler()
500 ent->token = alloc_token(cmd); cmd_work_handler()
501 cmd->ent_arr[ent->idx] = ent; cmd_work_handler()
502 lay = get_inst(cmd, ent->idx); cmd_work_handler()
516 set_signature(ent, !cmd->checksum_disabled); cmd_work_handler()
526 if (cmd->mode == CMD_MODE_POLLING) { cmd_work_handler()
574 struct mlx5_cmd *cmd = &dev->cmd; wait_func() local
577 if (cmd->mode == CMD_MODE_POLLING) { wait_func()
606 struct mlx5_cmd *cmd = &dev->cmd; mlx5_cmd_invoke() local
616 ent = alloc_cmd(cmd, in, out, uout, uout_size, callback, context, mlx5_cmd_invoke()
627 } else if (!queue_work(cmd->wq, &ent->work)) { mlx5_cmd_invoke()
640 if (op < ARRAY_SIZE(cmd->stats)) { mlx5_cmd_invoke()
641 stats = &cmd->stats[op]; mlx5_cmd_invoke()
666 struct mlx5_cmd_debug *dbg = &dev->cmd.dbg; dbg_write()
767 mailbox->buf = pci_pool_alloc(dev->cmd.pool, flags, alloc_cmd_box()
783 pci_pool_free(dev->cmd.pool, mailbox->buf, mailbox->dma); free_cmd_box()
852 struct mlx5_cmd_debug *dbg = &dev->cmd.dbg; data_write()
887 struct mlx5_cmd_debug *dbg = &dev->cmd.dbg; data_read()
916 struct mlx5_cmd_debug *dbg = &dev->cmd.dbg; outlen_read()
939 struct mlx5_cmd_debug *dbg = &dev->cmd.dbg; outlen_write()
982 struct mlx5_cmd *cmd = &dev->cmd; set_wqname() local
984 snprintf(cmd->wq_name, sizeof(cmd->wq_name), "mlx5_cmd_%s", set_wqname()
990 struct mlx5_cmd_debug *dbg = &dev->cmd.dbg; clean_debug_files()
1001 struct mlx5_cmd_debug *dbg = &dev->cmd.dbg; create_debugfs_files()
1007 dbg->dbg_root = debugfs_create_dir("cmd", dev->priv.dbg_root); create_debugfs_files()
1046 struct mlx5_cmd *cmd = &dev->cmd; mlx5_cmd_use_events() local
1049 for (i = 0; i < cmd->max_reg_cmds; i++) mlx5_cmd_use_events()
1050 down(&cmd->sem); mlx5_cmd_use_events()
1052 down(&cmd->pages_sem); mlx5_cmd_use_events()
1054 flush_workqueue(cmd->wq); mlx5_cmd_use_events()
1056 cmd->mode = CMD_MODE_EVENTS; mlx5_cmd_use_events()
1058 up(&cmd->pages_sem); mlx5_cmd_use_events()
1059 for (i = 0; i < cmd->max_reg_cmds; i++) mlx5_cmd_use_events()
1060 up(&cmd->sem); mlx5_cmd_use_events()
1065 struct mlx5_cmd *cmd = &dev->cmd; mlx5_cmd_use_polling() local
1068 for (i = 0; i < cmd->max_reg_cmds; i++) mlx5_cmd_use_polling()
1069 down(&cmd->sem); mlx5_cmd_use_polling()
1071 down(&cmd->pages_sem); mlx5_cmd_use_polling()
1073 flush_workqueue(cmd->wq); mlx5_cmd_use_polling()
1074 cmd->mode = CMD_MODE_POLLING; mlx5_cmd_use_polling()
1076 up(&cmd->pages_sem); mlx5_cmd_use_polling()
1077 for (i = 0; i < cmd->max_reg_cmds; i++) mlx5_cmd_use_polling()
1078 up(&cmd->sem); mlx5_cmd_use_polling()
1096 struct mlx5_cmd *cmd = &dev->cmd; mlx5_cmd_comp_handler() local
1106 for (i = 0; i < (1 << cmd->log_sz); i++) { mlx5_cmd_comp_handler()
1110 ent = cmd->ent_arr[i]; mlx5_cmd_comp_handler()
1112 sem = &cmd->pages_sem; mlx5_cmd_comp_handler()
1114 sem = &cmd->sem; mlx5_cmd_comp_handler()
1119 if (!cmd->checksum_disabled) mlx5_cmd_comp_handler()
1127 free_ent(cmd, ent->idx); mlx5_cmd_comp_handler()
1130 if (ent->op < ARRAY_SIZE(cmd->stats)) { mlx5_cmd_comp_handler()
1131 stats = &cmd->stats[ent->op]; mlx5_cmd_comp_handler()
1169 struct mlx5_cmd *cmd = &dev->cmd; alloc_msg() local
1173 ent = &cmd->cache.large; alloc_msg()
1175 ent = &cmd->cache.med; alloc_msg()
1273 struct mlx5_cmd *cmd = &dev->cmd; destroy_msg_cache() local
1277 list_for_each_entry_safe(msg, n, &cmd->cache.large.head, list) { destroy_msg_cache()
1282 list_for_each_entry_safe(msg, n, &cmd->cache.med.head, list) { destroy_msg_cache()
1290 struct mlx5_cmd *cmd = &dev->cmd; create_msg_cache() local
1295 spin_lock_init(&cmd->cache.large.lock); create_msg_cache()
1296 INIT_LIST_HEAD(&cmd->cache.large.head); create_msg_cache()
1297 spin_lock_init(&cmd->cache.med.lock); create_msg_cache()
1298 INIT_LIST_HEAD(&cmd->cache.med.head); create_msg_cache()
1306 msg->cache = &cmd->cache.large; create_msg_cache()
1307 list_add_tail(&msg->list, &cmd->cache.large.head); create_msg_cache()
1316 msg->cache = &cmd->cache.med; create_msg_cache()
1317 list_add_tail(&msg->list, &cmd->cache.med.head); create_msg_cache()
1327 static int alloc_cmd_page(struct mlx5_core_dev *dev, struct mlx5_cmd *cmd) alloc_cmd_page() argument
1331 cmd->cmd_alloc_buf = dma_zalloc_coherent(ddev, MLX5_ADAPTER_PAGE_SIZE, alloc_cmd_page()
1332 &cmd->alloc_dma, GFP_KERNEL); alloc_cmd_page()
1333 if (!cmd->cmd_alloc_buf) alloc_cmd_page()
1337 if (!((uintptr_t)cmd->cmd_alloc_buf & (MLX5_ADAPTER_PAGE_SIZE - 1))) { alloc_cmd_page()
1338 cmd->cmd_buf = cmd->cmd_alloc_buf; alloc_cmd_page()
1339 cmd->dma = cmd->alloc_dma; alloc_cmd_page()
1340 cmd->alloc_size = MLX5_ADAPTER_PAGE_SIZE; alloc_cmd_page()
1344 dma_free_coherent(ddev, MLX5_ADAPTER_PAGE_SIZE, cmd->cmd_alloc_buf, alloc_cmd_page()
1345 cmd->alloc_dma); alloc_cmd_page()
1346 cmd->cmd_alloc_buf = dma_zalloc_coherent(ddev, alloc_cmd_page()
1348 &cmd->alloc_dma, GFP_KERNEL); alloc_cmd_page()
1349 if (!cmd->cmd_alloc_buf) alloc_cmd_page()
1352 cmd->cmd_buf = PTR_ALIGN(cmd->cmd_alloc_buf, MLX5_ADAPTER_PAGE_SIZE); alloc_cmd_page()
1353 cmd->dma = ALIGN(cmd->alloc_dma, MLX5_ADAPTER_PAGE_SIZE); alloc_cmd_page()
1354 cmd->alloc_size = 2 * MLX5_ADAPTER_PAGE_SIZE - 1; alloc_cmd_page()
1358 static void free_cmd_page(struct mlx5_core_dev *dev, struct mlx5_cmd *cmd) free_cmd_page() argument
1362 dma_free_coherent(ddev, cmd->alloc_size, cmd->cmd_alloc_buf, free_cmd_page()
1363 cmd->alloc_dma); free_cmd_page()
1370 struct mlx5_cmd *cmd = &dev->cmd; mlx5_cmd_init() local
1384 cmd->pool = pci_pool_create("mlx5_cmd", dev->pdev, size, align, 0); mlx5_cmd_init()
1385 if (!cmd->pool) mlx5_cmd_init()
1388 err = alloc_cmd_page(dev, cmd); mlx5_cmd_init()
1393 cmd->log_sz = cmd_l >> 4 & 0xf; mlx5_cmd_init()
1394 cmd->log_stride = cmd_l & 0xf; mlx5_cmd_init()
1395 if (1 << cmd->log_sz > MLX5_MAX_COMMANDS) { mlx5_cmd_init()
1397 1 << cmd->log_sz); mlx5_cmd_init()
1402 if (cmd->log_sz + cmd->log_stride > MLX5_ADAPTER_PAGE_SHIFT) { mlx5_cmd_init()
1408 cmd->checksum_disabled = 1; mlx5_cmd_init()
1409 cmd->max_reg_cmds = (1 << cmd->log_sz) - 1; mlx5_cmd_init()
1410 cmd->bitmask = (1 << cmd->max_reg_cmds) - 1; mlx5_cmd_init()
1412 cmd->cmdif_rev = ioread32be(&dev->iseg->cmdif_rev_fw_sub) >> 16; mlx5_cmd_init()
1413 if (cmd->cmdif_rev > CMD_IF_REV) { mlx5_cmd_init()
1415 CMD_IF_REV, cmd->cmdif_rev); mlx5_cmd_init()
1420 spin_lock_init(&cmd->alloc_lock); mlx5_cmd_init()
1421 spin_lock_init(&cmd->token_lock); mlx5_cmd_init()
1422 for (i = 0; i < ARRAY_SIZE(cmd->stats); i++) mlx5_cmd_init()
1423 spin_lock_init(&cmd->stats[i].lock); mlx5_cmd_init()
1425 sema_init(&cmd->sem, cmd->max_reg_cmds); mlx5_cmd_init()
1426 sema_init(&cmd->pages_sem, 1); mlx5_cmd_init()
1428 cmd_h = (u32)((u64)(cmd->dma) >> 32); mlx5_cmd_init()
1429 cmd_l = (u32)(cmd->dma); mlx5_cmd_init()
1442 mlx5_core_dbg(dev, "descriptor at dma 0x%llx\n", (unsigned long long)(cmd->dma)); mlx5_cmd_init()
1444 cmd->mode = CMD_MODE_POLLING; mlx5_cmd_init()
1453 cmd->wq = create_singlethread_workqueue(cmd->wq_name); mlx5_cmd_init()
1454 if (!cmd->wq) { mlx5_cmd_init()
1469 destroy_workqueue(cmd->wq); mlx5_cmd_init()
1475 free_cmd_page(dev, cmd); mlx5_cmd_init()
1478 pci_pool_destroy(cmd->pool); mlx5_cmd_init()
1486 struct mlx5_cmd *cmd = &dev->cmd; mlx5_cmd_cleanup() local
1489 destroy_workqueue(cmd->wq); mlx5_cmd_cleanup()
1491 free_cmd_page(dev, cmd); mlx5_cmd_cleanup()
1492 pci_pool_destroy(cmd->pool); mlx5_cmd_cleanup()
H A DMakefile3 mlx5_core-y := main.o cmd.o debugfs.o fw.o eq.o uar.o pagealloc.o \
/linux-4.1.27/arch/powerpc/platforms/powermac/
H A Dpfunc_core.c95 static u32 pmf_next32(struct pmf_cmd *cmd) pmf_next32() argument
98 if ((cmd->cmdend - cmd->cmdptr) < 4) { pmf_next32()
99 cmd->error = 1; pmf_next32()
102 value = *((u32 *)cmd->cmdptr); pmf_next32()
103 cmd->cmdptr += 4; pmf_next32()
107 static const void* pmf_next_blob(struct pmf_cmd *cmd, int count) pmf_next_blob() argument
110 if ((cmd->cmdend - cmd->cmdptr) < count) { pmf_next_blob()
111 cmd->error = 1; pmf_next_blob()
114 value = cmd->cmdptr; pmf_next_blob()
115 cmd->cmdptr += count; pmf_next_blob()
123 #define PMF_PARSE_CALL(name, cmd, handlers, p...) \
125 if (cmd->error) \
130 return handlers->name(cmd->func, cmd->instdata, \
131 cmd->args, p); \
136 static int pmf_parser_write_gpio(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_write_gpio() argument
138 u8 value = (u8)pmf_next32(cmd); pmf_parser_write_gpio()
139 u8 mask = (u8)pmf_next32(cmd); pmf_parser_write_gpio()
143 PMF_PARSE_CALL(write_gpio, cmd, h, value, mask); pmf_parser_write_gpio()
146 static int pmf_parser_read_gpio(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_read_gpio() argument
148 u8 mask = (u8)pmf_next32(cmd); pmf_parser_read_gpio()
149 int rshift = (int)pmf_next32(cmd); pmf_parser_read_gpio()
150 u8 xor = (u8)pmf_next32(cmd); pmf_parser_read_gpio()
155 PMF_PARSE_CALL(read_gpio, cmd, h, mask, rshift, xor); pmf_parser_read_gpio()
158 static int pmf_parser_write_reg32(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_write_reg32() argument
160 u32 offset = pmf_next32(cmd); pmf_parser_write_reg32()
161 u32 value = pmf_next32(cmd); pmf_parser_write_reg32()
162 u32 mask = pmf_next32(cmd); pmf_parser_write_reg32()
167 PMF_PARSE_CALL(write_reg32, cmd, h, offset, value, mask); pmf_parser_write_reg32()
170 static int pmf_parser_read_reg32(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_read_reg32() argument
172 u32 offset = pmf_next32(cmd); pmf_parser_read_reg32()
176 PMF_PARSE_CALL(read_reg32, cmd, h, offset); pmf_parser_read_reg32()
180 static int pmf_parser_write_reg16(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_write_reg16() argument
182 u32 offset = pmf_next32(cmd); pmf_parser_write_reg16()
183 u16 value = (u16)pmf_next32(cmd); pmf_parser_write_reg16()
184 u16 mask = (u16)pmf_next32(cmd); pmf_parser_write_reg16()
189 PMF_PARSE_CALL(write_reg16, cmd, h, offset, value, mask); pmf_parser_write_reg16()
192 static int pmf_parser_read_reg16(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_read_reg16() argument
194 u32 offset = pmf_next32(cmd); pmf_parser_read_reg16()
198 PMF_PARSE_CALL(read_reg16, cmd, h, offset); pmf_parser_read_reg16()
202 static int pmf_parser_write_reg8(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_write_reg8() argument
204 u32 offset = pmf_next32(cmd); pmf_parser_write_reg8()
205 u8 value = (u16)pmf_next32(cmd); pmf_parser_write_reg8()
206 u8 mask = (u16)pmf_next32(cmd); pmf_parser_write_reg8()
211 PMF_PARSE_CALL(write_reg8, cmd, h, offset, value, mask); pmf_parser_write_reg8()
214 static int pmf_parser_read_reg8(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_read_reg8() argument
216 u32 offset = pmf_next32(cmd); pmf_parser_read_reg8()
220 PMF_PARSE_CALL(read_reg8, cmd, h, offset); pmf_parser_read_reg8()
223 static int pmf_parser_delay(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_delay() argument
225 u32 duration = pmf_next32(cmd); pmf_parser_delay()
229 PMF_PARSE_CALL(delay, cmd, h, duration); pmf_parser_delay()
232 static int pmf_parser_wait_reg32(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_wait_reg32() argument
234 u32 offset = pmf_next32(cmd); pmf_parser_wait_reg32()
235 u32 value = pmf_next32(cmd); pmf_parser_wait_reg32()
236 u32 mask = pmf_next32(cmd); pmf_parser_wait_reg32()
241 PMF_PARSE_CALL(wait_reg32, cmd, h, offset, value, mask); pmf_parser_wait_reg32()
244 static int pmf_parser_wait_reg16(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_wait_reg16() argument
246 u32 offset = pmf_next32(cmd); pmf_parser_wait_reg16()
247 u16 value = (u16)pmf_next32(cmd); pmf_parser_wait_reg16()
248 u16 mask = (u16)pmf_next32(cmd); pmf_parser_wait_reg16()
253 PMF_PARSE_CALL(wait_reg16, cmd, h, offset, value, mask); pmf_parser_wait_reg16()
256 static int pmf_parser_wait_reg8(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_wait_reg8() argument
258 u32 offset = pmf_next32(cmd); pmf_parser_wait_reg8()
259 u8 value = (u8)pmf_next32(cmd); pmf_parser_wait_reg8()
260 u8 mask = (u8)pmf_next32(cmd); pmf_parser_wait_reg8()
265 PMF_PARSE_CALL(wait_reg8, cmd, h, offset, value, mask); pmf_parser_wait_reg8()
268 static int pmf_parser_read_i2c(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_read_i2c() argument
270 u32 bytes = pmf_next32(cmd); pmf_parser_read_i2c()
274 PMF_PARSE_CALL(read_i2c, cmd, h, bytes); pmf_parser_read_i2c()
277 static int pmf_parser_write_i2c(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_write_i2c() argument
279 u32 bytes = pmf_next32(cmd); pmf_parser_write_i2c()
280 const void *blob = pmf_next_blob(cmd, bytes); pmf_parser_write_i2c()
285 PMF_PARSE_CALL(write_i2c, cmd, h, bytes, blob); pmf_parser_write_i2c()
289 static int pmf_parser_rmw_i2c(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_rmw_i2c() argument
291 u32 maskbytes = pmf_next32(cmd); pmf_parser_rmw_i2c()
292 u32 valuesbytes = pmf_next32(cmd); pmf_parser_rmw_i2c()
293 u32 totalbytes = pmf_next32(cmd); pmf_parser_rmw_i2c()
294 const void *maskblob = pmf_next_blob(cmd, maskbytes); pmf_parser_rmw_i2c()
295 const void *valuesblob = pmf_next_blob(cmd, valuesbytes); pmf_parser_rmw_i2c()
303 PMF_PARSE_CALL(rmw_i2c, cmd, h, maskbytes, valuesbytes, totalbytes, pmf_parser_rmw_i2c()
307 static int pmf_parser_read_cfg(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_read_cfg() argument
309 u32 offset = pmf_next32(cmd); pmf_parser_read_cfg()
310 u32 bytes = pmf_next32(cmd); pmf_parser_read_cfg()
314 PMF_PARSE_CALL(read_cfg, cmd, h, offset, bytes); pmf_parser_read_cfg()
318 static int pmf_parser_write_cfg(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_write_cfg() argument
320 u32 offset = pmf_next32(cmd); pmf_parser_write_cfg()
321 u32 bytes = pmf_next32(cmd); pmf_parser_write_cfg()
322 const void *blob = pmf_next_blob(cmd, bytes); pmf_parser_write_cfg()
327 PMF_PARSE_CALL(write_cfg, cmd, h, offset, bytes, blob); pmf_parser_write_cfg()
330 static int pmf_parser_rmw_cfg(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_rmw_cfg() argument
332 u32 offset = pmf_next32(cmd); pmf_parser_rmw_cfg()
333 u32 maskbytes = pmf_next32(cmd); pmf_parser_rmw_cfg()
334 u32 valuesbytes = pmf_next32(cmd); pmf_parser_rmw_cfg()
335 u32 totalbytes = pmf_next32(cmd); pmf_parser_rmw_cfg()
336 const void *maskblob = pmf_next_blob(cmd, maskbytes); pmf_parser_rmw_cfg()
337 const void *valuesblob = pmf_next_blob(cmd, valuesbytes); pmf_parser_rmw_cfg()
345 PMF_PARSE_CALL(rmw_cfg, cmd, h, offset, maskbytes, valuesbytes, pmf_parser_rmw_cfg()
350 static int pmf_parser_read_i2c_sub(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_read_i2c_sub() argument
352 u8 subaddr = (u8)pmf_next32(cmd); pmf_parser_read_i2c_sub()
353 u32 bytes = pmf_next32(cmd); pmf_parser_read_i2c_sub()
358 PMF_PARSE_CALL(read_i2c_sub, cmd, h, subaddr, bytes); pmf_parser_read_i2c_sub()
361 static int pmf_parser_write_i2c_sub(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_write_i2c_sub() argument
363 u8 subaddr = (u8)pmf_next32(cmd); pmf_parser_write_i2c_sub()
364 u32 bytes = pmf_next32(cmd); pmf_parser_write_i2c_sub()
365 const void *blob = pmf_next_blob(cmd, bytes); pmf_parser_write_i2c_sub()
371 PMF_PARSE_CALL(write_i2c_sub, cmd, h, subaddr, bytes, blob); pmf_parser_write_i2c_sub()
374 static int pmf_parser_set_i2c_mode(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_set_i2c_mode() argument
376 u32 mode = pmf_next32(cmd); pmf_parser_set_i2c_mode()
380 PMF_PARSE_CALL(set_i2c_mode, cmd, h, mode); pmf_parser_set_i2c_mode()
384 static int pmf_parser_rmw_i2c_sub(struct pmf_cmd *cmd, struct pmf_handlers *h) pmf_parser_rmw_i2c_sub() argument
386 u8 subaddr = (u8)pmf_next32(cmd); pmf_parser_rmw_i2c_sub()
387 u32 maskbytes = pmf_next32(cmd); pmf_parser_rmw_i2c_sub()
388 u32 valuesbytes = pmf_next32(cmd); pmf_parser_rmw_i2c_sub()
389 u32 totalbytes = pmf_next32(cmd); pmf_parser_rmw_i2c_sub()
390 const void *maskblob = pmf_next_blob(cmd, maskbytes); pmf_parser_rmw_i2c_sub()
391 const void *valuesblob = pmf_next_blob(cmd, valuesbytes); pmf_parser_rmw_i2c_sub()
399 PMF_PARSE_CALL(rmw_i2c_sub, cmd, h, subaddr, maskbytes, valuesbytes, pmf_parser_rmw_i2c_sub()
403 static int pmf_parser_read_reg32_msrx(struct pmf_cmd *cmd, pmf_parser_read_reg32_msrx() argument
406 u32 offset = pmf_next32(cmd); pmf_parser_read_reg32_msrx()
407 u32 mask = pmf_next32(cmd); pmf_parser_read_reg32_msrx()
408 u32 shift = pmf_next32(cmd); pmf_parser_read_reg32_msrx()
409 u32 xor = pmf_next32(cmd); pmf_parser_read_reg32_msrx()
414 PMF_PARSE_CALL(read_reg32_msrx, cmd, h, offset, mask, shift, xor); pmf_parser_read_reg32_msrx()
417 static int pmf_parser_read_reg16_msrx(struct pmf_cmd *cmd, pmf_parser_read_reg16_msrx() argument
420 u32 offset = pmf_next32(cmd); pmf_parser_read_reg16_msrx()
421 u32 mask = pmf_next32(cmd); pmf_parser_read_reg16_msrx()
422 u32 shift = pmf_next32(cmd); pmf_parser_read_reg16_msrx()
423 u32 xor = pmf_next32(cmd); pmf_parser_read_reg16_msrx()
428 PMF_PARSE_CALL(read_reg16_msrx, cmd, h, offset, mask, shift, xor); pmf_parser_read_reg16_msrx()
430 static int pmf_parser_read_reg8_msrx(struct pmf_cmd *cmd, pmf_parser_read_reg8_msrx() argument
433 u32 offset = pmf_next32(cmd); pmf_parser_read_reg8_msrx()
434 u32 mask = pmf_next32(cmd); pmf_parser_read_reg8_msrx()
435 u32 shift = pmf_next32(cmd); pmf_parser_read_reg8_msrx()
436 u32 xor = pmf_next32(cmd); pmf_parser_read_reg8_msrx()
441 PMF_PARSE_CALL(read_reg8_msrx, cmd, h, offset, mask, shift, xor); pmf_parser_read_reg8_msrx()
444 static int pmf_parser_write_reg32_slm(struct pmf_cmd *cmd, pmf_parser_write_reg32_slm() argument
447 u32 offset = pmf_next32(cmd); pmf_parser_write_reg32_slm()
448 u32 shift = pmf_next32(cmd); pmf_parser_write_reg32_slm()
449 u32 mask = pmf_next32(cmd); pmf_parser_write_reg32_slm()
454 PMF_PARSE_CALL(write_reg32_slm, cmd, h, offset, shift, mask); pmf_parser_write_reg32_slm()
457 static int pmf_parser_write_reg16_slm(struct pmf_cmd *cmd, pmf_parser_write_reg16_slm() argument
460 u32 offset = pmf_next32(cmd); pmf_parser_write_reg16_slm()
461 u32 shift = pmf_next32(cmd); pmf_parser_write_reg16_slm()
462 u32 mask = pmf_next32(cmd); pmf_parser_write_reg16_slm()
467 PMF_PARSE_CALL(write_reg16_slm, cmd, h, offset, shift, mask); pmf_parser_write_reg16_slm()
470 static int pmf_parser_write_reg8_slm(struct pmf_cmd *cmd, pmf_parser_write_reg8_slm() argument
473 u32 offset = pmf_next32(cmd); pmf_parser_write_reg8_slm()
474 u32 shift = pmf_next32(cmd); pmf_parser_write_reg8_slm()
475 u32 mask = pmf_next32(cmd); pmf_parser_write_reg8_slm()
480 PMF_PARSE_CALL(write_reg8_slm, cmd, h, offset, shift, mask); pmf_parser_write_reg8_slm()
483 static int pmf_parser_mask_and_compare(struct pmf_cmd *cmd, pmf_parser_mask_and_compare() argument
486 u32 bytes = pmf_next32(cmd); pmf_parser_mask_and_compare()
487 const void *maskblob = pmf_next_blob(cmd, bytes); pmf_parser_mask_and_compare()
488 const void *valuesblob = pmf_next_blob(cmd, bytes); pmf_parser_mask_and_compare()
494 PMF_PARSE_CALL(mask_and_compare, cmd, h, pmf_parser_mask_and_compare()
499 typedef int (*pmf_cmd_parser_t)(struct pmf_cmd *cmd, struct pmf_handlers *h);
582 struct pmf_cmd cmd; pmf_parse_one() local
586 cmd.cmdptr = func->data; pmf_parse_one()
587 cmd.cmdend = func->data + func->length; pmf_parse_one()
588 cmd.func = func; pmf_parse_one()
589 cmd.instdata = instdata; pmf_parse_one()
590 cmd.args = args; pmf_parse_one()
591 cmd.error = 0; pmf_parse_one()
600 while(count-- && cmd.cmdptr < cmd.cmdend) { pmf_parse_one()
602 ccode = pmf_next32(&cmd); pmf_parse_one()
605 count = pmf_next32(&cmd) - 1; pmf_parse_one()
606 ccode = pmf_next32(&cmd); pmf_parse_one()
608 if (cmd.error) { pmf_parse_one()
620 rc = pmf_parsers[ccode](&cmd, handlers); pmf_parse_one()
630 func->length = cmd.cmdptr - func->data; pmf_parse_one()
/linux-4.1.27/drivers/char/tpm/
H A Dtpm2-cmd.c247 struct tpm2_cmd cmd; tpm2_pcr_read() local
253 cmd.header.in = tpm2_pcrread_header; tpm2_pcr_read()
254 cmd.params.pcrread_in.pcr_selects_cnt = cpu_to_be32(1); tpm2_pcr_read()
255 cmd.params.pcrread_in.hash_alg = cpu_to_be16(TPM2_ALG_SHA1); tpm2_pcr_read()
256 cmd.params.pcrread_in.pcr_select_size = TPM2_PCR_SELECT_MIN; tpm2_pcr_read()
258 memset(cmd.params.pcrread_in.pcr_select, 0, tpm2_pcr_read()
259 sizeof(cmd.params.pcrread_in.pcr_select)); tpm2_pcr_read()
260 cmd.params.pcrread_in.pcr_select[pcr_idx >> 3] = 1 << (pcr_idx & 0x7); tpm2_pcr_read()
262 rc = tpm_transmit_cmd(chip, &cmd, sizeof(cmd), tpm2_pcr_read()
265 buf = cmd.params.pcrread_out.digest; tpm2_pcr_read()
294 struct tpm2_cmd cmd; tpm2_pcr_extend() local
297 cmd.header.in = tpm2_pcrextend_header; tpm2_pcr_extend()
298 cmd.params.pcrextend_in.pcr_idx = cpu_to_be32(pcr_idx); tpm2_pcr_extend()
299 cmd.params.pcrextend_in.auth_area_size = tpm2_pcr_extend()
301 cmd.params.pcrextend_in.auth_area.handle = tpm2_pcr_extend()
303 cmd.params.pcrextend_in.auth_area.nonce_size = 0; tpm2_pcr_extend()
304 cmd.params.pcrextend_in.auth_area.attributes = 0; tpm2_pcr_extend()
305 cmd.params.pcrextend_in.auth_area.auth_size = 0; tpm2_pcr_extend()
306 cmd.params.pcrextend_in.digest_cnt = cpu_to_be32(1); tpm2_pcr_extend()
307 cmd.params.pcrextend_in.hash_alg = cpu_to_be16(TPM2_ALG_SHA1); tpm2_pcr_extend()
308 memcpy(cmd.params.pcrextend_in.digest, hash, TPM_DIGEST_SIZE); tpm2_pcr_extend()
310 rc = tpm_transmit_cmd(chip, &cmd, sizeof(cmd), tpm2_pcr_extend()
338 struct tpm2_cmd cmd; tpm2_get_random() local
346 num_bytes = min_t(u32, max, sizeof(cmd.params.getrandom_out.buffer)); tpm2_get_random()
349 max > sizeof(cmd.params.getrandom_out.buffer)) tpm2_get_random()
353 cmd.header.in = tpm2_getrandom_header; tpm2_get_random()
354 cmd.params.getrandom_in.size = cpu_to_be16(num_bytes); tpm2_get_random()
356 err = tpm_transmit_cmd(chip, &cmd, sizeof(cmd), tpm2_get_random()
361 recd = min_t(u32, be16_to_cpu(cmd.params.getrandom_out.size), tpm2_get_random()
363 memcpy(dest, cmd.params.getrandom_out.buffer, recd); tpm2_get_random()
397 struct tpm2_cmd cmd; tpm2_get_tpm_pt() local
400 cmd.header.in = tpm2_get_tpm_pt_header; tpm2_get_tpm_pt()
401 cmd.params.get_tpm_pt_in.cap_id = cpu_to_be32(TPM2_CAP_TPM_PROPERTIES); tpm2_get_tpm_pt()
402 cmd.params.get_tpm_pt_in.property_id = cpu_to_be32(property_id); tpm2_get_tpm_pt()
403 cmd.params.get_tpm_pt_in.property_cnt = cpu_to_be32(1); tpm2_get_tpm_pt()
405 rc = tpm_transmit_cmd(chip, &cmd, sizeof(cmd), desc); tpm2_get_tpm_pt()
407 *value = cmd.params.get_tpm_pt_out.value; tpm2_get_tpm_pt()
434 struct tpm2_cmd cmd; tpm2_startup() local
436 cmd.header.in = tpm2_startup_header; tpm2_startup()
438 cmd.params.startup_in.startup_type = cpu_to_be16(startup_type); tpm2_startup()
439 return tpm_transmit_cmd(chip, &cmd, sizeof(cmd), tpm2_startup()
462 struct tpm2_cmd cmd; tpm2_shutdown() local
465 cmd.header.in = tpm2_shutdown_header; tpm2_shutdown()
466 cmd.params.startup_in.startup_type = cpu_to_be16(shutdown_type); tpm2_shutdown()
468 rc = tpm_transmit_cmd(chip, &cmd, sizeof(cmd), "stopping the TPM"); tpm2_shutdown()
529 struct tpm2_cmd cmd; tpm2_start_selftest() local
531 cmd.header.in = tpm2_selftest_header; tpm2_start_selftest()
532 cmd.params.selftest_in.full_test = full; tpm2_start_selftest()
534 rc = tpm_transmit_cmd(chip, &cmd, TPM2_SELF_TEST_IN_SIZE, tpm2_start_selftest()
565 struct tpm2_cmd cmd; tpm2_do_selftest() local
578 cmd.header.in = tpm2_pcrread_header; tpm2_do_selftest()
579 cmd.params.pcrread_in.pcr_selects_cnt = cpu_to_be32(1); tpm2_do_selftest()
580 cmd.params.pcrread_in.hash_alg = cpu_to_be16(TPM2_ALG_SHA1); tpm2_do_selftest()
581 cmd.params.pcrread_in.pcr_select_size = TPM2_PCR_SELECT_MIN; tpm2_do_selftest()
582 cmd.params.pcrread_in.pcr_select[0] = 0x01; tpm2_do_selftest()
583 cmd.params.pcrread_in.pcr_select[1] = 0x00; tpm2_do_selftest()
584 cmd.params.pcrread_in.pcr_select[2] = 0x00; tpm2_do_selftest()
586 rc = tpm_transmit_cmd(chip, (u8 *) &cmd, sizeof(cmd), NULL); tpm2_do_selftest()
590 rc = be32_to_cpu(cmd.header.out.return_code); tpm2_do_selftest()
627 struct tpm2_cmd cmd; tpm2_probe() local
630 cmd.header.in = tpm2_get_tpm_pt_header; tpm2_probe()
631 cmd.params.get_tpm_pt_in.cap_id = cpu_to_be32(TPM2_CAP_TPM_PROPERTIES); tpm2_probe()
632 cmd.params.get_tpm_pt_in.property_id = cpu_to_be32(0x100); tpm2_probe()
633 cmd.params.get_tpm_pt_in.property_cnt = cpu_to_be32(1); tpm2_probe()
635 rc = tpm_transmit(chip, (const char *) &cmd, sizeof(cmd)); tpm2_probe()
641 if (be16_to_cpu(cmd.header.out.tag) == TPM2_ST_NO_SESSIONS) tpm2_probe()
/linux-4.1.27/include/scsi/
H A Dscsi_cmnd.h147 static inline void *scsi_cmd_priv(struct scsi_cmnd *cmd) scsi_cmd_priv() argument
149 return cmd + 1; scsi_cmd_priv()
153 static inline struct scsi_driver *scsi_cmd_to_driver(struct scsi_cmnd *cmd) scsi_cmd_to_driver() argument
155 return *(struct scsi_driver **)cmd->request->rq_disk->private_data; scsi_cmd_to_driver()
160 extern void scsi_finish_command(struct scsi_cmnd *cmd);
166 extern int scsi_init_io(struct scsi_cmnd *cmd);
168 extern int scsi_dma_map(struct scsi_cmnd *cmd);
169 extern void scsi_dma_unmap(struct scsi_cmnd *cmd);
171 static inline unsigned scsi_sg_count(struct scsi_cmnd *cmd) scsi_sg_count() argument
173 return cmd->sdb.table.nents; scsi_sg_count()
176 static inline struct scatterlist *scsi_sglist(struct scsi_cmnd *cmd) scsi_sglist() argument
178 return cmd->sdb.table.sgl; scsi_sglist()
181 static inline unsigned scsi_bufflen(struct scsi_cmnd *cmd) scsi_bufflen() argument
183 return cmd->sdb.length; scsi_bufflen()
186 static inline void scsi_set_resid(struct scsi_cmnd *cmd, int resid) scsi_set_resid() argument
188 cmd->sdb.resid = resid; scsi_set_resid()
191 static inline int scsi_get_resid(struct scsi_cmnd *cmd) scsi_get_resid() argument
193 return cmd->sdb.resid; scsi_get_resid()
196 #define scsi_for_each_sg(cmd, sg, nseg, __i) \
197 for_each_sg(scsi_sglist(cmd), sg, nseg, __i)
199 static inline int scsi_bidi_cmnd(struct scsi_cmnd *cmd) scsi_bidi_cmnd() argument
201 return blk_bidi_rq(cmd->request) && scsi_bidi_cmnd()
202 (cmd->request->next_rq->special != NULL); scsi_bidi_cmnd()
205 static inline struct scsi_data_buffer *scsi_in(struct scsi_cmnd *cmd) scsi_in() argument
207 return scsi_bidi_cmnd(cmd) ? scsi_in()
208 cmd->request->next_rq->special : &cmd->sdb; scsi_in()
211 static inline struct scsi_data_buffer *scsi_out(struct scsi_cmnd *cmd) scsi_out() argument
213 return &cmd->sdb; scsi_out()
216 static inline int scsi_sg_copy_from_buffer(struct scsi_cmnd *cmd, scsi_sg_copy_from_buffer() argument
219 return sg_copy_from_buffer(scsi_sglist(cmd), scsi_sg_count(cmd), scsi_sg_copy_from_buffer()
223 static inline int scsi_sg_copy_to_buffer(struct scsi_cmnd *cmd, scsi_sg_copy_to_buffer() argument
226 return sg_copy_to_buffer(scsi_sglist(cmd), scsi_sg_count(cmd), scsi_sg_copy_to_buffer()
308 static inline unsigned scsi_prot_sg_count(struct scsi_cmnd *cmd) scsi_prot_sg_count() argument
310 return cmd->prot_sdb ? cmd->prot_sdb->table.nents : 0; scsi_prot_sg_count()
313 static inline struct scatterlist *scsi_prot_sglist(struct scsi_cmnd *cmd) scsi_prot_sglist() argument
315 return cmd->prot_sdb ? cmd->prot_sdb->table.sgl : NULL; scsi_prot_sglist()
318 static inline struct scsi_data_buffer *scsi_prot(struct scsi_cmnd *cmd) scsi_prot() argument
320 return cmd->prot_sdb; scsi_prot()
323 #define scsi_for_each_prot_sg(cmd, sg, nseg, __i) \
324 for_each_sg(scsi_prot_sglist(cmd), sg, nseg, __i)
326 static inline void set_msg_byte(struct scsi_cmnd *cmd, char status) set_msg_byte() argument
328 cmd->result = (cmd->result & 0xffff00ff) | (status << 8); set_msg_byte()
331 static inline void set_host_byte(struct scsi_cmnd *cmd, char status) set_host_byte() argument
333 cmd->result = (cmd->result & 0xff00ffff) | (status << 16); set_host_byte()
336 static inline void set_driver_byte(struct scsi_cmnd *cmd, char status) set_driver_byte() argument
338 cmd->result = (cmd->result & 0x00ffffff) | (status << 24); set_driver_byte()
/linux-4.1.27/drivers/infiniband/core/
H A Duverbs_cmd.c288 struct ib_uverbs_get_context cmd; ib_uverbs_get_context() local
302 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_get_context()
312 INIT_UDATA(&udata, buf + sizeof cmd, ib_uverbs_get_context()
313 (unsigned long) cmd.response + sizeof resp, ib_uverbs_get_context()
314 in_len - sizeof cmd, out_len - sizeof resp); ib_uverbs_get_context()
364 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_get_context()
453 struct ib_uverbs_query_device cmd; ib_uverbs_query_device() local
461 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_query_device()
471 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_query_device()
482 struct ib_uverbs_query_port cmd; ib_uverbs_query_port() local
490 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_query_port()
493 ret = ib_query_port(file->device->ib_dev, cmd.port_num, &attr); ib_uverbs_query_port()
519 cmd.port_num); ib_uverbs_query_port()
521 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_query_port()
532 struct ib_uverbs_alloc_pd cmd; ib_uverbs_alloc_pd() local
542 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_alloc_pd()
545 INIT_UDATA(&udata, buf + sizeof cmd, ib_uverbs_alloc_pd()
546 (unsigned long) cmd.response + sizeof resp, ib_uverbs_alloc_pd()
547 in_len - sizeof cmd, out_len - sizeof resp); ib_uverbs_alloc_pd()
575 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_alloc_pd()
606 struct ib_uverbs_dealloc_pd cmd; ib_uverbs_dealloc_pd() local
610 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_dealloc_pd()
613 uobj = idr_write_uobj(&ib_uverbs_pd_idr, cmd.pd_handle, file->ucontext); ib_uverbs_dealloc_pd()
726 struct ib_uverbs_open_xrcd cmd; ib_uverbs_open_xrcd() local
739 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_open_xrcd()
742 INIT_UDATA(&udata, buf + sizeof cmd, ib_uverbs_open_xrcd()
743 (unsigned long) cmd.response + sizeof resp, ib_uverbs_open_xrcd()
744 in_len - sizeof cmd, out_len - sizeof resp); ib_uverbs_open_xrcd()
748 if (cmd.fd != -1) { ib_uverbs_open_xrcd()
750 f = fdget(cmd.fd); ib_uverbs_open_xrcd()
758 if (!xrcd && !(cmd.oflags & O_CREAT)) { ib_uverbs_open_xrcd()
764 if (xrcd && cmd.oflags & O_EXCL) { ib_uverbs_open_xrcd()
815 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_open_xrcd()
863 struct ib_uverbs_close_xrcd cmd; ib_uverbs_close_xrcd() local
871 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_close_xrcd()
875 uobj = idr_write_uobj(&ib_uverbs_xrcd_idr, cmd.xrcd_handle, file->ucontext); ib_uverbs_close_xrcd()
940 struct ib_uverbs_reg_mr cmd; ib_uverbs_reg_mr() local
951 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_reg_mr()
954 INIT_UDATA(&udata, buf + sizeof cmd, ib_uverbs_reg_mr()
955 (unsigned long) cmd.response + sizeof resp, ib_uverbs_reg_mr()
956 in_len - sizeof cmd, out_len - sizeof resp); ib_uverbs_reg_mr()
958 if ((cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK)) ib_uverbs_reg_mr()
961 ret = ib_check_mr_access(cmd.access_flags); ib_uverbs_reg_mr()
972 pd = idr_read_pd(cmd.pd_handle, file->ucontext); ib_uverbs_reg_mr()
978 if (cmd.access_flags & IB_ACCESS_ON_DEMAND) { ib_uverbs_reg_mr()
990 mr = pd->device->reg_user_mr(pd, cmd.start, cmd.length, cmd.hca_va, ib_uverbs_reg_mr()
991 cmd.access_flags, &udata); ib_uverbs_reg_mr()
1013 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_reg_mr()
1049 struct ib_uverbs_rereg_mr cmd; ib_uverbs_rereg_mr() local
1061 if (copy_from_user(&cmd, buf, sizeof(cmd))) ib_uverbs_rereg_mr()
1064 INIT_UDATA(&udata, buf + sizeof(cmd), ib_uverbs_rereg_mr()
1065 (unsigned long) cmd.response + sizeof(resp), ib_uverbs_rereg_mr()
1066 in_len - sizeof(cmd), out_len - sizeof(resp)); ib_uverbs_rereg_mr()
1068 if (cmd.flags & ~IB_MR_REREG_SUPPORTED || !cmd.flags) ib_uverbs_rereg_mr()
1071 if ((cmd.flags & IB_MR_REREG_TRANS) && ib_uverbs_rereg_mr()
1072 (!cmd.start || !cmd.hca_va || 0 >= cmd.length || ib_uverbs_rereg_mr()
1073 (cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK))) ib_uverbs_rereg_mr()
1076 uobj = idr_write_uobj(&ib_uverbs_mr_idr, cmd.mr_handle, ib_uverbs_rereg_mr()
1084 if (cmd.flags & IB_MR_REREG_ACCESS) { ib_uverbs_rereg_mr()
1085 ret = ib_check_mr_access(cmd.access_flags); ib_uverbs_rereg_mr()
1090 if (cmd.flags & IB_MR_REREG_PD) { ib_uverbs_rereg_mr()
1091 pd = idr_read_pd(cmd.pd_handle, file->ucontext); ib_uverbs_rereg_mr()
1104 ret = mr->device->rereg_user_mr(mr, cmd.flags, cmd.start, ib_uverbs_rereg_mr()
1105 cmd.length, cmd.hca_va, ib_uverbs_rereg_mr()
1106 cmd.access_flags, pd, &udata); ib_uverbs_rereg_mr()
1108 if (cmd.flags & IB_MR_REREG_PD) { ib_uverbs_rereg_mr()
1121 if (copy_to_user((void __user *)(unsigned long)cmd.response, ib_uverbs_rereg_mr()
1128 if (cmd.flags & IB_MR_REREG_PD) ib_uverbs_rereg_mr()
1142 struct ib_uverbs_dereg_mr cmd; ib_uverbs_dereg_mr() local
1147 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_dereg_mr()
1150 uobj = idr_write_uobj(&ib_uverbs_mr_idr, cmd.mr_handle, file->ucontext); ib_uverbs_dereg_mr()
1180 struct ib_uverbs_alloc_mw cmd; ib_uverbs_alloc_mw() local
1190 if (copy_from_user(&cmd, buf, sizeof(cmd))) ib_uverbs_alloc_mw()
1200 pd = idr_read_pd(cmd.pd_handle, file->ucontext); ib_uverbs_alloc_mw()
1206 mw = pd->device->alloc_mw(pd, cmd.mw_type); ib_uverbs_alloc_mw()
1226 if (copy_to_user((void __user *)(unsigned long)cmd.response, ib_uverbs_alloc_mw()
1262 struct ib_uverbs_dealloc_mw cmd; ib_uverbs_dealloc_mw() local
1267 if (copy_from_user(&cmd, buf, sizeof(cmd))) ib_uverbs_dealloc_mw()
1270 uobj = idr_write_uobj(&ib_uverbs_mw_idr, cmd.mw_handle, file->ucontext); ib_uverbs_dealloc_mw()
1300 struct ib_uverbs_create_comp_channel cmd; ib_uverbs_create_comp_channel() local
1308 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_create_comp_channel()
1322 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_create_comp_channel()
1337 struct ib_uverbs_create_cq cmd; ib_uverbs_create_cq() local
1348 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_create_cq()
1351 INIT_UDATA(&udata, buf + sizeof cmd, ib_uverbs_create_cq()
1352 (unsigned long) cmd.response + sizeof resp, ib_uverbs_create_cq()
1353 in_len - sizeof cmd, out_len - sizeof resp); ib_uverbs_create_cq()
1355 if (cmd.comp_vector >= file->device->num_comp_vectors) ib_uverbs_create_cq()
1362 init_uobj(&obj->uobject, cmd.user_handle, file->ucontext, &cq_lock_class); ib_uverbs_create_cq()
1365 if (cmd.comp_channel >= 0) { ib_uverbs_create_cq()
1366 ev_file = ib_uverbs_lookup_comp_file(cmd.comp_channel); ib_uverbs_create_cq()
1379 cq = file->device->ib_dev->create_cq(file->device->ib_dev, cmd.cqe, ib_uverbs_create_cq()
1380 cmd.comp_vector, ib_uverbs_create_cq()
1403 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_create_cq()
1438 struct ib_uverbs_resize_cq cmd; ib_uverbs_resize_cq() local
1444 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_resize_cq()
1447 INIT_UDATA(&udata, buf + sizeof cmd, ib_uverbs_resize_cq()
1448 (unsigned long) cmd.response + sizeof resp, ib_uverbs_resize_cq()
1449 in_len - sizeof cmd, out_len - sizeof resp); ib_uverbs_resize_cq()
1451 cq = idr_read_cq(cmd.cq_handle, file->ucontext, 0); ib_uverbs_resize_cq()
1455 ret = cq->device->resize_cq(cq, cmd.cqe, &udata); ib_uverbs_resize_cq()
1461 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_resize_cq()
1501 struct ib_uverbs_poll_cq cmd; ib_uverbs_poll_cq() local
1509 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_poll_cq()
1512 cq = idr_read_cq(cmd.cq_handle, file->ucontext, 0); ib_uverbs_poll_cq()
1517 header_ptr = (void __user *)(unsigned long) cmd.response; ib_uverbs_poll_cq()
1521 while (resp.count < cmd.ne) { ib_uverbs_poll_cq()
1552 struct ib_uverbs_req_notify_cq cmd; ib_uverbs_req_notify_cq() local
1555 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_req_notify_cq()
1558 cq = idr_read_cq(cmd.cq_handle, file->ucontext, 0); ib_uverbs_req_notify_cq()
1562 ib_req_notify_cq(cq, cmd.solicited_only ? ib_uverbs_req_notify_cq()
1574 struct ib_uverbs_destroy_cq cmd; ib_uverbs_destroy_cq() local
1582 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_destroy_cq()
1585 uobj = idr_write_uobj(&ib_uverbs_cq_idr, cmd.cq_handle, file->ucontext); ib_uverbs_destroy_cq()
1615 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_destroy_cq()
1626 struct ib_uverbs_create_qp cmd; ib_uverbs_create_qp() local
1643 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_create_qp()
1646 if (cmd.qp_type == IB_QPT_RAW_PACKET && !capable(CAP_NET_RAW)) ib_uverbs_create_qp()
1649 INIT_UDATA(&udata, buf + sizeof cmd, ib_uverbs_create_qp()
1650 (unsigned long) cmd.response + sizeof resp, ib_uverbs_create_qp()
1651 in_len - sizeof cmd, out_len - sizeof resp); ib_uverbs_create_qp()
1657 init_uobj(&obj->uevent.uobject, cmd.user_handle, file->ucontext, &qp_lock_class); ib_uverbs_create_qp()
1660 if (cmd.qp_type == IB_QPT_XRC_TGT) { ib_uverbs_create_qp()
1661 xrcd = idr_read_xrcd(cmd.pd_handle, file->ucontext, &xrcd_uobj); ib_uverbs_create_qp()
1668 if (cmd.qp_type == IB_QPT_XRC_INI) { ib_uverbs_create_qp()
1669 cmd.max_recv_wr = cmd.max_recv_sge = 0; ib_uverbs_create_qp()
1671 if (cmd.is_srq) { ib_uverbs_create_qp()
1672 srq = idr_read_srq(cmd.srq_handle, file->ucontext); ib_uverbs_create_qp()
1679 if (cmd.recv_cq_handle != cmd.send_cq_handle) { ib_uverbs_create_qp()
1680 rcq = idr_read_cq(cmd.recv_cq_handle, file->ucontext, 0); ib_uverbs_create_qp()
1688 scq = idr_read_cq(cmd.send_cq_handle, file->ucontext, !!rcq); ib_uverbs_create_qp()
1690 pd = idr_read_pd(cmd.pd_handle, file->ucontext); ib_uverbs_create_qp()
1705 attr.sq_sig_type = cmd.sq_sig_all ? IB_SIGNAL_ALL_WR : IB_SIGNAL_REQ_WR; ib_uverbs_create_qp()
1706 attr.qp_type = cmd.qp_type; ib_uverbs_create_qp()
1709 attr.cap.max_send_wr = cmd.max_send_wr; ib_uverbs_create_qp()
1710 attr.cap.max_recv_wr = cmd.max_recv_wr; ib_uverbs_create_qp()
1711 attr.cap.max_send_sge = cmd.max_send_sge; ib_uverbs_create_qp()
1712 attr.cap.max_recv_sge = cmd.max_recv_sge; ib_uverbs_create_qp()
1713 attr.cap.max_inline_data = cmd.max_inline_data; ib_uverbs_create_qp()
1719 if (cmd.qp_type == IB_QPT_XRC_TGT) ib_uverbs_create_qp()
1729 if (cmd.qp_type != IB_QPT_XRC_TGT) { ib_uverbs_create_qp()
1763 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_create_qp()
1820 struct ib_uverbs_open_qp cmd; ib_uverbs_open_qp() local
1833 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_open_qp()
1836 INIT_UDATA(&udata, buf + sizeof cmd, ib_uverbs_open_qp()
1837 (unsigned long) cmd.response + sizeof resp, ib_uverbs_open_qp()
1838 in_len - sizeof cmd, out_len - sizeof resp); ib_uverbs_open_qp()
1844 init_uobj(&obj->uevent.uobject, cmd.user_handle, file->ucontext, &qp_lock_class); ib_uverbs_open_qp()
1847 xrcd = idr_read_xrcd(cmd.pd_handle, file->ucontext, &xrcd_uobj); ib_uverbs_open_qp()
1855 attr.qp_num = cmd.qpn; ib_uverbs_open_qp()
1856 attr.qp_type = cmd.qp_type; ib_uverbs_open_qp()
1879 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_open_qp()
1915 struct ib_uverbs_query_qp cmd; ib_uverbs_query_qp() local
1922 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_query_qp()
1932 qp = idr_read_qp(cmd.qp_handle, file->ucontext); ib_uverbs_query_qp()
1938 ret = ib_query_qp(qp, attr, cmd.attr_mask, init_attr); ib_uverbs_query_qp()
2000 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_query_qp()
2029 struct ib_uverbs_modify_qp cmd; ib_uverbs_modify_qp() local
2035 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_modify_qp()
2038 INIT_UDATA(&udata, buf + sizeof cmd, NULL, in_len - sizeof cmd, ib_uverbs_modify_qp()
2045 qp = idr_read_qp(cmd.qp_handle, file->ucontext); ib_uverbs_modify_qp()
2051 attr->qp_state = cmd.qp_state; ib_uverbs_modify_qp()
2052 attr->cur_qp_state = cmd.cur_qp_state; ib_uverbs_modify_qp()
2053 attr->path_mtu = cmd.path_mtu; ib_uverbs_modify_qp()
2054 attr->path_mig_state = cmd.path_mig_state; ib_uverbs_modify_qp()
2055 attr->qkey = cmd.qkey; ib_uverbs_modify_qp()
2056 attr->rq_psn = cmd.rq_psn; ib_uverbs_modify_qp()
2057 attr->sq_psn = cmd.sq_psn; ib_uverbs_modify_qp()
2058 attr->dest_qp_num = cmd.dest_qp_num; ib_uverbs_modify_qp()
2059 attr->qp_access_flags = cmd.qp_access_flags; ib_uverbs_modify_qp()
2060 attr->pkey_index = cmd.pkey_index; ib_uverbs_modify_qp()
2061 attr->alt_pkey_index = cmd.alt_pkey_index; ib_uverbs_modify_qp()
2062 attr->en_sqd_async_notify = cmd.en_sqd_async_notify; ib_uverbs_modify_qp()
2063 attr->max_rd_atomic = cmd.max_rd_atomic; ib_uverbs_modify_qp()
2064 attr->max_dest_rd_atomic = cmd.max_dest_rd_atomic; ib_uverbs_modify_qp()
2065 attr->min_rnr_timer = cmd.min_rnr_timer; ib_uverbs_modify_qp()
2066 attr->port_num = cmd.port_num; ib_uverbs_modify_qp()
2067 attr->timeout = cmd.timeout; ib_uverbs_modify_qp()
2068 attr->retry_cnt = cmd.retry_cnt; ib_uverbs_modify_qp()
2069 attr->rnr_retry = cmd.rnr_retry; ib_uverbs_modify_qp()
2070 attr->alt_port_num = cmd.alt_port_num; ib_uverbs_modify_qp()
2071 attr->alt_timeout = cmd.alt_timeout; ib_uverbs_modify_qp()
2073 memcpy(attr->ah_attr.grh.dgid.raw, cmd.dest.dgid, 16); ib_uverbs_modify_qp()
2074 attr->ah_attr.grh.flow_label = cmd.dest.flow_label; ib_uverbs_modify_qp()
2075 attr->ah_attr.grh.sgid_index = cmd.dest.sgid_index; ib_uverbs_modify_qp()
2076 attr->ah_attr.grh.hop_limit = cmd.dest.hop_limit; ib_uverbs_modify_qp()
2077 attr->ah_attr.grh.traffic_class = cmd.dest.traffic_class; ib_uverbs_modify_qp()
2078 attr->ah_attr.dlid = cmd.dest.dlid; ib_uverbs_modify_qp()
2079 attr->ah_attr.sl = cmd.dest.sl; ib_uverbs_modify_qp()
2080 attr->ah_attr.src_path_bits = cmd.dest.src_path_bits; ib_uverbs_modify_qp()
2081 attr->ah_attr.static_rate = cmd.dest.static_rate; ib_uverbs_modify_qp()
2082 attr->ah_attr.ah_flags = cmd.dest.is_global ? IB_AH_GRH : 0; ib_uverbs_modify_qp()
2083 attr->ah_attr.port_num = cmd.dest.port_num; ib_uverbs_modify_qp()
2085 memcpy(attr->alt_ah_attr.grh.dgid.raw, cmd.alt_dest.dgid, 16); ib_uverbs_modify_qp()
2086 attr->alt_ah_attr.grh.flow_label = cmd.alt_dest.flow_label; ib_uverbs_modify_qp()
2087 attr->alt_ah_attr.grh.sgid_index = cmd.alt_dest.sgid_index; ib_uverbs_modify_qp()
2088 attr->alt_ah_attr.grh.hop_limit = cmd.alt_dest.hop_limit; ib_uverbs_modify_qp()
2089 attr->alt_ah_attr.grh.traffic_class = cmd.alt_dest.traffic_class; ib_uverbs_modify_qp()
2090 attr->alt_ah_attr.dlid = cmd.alt_dest.dlid; ib_uverbs_modify_qp()
2091 attr->alt_ah_attr.sl = cmd.alt_dest.sl; ib_uverbs_modify_qp()
2092 attr->alt_ah_attr.src_path_bits = cmd.alt_dest.src_path_bits; ib_uverbs_modify_qp()
2093 attr->alt_ah_attr.static_rate = cmd.alt_dest.static_rate; ib_uverbs_modify_qp()
2094 attr->alt_ah_attr.ah_flags = cmd.alt_dest.is_global ? IB_AH_GRH : 0; ib_uverbs_modify_qp()
2095 attr->alt_ah_attr.port_num = cmd.alt_dest.port_num; ib_uverbs_modify_qp()
2098 ret = ib_resolve_eth_l2_attrs(qp, attr, &cmd.attr_mask); ib_uverbs_modify_qp()
2102 modify_qp_mask(qp->qp_type, cmd.attr_mask), &udata); ib_uverbs_modify_qp()
2104 ret = ib_modify_qp(qp, attr, modify_qp_mask(qp->qp_type, cmd.attr_mask)); ib_uverbs_modify_qp()
2125 struct ib_uverbs_destroy_qp cmd; ib_uverbs_destroy_qp() local
2132 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_destroy_qp()
2137 uobj = idr_write_uobj(&ib_uverbs_qp_idr, cmd.qp_handle, file->ucontext); ib_uverbs_destroy_qp()
2172 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_destroy_qp()
2183 struct ib_uverbs_post_send cmd; ib_uverbs_post_send() local
2192 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_post_send()
2195 if (in_len < sizeof cmd + cmd.wqe_size * cmd.wr_count + ib_uverbs_post_send()
2196 cmd.sge_count * sizeof (struct ib_uverbs_sge)) ib_uverbs_post_send()
2199 if (cmd.wqe_size < sizeof (struct ib_uverbs_send_wr)) ib_uverbs_post_send()
2202 user_wr = kmalloc(cmd.wqe_size, GFP_KERNEL); ib_uverbs_post_send()
2206 qp = idr_read_qp(cmd.qp_handle, file->ucontext); ib_uverbs_post_send()
2213 for (i = 0; i < cmd.wr_count; ++i) { ib_uverbs_post_send()
2215 buf + sizeof cmd + i * cmd.wqe_size, ib_uverbs_post_send()
2216 cmd.wqe_size)) { ib_uverbs_post_send()
2221 if (user_wr->num_sge + sg_ind > cmd.sge_count) { ib_uverbs_post_send()
2304 buf + sizeof cmd + ib_uverbs_post_send()
2305 cmd.wr_count * cmd.wqe_size + ib_uverbs_post_send()
2325 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_post_send()
2435 struct ib_uverbs_post_recv cmd; ib_uverbs_post_recv() local
2441 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_post_recv()
2444 wr = ib_uverbs_unmarshall_recv(buf + sizeof cmd, ib_uverbs_post_recv()
2445 in_len - sizeof cmd, cmd.wr_count, ib_uverbs_post_recv()
2446 cmd.sge_count, cmd.wqe_size); ib_uverbs_post_recv()
2450 qp = idr_read_qp(cmd.qp_handle, file->ucontext); ib_uverbs_post_recv()
2466 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_post_recv()
2484 struct ib_uverbs_post_srq_recv cmd; ib_uverbs_post_srq_recv() local
2490 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_post_srq_recv()
2493 wr = ib_uverbs_unmarshall_recv(buf + sizeof cmd, ib_uverbs_post_srq_recv()
2494 in_len - sizeof cmd, cmd.wr_count, ib_uverbs_post_srq_recv()
2495 cmd.sge_count, cmd.wqe_size); ib_uverbs_post_srq_recv()
2499 srq = idr_read_srq(cmd.srq_handle, file->ucontext); ib_uverbs_post_srq_recv()
2515 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_post_srq_recv()
2533 struct ib_uverbs_create_ah cmd; ib_uverbs_create_ah() local
2544 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_create_ah()
2551 init_uobj(uobj, cmd.user_handle, file->ucontext, &ah_lock_class); ib_uverbs_create_ah()
2554 pd = idr_read_pd(cmd.pd_handle, file->ucontext); ib_uverbs_create_ah()
2560 attr.dlid = cmd.attr.dlid; ib_uverbs_create_ah()
2561 attr.sl = cmd.attr.sl; ib_uverbs_create_ah()
2562 attr.src_path_bits = cmd.attr.src_path_bits; ib_uverbs_create_ah()
2563 attr.static_rate = cmd.attr.static_rate; ib_uverbs_create_ah()
2564 attr.ah_flags = cmd.attr.is_global ? IB_AH_GRH : 0; ib_uverbs_create_ah()
2565 attr.port_num = cmd.attr.port_num; ib_uverbs_create_ah()
2566 attr.grh.flow_label = cmd.attr.grh.flow_label; ib_uverbs_create_ah()
2567 attr.grh.sgid_index = cmd.attr.grh.sgid_index; ib_uverbs_create_ah()
2568 attr.grh.hop_limit = cmd.attr.grh.hop_limit; ib_uverbs_create_ah()
2569 attr.grh.traffic_class = cmd.attr.grh.traffic_class; ib_uverbs_create_ah()
2572 memcpy(attr.grh.dgid.raw, cmd.attr.grh.dgid, 16); ib_uverbs_create_ah()
2589 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_create_ah()
2624 struct ib_uverbs_destroy_ah cmd; ib_uverbs_destroy_ah() local
2629 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_destroy_ah()
2632 uobj = idr_write_uobj(&ib_uverbs_ah_idr, cmd.ah_handle, file->ucontext); ib_uverbs_destroy_ah()
2661 struct ib_uverbs_attach_mcast cmd; ib_uverbs_attach_mcast() local
2667 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_attach_mcast()
2670 qp = idr_write_qp(cmd.qp_handle, file->ucontext); ib_uverbs_attach_mcast()
2677 if (cmd.mlid == mcast->lid && ib_uverbs_attach_mcast()
2678 !memcmp(cmd.gid, mcast->gid.raw, sizeof mcast->gid.raw)) { ib_uverbs_attach_mcast()
2689 mcast->lid = cmd.mlid; ib_uverbs_attach_mcast()
2690 memcpy(mcast->gid.raw, cmd.gid, sizeof mcast->gid.raw); ib_uverbs_attach_mcast()
2692 ret = ib_attach_mcast(qp, &mcast->gid, cmd.mlid); ib_uverbs_attach_mcast()
2708 struct ib_uverbs_detach_mcast cmd; ib_uverbs_detach_mcast() local
2714 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_detach_mcast()
2717 qp = idr_write_qp(cmd.qp_handle, file->ucontext); ib_uverbs_detach_mcast()
2721 ret = ib_detach_mcast(qp, (union ib_gid *) cmd.gid, cmd.mlid); ib_uverbs_detach_mcast()
2728 if (cmd.mlid == mcast->lid && ib_uverbs_detach_mcast()
2729 !memcmp(cmd.gid, mcast->gid.raw, sizeof mcast->gid.raw)) { ib_uverbs_detach_mcast()
2788 struct ib_uverbs_create_flow cmd; ib_uverbs_ex_create_flow() local
2800 if (ucore->inlen < sizeof(cmd)) ib_uverbs_ex_create_flow()
2806 err = ib_copy_from_udata(&cmd, ucore, sizeof(cmd)); ib_uverbs_ex_create_flow()
2810 ucore->inbuf += sizeof(cmd); ib_uverbs_ex_create_flow()
2811 ucore->inlen -= sizeof(cmd); ib_uverbs_ex_create_flow()
2813 if (cmd.comp_mask) ib_uverbs_ex_create_flow()
2816 if ((cmd.flow_attr.type == IB_FLOW_ATTR_SNIFFER && ib_uverbs_ex_create_flow()
2820 if (cmd.flow_attr.num_of_specs > IB_FLOW_SPEC_SUPPORT_LAYERS) ib_uverbs_ex_create_flow()
2823 if (cmd.flow_attr.size > ucore->inlen || ib_uverbs_ex_create_flow()
2824 cmd.flow_attr.size > ib_uverbs_ex_create_flow()
2825 (cmd.flow_attr.num_of_specs * sizeof(struct ib_uverbs_flow_spec))) ib_uverbs_ex_create_flow()
2828 if (cmd.flow_attr.reserved[0] || ib_uverbs_ex_create_flow()
2829 cmd.flow_attr.reserved[1]) ib_uverbs_ex_create_flow()
2832 if (cmd.flow_attr.num_of_specs) { ib_uverbs_ex_create_flow()
2833 kern_flow_attr = kmalloc(sizeof(*kern_flow_attr) + cmd.flow_attr.size, ib_uverbs_ex_create_flow()
2838 memcpy(kern_flow_attr, &cmd.flow_attr, sizeof(*kern_flow_attr)); ib_uverbs_ex_create_flow()
2840 cmd.flow_attr.size); ib_uverbs_ex_create_flow()
2844 kern_flow_attr = &cmd.flow_attr; ib_uverbs_ex_create_flow()
2855 qp = idr_read_qp(cmd.qp_handle, file->ucontext); ib_uverbs_ex_create_flow()
2861 flow_attr = kmalloc(sizeof(*flow_attr) + cmd.flow_attr.size, GFP_KERNEL); ib_uverbs_ex_create_flow()
2877 cmd.flow_attr.size > offsetof(struct ib_uverbs_flow_spec, reserved) && ib_uverbs_ex_create_flow()
2878 cmd.flow_attr.size >= ib_uverbs_ex_create_flow()
2885 cmd.flow_attr.size -= ((struct ib_uverbs_flow_spec *)kern_spec)->size; ib_uverbs_ex_create_flow()
2889 if (cmd.flow_attr.size || (i != flow_attr->num_of_specs)) { ib_uverbs_ex_create_flow()
2890 pr_warn("create flow failed, flow %d: %d bytes left from uverb cmd\n", ib_uverbs_ex_create_flow()
2891 i, cmd.flow_attr.size); ib_uverbs_ex_create_flow()
2925 if (cmd.flow_attr.num_of_specs) ib_uverbs_ex_create_flow()
2939 if (cmd.flow_attr.num_of_specs) ib_uverbs_ex_create_flow()
2948 struct ib_uverbs_destroy_flow cmd; ib_uverbs_ex_destroy_flow() local
2953 if (ucore->inlen < sizeof(cmd)) ib_uverbs_ex_destroy_flow()
2956 ret = ib_copy_from_udata(&cmd, ucore, sizeof(cmd)); ib_uverbs_ex_destroy_flow()
2960 if (cmd.comp_mask) ib_uverbs_ex_destroy_flow()
2963 uobj = idr_write_uobj(&ib_uverbs_rule_idr, cmd.flow_handle, ib_uverbs_ex_destroy_flow()
2987 struct ib_uverbs_create_xsrq *cmd, __uverbs_create_xsrq()
3002 init_uobj(&obj->uevent.uobject, cmd->user_handle, file->ucontext, &srq_lock_class); __uverbs_create_xsrq()
3005 if (cmd->srq_type == IB_SRQT_XRC) { __uverbs_create_xsrq()
3006 attr.ext.xrc.xrcd = idr_read_xrcd(cmd->xrcd_handle, file->ucontext, &xrcd_uobj); __uverbs_create_xsrq()
3015 attr.ext.xrc.cq = idr_read_cq(cmd->cq_handle, file->ucontext, 0); __uverbs_create_xsrq()
3022 pd = idr_read_pd(cmd->pd_handle, file->ucontext); __uverbs_create_xsrq()
3030 attr.srq_type = cmd->srq_type; __uverbs_create_xsrq()
3031 attr.attr.max_wr = cmd->max_wr; __uverbs_create_xsrq()
3032 attr.attr.max_sge = cmd->max_sge; __uverbs_create_xsrq()
3033 attr.attr.srq_limit = cmd->srq_limit; __uverbs_create_xsrq()
3046 srq->srq_type = cmd->srq_type; __uverbs_create_xsrq()
3051 if (cmd->srq_type == IB_SRQT_XRC) { __uverbs_create_xsrq()
3070 if (cmd->srq_type == IB_SRQT_XRC) __uverbs_create_xsrq()
3073 if (copy_to_user((void __user *) (unsigned long) cmd->response, __uverbs_create_xsrq()
3079 if (cmd->srq_type == IB_SRQT_XRC) { __uverbs_create_xsrq()
3105 if (cmd->srq_type == IB_SRQT_XRC) __uverbs_create_xsrq()
3109 if (cmd->srq_type == IB_SRQT_XRC) { __uverbs_create_xsrq()
3123 struct ib_uverbs_create_srq cmd; ib_uverbs_create_srq() local
3132 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_create_srq()
3135 xcmd.response = cmd.response; ib_uverbs_create_srq()
3136 xcmd.user_handle = cmd.user_handle; ib_uverbs_create_srq()
3138 xcmd.pd_handle = cmd.pd_handle; ib_uverbs_create_srq()
3139 xcmd.max_wr = cmd.max_wr; ib_uverbs_create_srq()
3140 xcmd.max_sge = cmd.max_sge; ib_uverbs_create_srq()
3141 xcmd.srq_limit = cmd.srq_limit; ib_uverbs_create_srq()
3143 INIT_UDATA(&udata, buf + sizeof cmd, ib_uverbs_create_srq()
3144 (unsigned long) cmd.response + sizeof resp, ib_uverbs_create_srq()
3145 in_len - sizeof cmd, out_len - sizeof resp); ib_uverbs_create_srq()
3157 struct ib_uverbs_create_xsrq cmd; ib_uverbs_create_xsrq() local
3165 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_create_xsrq()
3168 INIT_UDATA(&udata, buf + sizeof cmd, ib_uverbs_create_xsrq()
3169 (unsigned long) cmd.response + sizeof resp, ib_uverbs_create_xsrq()
3170 in_len - sizeof cmd, out_len - sizeof resp); ib_uverbs_create_xsrq()
3172 ret = __uverbs_create_xsrq(file, &cmd, &udata); ib_uverbs_create_xsrq()
3183 struct ib_uverbs_modify_srq cmd; ib_uverbs_modify_srq() local
3189 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_modify_srq()
3192 INIT_UDATA(&udata, buf + sizeof cmd, NULL, in_len - sizeof cmd, ib_uverbs_modify_srq()
3195 srq = idr_read_srq(cmd.srq_handle, file->ucontext); ib_uverbs_modify_srq()
3199 attr.max_wr = cmd.max_wr; ib_uverbs_modify_srq()
3200 attr.srq_limit = cmd.srq_limit; ib_uverbs_modify_srq()
3202 ret = srq->device->modify_srq(srq, &attr, cmd.attr_mask, &udata); ib_uverbs_modify_srq()
3213 struct ib_uverbs_query_srq cmd; ib_uverbs_query_srq() local
3222 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_query_srq()
3225 srq = idr_read_srq(cmd.srq_handle, file->ucontext); ib_uverbs_query_srq()
3242 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_query_srq()
3253 struct ib_uverbs_destroy_srq cmd; ib_uverbs_destroy_srq() local
3262 if (copy_from_user(&cmd, buf, sizeof cmd)) ib_uverbs_destroy_srq()
3265 uobj = idr_write_uobj(&ib_uverbs_srq_idr, cmd.srq_handle, file->ucontext); ib_uverbs_destroy_srq()
3299 if (copy_to_user((void __user *) (unsigned long) cmd.response, ib_uverbs_destroy_srq()
3311 struct ib_uverbs_ex_query_device cmd; ib_uverbs_ex_query_device() local
3317 if (ucore->inlen < sizeof(cmd)) ib_uverbs_ex_query_device()
3320 err = ib_copy_from_udata(&cmd, ucore, sizeof(cmd)); ib_uverbs_ex_query_device()
3324 if (cmd.comp_mask) ib_uverbs_ex_query_device()
3327 if (cmd.reserved) ib_uverbs_ex_query_device()
2986 __uverbs_create_xsrq(struct ib_uverbs_file *file, struct ib_uverbs_create_xsrq *cmd, struct ib_udata *udata) __uverbs_create_xsrq() argument
H A Ducm.c390 struct ib_ucm_event_get cmd; ib_ucm_event() local
397 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_event()
428 if (copy_to_user((void __user *)(unsigned long)cmd.response, ib_ucm_event()
435 if (cmd.data_len < uevent->data_len) { ib_ucm_event()
439 if (copy_to_user((void __user *)(unsigned long)cmd.data, ib_ucm_event()
447 if (cmd.info_len < uevent->info_len) { ib_ucm_event()
451 if (copy_to_user((void __user *)(unsigned long)cmd.info, ib_ucm_event()
474 struct ib_ucm_create_id cmd; ib_ucm_create_id() local
482 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_create_id()
491 ctx->uid = cmd.uid; ib_ucm_create_id()
500 if (copy_to_user((void __user *)(unsigned long)cmd.response, ib_ucm_create_id()
521 struct ib_ucm_destroy_id cmd; ib_ucm_destroy_id() local
529 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_destroy_id()
533 ctx = idr_find(&ctx_id_table, cmd.id); ib_ucm_destroy_id()
554 if (copy_to_user((void __user *)(unsigned long)cmd.response, ib_ucm_destroy_id()
567 struct ib_ucm_attr_id cmd; ib_ucm_attr_id() local
574 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_attr_id()
577 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_attr_id()
586 if (copy_to_user((void __user *)(unsigned long)cmd.response, ib_ucm_attr_id()
599 struct ib_ucm_init_qp_attr cmd; ib_ucm_init_qp_attr() local
607 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_init_qp_attr()
610 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_init_qp_attr()
616 qp_attr.qp_state = cmd.qp_state; ib_ucm_init_qp_attr()
623 if (copy_to_user((void __user *)(unsigned long)cmd.response, ib_ucm_init_qp_attr()
647 struct ib_ucm_listen cmd; ib_ucm_listen() local
651 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_listen()
654 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_listen()
658 result = ucm_validate_listen(cmd.service_id, cmd.service_mask); ib_ucm_listen()
662 result = ib_cm_listen(ctx->cm_id, cmd.service_id, cmd.service_mask, ib_ucm_listen()
673 struct ib_ucm_notify cmd; ib_ucm_notify() local
677 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_notify()
680 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_notify()
684 result = ib_cm_notify(ctx->cm_id, (enum ib_event_type) cmd.event); ib_ucm_notify()
738 struct ib_ucm_req cmd; ib_ucm_send_req() local
745 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_send_req()
748 result = ib_ucm_alloc_data(&param.private_data, cmd.data, cmd.len); ib_ucm_send_req()
752 result = ib_ucm_path_get(&param.primary_path, cmd.primary_path); ib_ucm_send_req()
756 result = ib_ucm_path_get(&param.alternate_path, cmd.alternate_path); ib_ucm_send_req()
760 param.private_data_len = cmd.len; ib_ucm_send_req()
761 param.service_id = cmd.sid; ib_ucm_send_req()
762 param.qp_num = cmd.qpn; ib_ucm_send_req()
763 param.qp_type = cmd.qp_type; ib_ucm_send_req()
764 param.starting_psn = cmd.psn; ib_ucm_send_req()
765 param.peer_to_peer = cmd.peer_to_peer; ib_ucm_send_req()
766 param.responder_resources = cmd.responder_resources; ib_ucm_send_req()
767 param.initiator_depth = cmd.initiator_depth; ib_ucm_send_req()
768 param.remote_cm_response_timeout = cmd.remote_cm_response_timeout; ib_ucm_send_req()
769 param.flow_control = cmd.flow_control; ib_ucm_send_req()
770 param.local_cm_response_timeout = cmd.local_cm_response_timeout; ib_ucm_send_req()
771 param.retry_count = cmd.retry_count; ib_ucm_send_req()
772 param.rnr_retry_count = cmd.rnr_retry_count; ib_ucm_send_req()
773 param.max_cm_retries = cmd.max_cm_retries; ib_ucm_send_req()
774 param.srq = cmd.srq; ib_ucm_send_req()
776 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_send_req()
796 struct ib_ucm_rep cmd; ib_ucm_send_rep() local
801 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_send_rep()
804 result = ib_ucm_alloc_data(&param.private_data, cmd.data, cmd.len); ib_ucm_send_rep()
808 param.qp_num = cmd.qpn; ib_ucm_send_rep()
809 param.starting_psn = cmd.psn; ib_ucm_send_rep()
810 param.private_data_len = cmd.len; ib_ucm_send_rep()
811 param.responder_resources = cmd.responder_resources; ib_ucm_send_rep()
812 param.initiator_depth = cmd.initiator_depth; ib_ucm_send_rep()
813 param.failover_accepted = cmd.failover_accepted; ib_ucm_send_rep()
814 param.flow_control = cmd.flow_control; ib_ucm_send_rep()
815 param.rnr_retry_count = cmd.rnr_retry_count; ib_ucm_send_rep()
816 param.srq = cmd.srq; ib_ucm_send_rep()
818 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_send_rep()
820 ctx->uid = cmd.uid; ib_ucm_send_rep()
836 struct ib_ucm_private_data cmd; ib_ucm_send_private_data() local
841 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_send_private_data()
844 result = ib_ucm_alloc_data(&private_data, cmd.data, cmd.len); ib_ucm_send_private_data()
848 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_send_private_data()
850 result = func(ctx->cm_id, private_data, cmd.len); ib_ucm_send_private_data()
890 struct ib_ucm_info cmd; ib_ucm_send_info() local
895 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_send_info()
898 result = ib_ucm_alloc_data(&data, cmd.data, cmd.data_len); ib_ucm_send_info()
902 result = ib_ucm_alloc_data(&info, cmd.info, cmd.info_len); ib_ucm_send_info()
906 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_send_info()
908 result = func(ctx->cm_id, cmd.status, info, cmd.info_len, ib_ucm_send_info()
909 data, cmd.data_len); ib_ucm_send_info()
939 struct ib_ucm_mra cmd; ib_ucm_send_mra() local
943 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_send_mra()
946 result = ib_ucm_alloc_data(&data, cmd.data, cmd.len); ib_ucm_send_mra()
950 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_send_mra()
952 result = ib_send_cm_mra(ctx->cm_id, cmd.timeout, data, cmd.len); ib_ucm_send_mra()
967 struct ib_ucm_lap cmd; ib_ucm_send_lap() local
971 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_send_lap()
974 result = ib_ucm_alloc_data(&data, cmd.data, cmd.len); ib_ucm_send_lap()
978 result = ib_ucm_path_get(&path, cmd.path); ib_ucm_send_lap()
982 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_send_lap()
984 result = ib_send_cm_lap(ctx->cm_id, path, data, cmd.len); ib_ucm_send_lap()
1001 struct ib_ucm_sidr_req cmd; ib_ucm_send_sidr_req() local
1007 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_send_sidr_req()
1010 result = ib_ucm_alloc_data(&param.private_data, cmd.data, cmd.len); ib_ucm_send_sidr_req()
1014 result = ib_ucm_path_get(&param.path, cmd.path); ib_ucm_send_sidr_req()
1018 param.private_data_len = cmd.len; ib_ucm_send_sidr_req()
1019 param.service_id = cmd.sid; ib_ucm_send_sidr_req()
1020 param.timeout_ms = cmd.timeout; ib_ucm_send_sidr_req()
1021 param.max_cm_retries = cmd.max_cm_retries; ib_ucm_send_sidr_req()
1023 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_send_sidr_req()
1041 struct ib_ucm_sidr_rep cmd; ib_ucm_send_sidr_rep() local
1047 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ib_ucm_send_sidr_rep()
1051 cmd.data, cmd.data_len); ib_ucm_send_sidr_rep()
1055 result = ib_ucm_alloc_data(&param.info, cmd.info, cmd.info_len); ib_ucm_send_sidr_rep()
1059 param.qp_num = cmd.qpn; ib_ucm_send_sidr_rep()
1060 param.qkey = cmd.qkey; ib_ucm_send_sidr_rep()
1061 param.status = cmd.status; ib_ucm_send_sidr_rep()
1062 param.info_length = cmd.info_len; ib_ucm_send_sidr_rep()
1063 param.private_data_len = cmd.data_len; ib_ucm_send_sidr_rep()
1065 ctx = ib_ucm_ctx_get(file, cmd.id); ib_ucm_send_sidr_rep()
1117 if (hdr.cmd >= ARRAY_SIZE(ucm_cmd_table)) ib_ucm_write()
1123 result = ucm_cmd_table[hdr.cmd](file, buf + sizeof(hdr), ib_ucm_write()
H A Ducma.c296 struct rdma_ucm_get_event cmd; ucma_get_event() local
303 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_get_event()
334 if (copy_to_user((void __user *)(unsigned long)cmd.response, ucma_get_event()
350 static int ucma_get_qp_type(struct rdma_ucm_create_id *cmd, enum ib_qp_type *qp_type) ucma_get_qp_type() argument
352 switch (cmd->ps) { ucma_get_qp_type()
361 *qp_type = cmd->qp_type; ucma_get_qp_type()
371 struct rdma_ucm_create_id cmd; ucma_create_id() local
380 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_create_id()
383 ret = ucma_get_qp_type(&cmd, &qp_type); ucma_create_id()
393 ctx->uid = cmd.uid; ucma_create_id()
394 ctx->cm_id = rdma_create_id(ucma_event_handler, ctx, cmd.ps, qp_type); ucma_create_id()
401 if (copy_to_user((void __user *)(unsigned long)cmd.response, ucma_create_id()
484 struct rdma_ucm_destroy_id cmd; ucma_destroy_id() local
492 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_destroy_id()
496 ctx = _ucma_find_context(cmd.id, file); ucma_destroy_id()
508 if (copy_to_user((void __user *)(unsigned long)cmd.response, ucma_destroy_id()
518 struct rdma_ucm_bind_ip cmd; ucma_bind_ip() local
522 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_bind_ip()
525 ctx = ucma_get_ctx(file, cmd.id); ucma_bind_ip()
529 ret = rdma_bind_addr(ctx->cm_id, (struct sockaddr *) &cmd.addr); ucma_bind_ip()
537 struct rdma_ucm_bind cmd; ucma_bind() local
542 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_bind()
545 addr = (struct sockaddr *) &cmd.addr; ucma_bind()
546 if (cmd.reserved || !cmd.addr_size || (cmd.addr_size != rdma_addr_size(addr))) ucma_bind()
549 ctx = ucma_get_ctx(file, cmd.id); ucma_bind()
562 struct rdma_ucm_resolve_ip cmd; ucma_resolve_ip() local
566 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_resolve_ip()
569 ctx = ucma_get_ctx(file, cmd.id); ucma_resolve_ip()
573 ret = rdma_resolve_addr(ctx->cm_id, (struct sockaddr *) &cmd.src_addr, ucma_resolve_ip()
574 (struct sockaddr *) &cmd.dst_addr, ucma_resolve_ip()
575 cmd.timeout_ms); ucma_resolve_ip()
584 struct rdma_ucm_resolve_addr cmd; ucma_resolve_addr() local
589 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_resolve_addr()
592 src = (struct sockaddr *) &cmd.src_addr; ucma_resolve_addr()
593 dst = (struct sockaddr *) &cmd.dst_addr; ucma_resolve_addr()
594 if (cmd.reserved || (cmd.src_size && (cmd.src_size != rdma_addr_size(src))) || ucma_resolve_addr()
595 !cmd.dst_size || (cmd.dst_size != rdma_addr_size(dst))) ucma_resolve_addr()
598 ctx = ucma_get_ctx(file, cmd.id); ucma_resolve_addr()
602 ret = rdma_resolve_addr(ctx->cm_id, src, dst, cmd.timeout_ms); ucma_resolve_addr()
611 struct rdma_ucm_resolve_route cmd; ucma_resolve_route() local
615 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_resolve_route()
618 ctx = ucma_get_ctx(file, cmd.id); ucma_resolve_route()
622 ret = rdma_resolve_route(ctx->cm_id, cmd.timeout_ms); ucma_resolve_route()
695 struct rdma_ucm_query cmd; ucma_query_route() local
704 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_query_route()
707 ctx = ucma_get_ctx(file, cmd.id); ucma_query_route()
747 if (copy_to_user((void __user *)(unsigned long)cmd.response, ucma_query_route()
877 struct rdma_ucm_query cmd; ucma_query() local
882 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_query()
885 response = (void __user *)(unsigned long) cmd.response; ucma_query()
886 ctx = ucma_get_ctx(file, cmd.id); ucma_query()
890 switch (cmd.option) { ucma_query()
928 struct rdma_ucm_connect cmd; ucma_connect() local
933 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_connect()
936 if (!cmd.conn_param.valid) ucma_connect()
939 ctx = ucma_get_ctx(file, cmd.id); ucma_connect()
943 ucma_copy_conn_param(ctx->cm_id, &conn_param, &cmd.conn_param); ucma_connect()
952 struct rdma_ucm_listen cmd; ucma_listen() local
956 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_listen()
959 ctx = ucma_get_ctx(file, cmd.id); ucma_listen()
963 ctx->backlog = cmd.backlog > 0 && cmd.backlog < max_backlog ? ucma_listen()
964 cmd.backlog : max_backlog; ucma_listen()
973 struct rdma_ucm_accept cmd; ucma_accept() local
978 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_accept()
981 ctx = ucma_get_ctx(file, cmd.id); ucma_accept()
985 if (cmd.conn_param.valid) { ucma_accept()
986 ucma_copy_conn_param(ctx->cm_id, &conn_param, &cmd.conn_param); ucma_accept()
990 ctx->uid = cmd.uid; ucma_accept()
1002 struct rdma_ucm_reject cmd; ucma_reject() local
1006 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_reject()
1009 ctx = ucma_get_ctx(file, cmd.id); ucma_reject()
1013 ret = rdma_reject(ctx->cm_id, cmd.private_data, cmd.private_data_len); ucma_reject()
1021 struct rdma_ucm_disconnect cmd; ucma_disconnect() local
1025 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_disconnect()
1028 ctx = ucma_get_ctx(file, cmd.id); ucma_disconnect()
1041 struct rdma_ucm_init_qp_attr cmd; ucma_init_qp_attr() local
1050 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_init_qp_attr()
1053 ctx = ucma_get_ctx(file, cmd.id); ucma_init_qp_attr()
1059 qp_attr.qp_state = cmd.qp_state; ucma_init_qp_attr()
1065 if (copy_to_user((void __user *)(unsigned long)cmd.response, ucma_init_qp_attr()
1178 struct rdma_ucm_set_option cmd; ucma_set_option() local
1183 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_set_option()
1186 ctx = ucma_get_ctx(file, cmd.id); ucma_set_option()
1190 optval = memdup_user((void __user *) (unsigned long) cmd.optval, ucma_set_option()
1191 cmd.optlen); ucma_set_option()
1197 ret = ucma_set_option_level(ctx, cmd.level, cmd.optname, optval, ucma_set_option()
1198 cmd.optlen); ucma_set_option()
1209 struct rdma_ucm_notify cmd; ucma_notify() local
1213 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_notify()
1216 ctx = ucma_get_ctx(file, cmd.id); ucma_notify()
1220 ret = rdma_notify(ctx->cm_id, (enum ib_event_type) cmd.event); ucma_notify()
1226 struct rdma_ucm_join_mcast *cmd, int out_len) ucma_process_join()
1237 addr = (struct sockaddr *) &cmd->addr; ucma_process_join()
1238 if (cmd->reserved || !cmd->addr_size || (cmd->addr_size != rdma_addr_size(addr))) ucma_process_join()
1241 ctx = ucma_get_ctx(file, cmd->id); ucma_process_join()
1252 mc->uid = cmd->uid; ucma_process_join()
1253 memcpy(&mc->addr, addr, cmd->addr_size); ucma_process_join()
1259 if (copy_to_user((void __user *)(unsigned long) cmd->response, ucma_process_join()
1288 struct rdma_ucm_join_ip_mcast cmd; ucma_join_ip_multicast() local
1291 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_join_ip_multicast()
1294 join_cmd.response = cmd.response; ucma_join_ip_multicast()
1295 join_cmd.uid = cmd.uid; ucma_join_ip_multicast()
1296 join_cmd.id = cmd.id; ucma_join_ip_multicast()
1297 join_cmd.addr_size = rdma_addr_size((struct sockaddr *) &cmd.addr); ucma_join_ip_multicast()
1299 memcpy(&join_cmd.addr, &cmd.addr, join_cmd.addr_size); ucma_join_ip_multicast()
1308 struct rdma_ucm_join_mcast cmd; ucma_join_multicast() local
1310 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_join_multicast()
1313 return ucma_process_join(file, &cmd, out_len); ucma_join_multicast()
1320 struct rdma_ucm_destroy_id cmd; ucma_leave_multicast() local
1328 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_leave_multicast()
1332 mc = idr_find(&multicast_idr, cmd.id); ucma_leave_multicast()
1358 if (copy_to_user((void __user *)(unsigned long)cmd.response, ucma_leave_multicast()
1401 struct rdma_ucm_migrate_id cmd; ucma_migrate_id() local
1408 if (copy_from_user(&cmd, inbuf, sizeof(cmd))) ucma_migrate_id()
1412 f = fdget(cmd.fd); ucma_migrate_id()
1417 ctx = ucma_get_ctx(f.file->private_data, cmd.id); ucma_migrate_id()
1445 if (copy_to_user((void __user *)(unsigned long)cmd.response, ucma_migrate_id()
1499 if (hdr.cmd >= ARRAY_SIZE(ucma_cmd_table)) ucma_write()
1505 if (!ucma_cmd_table[hdr.cmd]) ucma_write()
1508 ret = ucma_cmd_table[hdr.cmd](file, buf + sizeof(hdr), hdr.in, hdr.out); ucma_write()
1225 ucma_process_join(struct ucma_file *file, struct rdma_ucm_join_mcast *cmd, int out_len) ucma_process_join() argument
/linux-4.1.27/drivers/net/wireless/iwlwifi/mvm/
H A Dpower.c82 struct iwl_beacon_filter_cmd *cmd, iwl_mvm_beacon_filter_send_cmd()
86 le32_to_cpu(cmd->ba_enable_beacon_abort)); iwl_mvm_beacon_filter_send_cmd()
88 le32_to_cpu(cmd->ba_escape_timer)); iwl_mvm_beacon_filter_send_cmd()
90 le32_to_cpu(cmd->bf_debug_flag)); iwl_mvm_beacon_filter_send_cmd()
92 le32_to_cpu(cmd->bf_enable_beacon_filter)); iwl_mvm_beacon_filter_send_cmd()
94 le32_to_cpu(cmd->bf_energy_delta)); iwl_mvm_beacon_filter_send_cmd()
96 le32_to_cpu(cmd->bf_escape_timer)); iwl_mvm_beacon_filter_send_cmd()
98 le32_to_cpu(cmd->bf_roaming_energy_delta)); iwl_mvm_beacon_filter_send_cmd()
100 le32_to_cpu(cmd->bf_roaming_state)); iwl_mvm_beacon_filter_send_cmd()
102 le32_to_cpu(cmd->bf_temp_threshold)); iwl_mvm_beacon_filter_send_cmd()
104 le32_to_cpu(cmd->bf_temp_fast_filter)); iwl_mvm_beacon_filter_send_cmd()
106 le32_to_cpu(cmd->bf_temp_slow_filter)); iwl_mvm_beacon_filter_send_cmd()
109 sizeof(struct iwl_beacon_filter_cmd), cmd); iwl_mvm_beacon_filter_send_cmd()
115 struct iwl_beacon_filter_cmd *cmd) iwl_mvm_beacon_filter_set_cqm_params()
120 cmd->bf_energy_delta = iwl_mvm_beacon_filter_set_cqm_params()
123 cmd->bf_roaming_state = iwl_mvm_beacon_filter_set_cqm_params()
126 cmd->ba_enable_beacon_abort = cpu_to_le32(mvmvif->bf_data.ba_enabled); iwl_mvm_beacon_filter_set_cqm_params()
130 struct iwl_mac_power_cmd *cmd) iwl_mvm_power_log()
134 cmd->id_and_color, iwlmvm_mod_params.power_scheme, iwl_mvm_power_log()
135 le16_to_cpu(cmd->flags)); iwl_mvm_power_log()
137 le16_to_cpu(cmd->keep_alive_seconds)); iwl_mvm_power_log()
139 if (!(cmd->flags & cpu_to_le16(POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK))) { iwl_mvm_power_log()
145 le32_to_cpu(cmd->rx_data_timeout)); iwl_mvm_power_log()
147 le32_to_cpu(cmd->tx_data_timeout)); iwl_mvm_power_log()
148 if (cmd->flags & cpu_to_le16(POWER_FLAGS_SKIP_OVER_DTIM_MSK)) iwl_mvm_power_log()
150 cmd->skip_dtim_periods); iwl_mvm_power_log()
151 if (cmd->flags & cpu_to_le16(POWER_FLAGS_LPRX_ENA_MSK)) iwl_mvm_power_log()
153 cmd->lprx_rssi_threshold); iwl_mvm_power_log()
154 if (cmd->flags & cpu_to_le16(POWER_FLAGS_ADVANCE_PM_ENA_MSK)) { iwl_mvm_power_log()
157 le32_to_cpu(cmd->rx_data_timeout_uapsd)); iwl_mvm_power_log()
159 le32_to_cpu(cmd->tx_data_timeout_uapsd)); iwl_mvm_power_log()
160 IWL_DEBUG_POWER(mvm, "QNDP TID = %d\n", cmd->qndp_tid); iwl_mvm_power_log()
161 IWL_DEBUG_POWER(mvm, "ACs flags = 0x%x\n", cmd->uapsd_ac_flags); iwl_mvm_power_log()
162 IWL_DEBUG_POWER(mvm, "Max SP = %d\n", cmd->uapsd_max_sp); iwl_mvm_power_log()
168 struct iwl_mac_power_cmd *cmd) iwl_mvm_power_configure_uapsd()
179 cmd->flags |= iwl_mvm_power_configure_uapsd()
182 cmd->uapsd_ac_flags |= BIT(ac); iwl_mvm_power_configure_uapsd()
189 cmd->qndp_tid = 6; iwl_mvm_power_configure_uapsd()
192 cmd->qndp_tid = 5; iwl_mvm_power_configure_uapsd()
195 cmd->qndp_tid = 0; iwl_mvm_power_configure_uapsd()
198 cmd->qndp_tid = 1; iwl_mvm_power_configure_uapsd()
204 if (!(cmd->flags & cpu_to_le16(POWER_FLAGS_ADVANCE_PM_ENA_MSK))) { iwl_mvm_power_configure_uapsd()
208 cmd->flags |= iwl_mvm_power_configure_uapsd()
214 cmd->flags |= cpu_to_le16(POWER_FLAGS_UAPSD_MISBEHAVING_ENA_MSK); iwl_mvm_power_configure_uapsd()
216 if (cmd->uapsd_ac_flags == (BIT(IEEE80211_AC_VO) | iwl_mvm_power_configure_uapsd()
220 cmd->flags |= cpu_to_le16(POWER_FLAGS_SNOOZE_ENA_MSK); iwl_mvm_power_configure_uapsd()
221 cmd->snooze_interval = cpu_to_le16(IWL_MVM_PS_SNOOZE_INTERVAL); iwl_mvm_power_configure_uapsd()
222 cmd->snooze_window = (mvm->cur_ucode == IWL_UCODE_WOWLAN) ? iwl_mvm_power_configure_uapsd()
227 cmd->uapsd_max_sp = IWL_UAPSD_MAX_SP; iwl_mvm_power_configure_uapsd()
229 if (mvm->cur_ucode == IWL_UCODE_WOWLAN || cmd->flags & iwl_mvm_power_configure_uapsd()
231 cmd->rx_data_timeout_uapsd = iwl_mvm_power_configure_uapsd()
233 cmd->tx_data_timeout_uapsd = iwl_mvm_power_configure_uapsd()
236 cmd->rx_data_timeout_uapsd = iwl_mvm_power_configure_uapsd()
238 cmd->tx_data_timeout_uapsd = iwl_mvm_power_configure_uapsd()
242 if (cmd->flags & cpu_to_le16(POWER_FLAGS_SNOOZE_ENA_MSK)) { iwl_mvm_power_configure_uapsd()
243 cmd->heavy_tx_thld_packets = iwl_mvm_power_configure_uapsd()
245 cmd->heavy_rx_thld_packets = iwl_mvm_power_configure_uapsd()
248 cmd->heavy_tx_thld_packets = iwl_mvm_power_configure_uapsd()
250 cmd->heavy_rx_thld_packets = iwl_mvm_power_configure_uapsd()
253 cmd->heavy_tx_thld_percentage = iwl_mvm_power_configure_uapsd()
255 cmd->heavy_rx_thld_percentage = iwl_mvm_power_configure_uapsd()
331 struct iwl_mac_power_cmd *cmd) iwl_mvm_power_build_cmd()
339 cmd->id_and_color = cpu_to_le32(FW_CMD_ID_AND_COLOR(mvmvif->id, iwl_mvm_power_build_cmd()
353 cmd->keep_alive_seconds = cpu_to_le16(keep_alive); iwl_mvm_power_build_cmd()
358 cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_SAVE_ENA_MSK); iwl_mvm_power_build_cmd()
364 cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK); iwl_mvm_power_build_cmd()
369 cmd->flags |= cpu_to_le16(POWER_FLAGS_LPRX_ENA_MSK); iwl_mvm_power_build_cmd()
370 cmd->lprx_rssi_threshold = POWER_LPRX_RSSI_THRESHOLD; iwl_mvm_power_build_cmd()
380 cmd->skip_dtim_periods = iwl_mvm_power_build_cmd()
382 if (cmd->skip_dtim_periods) iwl_mvm_power_build_cmd()
383 cmd->flags |= iwl_mvm_power_build_cmd()
388 cmd->rx_data_timeout = iwl_mvm_power_build_cmd()
390 cmd->tx_data_timeout = iwl_mvm_power_build_cmd()
393 cmd->rx_data_timeout = iwl_mvm_power_build_cmd()
395 cmd->tx_data_timeout = iwl_mvm_power_build_cmd()
400 iwl_mvm_power_configure_uapsd(mvm, vif, cmd); iwl_mvm_power_build_cmd()
404 cmd->keep_alive_seconds = iwl_mvm_power_build_cmd()
408 cmd->flags |= iwl_mvm_power_build_cmd()
411 cmd->flags &= iwl_mvm_power_build_cmd()
415 cmd->rx_data_timeout = iwl_mvm_power_build_cmd()
418 cmd->tx_data_timeout = iwl_mvm_power_build_cmd()
421 cmd->skip_dtim_periods = mvmvif->dbgfs_pm.skip_dtim_periods; iwl_mvm_power_build_cmd()
424 cmd->flags |= cpu_to_le16(POWER_FLAGS_LPRX_ENA_MSK); iwl_mvm_power_build_cmd()
426 cmd->flags &= cpu_to_le16(~POWER_FLAGS_LPRX_ENA_MSK); iwl_mvm_power_build_cmd()
429 cmd->lprx_rssi_threshold = mvmvif->dbgfs_pm.lprx_rssi_threshold; iwl_mvm_power_build_cmd()
432 cmd->flags |= iwl_mvm_power_build_cmd()
435 cmd->flags &= iwl_mvm_power_build_cmd()
441 cmd->flags |= cpu_to_le16(flag); iwl_mvm_power_build_cmd()
443 cmd->flags &= cpu_to_le16(flag); iwl_mvm_power_build_cmd()
451 struct iwl_mac_power_cmd cmd = {}; iwl_mvm_power_send_cmd() local
453 iwl_mvm_power_build_cmd(mvm, vif, &cmd); iwl_mvm_power_send_cmd()
454 iwl_mvm_power_log(mvm, &cmd); iwl_mvm_power_send_cmd()
456 memcpy(&iwl_mvm_vif_from_mac80211(vif)->mac_pwr_cmd, &cmd, sizeof(cmd)); iwl_mvm_power_send_cmd()
460 sizeof(cmd), &cmd); iwl_mvm_power_send_cmd()
465 struct iwl_device_power_cmd cmd = { iwl_mvm_power_update_device() local
473 cmd.flags |= cpu_to_le16(DEVICE_POWER_FLAGS_CAM_MSK); iwl_mvm_power_update_device()
478 cmd.flags &= iwl_mvm_power_update_device()
483 cmd.flags); iwl_mvm_power_update_device()
485 return iwl_mvm_send_cmd_pdu(mvm, POWER_TABLE_CMD, 0, sizeof(cmd), iwl_mvm_power_update_device()
486 &cmd); iwl_mvm_power_update_device()
514 struct iwl_device_cmd *cmd) iwl_mvm_power_uapsd_misbehaving_ap_notif()
696 struct iwl_mac_power_cmd cmd = {}; iwl_mvm_power_mac_dbgfs_read() local
700 memcpy(&cmd, &mvmvif->mac_pwr_cmd, sizeof(cmd)); iwl_mvm_power_mac_dbgfs_read()
706 le16_to_cpu(cmd.flags)); iwl_mvm_power_mac_dbgfs_read()
708 le16_to_cpu(cmd.keep_alive_seconds)); iwl_mvm_power_mac_dbgfs_read()
710 if (!(cmd.flags & cpu_to_le16(POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK))) iwl_mvm_power_mac_dbgfs_read()
714 (cmd.flags & iwl_mvm_power_mac_dbgfs_read()
717 cmd.skip_dtim_periods); iwl_mvm_power_mac_dbgfs_read()
718 if (!(cmd.flags & cpu_to_le16(POWER_FLAGS_ADVANCE_PM_ENA_MSK))) { iwl_mvm_power_mac_dbgfs_read()
720 le32_to_cpu(cmd.rx_data_timeout)); iwl_mvm_power_mac_dbgfs_read()
722 le32_to_cpu(cmd.tx_data_timeout)); iwl_mvm_power_mac_dbgfs_read()
724 if (cmd.flags & cpu_to_le16(POWER_FLAGS_LPRX_ENA_MSK)) iwl_mvm_power_mac_dbgfs_read()
727 cmd.lprx_rssi_threshold); iwl_mvm_power_mac_dbgfs_read()
729 if (!(cmd.flags & cpu_to_le16(POWER_FLAGS_ADVANCE_PM_ENA_MSK))) iwl_mvm_power_mac_dbgfs_read()
733 le32_to_cpu(cmd.rx_data_timeout_uapsd)); iwl_mvm_power_mac_dbgfs_read()
735 le32_to_cpu(cmd.tx_data_timeout_uapsd)); iwl_mvm_power_mac_dbgfs_read()
736 pos += scnprintf(buf+pos, bufsz-pos, "qndp_tid = %d\n", cmd.qndp_tid); iwl_mvm_power_mac_dbgfs_read()
738 cmd.uapsd_ac_flags); iwl_mvm_power_mac_dbgfs_read()
740 cmd.uapsd_max_sp); iwl_mvm_power_mac_dbgfs_read()
742 cmd.heavy_tx_thld_packets); iwl_mvm_power_mac_dbgfs_read()
744 cmd.heavy_rx_thld_packets); iwl_mvm_power_mac_dbgfs_read()
746 cmd.heavy_tx_thld_percentage); iwl_mvm_power_mac_dbgfs_read()
748 cmd.heavy_rx_thld_percentage); iwl_mvm_power_mac_dbgfs_read()
750 (cmd.flags & iwl_mvm_power_mac_dbgfs_read()
754 if (!(cmd.flags & cpu_to_le16(POWER_FLAGS_SNOOZE_ENA_MSK))) iwl_mvm_power_mac_dbgfs_read()
758 cmd.snooze_interval); iwl_mvm_power_mac_dbgfs_read()
760 cmd.snooze_window); iwl_mvm_power_mac_dbgfs_read()
767 struct iwl_beacon_filter_cmd *cmd) iwl_mvm_beacon_filter_debugfs_parameters()
773 cmd->bf_energy_delta = cpu_to_le32(dbgfs_bf->bf_energy_delta); iwl_mvm_beacon_filter_debugfs_parameters()
775 cmd->bf_roaming_energy_delta = iwl_mvm_beacon_filter_debugfs_parameters()
778 cmd->bf_roaming_state = cpu_to_le32(dbgfs_bf->bf_roaming_state); iwl_mvm_beacon_filter_debugfs_parameters()
780 cmd->bf_temp_threshold = iwl_mvm_beacon_filter_debugfs_parameters()
783 cmd->bf_temp_fast_filter = iwl_mvm_beacon_filter_debugfs_parameters()
786 cmd->bf_temp_slow_filter = iwl_mvm_beacon_filter_debugfs_parameters()
789 cmd->bf_debug_flag = cpu_to_le32(dbgfs_bf->bf_debug_flag); iwl_mvm_beacon_filter_debugfs_parameters()
791 cmd->bf_escape_timer = cpu_to_le32(dbgfs_bf->bf_escape_timer); iwl_mvm_beacon_filter_debugfs_parameters()
793 cmd->ba_escape_timer = cpu_to_le32(dbgfs_bf->ba_escape_timer); iwl_mvm_beacon_filter_debugfs_parameters()
795 cmd->ba_enable_beacon_abort = iwl_mvm_beacon_filter_debugfs_parameters()
802 struct iwl_beacon_filter_cmd *cmd, _iwl_mvm_enable_beacon_filter()
813 iwl_mvm_beacon_filter_set_cqm_params(mvm, vif, cmd); _iwl_mvm_enable_beacon_filter()
815 iwl_mvm_beacon_filter_debugfs_parameters(vif, cmd); _iwl_mvm_enable_beacon_filter()
816 ret = iwl_mvm_beacon_filter_send_cmd(mvm, cmd, cmd_flags); _iwl_mvm_enable_beacon_filter()
829 struct iwl_beacon_filter_cmd cmd = { iwl_mvm_enable_beacon_filter() local
834 return _iwl_mvm_enable_beacon_filter(mvm, vif, &cmd, flags, false); iwl_mvm_enable_beacon_filter()
842 struct iwl_beacon_filter_cmd cmd = { iwl_mvm_update_beacon_abort() local
851 cmd.ba_escape_timer = cpu_to_le32(IWL_BA_ESCAPE_TIMER_D3); iwl_mvm_update_beacon_abort()
854 return _iwl_mvm_enable_beacon_filter(mvm, vif, &cmd, 0, false); iwl_mvm_update_beacon_abort()
861 struct iwl_beacon_filter_cmd cmd = {}; iwl_mvm_disable_beacon_filter() local
868 ret = iwl_mvm_beacon_filter_send_cmd(mvm, &cmd, flags); iwl_mvm_disable_beacon_filter()
984 struct iwl_mac_power_cmd cmd = {}; iwl_mvm_update_d0i3_power_mode() local
992 iwl_mvm_power_build_cmd(mvm, vif, &cmd); iwl_mvm_update_d0i3_power_mode()
1005 cmd.skip_dtim_periods = 306 / dtimper_tu; iwl_mvm_update_d0i3_power_mode()
1006 if (cmd.skip_dtim_periods) iwl_mvm_update_d0i3_power_mode()
1007 cmd.flags |= cpu_to_le16( iwl_mvm_update_d0i3_power_mode()
1011 iwl_mvm_power_log(mvm, &cmd); iwl_mvm_update_d0i3_power_mode()
1013 memcpy(&mvmvif->mac_pwr_cmd, &cmd, sizeof(cmd)); iwl_mvm_update_d0i3_power_mode()
1016 sizeof(cmd), &cmd); iwl_mvm_update_d0i3_power_mode()
81 iwl_mvm_beacon_filter_send_cmd(struct iwl_mvm *mvm, struct iwl_beacon_filter_cmd *cmd, u32 flags) iwl_mvm_beacon_filter_send_cmd() argument
113 iwl_mvm_beacon_filter_set_cqm_params(struct iwl_mvm *mvm, struct ieee80211_vif *vif, struct iwl_beacon_filter_cmd *cmd) iwl_mvm_beacon_filter_set_cqm_params() argument
129 iwl_mvm_power_log(struct iwl_mvm *mvm, struct iwl_mac_power_cmd *cmd) iwl_mvm_power_log() argument
166 iwl_mvm_power_configure_uapsd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, struct iwl_mac_power_cmd *cmd) iwl_mvm_power_configure_uapsd() argument
329 iwl_mvm_power_build_cmd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, struct iwl_mac_power_cmd *cmd) iwl_mvm_power_build_cmd() argument
512 iwl_mvm_power_uapsd_misbehaving_ap_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb, struct iwl_device_cmd *cmd) iwl_mvm_power_uapsd_misbehaving_ap_notif() argument
766 iwl_mvm_beacon_filter_debugfs_parameters(struct ieee80211_vif *vif, struct iwl_beacon_filter_cmd *cmd) iwl_mvm_beacon_filter_debugfs_parameters() argument
800 _iwl_mvm_enable_beacon_filter(struct iwl_mvm *mvm, struct ieee80211_vif *vif, struct iwl_beacon_filter_cmd *cmd, u32 cmd_flags, bool d0i3) _iwl_mvm_enable_beacon_filter() argument
H A Doffloading.c70 struct iwl_wowlan_config_cmd *cmd) iwl_mvm_set_wowlan_qos_seq()
82 cmd->qos_seq[i] = cpu_to_le16(seq); iwl_mvm_set_wowlan_qos_seq()
96 } cmd = {}; iwl_mvm_send_proto_offload() local
100 .data[0] = &cmd, iwl_mvm_send_proto_offload()
118 nsc = cmd.v3s.ns_config; iwl_mvm_send_proto_offload()
120 addrs = cmd.v3s.targ_addrs; iwl_mvm_send_proto_offload()
123 nsc = cmd.v3l.ns_config; iwl_mvm_send_proto_offload()
125 addrs = cmd.v3l.targ_addrs; iwl_mvm_send_proto_offload()
158 cmd.v3s.num_valid_ipv6_addrs = cpu_to_le32(i); iwl_mvm_send_proto_offload()
160 cmd.v3l.num_valid_ipv6_addrs = cpu_to_le32(i); iwl_mvm_send_proto_offload()
164 memcpy(cmd.v2.ndp_mac_addr, vif->addr, ETH_ALEN); iwl_mvm_send_proto_offload()
167 BUILD_BUG_ON(sizeof(cmd.v2.target_ipv6_addr[0]) != iwl_mvm_send_proto_offload()
172 memcpy(cmd.v2.target_ipv6_addr[i], iwl_mvm_send_proto_offload()
174 sizeof(cmd.v2.target_ipv6_addr[i])); iwl_mvm_send_proto_offload()
178 memcpy(cmd.v1.ndp_mac_addr, vif->addr, ETH_ALEN); iwl_mvm_send_proto_offload()
181 BUILD_BUG_ON(sizeof(cmd.v1.target_ipv6_addr[0]) != iwl_mvm_send_proto_offload()
186 memcpy(cmd.v1.target_ipv6_addr[i], iwl_mvm_send_proto_offload()
188 sizeof(cmd.v1.target_ipv6_addr[i])); iwl_mvm_send_proto_offload()
193 common = &cmd.v3s.common; iwl_mvm_send_proto_offload()
194 size = sizeof(cmd.v3s); iwl_mvm_send_proto_offload()
196 common = &cmd.v3l.common; iwl_mvm_send_proto_offload()
197 size = sizeof(cmd.v3l); iwl_mvm_send_proto_offload()
199 common = &cmd.v2.common; iwl_mvm_send_proto_offload()
200 size = sizeof(cmd.v2); iwl_mvm_send_proto_offload()
202 common = &cmd.v1.common; iwl_mvm_send_proto_offload()
203 size = sizeof(cmd.v1); iwl_mvm_send_proto_offload()
69 iwl_mvm_set_wowlan_qos_seq(struct iwl_mvm_sta *mvm_ap_sta, struct iwl_wowlan_config_cmd *cmd) iwl_mvm_set_wowlan_qos_seq() argument
/linux-4.1.27/drivers/misc/cxl/
H A Dtrace.h308 TP_PROTO(struct cxl_context *ctx, u64 cmd),
310 TP_ARGS(ctx, cmd),
316 __field(u64, cmd)
323 __entry->cmd = cmd;
326 TP_printk("afu%i.%i pe=%i cmd=%s",
330 __print_symbolic_u64(__entry->cmd, LLCMD_NAMES)
335 TP_PROTO(struct cxl_context *ctx, u64 cmd, int rc),
337 TP_ARGS(ctx, cmd, rc),
343 __field(u64, cmd)
352 __entry->cmd = cmd;
355 TP_printk("afu%i.%i pe=%i cmd=%s rc=%i",
359 __print_symbolic_u64(__entry->cmd, LLCMD_NAMES),
365 TP_PROTO(struct cxl_afu *afu, u64 cmd),
367 TP_ARGS(afu, cmd),
372 __field(u64, cmd)
378 __entry->cmd = cmd;
381 TP_printk("afu%i.%i cmd=%s",
384 __print_symbolic_u64(__entry->cmd, AFU_COMMANDS)
389 TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
391 TP_ARGS(afu, cmd, rc),
396 __field(u64, cmd)
404 __entry->cmd = cmd;
407 TP_printk("afu%i.%i cmd=%s rc=%i",
410 __print_symbolic_u64(__entry->cmd, AFU_COMMANDS),
416 TP_PROTO(struct cxl_afu *afu, u64 cmd),
417 TP_ARGS(afu, cmd)
421 TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
422 TP_ARGS(afu, cmd, rc)
426 TP_PROTO(struct cxl_afu *afu, u64 cmd),
427 TP_ARGS(afu, cmd),
429 TP_printk("psl%i.%i cmd=%s",
432 __print_symbolic_u64(__entry->cmd, PSL_COMMANDS)
437 TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
438 TP_ARGS(afu, cmd, rc),
440 TP_printk("psl%i.%i cmd=%s rc=%i",
443 __print_symbolic_u64(__entry->cmd, PSL_COMMANDS),
/linux-4.1.27/tools/perf/
H A Dbuiltin-data.c18 #define for_each_cmd(cmd) \
19 for (cmd = data_cmds; cmd && cmd->name; cmd++)
34 struct data_cmd *cmd; print_usage() local
40 for_each_cmd(cmd) { for_each_cmd()
41 printf("\t %s\t- %s\n", cmd->name, cmd->summary); for_each_cmd()
98 struct data_cmd *cmd; cmd_data() local
112 for_each_cmd(cmd) { for_each_cmd()
113 if (strcmp(cmd->name, cmdstr)) for_each_cmd()
116 return cmd->fn(argc, argv, prefix); for_each_cmd()
H A Dperf.c32 const char *cmd; member in struct:cmd_struct
70 const char *cmd; member in struct:pager_config
77 if (!prefixcmp(var, "pager.") && !strcmp(var + 6, c->cmd)) pager_command_config()
83 int check_pager_config(const char *cmd) check_pager_config() argument
86 c.cmd = cmd; check_pager_config()
95 if (!prefixcmp(var, "tui.") && !strcmp(var + 4, c->cmd)) browser_command_config()
97 if (!prefixcmp(var, "gtk.") && !strcmp(var + 4, c->cmd)) browser_command_config()
106 static int check_browser_config(const char *cmd) check_browser_config() argument
109 c.cmd = cmd; check_browser_config()
151 const char *cmd = (*argv)[0]; handle_options() local
152 if (cmd[0] != '-') handle_options()
160 if (!strcmp(cmd, "--help") || !strcmp(cmd, "--version")) handle_options()
166 if (!prefixcmp(cmd, CMD_EXEC_PATH)) { handle_options()
167 cmd += strlen(CMD_EXEC_PATH); handle_options()
168 if (*cmd == '=') handle_options()
169 perf_set_argv_exec_path(cmd + 1); handle_options()
174 } else if (!strcmp(cmd, "--html-path")) { handle_options()
177 } else if (!strcmp(cmd, "-p") || !strcmp(cmd, "--paginate")) { handle_options()
179 } else if (!strcmp(cmd, "--no-pager")) { handle_options()
183 } else if (!strcmp(cmd, "--perf-dir")) { handle_options()
194 } else if (!prefixcmp(cmd, CMD_PERF_DIR)) { handle_options()
195 setenv(PERF_DIR_ENVIRONMENT, cmd + strlen(CMD_PERF_DIR), 1); handle_options()
198 } else if (!strcmp(cmd, "--work-tree")) { handle_options()
208 } else if (!prefixcmp(cmd, CMD_WORK_TREE)) { handle_options()
209 setenv(PERF_WORK_TREE_ENVIRONMENT, cmd + strlen(CMD_WORK_TREE), 1); handle_options()
212 } else if (!strcmp(cmd, "--debugfs-dir")) { handle_options()
222 } else if (!strcmp(cmd, "--buildid-dir")) { handle_options()
232 } else if (!prefixcmp(cmd, CMD_DEBUGFS_DIR)) { handle_options()
233 perf_debugfs_set_path(cmd + strlen(CMD_DEBUGFS_DIR)); handle_options()
237 } else if (!strcmp(cmd, "--list-cmds")) { handle_options()
242 printf("%s ", p->cmd); handle_options()
246 } else if (!strcmp(cmd, "--list-opts")) { handle_options()
255 } else if (!strcmp(cmd, "--debug")) { handle_options()
266 fprintf(stderr, "Unknown option: %s\n", cmd); handle_options()
362 use_browser = check_browser_config(p->cmd); run_builtin()
365 use_pager = check_pager_config(p->cmd); run_builtin()
406 const char *cmd = argv[0]; handle_internal_command() local
414 argv[0] = cmd = argv0; handle_internal_command()
419 /* Turn "perf cmd --help" into "perf help cmd" */ handle_internal_command()
422 argv[0] = cmd = "help"; handle_internal_command()
427 if (strcmp(p->cmd, cmd)) handle_internal_command()
435 struct strbuf cmd = STRBUF_INIT; execv_dashed_external() local
439 strbuf_addf(&cmd, "perf-%s", argv[0]); execv_dashed_external()
448 argv[0] = cmd.buf; execv_dashed_external()
464 strbuf_release(&cmd); execv_dashed_external()
510 const char *cmd; main() local
517 cmd = perf_extract_argv0_path(argv[0]); main()
518 if (!cmd) main()
519 cmd = "perf-help"; main()
532 if (!prefixcmp(cmd, "perf-")) { main()
533 cmd += 5; main()
534 argv[0] = cmd; main()
536 fprintf(stderr, "cannot handle %s internally", cmd); main()
539 if (!prefixcmp(cmd, "trace")) { main()
568 cmd = argv[0]; main()
596 cmd, argv[0]); main()
600 cmd = argv[0] = help_unknown_cmd(cmd); main()
607 cmd, strerror_r(errno, sbuf, sizeof(sbuf))); main()
/linux-4.1.27/drivers/block/rsxx/
H A Dcregs.c33 struct creg_cmd *cmd,
112 static void creg_issue_cmd(struct rsxx_cardinfo *card, struct creg_cmd *cmd) creg_issue_cmd() argument
119 iowrite32(cmd->addr, card->regmap + CREG_ADD); creg_issue_cmd()
120 iowrite32(cmd->cnt8, card->regmap + CREG_CNT); creg_issue_cmd()
122 if (cmd->op == CREG_OP_WRITE) { creg_issue_cmd()
123 if (cmd->buf) { creg_issue_cmd()
124 st = copy_to_creg_data(card, cmd->cnt8, creg_issue_cmd()
125 cmd->buf, cmd->stream); creg_issue_cmd()
135 iowrite32(cmd->op, card->regmap + CREG_CMD); creg_issue_cmd()
170 struct creg_cmd *cmd; creg_queue_cmd() local
182 cmd = kmem_cache_alloc(creg_cmd_pool, GFP_KERNEL); creg_queue_cmd()
183 if (!cmd) creg_queue_cmd()
186 INIT_LIST_HEAD(&cmd->list); creg_queue_cmd()
188 cmd->op = op; creg_queue_cmd()
189 cmd->addr = addr; creg_queue_cmd()
190 cmd->cnt8 = cnt8; creg_queue_cmd()
191 cmd->buf = buf; creg_queue_cmd()
192 cmd->stream = stream; creg_queue_cmd()
193 cmd->cb = callback; creg_queue_cmd()
194 cmd->cb_private = cb_private; creg_queue_cmd()
195 cmd->status = 0; creg_queue_cmd()
198 list_add_tail(&cmd->list, &card->creg_ctrl.queue); creg_queue_cmd()
209 struct creg_cmd *cmd; creg_cmd_timed_out() local
212 cmd = card->creg_ctrl.active_cmd; creg_cmd_timed_out()
216 if (cmd == NULL) { creg_cmd_timed_out()
223 if (cmd->cb) creg_cmd_timed_out()
224 cmd->cb(card, cmd, -ETIMEDOUT); creg_cmd_timed_out()
226 kmem_cache_free(creg_cmd_pool, cmd); creg_cmd_timed_out()
239 struct creg_cmd *cmd; creg_cmd_done() local
253 cmd = card->creg_ctrl.active_cmd; creg_cmd_done()
257 if (cmd == NULL) { creg_cmd_done()
264 cmd->status = card->creg_ctrl.creg_stats.stat; creg_cmd_done()
265 if ((cmd->status & CREG_STAT_STATUS_MASK) == 0) { creg_cmd_done()
275 } else if (cmd->status & CREG_STAT_ERROR) { creg_cmd_done()
279 if ((cmd->op == CREG_OP_READ)) { creg_cmd_done()
283 if (!cmd->buf) { creg_cmd_done()
289 if (cnt8 != cmd->cnt8) { creg_cmd_done()
296 st = copy_from_creg_data(card, cnt8, cmd->buf, cmd->stream); creg_cmd_done()
300 if (cmd->cb) creg_cmd_done()
301 cmd->cb(card, cmd, st); creg_cmd_done()
303 kmem_cache_free(creg_cmd_pool, cmd); creg_cmd_done()
313 struct creg_cmd *cmd = NULL; creg_reset() local
334 list_for_each_entry_safe(cmd, tmp, &card->creg_ctrl.queue, list) { creg_reset()
335 list_del(&cmd->list); creg_reset()
337 if (cmd->cb) creg_reset()
338 cmd->cb(card, cmd, -ECANCELED); creg_reset()
339 kmem_cache_free(creg_cmd_pool, cmd); creg_reset()
342 cmd = card->creg_ctrl.active_cmd; creg_reset()
344 if (cmd) { creg_reset()
348 if (cmd->cb) creg_reset()
349 cmd->cb(card, cmd, -ECANCELED); creg_reset()
350 kmem_cache_free(creg_cmd_pool, cmd); creg_reset()
372 struct creg_cmd *cmd, creg_cmd_done_cb()
377 cmd_completion = cmd->cb_private; creg_cmd_done_cb()
381 cmd_completion->creg_status = cmd->status; creg_cmd_done_cb()
535 int rsxx_issue_card_cmd(struct rsxx_cardinfo *card, u32 cmd) rsxx_issue_card_cmd() argument
538 sizeof(cmd), &cmd, 0); rsxx_issue_card_cmd()
610 struct creg_cmd *cmd, read_hw_log_done()
619 buf = cmd->buf; read_hw_log_done()
626 while (off < cmd->cnt8) { read_hw_log_done()
628 cnt = min(cmd->cnt8 - off, LOG_BUF_SIZE8 - card->log.buf_len); read_hw_log_done()
648 if (cmd->status & CREG_STAT_LOG_PENDING) read_hw_log_done()
668 struct rsxx_reg_access *cmd, issue_reg_cmd()
673 return __issue_creg_rw(card, op, cmd->addr, cmd->cnt, cmd->data, issue_reg_cmd()
674 cmd->stream, &cmd->stat); issue_reg_cmd()
681 struct rsxx_reg_access cmd; rsxx_reg_access() local
684 st = copy_from_user(&cmd, ucmd, sizeof(cmd)); rsxx_reg_access()
688 if (cmd.cnt > RSXX_MAX_REG_CNT) rsxx_reg_access()
691 st = issue_reg_cmd(card, &cmd, read); rsxx_reg_access()
695 st = put_user(cmd.stat, &ucmd->stat); rsxx_reg_access()
700 st = copy_to_user(ucmd->data, cmd.data, cmd.cnt); rsxx_reg_access()
710 struct creg_cmd *cmd = NULL; rsxx_eeh_save_issued_creg() local
712 cmd = card->creg_ctrl.active_cmd; rsxx_eeh_save_issued_creg()
715 if (cmd) { rsxx_eeh_save_issued_creg()
719 list_add(&cmd->list, &card->creg_ctrl.queue); rsxx_eeh_save_issued_creg()
756 struct creg_cmd *cmd; rsxx_creg_destroy() local
762 list_for_each_entry_safe(cmd, tmp, &card->creg_ctrl.queue, list) { rsxx_creg_destroy()
763 list_del(&cmd->list); rsxx_creg_destroy()
764 if (cmd->cb) rsxx_creg_destroy()
765 cmd->cb(card, cmd, -ECANCELED); rsxx_creg_destroy()
766 kmem_cache_free(creg_cmd_pool, cmd); rsxx_creg_destroy()
774 cmd = card->creg_ctrl.active_cmd; rsxx_creg_destroy()
776 if (cmd) { rsxx_creg_destroy()
780 if (cmd->cb) rsxx_creg_destroy()
781 cmd->cb(card, cmd, -ECANCELED); rsxx_creg_destroy()
784 kmem_cache_free(creg_cmd_pool, cmd); rsxx_creg_destroy()
371 creg_cmd_done_cb(struct rsxx_cardinfo *card, struct creg_cmd *cmd, int st) creg_cmd_done_cb() argument
609 read_hw_log_done(struct rsxx_cardinfo *card, struct creg_cmd *cmd, int st) read_hw_log_done() argument
667 issue_reg_cmd(struct rsxx_cardinfo *card, struct rsxx_reg_access *cmd, int read) issue_reg_cmd() argument
/linux-4.1.27/drivers/gpu/drm/vmwgfx/
H A Dvmwgfx_gmr.c45 uint32_t *cmd; vmw_gmr2_bind() local
47 uint32_t define_size = sizeof(define_cmd) + sizeof(*cmd); vmw_gmr2_bind()
49 uint32_t remap_size = VMW_PPN_SIZE * num_pages + (sizeof(remap_cmd) + sizeof(*cmd)) * remap_num; vmw_gmr2_bind()
54 cmd_orig = cmd = vmw_fifo_reserve(dev_priv, cmd_size); vmw_gmr2_bind()
55 if (unlikely(cmd == NULL)) vmw_gmr2_bind()
61 *cmd++ = SVGA_CMD_DEFINE_GMR2; vmw_gmr2_bind()
62 memcpy(cmd, &define_cmd, sizeof(define_cmd)); vmw_gmr2_bind()
63 cmd += sizeof(define_cmd) / sizeof(*cmd); vmw_gmr2_bind()
71 remap_cmd.flags = (VMW_PPN_SIZE > sizeof(*cmd)) ? vmw_gmr2_bind()
80 *cmd++ = SVGA_CMD_REMAP_GMR2; vmw_gmr2_bind()
81 memcpy(cmd, &remap_cmd, sizeof(remap_cmd)); vmw_gmr2_bind()
82 cmd += sizeof(remap_cmd) / sizeof(*cmd); vmw_gmr2_bind()
86 *cmd = vmw_piter_dma_addr(iter) >> PAGE_SHIFT; vmw_gmr2_bind()
88 *((uint64_t *)cmd) = vmw_piter_dma_addr(iter) >> vmw_gmr2_bind()
91 cmd += VMW_PPN_SIZE / sizeof(*cmd); vmw_gmr2_bind()
99 BUG_ON(cmd != cmd_orig + cmd_size / sizeof(*cmd)); vmw_gmr2_bind()
111 uint32_t *cmd; vmw_gmr2_unbind() local
113 cmd = vmw_fifo_reserve(dev_priv, define_size); vmw_gmr2_unbind()
114 if (unlikely(cmd == NULL)) { vmw_gmr2_unbind()
121 *cmd++ = SVGA_CMD_DEFINE_GMR2; vmw_gmr2_unbind()
122 memcpy(cmd, &define_cmd, sizeof(define_cmd)); vmw_gmr2_unbind()
H A Dvmwgfx_context.c113 } *cmd; vmw_hw_context_destroy() local
131 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_hw_context_destroy()
132 if (unlikely(cmd == NULL)) { vmw_hw_context_destroy()
138 cmd->header.id = cpu_to_le32(SVGA_3D_CMD_CONTEXT_DESTROY); vmw_hw_context_destroy()
139 cmd->header.size = cpu_to_le32(sizeof(cmd->body)); vmw_hw_context_destroy()
140 cmd->body.cid = cpu_to_le32(res->id); vmw_hw_context_destroy()
142 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_hw_context_destroy()
192 } *cmd; vmw_context_init() local
211 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_context_init()
212 if (unlikely(cmd == NULL)) { vmw_context_init()
218 cmd->header.id = cpu_to_le32(SVGA_3D_CMD_CONTEXT_DEFINE); vmw_context_init()
219 cmd->header.size = cpu_to_le32(sizeof(cmd->body)); vmw_context_init()
220 cmd->body.cid = cpu_to_le32(res->id); vmw_context_init()
222 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_context_init()
256 } *cmd; vmw_gb_context_create() local
272 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_gb_context_create()
273 if (unlikely(cmd == NULL)) { vmw_gb_context_create()
280 cmd->header.id = SVGA_3D_CMD_DEFINE_GB_CONTEXT; vmw_gb_context_create()
281 cmd->header.size = sizeof(cmd->body); vmw_gb_context_create()
282 cmd->body.cid = res->id; vmw_gb_context_create()
283 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_gb_context_create()
301 } *cmd; vmw_gb_context_bind() local
306 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_gb_context_bind()
307 if (unlikely(cmd == NULL)) { vmw_gb_context_bind()
313 cmd->header.id = SVGA_3D_CMD_BIND_GB_CONTEXT; vmw_gb_context_bind()
314 cmd->header.size = sizeof(cmd->body); vmw_gb_context_bind()
315 cmd->body.cid = res->id; vmw_gb_context_bind()
316 cmd->body.mobid = bo->mem.start; vmw_gb_context_bind()
317 cmd->body.validContents = res->backup_dirty; vmw_gb_context_bind()
319 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_gb_context_bind()
343 uint8_t *cmd; vmw_gb_context_unbind() local
353 cmd = vmw_fifo_reserve(dev_priv, submit_size); vmw_gb_context_unbind()
354 if (unlikely(cmd == NULL)) { vmw_gb_context_unbind()
361 cmd2 = (void *) cmd; vmw_gb_context_unbind()
363 cmd1 = (void *) cmd; vmw_gb_context_unbind()
398 } *cmd; vmw_gb_context_destroy() local
403 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_gb_context_destroy()
404 if (unlikely(cmd == NULL)) { vmw_gb_context_destroy()
410 cmd->header.id = SVGA_3D_CMD_DESTROY_GB_CONTEXT; vmw_gb_context_destroy()
411 cmd->header.size = sizeof(cmd->body); vmw_gb_context_destroy()
412 cmd->body.cid = res->id; vmw_gb_context_destroy()
413 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_gb_context_destroy()
553 } *cmd; vmw_context_scrub_shader() local
555 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_context_scrub_shader()
556 if (unlikely(cmd == NULL)) { vmw_context_scrub_shader()
562 cmd->header.id = SVGA_3D_CMD_SET_SHADER; vmw_context_scrub_shader()
563 cmd->header.size = sizeof(cmd->body); vmw_context_scrub_shader()
564 cmd->body.cid = bi->ctx->id; vmw_context_scrub_shader()
565 cmd->body.type = bi->i1.shader_type; vmw_context_scrub_shader()
566 cmd->body.shid = ((rebind) ? bi->res->id : SVGA3D_INVALID_ID); vmw_context_scrub_shader()
567 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_context_scrub_shader()
586 } *cmd; vmw_context_scrub_render_target() local
588 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_context_scrub_render_target()
589 if (unlikely(cmd == NULL)) { vmw_context_scrub_render_target()
595 cmd->header.id = SVGA_3D_CMD_SETRENDERTARGET; vmw_context_scrub_render_target()
596 cmd->header.size = sizeof(cmd->body); vmw_context_scrub_render_target()
597 cmd->body.cid = bi->ctx->id; vmw_context_scrub_render_target()
598 cmd->body.type = bi->i1.rt_type; vmw_context_scrub_render_target()
599 cmd->body.target.sid = ((rebind) ? bi->res->id : SVGA3D_INVALID_ID); vmw_context_scrub_render_target()
600 cmd->body.target.face = 0; vmw_context_scrub_render_target()
601 cmd->body.target.mipmap = 0; vmw_context_scrub_render_target()
602 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_context_scrub_render_target()
626 } *cmd; vmw_context_scrub_texture() local
628 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_context_scrub_texture()
629 if (unlikely(cmd == NULL)) { vmw_context_scrub_texture()
636 cmd->header.id = SVGA_3D_CMD_SETTEXTURESTATE; vmw_context_scrub_texture()
637 cmd->header.size = sizeof(cmd->body); vmw_context_scrub_texture()
638 cmd->body.c.cid = bi->ctx->id; vmw_context_scrub_texture()
639 cmd->body.s1.stage = bi->i1.texture_stage; vmw_context_scrub_texture()
640 cmd->body.s1.name = SVGA3D_TS_BIND_TEXTURE; vmw_context_scrub_texture()
641 cmd->body.s1.value = ((rebind) ? bi->res->id : SVGA3D_INVALID_ID); vmw_context_scrub_texture()
642 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_context_scrub_texture()
H A Dvmwgfx_shader.c138 } *cmd; vmw_gb_shader_create() local
154 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_gb_shader_create()
155 if (unlikely(cmd == NULL)) { vmw_gb_shader_create()
162 cmd->header.id = SVGA_3D_CMD_DEFINE_GB_SHADER; vmw_gb_shader_create()
163 cmd->header.size = sizeof(cmd->body); vmw_gb_shader_create()
164 cmd->body.shid = res->id; vmw_gb_shader_create()
165 cmd->body.type = shader->type; vmw_gb_shader_create()
166 cmd->body.sizeInBytes = shader->size; vmw_gb_shader_create()
167 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_gb_shader_create()
185 } *cmd; vmw_gb_shader_bind() local
190 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_gb_shader_bind()
191 if (unlikely(cmd == NULL)) { vmw_gb_shader_bind()
197 cmd->header.id = SVGA_3D_CMD_BIND_GB_SHADER; vmw_gb_shader_bind()
198 cmd->header.size = sizeof(cmd->body); vmw_gb_shader_bind()
199 cmd->body.shid = res->id; vmw_gb_shader_bind()
200 cmd->body.mobid = bo->mem.start; vmw_gb_shader_bind()
201 cmd->body.offsetInBytes = res->backup_offset; vmw_gb_shader_bind()
203 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_gb_shader_bind()
216 } *cmd; vmw_gb_shader_unbind() local
221 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_gb_shader_unbind()
222 if (unlikely(cmd == NULL)) { vmw_gb_shader_unbind()
228 cmd->header.id = SVGA_3D_CMD_BIND_GB_SHADER; vmw_gb_shader_unbind()
229 cmd->header.size = sizeof(cmd->body); vmw_gb_shader_unbind()
230 cmd->body.shid = res->id; vmw_gb_shader_unbind()
231 cmd->body.mobid = SVGA3D_INVALID_ID; vmw_gb_shader_unbind()
232 cmd->body.offsetInBytes = 0; vmw_gb_shader_unbind()
233 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_gb_shader_unbind()
256 } *cmd; vmw_gb_shader_destroy() local
264 cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); vmw_gb_shader_destroy()
265 if (unlikely(cmd == NULL)) { vmw_gb_shader_destroy()
272 cmd->header.id = SVGA_3D_CMD_DESTROY_GB_SHADER; vmw_gb_shader_destroy()
273 cmd->header.size = sizeof(cmd->body); vmw_gb_shader_destroy()
274 cmd->body.shid = res->id; vmw_gb_shader_destroy()
275 vmw_fifo_commit(dev_priv, sizeof(*cmd)); vmw_gb_shader_destroy()
/linux-4.1.27/drivers/s390/char/
H A Dhmcdrv_ftp.c28 * @cmd: FTP transfer function
37 static enum hmcdrv_ftp_cmdid hmcdrv_ftp_cmd_getid(const char *cmd, int len);
38 static int hmcdrv_ftp_parse(char *cmd, struct hmcdrv_ftp_cmdspec *ftp);
46 * @cmd: FTP command string (NOT zero-terminated)
47 * @len: length of FTP command string in @cmd
49 static enum hmcdrv_ftp_cmdid hmcdrv_ftp_cmd_getid(const char *cmd, int len) hmcdrv_ftp_cmd_getid() argument
54 enum hmcdrv_ftp_cmdid cmd; /* associated command as enum */ hmcdrv_ftp_cmd_getid() member in struct:hmcdrv_ftp_cmd_desc
69 .cmd = HMCDRV_FTP_GET}, hmcdrv_ftp_cmd_getid()
71 .cmd = HMCDRV_FTP_DIR}, hmcdrv_ftp_cmd_getid()
73 .cmd = HMCDRV_FTP_DELETE}, hmcdrv_ftp_cmd_getid()
75 .cmd = HMCDRV_FTP_NLIST}, hmcdrv_ftp_cmd_getid()
77 .cmd = HMCDRV_FTP_PUT}, hmcdrv_ftp_cmd_getid()
79 .cmd = HMCDRV_FTP_APPEND}, hmcdrv_ftp_cmd_getid()
90 crc = crc16(crc, cmd, len); hmcdrv_ftp_cmd_getid()
93 cmd, crc, (crc % ARRAY_SIZE(ftpcmds))); hmcdrv_ftp_cmd_getid()
95 if (!pdesc->str || strncmp(pdesc->str, cmd, len)) hmcdrv_ftp_cmd_getid()
99 pdesc->str, pdesc->cmd); hmcdrv_ftp_cmd_getid()
101 return pdesc->cmd; hmcdrv_ftp_cmd_getid()
106 * @cmd: FTP command string "<cmd> <filename>"
111 static int hmcdrv_ftp_parse(char *cmd, struct hmcdrv_ftp_cmdspec *ftp) hmcdrv_ftp_parse() argument
119 while (*cmd != '\0') { hmcdrv_ftp_parse()
121 while (isspace(*cmd)) hmcdrv_ftp_parse()
122 ++cmd; hmcdrv_ftp_parse()
124 if (*cmd == '\0') hmcdrv_ftp_parse()
127 start = cmd; hmcdrv_ftp_parse()
131 while ((*cmd != '\0') && !isspace(*cmd)) hmcdrv_ftp_parse()
132 ++cmd; hmcdrv_ftp_parse()
133 ftp->id = hmcdrv_ftp_cmd_getid(start, cmd - start); hmcdrv_ftp_parse()
136 while ((*cmd != '\0') && !iscntrl(*cmd)) hmcdrv_ftp_parse()
137 ++cmd; hmcdrv_ftp_parse()
141 *cmd = '\0'; hmcdrv_ftp_parse()
167 pr_debug("starting transfer, cmd %d for '%s' at %lld with %zd bytes\n", hmcdrv_ftp_do()
227 * @cmd: FTP command string "<cmd> <filename>"
236 ssize_t hmcdrv_ftp_cmd(char __kernel *cmd, loff_t offset, hmcdrv_ftp_cmd() argument
242 ssize_t retlen = hmcdrv_ftp_parse(cmd, &ftp); hmcdrv_ftp_cmd()
/linux-4.1.27/drivers/usb/gadget/legacy/
H A Dtcm_usb_gadget.c41 static inline void usbg_cleanup_cmd(struct usbg_cmd *cmd) usbg_cleanup_cmd() argument
43 kref_put(&cmd->ref, usbg_cmd_release); usbg_cleanup_cmd()
55 ret = usb_ep_queue(fu->ep_out, fu->cmd.req, GFP_ATOMIC); bot_enqueue_cmd_cbw()
63 struct usbg_cmd *cmd = req->context; bot_status_complete() local
64 struct f_uas *fu = cmd->fu; bot_status_complete()
66 usbg_cleanup_cmd(cmd); bot_status_complete()
76 static void bot_enqueue_sense_code(struct f_uas *fu, struct usbg_cmd *cmd) bot_enqueue_sense_code() argument
83 csw_stat = cmd->csw_code; bot_enqueue_sense_code()
90 sense = cmd->sense_iu.sense; bot_enqueue_sense_code()
92 csw->Tag = cmd->bot_tag; bot_enqueue_sense_code()
94 fu->bot_status.req->context = cmd; bot_enqueue_sense_code()
102 struct usbg_cmd *cmd = req->context; bot_err_compl() local
103 struct f_uas *fu = cmd->fu; bot_err_compl()
108 if (cmd->data_len) { bot_err_compl()
109 if (cmd->data_len > ep->maxpacket) { bot_err_compl()
111 cmd->data_len -= ep->maxpacket; bot_err_compl()
113 req->length = cmd->data_len; bot_err_compl()
114 cmd->data_len = 0; bot_err_compl()
120 bot_enqueue_sense_code(fu, cmd); bot_err_compl()
123 static void bot_send_bad_status(struct usbg_cmd *cmd) bot_send_bad_status() argument
125 struct f_uas *fu = cmd->fu; bot_send_bad_status()
130 csw->Residue = cpu_to_le32(cmd->data_len); bot_send_bad_status()
132 if (cmd->data_len) { bot_send_bad_status()
133 if (cmd->is_read) { bot_send_bad_status()
141 if (cmd->data_len > fu->ep_in->maxpacket) { bot_send_bad_status()
143 cmd->data_len -= ep->maxpacket; bot_send_bad_status()
145 req->length = cmd->data_len; bot_send_bad_status()
146 cmd->data_len = 0; bot_send_bad_status()
149 req->context = cmd; bot_send_bad_status()
150 req->buf = fu->cmd.buf; bot_send_bad_status()
153 bot_enqueue_sense_code(fu, cmd); bot_send_bad_status()
157 static int bot_send_status(struct usbg_cmd *cmd, bool moved_data) bot_send_status() argument
159 struct f_uas *fu = cmd->fu; bot_send_status()
163 if (cmd->se_cmd.scsi_status == SAM_STAT_GOOD) { bot_send_status()
164 if (!moved_data && cmd->data_len) { bot_send_status()
169 cmd->csw_code = US_BULK_STAT_OK; bot_send_status()
170 bot_send_bad_status(cmd); bot_send_status()
174 csw->Tag = cmd->bot_tag; bot_send_status()
177 fu->bot_status.req->context = cmd; bot_send_status()
183 cmd->csw_code = US_BULK_STAT_FAIL; bot_send_status()
184 bot_send_bad_status(cmd); bot_send_status()
193 static int bot_send_status_response(struct usbg_cmd *cmd) bot_send_status_response() argument
197 if (!cmd->is_read) bot_send_status_response()
199 return bot_send_status(cmd, moved_data); bot_send_status_response()
205 struct usbg_cmd *cmd = req->context; bot_read_compl() local
210 bot_send_status(cmd, true); bot_read_compl()
213 static int bot_send_read_response(struct usbg_cmd *cmd) bot_send_read_response() argument
215 struct f_uas *fu = cmd->fu; bot_send_read_response()
216 struct se_cmd *se_cmd = &cmd->se_cmd; bot_send_read_response()
220 if (!cmd->data_len) { bot_send_read_response()
221 cmd->csw_code = US_BULK_STAT_PHASE; bot_send_read_response()
222 bot_send_bad_status(cmd); bot_send_read_response()
227 cmd->data_buf = kmalloc(se_cmd->data_length, GFP_ATOMIC); bot_send_read_response()
228 if (!cmd->data_buf) bot_send_read_response()
233 cmd->data_buf, bot_send_read_response()
236 fu->bot_req_in->buf = cmd->data_buf; bot_send_read_response()
245 fu->bot_req_in->context = cmd; bot_send_read_response()
255 static int bot_send_write_request(struct usbg_cmd *cmd) bot_send_write_request() argument
257 struct f_uas *fu = cmd->fu; bot_send_write_request()
258 struct se_cmd *se_cmd = &cmd->se_cmd; bot_send_write_request()
262 init_completion(&cmd->write_complete); bot_send_write_request()
263 cmd->fu = fu; bot_send_write_request()
265 if (!cmd->data_len) { bot_send_write_request()
266 cmd->csw_code = US_BULK_STAT_PHASE; bot_send_write_request()
271 cmd->data_buf = kmalloc(se_cmd->data_length, GFP_KERNEL); bot_send_write_request()
272 if (!cmd->data_buf) bot_send_write_request()
275 fu->bot_req_out->buf = cmd->data_buf; bot_send_write_request()
284 fu->bot_req_out->context = cmd; bot_send_write_request()
286 ret = usbg_prepare_w_request(cmd, fu->bot_req_out); bot_send_write_request()
293 wait_for_completion(&cmd->write_complete); bot_send_write_request()
328 fu->cmd.req = usb_ep_alloc_request(fu->ep_out, GFP_KERNEL); bot_prepare_reqs()
329 if (!fu->cmd.req) bot_prepare_reqs()
341 fu->cmd.buf = kmalloc(fu->ep_out->maxpacket, GFP_KERNEL); bot_prepare_reqs()
342 if (!fu->cmd.buf) bot_prepare_reqs()
345 fu->cmd.req->complete = bot_cmd_complete; bot_prepare_reqs()
346 fu->cmd.req->buf = fu->cmd.buf; bot_prepare_reqs()
347 fu->cmd.req->length = fu->ep_out->maxpacket; bot_prepare_reqs()
348 fu->cmd.req->context = fu; bot_prepare_reqs()
355 kfree(fu->cmd.buf); bot_prepare_reqs()
356 fu->cmd.buf = NULL; bot_prepare_reqs()
360 usb_ep_free_request(fu->ep_out, fu->cmd.req); bot_prepare_reqs()
361 fu->cmd.req = NULL; bot_prepare_reqs()
386 usb_ep_free_request(fu->ep_out, fu->cmd.req); bot_cleanup_old_alt()
389 kfree(fu->cmd.buf); bot_cleanup_old_alt()
393 fu->cmd.req = NULL; bot_cleanup_old_alt()
395 fu->cmd.buf = NULL; bot_cleanup_old_alt()
498 usb_ep_free_request(fu->ep_cmd, fu->cmd.req); uasp_free_cmdreq()
499 kfree(fu->cmd.buf); uasp_free_cmdreq()
500 fu->cmd.req = NULL; uasp_free_cmdreq()
501 fu->cmd.buf = NULL; uasp_free_cmdreq()
523 static int uasp_prepare_r_request(struct usbg_cmd *cmd) uasp_prepare_r_request() argument
525 struct se_cmd *se_cmd = &cmd->se_cmd; uasp_prepare_r_request()
526 struct f_uas *fu = cmd->fu; uasp_prepare_r_request()
528 struct uas_stream *stream = cmd->stream; uasp_prepare_r_request()
531 cmd->data_buf = kmalloc(se_cmd->data_length, GFP_ATOMIC); uasp_prepare_r_request()
532 if (!cmd->data_buf) uasp_prepare_r_request()
537 cmd->data_buf, uasp_prepare_r_request()
540 stream->req_in->buf = cmd->data_buf; uasp_prepare_r_request()
549 stream->req_in->context = cmd; uasp_prepare_r_request()
551 cmd->state = UASP_SEND_STATUS; uasp_prepare_r_request()
555 static void uasp_prepare_status(struct usbg_cmd *cmd) uasp_prepare_status() argument
557 struct se_cmd *se_cmd = &cmd->se_cmd; uasp_prepare_status()
558 struct sense_iu *iu = &cmd->sense_iu; uasp_prepare_status()
559 struct uas_stream *stream = cmd->stream; uasp_prepare_status()
561 cmd->state = UASP_QUEUE_COMMAND; uasp_prepare_status()
563 iu->tag = cpu_to_be16(cmd->tag); uasp_prepare_status()
570 stream->req_status->context = cmd; uasp_prepare_status()
578 struct usbg_cmd *cmd = req->context; uasp_status_data_cmpl() local
579 struct uas_stream *stream = cmd->stream; uasp_status_data_cmpl()
580 struct f_uas *fu = cmd->fu; uasp_status_data_cmpl()
586 switch (cmd->state) { uasp_status_data_cmpl()
588 ret = uasp_prepare_r_request(cmd); uasp_status_data_cmpl()
597 ret = usbg_prepare_w_request(cmd, stream->req_out); uasp_status_data_cmpl()
606 uasp_prepare_status(cmd); uasp_status_data_cmpl()
614 usbg_cleanup_cmd(cmd); uasp_status_data_cmpl()
615 usb_ep_queue(fu->ep_cmd, fu->cmd.req, GFP_ATOMIC); uasp_status_data_cmpl()
624 usbg_cleanup_cmd(cmd); uasp_status_data_cmpl()
627 static int uasp_send_status_response(struct usbg_cmd *cmd) uasp_send_status_response() argument
629 struct f_uas *fu = cmd->fu; uasp_send_status_response()
630 struct uas_stream *stream = cmd->stream; uasp_send_status_response()
631 struct sense_iu *iu = &cmd->sense_iu; uasp_send_status_response()
633 iu->tag = cpu_to_be16(cmd->tag); uasp_send_status_response()
635 stream->req_status->context = cmd; uasp_send_status_response()
636 cmd->fu = fu; uasp_send_status_response()
637 uasp_prepare_status(cmd); uasp_send_status_response()
641 static int uasp_send_read_response(struct usbg_cmd *cmd) uasp_send_read_response() argument
643 struct f_uas *fu = cmd->fu; uasp_send_read_response()
644 struct uas_stream *stream = cmd->stream; uasp_send_read_response()
645 struct sense_iu *iu = &cmd->sense_iu; uasp_send_read_response()
648 cmd->fu = fu; uasp_send_read_response()
650 iu->tag = cpu_to_be16(cmd->tag); uasp_send_read_response()
653 ret = uasp_prepare_r_request(cmd); uasp_send_read_response()
659 kfree(cmd->data_buf); uasp_send_read_response()
660 cmd->data_buf = NULL; uasp_send_read_response()
666 iu->tag = cpu_to_be16(cmd->tag); uasp_send_read_response()
669 stream->req_status->context = cmd; uasp_send_read_response()
671 cmd->state = UASP_SEND_DATA; uasp_send_read_response()
684 static int uasp_send_write_request(struct usbg_cmd *cmd) uasp_send_write_request() argument
686 struct f_uas *fu = cmd->fu; uasp_send_write_request()
687 struct se_cmd *se_cmd = &cmd->se_cmd; uasp_send_write_request()
688 struct uas_stream *stream = cmd->stream; uasp_send_write_request()
689 struct sense_iu *iu = &cmd->sense_iu; uasp_send_write_request()
692 init_completion(&cmd->write_complete); uasp_send_write_request()
693 cmd->fu = fu; uasp_send_write_request()
695 iu->tag = cpu_to_be16(cmd->tag); uasp_send_write_request()
699 ret = usbg_prepare_w_request(cmd, stream->req_out); uasp_send_write_request()
709 iu->tag = cpu_to_be16(cmd->tag); uasp_send_write_request()
712 stream->req_status->context = cmd; uasp_send_write_request()
714 cmd->state = UASP_RECEIVE_DATA; uasp_send_write_request()
724 wait_for_completion(&cmd->write_complete); uasp_send_write_request()
749 usb_ep_queue(fu->ep_cmd, fu->cmd.req, GFP_ATOMIC); uasp_cmd_complete()
779 fu->cmd.req = usb_ep_alloc_request(fu->ep_cmd, GFP_KERNEL); uasp_alloc_cmd()
780 if (!fu->cmd.req) uasp_alloc_cmd()
783 fu->cmd.buf = kmalloc(fu->ep_cmd->maxpacket, GFP_KERNEL); uasp_alloc_cmd()
784 if (!fu->cmd.buf) uasp_alloc_cmd()
787 fu->cmd.req->complete = uasp_cmd_complete; uasp_alloc_cmd()
788 fu->cmd.req->buf = fu->cmd.buf; uasp_alloc_cmd()
789 fu->cmd.req->length = fu->ep_cmd->maxpacket; uasp_alloc_cmd()
790 fu->cmd.req->context = fu; uasp_alloc_cmd()
794 usb_ep_free_request(fu->ep_cmd, fu->cmd.req); uasp_alloc_cmd()
834 ret = usb_ep_queue(fu->ep_cmd, fu->cmd.req, GFP_ATOMIC); uasp_prepare_reqs()
966 struct usbg_cmd *cmd = req->context; usbg_data_write_cmpl() local
967 struct se_cmd *se_cmd = &cmd->se_cmd; usbg_data_write_cmpl()
970 pr_err("%s() state %d transfer failed\n", __func__, cmd->state); usbg_data_write_cmpl()
977 cmd->data_buf, usbg_data_write_cmpl()
981 complete(&cmd->write_complete); usbg_data_write_cmpl()
985 usbg_cleanup_cmd(cmd); usbg_data_write_cmpl()
988 static int usbg_prepare_w_request(struct usbg_cmd *cmd, struct usb_request *req) usbg_prepare_w_request() argument
990 struct se_cmd *se_cmd = &cmd->se_cmd; usbg_prepare_w_request()
991 struct f_uas *fu = cmd->fu; usbg_prepare_w_request()
995 cmd->data_buf = kmalloc(se_cmd->data_length, GFP_ATOMIC); usbg_prepare_w_request()
996 if (!cmd->data_buf) usbg_prepare_w_request()
999 req->buf = cmd->data_buf; usbg_prepare_w_request()
1008 req->context = cmd; usbg_prepare_w_request()
1014 struct usbg_cmd *cmd = container_of(se_cmd, struct usbg_cmd, usbg_send_status_response() local
1016 struct f_uas *fu = cmd->fu; usbg_send_status_response()
1019 return bot_send_status_response(cmd); usbg_send_status_response()
1021 return uasp_send_status_response(cmd); usbg_send_status_response()
1026 struct usbg_cmd *cmd = container_of(se_cmd, struct usbg_cmd, usbg_send_write_request() local
1028 struct f_uas *fu = cmd->fu; usbg_send_write_request()
1031 return bot_send_write_request(cmd); usbg_send_write_request()
1033 return uasp_send_write_request(cmd); usbg_send_write_request()
1038 struct usbg_cmd *cmd = container_of(se_cmd, struct usbg_cmd, usbg_send_read_response() local
1040 struct f_uas *fu = cmd->fu; usbg_send_read_response()
1043 return bot_send_read_response(cmd); usbg_send_read_response()
1045 return uasp_send_read_response(cmd); usbg_send_read_response()
1050 struct usbg_cmd *cmd = container_of(work, struct usbg_cmd, work); usbg_cmd_work() local
1056 se_cmd = &cmd->se_cmd; usbg_cmd_work()
1057 tpg = cmd->fu->tpg; usbg_cmd_work()
1059 dir = get_cmd_dir(cmd->cmd_buf); usbg_cmd_work()
1063 tv_nexus->tvn_se_sess, cmd->data_len, DMA_NONE, usbg_cmd_work()
1064 cmd->prio_attr, cmd->sense_iu.sense); usbg_cmd_work()
1069 cmd->cmd_buf, cmd->sense_iu.sense, cmd->unpacked_lun, usbg_cmd_work()
1070 0, cmd->prio_attr, dir, TARGET_SCF_UNKNOWN_SIZE) < 0) usbg_cmd_work()
1078 usbg_cleanup_cmd(cmd); usbg_cmd_work()
1085 struct usbg_cmd *cmd; usbg_submit_command() local
1097 cmd = kzalloc(sizeof *cmd, GFP_ATOMIC); usbg_submit_command()
1098 if (!cmd) usbg_submit_command()
1101 cmd->fu = fu; usbg_submit_command()
1104 kref_init(&cmd->ref); usbg_submit_command()
1105 kref_get(&cmd->ref); usbg_submit_command()
1112 memcpy(cmd->cmd_buf, cmd_iu->cdb, cmd_len); usbg_submit_command()
1114 cmd->tag = be16_to_cpup(&cmd_iu->tag); usbg_submit_command()
1116 if (cmd->tag > UASP_SS_EP_COMP_NUM_STREAMS) usbg_submit_command()
1118 if (!cmd->tag) usbg_submit_command()
1119 cmd->stream = &fu->stream[0]; usbg_submit_command()
1121 cmd->stream = &fu->stream[cmd->tag - 1]; usbg_submit_command()
1123 cmd->stream = &fu->stream[0]; usbg_submit_command()
1134 cmd->prio_attr = TCM_HEAD_TAG; usbg_submit_command()
1137 cmd->prio_attr = TCM_ORDERED_TAG; usbg_submit_command()
1140 cmd->prio_attr = TCM_ACA_TAG; usbg_submit_command()
1146 cmd->prio_attr = TCM_SIMPLE_TAG; usbg_submit_command()
1150 se_cmd = &cmd->se_cmd; usbg_submit_command()
1151 cmd->unpacked_lun = scsilun_to_int(&cmd_iu->lun); usbg_submit_command()
1153 INIT_WORK(&cmd->work, usbg_cmd_work); usbg_submit_command()
1154 ret = queue_work(tpg->workqueue, &cmd->work); usbg_submit_command()
1160 kfree(cmd); usbg_submit_command()
1166 struct usbg_cmd *cmd = container_of(work, struct usbg_cmd, work); bot_cmd_work() local
1172 se_cmd = &cmd->se_cmd; bot_cmd_work()
1173 tpg = cmd->fu->tpg; bot_cmd_work()
1175 dir = get_cmd_dir(cmd->cmd_buf); bot_cmd_work()
1179 tv_nexus->tvn_se_sess, cmd->data_len, DMA_NONE, bot_cmd_work()
1180 cmd->prio_attr, cmd->sense_iu.sense); bot_cmd_work()
1185 cmd->cmd_buf, cmd->sense_iu.sense, cmd->unpacked_lun, bot_cmd_work()
1186 cmd->data_len, cmd->prio_attr, dir, 0) < 0) bot_cmd_work()
1194 usbg_cleanup_cmd(cmd); bot_cmd_work()
1201 struct usbg_cmd *cmd; bot_submit_command() local
1221 cmd = kzalloc(sizeof *cmd, GFP_ATOMIC); bot_submit_command()
1222 if (!cmd) bot_submit_command()
1225 cmd->fu = fu; bot_submit_command()
1228 kref_init(&cmd->ref); bot_submit_command()
1229 kref_get(&cmd->ref); bot_submit_command()
1233 memcpy(cmd->cmd_buf, cbw->CDB, cmd_len); bot_submit_command()
1235 cmd->bot_tag = cbw->Tag; bot_submit_command()
1243 cmd->prio_attr = TCM_SIMPLE_TAG; bot_submit_command()
1244 se_cmd = &cmd->se_cmd; bot_submit_command()
1245 cmd->unpacked_lun = cbw->Lun; bot_submit_command()
1246 cmd->is_read = cbw->Flags & US_BULK_FLAG_IN ? 1 : 0; bot_submit_command()
1247 cmd->data_len = le32_to_cpu(cbw->DataTransferLength); bot_submit_command()
1249 INIT_WORK(&cmd->work, bot_cmd_work); bot_submit_command()
1250 ret = queue_work(tpg->workqueue, &cmd->work); bot_submit_command()
1256 kfree(cmd); bot_submit_command()
1408 struct usbg_cmd *cmd = container_of(ref, struct usbg_cmd, usbg_cmd_release() local
1411 transport_generic_free_cmd(&cmd->se_cmd, 0); usbg_cmd_release()
1416 struct usbg_cmd *cmd = container_of(se_cmd, struct usbg_cmd, usbg_release_cmd() local
1418 kfree(cmd->data_buf); usbg_release_cmd()
1419 kfree(cmd); usbg_release_cmd()
1453 struct usbg_cmd *cmd = container_of(se_cmd, struct usbg_cmd, usbg_get_task_tag() local
1455 struct f_uas *fu = cmd->fu; usbg_get_task_tag()
1458 return le32_to_cpu(cmd->bot_tag); usbg_get_task_tag()
1460 return cmd->tag; usbg_get_task_tag()
1859 struct usbg_cmd *cmd = container_of(se_cmd, struct usbg_cmd, usbg_check_stop_free() local
1862 kref_put(&cmd->ref, usbg_cmd_release); usbg_check_stop_free()
/linux-4.1.27/drivers/media/usb/dvb-usb/
H A Dvp702x-fe.c147 u8 *cmd; vp702x_fe_set_frontend() local
151 cmd = dst->buf; vp702x_fe_set_frontend()
152 memset(cmd, 0, 10); vp702x_fe_set_frontend()
154 cmd[0] = (freq >> 8) & 0x7f; vp702x_fe_set_frontend()
155 cmd[1] = freq & 0xff; vp702x_fe_set_frontend()
156 cmd[2] = 1; /* divrate == 4 -> frequencyRef[1] -> 1 here */ vp702x_fe_set_frontend()
160 cmd[3] = (sr >> 12) & 0xff; vp702x_fe_set_frontend()
161 cmd[4] = (sr >> 4) & 0xff; vp702x_fe_set_frontend()
162 cmd[5] = (sr << 4) & 0xf0; vp702x_fe_set_frontend()
169 cmd[6] |= 0x80; */ vp702x_fe_set_frontend()
172 cmd[6] |= 0x40; vp702x_fe_set_frontend()
175 cmd[6] |= 0x20; vp702x_fe_set_frontend()
178 cmd[6] |= 0x04; vp702x_fe_set_frontend()
181 cmd[6] |= 0x01;*/ vp702x_fe_set_frontend()
183 cmd[7] = vp702x_chksum(cmd,0,7); vp702x_fe_set_frontend()
188 vp702x_usb_inout_op(st->d, cmd, 8, cmd, 10, 100); vp702x_fe_set_frontend()
190 if (cmd[2] == 0 && cmd[3] == 0) vp702x_fe_set_frontend()
217 u8 *cmd; vp702x_fe_send_diseqc_msg() local
228 cmd = dst->buf; vp702x_fe_send_diseqc_msg()
229 cmd[1] = SET_DISEQC_CMD; vp702x_fe_send_diseqc_msg()
230 cmd[2] = m->msg_len; vp702x_fe_send_diseqc_msg()
231 memcpy(&cmd[3], m->msg, m->msg_len); vp702x_fe_send_diseqc_msg()
232 cmd[7] = vp702x_chksum(cmd, 0, 7); vp702x_fe_send_diseqc_msg()
234 vp702x_usb_inout_op(st->d, cmd, 8, cmd, 10, 100); vp702x_fe_send_diseqc_msg()
236 if (cmd[2] == 0 && cmd[3] == 0) vp702x_fe_send_diseqc_msg()
237 deb_fe("diseqc cmd failed.\n"); vp702x_fe_send_diseqc_msg()
239 deb_fe("diseqc cmd succeeded.\n"); vp702x_fe_send_diseqc_msg()
276 deb_fe("set_tone cmd failed.\n"); vp702x_fe_set_tone()
278 deb_fe("set_tone cmd succeeded.\n"); vp702x_fe_set_tone()
309 deb_fe("set_voltage cmd failed.\n"); vp702x_fe_set_voltage()
311 deb_fe("set_voltage cmd succeeded.\n"); vp702x_fe_set_voltage()
H A Dgp8psk-fe.c120 u8 cmd[10]; gp8psk_fe_set_frontend() local
126 cmd[4] = freq & 0xff; gp8psk_fe_set_frontend()
127 cmd[5] = (freq >> 8) & 0xff; gp8psk_fe_set_frontend()
128 cmd[6] = (freq >> 16) & 0xff; gp8psk_fe_set_frontend()
129 cmd[7] = (freq >> 24) & 0xff; gp8psk_fe_set_frontend()
157 cmd[0] = c->symbol_rate & 0xff; gp8psk_fe_set_frontend()
158 cmd[1] = (c->symbol_rate >> 8) & 0xff; gp8psk_fe_set_frontend()
159 cmd[2] = (c->symbol_rate >> 16) & 0xff; gp8psk_fe_set_frontend()
160 cmd[3] = (c->symbol_rate >> 24) & 0xff; gp8psk_fe_set_frontend()
168 cmd[9] = 0; break; gp8psk_fe_set_frontend()
170 cmd[9] = 1; break; gp8psk_fe_set_frontend()
172 cmd[9] = 2; break; gp8psk_fe_set_frontend()
174 cmd[9] = 3; break; gp8psk_fe_set_frontend()
176 cmd[9] = 4; break; gp8psk_fe_set_frontend()
178 cmd[9] = 5; break; gp8psk_fe_set_frontend()
180 cmd[9] = 5; break; gp8psk_fe_set_frontend()
183 cmd[8] = ADV_MOD_TURBO_QPSK; gp8psk_fe_set_frontend()
185 cmd[8] = ADV_MOD_DVB_QPSK; gp8psk_fe_set_frontend()
188 cmd[8] = ADV_MOD_TURBO_8PSK; gp8psk_fe_set_frontend()
191 cmd[9] = 0; break; gp8psk_fe_set_frontend()
193 cmd[9] = 1; break; gp8psk_fe_set_frontend()
195 cmd[9] = 2; break; gp8psk_fe_set_frontend()
197 cmd[9] = 3; break; gp8psk_fe_set_frontend()
199 cmd[9] = 4; break; gp8psk_fe_set_frontend()
201 cmd[9] = 0; break; gp8psk_fe_set_frontend()
205 cmd[8] = ADV_MOD_TURBO_16QAM; gp8psk_fe_set_frontend()
206 cmd[9] = 0; gp8psk_fe_set_frontend()
216 gp8psk_usb_out_op(state->d, TUNE_8PSK, 0, 0, cmd, 10); gp8psk_fe_set_frontend()
243 u8 cmd; gp8psk_fe_send_diseqc_burst() local
248 cmd = (burst == SEC_MINI_A) ? 0x00 : 0x01; gp8psk_fe_send_diseqc_burst()
250 if (gp8psk_usb_out_op(st->d,SEND_DISEQC_COMMAND, cmd, 0, gp8psk_fe_send_diseqc_burst()
251 &cmd, 0)) { gp8psk_fe_send_diseqc_burst()
288 u8 cmd = sw_cmd & 0x7f; gp8psk_fe_send_legacy_dish_cmd() local
290 if (gp8psk_usb_out_op(state->d,SET_DN_SWITCH, cmd, 0, gp8psk_fe_send_legacy_dish_cmd()
/linux-4.1.27/include/linux/input/
H A Dlm8333.h20 extern int lm8333_read8(struct lm8333 *lm8333, u8 cmd);
21 extern int lm8333_write8(struct lm8333 *lm8333, u8 cmd, u8 val);
22 extern int lm8333_read_block(struct lm8333 *lm8333, u8 cmd, u8 len, u8 *buf);
/linux-4.1.27/drivers/net/wireless/
H A Dmwl8k.c439 static const char *mwl8k_cmd_name(__le16 cmd, char *buf, int bufsize) mwl8k_cmd_name() argument
441 u16 command = le16_to_cpu(cmd); mwl8k_cmd_name()
480 snprintf(buf, bufsize, "0x%x", cmd); mwl8k_cmd_name()
638 struct mwl8k_cmd_pkt *cmd; mwl8k_load_fw_image() local
642 cmd = kmalloc(sizeof(*cmd) + 256, GFP_KERNEL); mwl8k_load_fw_image()
643 if (cmd == NULL) mwl8k_load_fw_image()
646 cmd->code = cpu_to_le16(MWL8K_CMD_CODE_DNLD); mwl8k_load_fw_image()
647 cmd->seq_num = 0; mwl8k_load_fw_image()
648 cmd->macid = 0; mwl8k_load_fw_image()
649 cmd->result = 0; mwl8k_load_fw_image()
655 memcpy(cmd->payload, data + done, block_size); mwl8k_load_fw_image()
656 cmd->length = cpu_to_le16(block_size); mwl8k_load_fw_image()
658 rc = mwl8k_send_fw_load_cmd(priv, cmd, mwl8k_load_fw_image()
659 sizeof(*cmd) + block_size); mwl8k_load_fw_image()
668 cmd->length = 0; mwl8k_load_fw_image()
669 rc = mwl8k_send_fw_load_cmd(priv, cmd, sizeof(*cmd)); mwl8k_load_fw_image()
672 kfree(cmd); mwl8k_load_fw_image()
2189 static int mwl8k_post_cmd(struct ieee80211_hw *hw, struct mwl8k_cmd_pkt *cmd) mwl8k_post_cmd() argument
2202 mwl8k_cmd_name(cmd->code, buf, sizeof(buf)), cmd->macid); mwl8k_post_cmd()
2214 switch (le16_to_cpu(cmd->code)) { mwl8k_post_cmd()
2228 cmd->result = (__force __le16) 0xffff; mwl8k_post_cmd()
2229 dma_size = le16_to_cpu(cmd->length); mwl8k_post_cmd()
2230 dma_addr = pci_map_single(priv->pdev, cmd, dma_size, mwl8k_post_cmd()
2253 mwl8k_cmd_name(cmd->code, buf, sizeof(buf)), mwl8k_post_cmd()
2261 rc = cmd->result ? -EINVAL : 0; mwl8k_post_cmd()
2264 mwl8k_cmd_name(cmd->code, buf, sizeof(buf)), mwl8k_post_cmd()
2265 le16_to_cpu(cmd->result)); mwl8k_post_cmd()
2268 mwl8k_cmd_name(cmd->code, mwl8k_post_cmd()
2283 struct mwl8k_cmd_pkt *cmd) mwl8k_post_pervif_cmd()
2286 cmd->macid = MWL8K_VIF(vif)->macid; mwl8k_post_pervif_cmd()
2287 return mwl8k_post_cmd(hw, cmd); mwl8k_post_pervif_cmd()
2444 struct mwl8k_cmd_get_hw_spec_sta *cmd; mwl8k_cmd_get_hw_spec_sta() local
2448 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_get_hw_spec_sta()
2449 if (cmd == NULL) mwl8k_cmd_get_hw_spec_sta()
2452 cmd->header.code = cpu_to_le16(MWL8K_CMD_GET_HW_SPEC); mwl8k_cmd_get_hw_spec_sta()
2453 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_get_hw_spec_sta()
2455 memset(cmd->perm_addr, 0xff, sizeof(cmd->perm_addr)); mwl8k_cmd_get_hw_spec_sta()
2456 cmd->ps_cookie = cpu_to_le32(priv->cookie_dma); mwl8k_cmd_get_hw_spec_sta()
2457 cmd->rx_queue_ptr = cpu_to_le32(priv->rxq[0].rxd_dma); mwl8k_cmd_get_hw_spec_sta()
2458 cmd->num_tx_queues = cpu_to_le32(mwl8k_tx_queues(priv)); mwl8k_cmd_get_hw_spec_sta()
2460 cmd->tx_queue_ptrs[i] = cpu_to_le32(priv->txq[i].txd_dma); mwl8k_cmd_get_hw_spec_sta()
2461 cmd->num_tx_desc_per_queue = cpu_to_le32(MWL8K_TX_DESCS); mwl8k_cmd_get_hw_spec_sta()
2462 cmd->total_rxd = cpu_to_le32(MWL8K_RX_DESCS); mwl8k_cmd_get_hw_spec_sta()
2464 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_get_hw_spec_sta()
2467 SET_IEEE80211_PERM_ADDR(hw, cmd->perm_addr); mwl8k_cmd_get_hw_spec_sta()
2468 priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs); mwl8k_cmd_get_hw_spec_sta()
2469 priv->fw_rev = le32_to_cpu(cmd->fw_rev); mwl8k_cmd_get_hw_spec_sta()
2470 priv->hw_rev = cmd->hw_rev; mwl8k_cmd_get_hw_spec_sta()
2471 mwl8k_set_caps(hw, le32_to_cpu(cmd->caps)); mwl8k_cmd_get_hw_spec_sta()
2476 kfree(cmd); mwl8k_cmd_get_hw_spec_sta()
2509 struct mwl8k_cmd_get_hw_spec_ap *cmd; mwl8k_cmd_get_hw_spec_ap() local
2513 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_get_hw_spec_ap()
2514 if (cmd == NULL) mwl8k_cmd_get_hw_spec_ap()
2517 cmd->header.code = cpu_to_le16(MWL8K_CMD_GET_HW_SPEC); mwl8k_cmd_get_hw_spec_ap()
2518 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_get_hw_spec_ap()
2520 memset(cmd->perm_addr, 0xff, sizeof(cmd->perm_addr)); mwl8k_cmd_get_hw_spec_ap()
2521 cmd->ps_cookie = cpu_to_le32(priv->cookie_dma); mwl8k_cmd_get_hw_spec_ap()
2523 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_get_hw_spec_ap()
2528 api_version = le32_to_cpu(cmd->fw_api_version); mwl8k_cmd_get_hw_spec_ap()
2538 SET_IEEE80211_PERM_ADDR(hw, cmd->perm_addr); mwl8k_cmd_get_hw_spec_ap()
2539 priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs); mwl8k_cmd_get_hw_spec_ap()
2540 priv->fw_rev = le32_to_cpu(cmd->fw_rev); mwl8k_cmd_get_hw_spec_ap()
2541 priv->hw_rev = cmd->hw_rev; mwl8k_cmd_get_hw_spec_ap()
2542 mwl8k_set_caps(hw, le32_to_cpu(cmd->caps)); mwl8k_cmd_get_hw_spec_ap()
2545 priv->num_ampdu_queues = le32_to_cpu(cmd->num_of_ampdu_queues); mwl8k_cmd_get_hw_spec_ap()
2553 off = le32_to_cpu(cmd->rxwrptr) & 0xffff; mwl8k_cmd_get_hw_spec_ap()
2556 off = le32_to_cpu(cmd->rxrdptr) & 0xffff; mwl8k_cmd_get_hw_spec_ap()
2559 priv->txq_offset[0] = le32_to_cpu(cmd->wcbbase0) & 0xffff; mwl8k_cmd_get_hw_spec_ap()
2560 priv->txq_offset[1] = le32_to_cpu(cmd->wcbbase1) & 0xffff; mwl8k_cmd_get_hw_spec_ap()
2561 priv->txq_offset[2] = le32_to_cpu(cmd->wcbbase2) & 0xffff; mwl8k_cmd_get_hw_spec_ap()
2562 priv->txq_offset[3] = le32_to_cpu(cmd->wcbbase3) & 0xffff; mwl8k_cmd_get_hw_spec_ap()
2566 le32_to_cpu(cmd->wcbbase_ampdu[i]) & 0xffff; mwl8k_cmd_get_hw_spec_ap()
2570 kfree(cmd); mwl8k_cmd_get_hw_spec_ap()
2611 struct mwl8k_cmd_set_hw_spec *cmd; mwl8k_cmd_set_hw_spec() local
2615 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_hw_spec()
2616 if (cmd == NULL) mwl8k_cmd_set_hw_spec()
2619 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_HW_SPEC); mwl8k_cmd_set_hw_spec()
2620 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_hw_spec()
2622 cmd->ps_cookie = cpu_to_le32(priv->cookie_dma); mwl8k_cmd_set_hw_spec()
2623 cmd->rx_queue_ptr = cpu_to_le32(priv->rxq[0].rxd_dma); mwl8k_cmd_set_hw_spec()
2624 cmd->num_tx_queues = cpu_to_le32(mwl8k_tx_queues(priv)); mwl8k_cmd_set_hw_spec()
2634 cmd->tx_queue_ptrs[i] = cpu_to_le32(priv->txq[j].txd_dma); mwl8k_cmd_set_hw_spec()
2637 cmd->flags = cpu_to_le32(MWL8K_SET_HW_SPEC_FLAG_HOST_DECR_MGMT | mwl8k_cmd_set_hw_spec()
2642 cmd->num_tx_desc_per_queue = cpu_to_le32(MWL8K_TX_DESCS); mwl8k_cmd_set_hw_spec()
2643 cmd->total_rxd = cpu_to_le32(MWL8K_RX_DESCS); mwl8k_cmd_set_hw_spec()
2645 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_set_hw_spec()
2646 kfree(cmd); mwl8k_cmd_set_hw_spec()
2671 struct mwl8k_cmd_mac_multicast_adr *cmd; __mwl8k_cmd_mac_multicast_adr() local
2683 size = sizeof(*cmd) + mc_count * ETH_ALEN; __mwl8k_cmd_mac_multicast_adr()
2685 cmd = kzalloc(size, GFP_ATOMIC); __mwl8k_cmd_mac_multicast_adr()
2686 if (cmd == NULL) __mwl8k_cmd_mac_multicast_adr()
2689 cmd->header.code = cpu_to_le16(MWL8K_CMD_MAC_MULTICAST_ADR); __mwl8k_cmd_mac_multicast_adr()
2690 cmd->header.length = cpu_to_le16(size); __mwl8k_cmd_mac_multicast_adr()
2691 cmd->action = cpu_to_le16(MWL8K_ENABLE_RX_DIRECTED | __mwl8k_cmd_mac_multicast_adr()
2695 cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_ALL_MULTICAST); __mwl8k_cmd_mac_multicast_adr()
2700 cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_MULTICAST); __mwl8k_cmd_mac_multicast_adr()
2701 cmd->numaddr = cpu_to_le16(mc_count); netdev_hw_addr_list_for_each()
2703 memcpy(cmd->addr[i], ha->addr, ETH_ALEN); netdev_hw_addr_list_for_each()
2707 return &cmd->header;
2726 struct mwl8k_cmd_get_stat *cmd; mwl8k_cmd_get_stat() local
2729 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_get_stat()
2730 if (cmd == NULL) mwl8k_cmd_get_stat()
2733 cmd->header.code = cpu_to_le16(MWL8K_CMD_GET_STAT); mwl8k_cmd_get_stat()
2734 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_get_stat()
2736 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_get_stat()
2739 le32_to_cpu(cmd->stats[MWL8K_STAT_ACK_FAILURE]); mwl8k_cmd_get_stat()
2741 le32_to_cpu(cmd->stats[MWL8K_STAT_RTS_FAILURE]); mwl8k_cmd_get_stat()
2743 le32_to_cpu(cmd->stats[MWL8K_STAT_FCS_ERROR]); mwl8k_cmd_get_stat()
2745 le32_to_cpu(cmd->stats[MWL8K_STAT_RTS_SUCCESS]); mwl8k_cmd_get_stat()
2747 kfree(cmd); mwl8k_cmd_get_stat()
2766 struct mwl8k_cmd_radio_control *cmd; mwl8k_cmd_radio_control() local
2772 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_radio_control()
2773 if (cmd == NULL) mwl8k_cmd_radio_control()
2776 cmd->header.code = cpu_to_le16(MWL8K_CMD_RADIO_CONTROL); mwl8k_cmd_radio_control()
2777 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_radio_control()
2778 cmd->action = cpu_to_le16(MWL8K_CMD_SET); mwl8k_cmd_radio_control()
2779 cmd->control = cpu_to_le16(priv->radio_short_preamble ? 3 : 1); mwl8k_cmd_radio_control()
2780 cmd->radio_on = cpu_to_le16(enable ? 0x0001 : 0x0000); mwl8k_cmd_radio_control()
2782 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_radio_control()
2783 kfree(cmd); mwl8k_cmd_radio_control()
2827 struct mwl8k_cmd_rf_tx_power *cmd; mwl8k_cmd_rf_tx_power() local
2830 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_rf_tx_power()
2831 if (cmd == NULL) mwl8k_cmd_rf_tx_power()
2834 cmd->header.code = cpu_to_le16(MWL8K_CMD_RF_TX_POWER); mwl8k_cmd_rf_tx_power()
2835 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_rf_tx_power()
2836 cmd->action = cpu_to_le16(MWL8K_CMD_SET); mwl8k_cmd_rf_tx_power()
2837 cmd->support_level = cpu_to_le16(dBm); mwl8k_cmd_rf_tx_power()
2839 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_rf_tx_power()
2840 kfree(cmd); mwl8k_cmd_rf_tx_power()
2867 struct mwl8k_cmd_tx_power *cmd; mwl8k_cmd_tx_power() local
2871 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_tx_power()
2872 if (cmd == NULL) mwl8k_cmd_tx_power()
2875 cmd->header.code = cpu_to_le16(MWL8K_CMD_TX_POWER); mwl8k_cmd_tx_power()
2876 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_tx_power()
2877 cmd->action = cpu_to_le16(MWL8K_CMD_SET_LIST); mwl8k_cmd_tx_power()
2880 cmd->band = cpu_to_le16(0x1); mwl8k_cmd_tx_power()
2882 cmd->band = cpu_to_le16(0x4); mwl8k_cmd_tx_power()
2884 cmd->channel = cpu_to_le16(channel->hw_value); mwl8k_cmd_tx_power()
2888 cmd->bw = cpu_to_le16(0x2); mwl8k_cmd_tx_power()
2890 cmd->bw = cpu_to_le16(0x4); mwl8k_cmd_tx_power()
2892 cmd->sub_ch = cpu_to_le16(0x3); mwl8k_cmd_tx_power()
2894 cmd->sub_ch = cpu_to_le16(0x1); mwl8k_cmd_tx_power()
2898 cmd->power_level_list[i] = cpu_to_le16(pwr); mwl8k_cmd_tx_power()
2900 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_tx_power()
2901 kfree(cmd); mwl8k_cmd_tx_power()
2921 struct mwl8k_cmd_rf_antenna *cmd; mwl8k_cmd_rf_antenna() local
2924 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_rf_antenna()
2925 if (cmd == NULL) mwl8k_cmd_rf_antenna()
2928 cmd->header.code = cpu_to_le16(MWL8K_CMD_RF_ANTENNA); mwl8k_cmd_rf_antenna()
2929 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_rf_antenna()
2930 cmd->antenna = cpu_to_le16(antenna); mwl8k_cmd_rf_antenna()
2931 cmd->mode = cpu_to_le16(mask); mwl8k_cmd_rf_antenna()
2933 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_rf_antenna()
2934 kfree(cmd); mwl8k_cmd_rf_antenna()
2951 struct mwl8k_cmd_set_beacon *cmd; mwl8k_cmd_set_beacon() local
2954 cmd = kzalloc(sizeof(*cmd) + len, GFP_KERNEL); mwl8k_cmd_set_beacon()
2955 if (cmd == NULL) mwl8k_cmd_set_beacon()
2958 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_BEACON); mwl8k_cmd_set_beacon()
2959 cmd->header.length = cpu_to_le16(sizeof(*cmd) + len); mwl8k_cmd_set_beacon()
2960 cmd->beacon_len = cpu_to_le16(len); mwl8k_cmd_set_beacon()
2961 memcpy(cmd->beacon, beacon, len); mwl8k_cmd_set_beacon()
2963 rc = mwl8k_post_pervif_cmd(hw, vif, &cmd->header); mwl8k_cmd_set_beacon()
2964 kfree(cmd); mwl8k_cmd_set_beacon()
2978 struct mwl8k_cmd_set_pre_scan *cmd; mwl8k_cmd_set_pre_scan() local
2981 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_pre_scan()
2982 if (cmd == NULL) mwl8k_cmd_set_pre_scan()
2985 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_PRE_SCAN); mwl8k_cmd_set_pre_scan()
2986 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_pre_scan()
2988 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_set_pre_scan()
2989 kfree(cmd); mwl8k_cmd_set_pre_scan()
3011 struct mwl8k_cmd_bbp_reg_access *cmd; mwl8k_cmd_bbp_reg_access() local
3014 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_bbp_reg_access()
3015 if (cmd == NULL) mwl8k_cmd_bbp_reg_access()
3018 cmd->header.code = cpu_to_le16(MWL8K_CMD_BBP_REG_ACCESS); mwl8k_cmd_bbp_reg_access()
3019 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_bbp_reg_access()
3020 cmd->action = cpu_to_le16(action); mwl8k_cmd_bbp_reg_access()
3021 cmd->offset = cpu_to_le16(offset); mwl8k_cmd_bbp_reg_access()
3023 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_bbp_reg_access()
3026 *value = cmd->value; mwl8k_cmd_bbp_reg_access()
3030 kfree(cmd); mwl8k_cmd_bbp_reg_access()
3047 struct mwl8k_cmd_set_post_scan *cmd; mwl8k_cmd_set_post_scan() local
3050 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_post_scan()
3051 if (cmd == NULL) mwl8k_cmd_set_post_scan()
3054 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_POST_SCAN); mwl8k_cmd_set_post_scan()
3055 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_post_scan()
3056 cmd->isibss = 0; mwl8k_cmd_set_post_scan()
3057 memcpy(cmd->bssid, mac, ETH_ALEN); mwl8k_cmd_set_post_scan()
3059 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_set_post_scan()
3060 kfree(cmd); mwl8k_cmd_set_post_scan()
3139 struct mwl8k_cmd_set_rf_channel *cmd; mwl8k_cmd_set_rf_channel() local
3143 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_rf_channel()
3144 if (cmd == NULL) mwl8k_cmd_set_rf_channel()
3147 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_RF_CHANNEL); mwl8k_cmd_set_rf_channel()
3148 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_rf_channel()
3149 cmd->action = cpu_to_le16(MWL8K_CMD_SET); mwl8k_cmd_set_rf_channel()
3150 cmd->current_channel = channel->hw_value; mwl8k_cmd_set_rf_channel()
3153 cmd->channel_flags |= cpu_to_le32(0x00000001); mwl8k_cmd_set_rf_channel()
3155 cmd->channel_flags |= cpu_to_le32(0x00000004); mwl8k_cmd_set_rf_channel()
3160 cmd->channel_flags |= cpu_to_le32(0x00000080); mwl8k_cmd_set_rf_channel()
3162 cmd->channel_flags |= cpu_to_le32(0x000001900); mwl8k_cmd_set_rf_channel()
3164 cmd->channel_flags |= cpu_to_le32(0x000000900); mwl8k_cmd_set_rf_channel()
3166 cmd->channel_flags |= cpu_to_le32(0x00000080); mwl8k_cmd_set_rf_channel()
3181 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_set_rf_channel()
3182 kfree(cmd); mwl8k_cmd_set_rf_channel()
3225 struct mwl8k_cmd_update_set_aid *cmd; mwl8k_cmd_set_aid() local
3229 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_aid()
3230 if (cmd == NULL) mwl8k_cmd_set_aid()
3233 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_AID); mwl8k_cmd_set_aid()
3234 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_aid()
3235 cmd->aid = cpu_to_le16(vif->bss_conf.aid); mwl8k_cmd_set_aid()
3236 memcpy(cmd->bssid, vif->bss_conf.bssid, ETH_ALEN); mwl8k_cmd_set_aid()
3254 cmd->protection_mode = cpu_to_le16(prot_mode); mwl8k_cmd_set_aid()
3256 legacy_rate_mask_to_array(cmd->supp_rates, legacy_rate_mask); mwl8k_cmd_set_aid()
3258 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_set_aid()
3259 kfree(cmd); mwl8k_cmd_set_aid()
3280 struct mwl8k_cmd_set_rate *cmd; mwl8k_cmd_set_rate() local
3283 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_rate()
3284 if (cmd == NULL) mwl8k_cmd_set_rate()
3287 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_RATE); mwl8k_cmd_set_rate()
3288 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_rate()
3289 legacy_rate_mask_to_array(cmd->legacy_rates, legacy_rate_mask); mwl8k_cmd_set_rate()
3290 memcpy(cmd->mcs_set, mcs_rates, 16); mwl8k_cmd_set_rate()
3292 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_set_rate()
3293 kfree(cmd); mwl8k_cmd_set_rate()
3312 struct mwl8k_cmd_finalize_join *cmd; mwl8k_cmd_finalize_join() local
3317 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_finalize_join()
3318 if (cmd == NULL) mwl8k_cmd_finalize_join()
3321 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_FINALIZE_JOIN); mwl8k_cmd_finalize_join()
3322 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_finalize_join()
3323 cmd->sleep_interval = cpu_to_le32(dtim ? dtim : 1); mwl8k_cmd_finalize_join()
3331 memcpy(cmd->beacon_data, &payload->u.beacon, payload_len); mwl8k_cmd_finalize_join()
3333 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_finalize_join()
3334 kfree(cmd); mwl8k_cmd_finalize_join()
3351 struct mwl8k_cmd_set_rts_threshold *cmd; mwl8k_cmd_set_rts_threshold() local
3354 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_rts_threshold()
3355 if (cmd == NULL) mwl8k_cmd_set_rts_threshold()
3358 cmd->header.code = cpu_to_le16(MWL8K_CMD_RTS_THRESHOLD); mwl8k_cmd_set_rts_threshold()
3359 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_rts_threshold()
3360 cmd->action = cpu_to_le16(MWL8K_CMD_SET); mwl8k_cmd_set_rts_threshold()
3361 cmd->threshold = cpu_to_le16(rts_thresh); mwl8k_cmd_set_rts_threshold()
3363 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_set_rts_threshold()
3364 kfree(cmd); mwl8k_cmd_set_rts_threshold()
3380 struct mwl8k_cmd_set_slot *cmd; mwl8k_cmd_set_slot() local
3383 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_slot()
3384 if (cmd == NULL) mwl8k_cmd_set_slot()
3387 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_SLOT); mwl8k_cmd_set_slot()
3388 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_slot()
3389 cmd->action = cpu_to_le16(MWL8K_CMD_SET); mwl8k_cmd_set_slot()
3390 cmd->short_slot = short_slot_time; mwl8k_cmd_set_slot()
3392 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_set_slot()
3393 kfree(cmd); mwl8k_cmd_set_slot()
3454 struct mwl8k_cmd_set_edca_params *cmd; mwl8k_cmd_set_edca_params() local
3457 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_edca_params()
3458 if (cmd == NULL) mwl8k_cmd_set_edca_params()
3461 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_EDCA_PARAMS); mwl8k_cmd_set_edca_params()
3462 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_edca_params()
3463 cmd->action = cpu_to_le16(MWL8K_SET_EDCA_ALL); mwl8k_cmd_set_edca_params()
3464 cmd->txop = cpu_to_le16(txop); mwl8k_cmd_set_edca_params()
3466 cmd->ap.log_cw_max = cpu_to_le32(ilog2(cw_max + 1)); mwl8k_cmd_set_edca_params()
3467 cmd->ap.log_cw_min = cpu_to_le32(ilog2(cw_min + 1)); mwl8k_cmd_set_edca_params()
3468 cmd->ap.aifs = aifs; mwl8k_cmd_set_edca_params()
3469 cmd->ap.txq = qnum; mwl8k_cmd_set_edca_params()
3471 cmd->sta.log_cw_max = (u8)ilog2(cw_max + 1); mwl8k_cmd_set_edca_params()
3472 cmd->sta.log_cw_min = (u8)ilog2(cw_min + 1); mwl8k_cmd_set_edca_params()
3473 cmd->sta.aifs = aifs; mwl8k_cmd_set_edca_params()
3474 cmd->sta.txq = qnum; mwl8k_cmd_set_edca_params()
3477 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_set_edca_params()
3478 kfree(cmd); mwl8k_cmd_set_edca_params()
3494 struct mwl8k_cmd_set_wmm_mode *cmd; mwl8k_cmd_set_wmm_mode() local
3497 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_wmm_mode()
3498 if (cmd == NULL) mwl8k_cmd_set_wmm_mode()
3501 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_WMM_MODE); mwl8k_cmd_set_wmm_mode()
3502 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_wmm_mode()
3503 cmd->action = cpu_to_le16(!!enable); mwl8k_cmd_set_wmm_mode()
3505 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_set_wmm_mode()
3506 kfree(cmd); mwl8k_cmd_set_wmm_mode()
3526 struct mwl8k_cmd_mimo_config *cmd; mwl8k_cmd_mimo_config() local
3529 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_mimo_config()
3530 if (cmd == NULL) mwl8k_cmd_mimo_config()
3533 cmd->header.code = cpu_to_le16(MWL8K_CMD_MIMO_CONFIG); mwl8k_cmd_mimo_config()
3534 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_mimo_config()
3535 cmd->action = cpu_to_le32((u32)MWL8K_CMD_SET); mwl8k_cmd_mimo_config()
3536 cmd->rx_antenna_map = rx; mwl8k_cmd_mimo_config()
3537 cmd->tx_antenna_map = tx; mwl8k_cmd_mimo_config()
3539 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_mimo_config()
3540 kfree(cmd); mwl8k_cmd_mimo_config()
3569 struct mwl8k_cmd_use_fixed_rate_sta *cmd; mwl8k_cmd_use_fixed_rate_sta() local
3572 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_use_fixed_rate_sta()
3573 if (cmd == NULL) mwl8k_cmd_use_fixed_rate_sta()
3576 cmd->header.code = cpu_to_le16(MWL8K_CMD_USE_FIXED_RATE); mwl8k_cmd_use_fixed_rate_sta()
3577 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_use_fixed_rate_sta()
3578 cmd->action = cpu_to_le32(MWL8K_USE_AUTO_RATE); mwl8k_cmd_use_fixed_rate_sta()
3579 cmd->rate_type = cpu_to_le32(MWL8K_UCAST_RATE); mwl8k_cmd_use_fixed_rate_sta()
3581 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_use_fixed_rate_sta()
3582 kfree(cmd); mwl8k_cmd_use_fixed_rate_sta()
3609 struct mwl8k_cmd_use_fixed_rate_ap *cmd; mwl8k_cmd_use_fixed_rate_ap() local
3612 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_use_fixed_rate_ap()
3613 if (cmd == NULL) mwl8k_cmd_use_fixed_rate_ap()
3616 cmd->header.code = cpu_to_le16(MWL8K_CMD_USE_FIXED_RATE); mwl8k_cmd_use_fixed_rate_ap()
3617 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_use_fixed_rate_ap()
3618 cmd->action = cpu_to_le32(MWL8K_USE_AUTO_RATE); mwl8k_cmd_use_fixed_rate_ap()
3619 cmd->multicast_rate = mcast; mwl8k_cmd_use_fixed_rate_ap()
3620 cmd->management_rate = mgmt; mwl8k_cmd_use_fixed_rate_ap()
3622 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_use_fixed_rate_ap()
3623 kfree(cmd); mwl8k_cmd_use_fixed_rate_ap()
3638 struct mwl8k_cmd_enable_sniffer *cmd; mwl8k_cmd_enable_sniffer() local
3641 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_enable_sniffer()
3642 if (cmd == NULL) mwl8k_cmd_enable_sniffer()
3645 cmd->header.code = cpu_to_le16(MWL8K_CMD_ENABLE_SNIFFER); mwl8k_cmd_enable_sniffer()
3646 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_enable_sniffer()
3647 cmd->action = cpu_to_le32(!!enable); mwl8k_cmd_enable_sniffer()
3649 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_enable_sniffer()
3650 kfree(cmd); mwl8k_cmd_enable_sniffer()
3676 struct mwl8k_cmd_update_mac_addr *cmd; mwl8k_cmd_update_mac_addr() local
3696 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_update_mac_addr()
3697 if (cmd == NULL) mwl8k_cmd_update_mac_addr()
3701 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_MAC_ADDR); mwl8k_cmd_update_mac_addr()
3703 cmd->header.code = cpu_to_le16(MWL8K_CMD_DEL_MAC_ADDR); mwl8k_cmd_update_mac_addr()
3705 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_update_mac_addr()
3707 cmd->mbss.mac_type = cpu_to_le16(mac_type); mwl8k_cmd_update_mac_addr()
3708 memcpy(cmd->mbss.mac_addr, mac, ETH_ALEN); mwl8k_cmd_update_mac_addr()
3710 memcpy(cmd->mac_addr, mac, ETH_ALEN); mwl8k_cmd_update_mac_addr()
3713 rc = mwl8k_post_pervif_cmd(hw, vif, &cmd->header); mwl8k_cmd_update_mac_addr()
3714 kfree(cmd); mwl8k_cmd_update_mac_addr()
3748 struct mwl8k_cmd_set_rate_adapt_mode *cmd; mwl8k_cmd_set_rateadapt_mode() local
3751 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_rateadapt_mode()
3752 if (cmd == NULL) mwl8k_cmd_set_rateadapt_mode()
3755 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_RATEADAPT_MODE); mwl8k_cmd_set_rateadapt_mode()
3756 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_rateadapt_mode()
3757 cmd->action = cpu_to_le16(MWL8K_CMD_SET); mwl8k_cmd_set_rateadapt_mode()
3758 cmd->mode = cpu_to_le16(mode); mwl8k_cmd_set_rateadapt_mode()
3760 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_set_rateadapt_mode()
3761 kfree(cmd); mwl8k_cmd_set_rateadapt_mode()
3776 struct mwl8k_cmd_get_watchdog_bitmap *cmd; mwl8k_cmd_get_watchdog_bitmap() local
3779 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_get_watchdog_bitmap()
3780 if (cmd == NULL) mwl8k_cmd_get_watchdog_bitmap()
3783 cmd->header.code = cpu_to_le16(MWL8K_CMD_GET_WATCHDOG_BITMAP); mwl8k_cmd_get_watchdog_bitmap()
3784 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_get_watchdog_bitmap()
3786 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_get_watchdog_bitmap()
3788 *bitmap = cmd->bitmap; mwl8k_cmd_get_watchdog_bitmap()
3790 kfree(cmd); mwl8k_cmd_get_watchdog_bitmap()
3857 struct mwl8k_cmd_bss_start *cmd; mwl8k_cmd_bss_start() local
3868 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_bss_start()
3869 if (cmd == NULL) mwl8k_cmd_bss_start()
3872 cmd->header.code = cpu_to_le16(MWL8K_CMD_BSS_START); mwl8k_cmd_bss_start()
3873 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_bss_start()
3874 cmd->enable = cpu_to_le32(enable); mwl8k_cmd_bss_start()
3876 rc = mwl8k_post_pervif_cmd(hw, vif, &cmd->header); mwl8k_cmd_bss_start()
3877 kfree(cmd); mwl8k_cmd_bss_start()
3957 struct mwl8k_cmd_bastream *cmd; mwl8k_check_ba() local
3960 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_check_ba()
3961 if (cmd == NULL) mwl8k_check_ba()
3964 cmd->header.code = cpu_to_le16(MWL8K_CMD_BASTREAM); mwl8k_check_ba()
3965 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_check_ba()
3967 cmd->action = cpu_to_le32(MWL8K_BA_CHECK); mwl8k_check_ba()
3969 cmd->create_params.queue_id = stream->idx; mwl8k_check_ba()
3970 memcpy(&cmd->create_params.peer_mac_addr[0], stream->sta->addr, mwl8k_check_ba()
3972 cmd->create_params.tid = stream->tid; mwl8k_check_ba()
3974 cmd->create_params.flags = mwl8k_check_ba()
3978 rc = mwl8k_post_pervif_cmd(hw, vif, &cmd->header); mwl8k_check_ba()
3980 kfree(cmd); mwl8k_check_ba()
3989 struct mwl8k_cmd_bastream *cmd; mwl8k_create_ba() local
3992 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_create_ba()
3993 if (cmd == NULL) mwl8k_create_ba()
3997 cmd->header.code = cpu_to_le16(MWL8K_CMD_BASTREAM); mwl8k_create_ba()
3998 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_create_ba()
4000 cmd->action = cpu_to_le32(MWL8K_BA_CREATE); mwl8k_create_ba()
4002 cmd->create_params.bar_thrs = cpu_to_le32((u32)buf_size); mwl8k_create_ba()
4003 cmd->create_params.window_size = cpu_to_le32((u32)buf_size); mwl8k_create_ba()
4004 cmd->create_params.queue_id = stream->idx; mwl8k_create_ba()
4006 memcpy(cmd->create_params.peer_mac_addr, stream->sta->addr, ETH_ALEN); mwl8k_create_ba()
4007 cmd->create_params.tid = stream->tid; mwl8k_create_ba()
4008 cmd->create_params.curr_seq_no = cpu_to_le16(0); mwl8k_create_ba()
4009 cmd->create_params.reset_seq_no_flag = 1; mwl8k_create_ba()
4011 cmd->create_params.param_info = mwl8k_create_ba()
4017 cmd->create_params.flags = mwl8k_create_ba()
4021 rc = mwl8k_post_pervif_cmd(hw, vif, &cmd->header); mwl8k_create_ba()
4025 kfree(cmd); mwl8k_create_ba()
4033 struct mwl8k_cmd_bastream *cmd; mwl8k_destroy_ba() local
4035 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_destroy_ba()
4036 if (cmd == NULL) mwl8k_destroy_ba()
4039 cmd->header.code = cpu_to_le16(MWL8K_CMD_BASTREAM); mwl8k_destroy_ba()
4040 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_destroy_ba()
4041 cmd->action = cpu_to_le32(MWL8K_BA_DESTROY); mwl8k_destroy_ba()
4043 cmd->destroy_params.ba_context = cpu_to_le32(idx); mwl8k_destroy_ba()
4044 mwl8k_post_cmd(hw, &cmd->header); mwl8k_destroy_ba()
4048 kfree(cmd); mwl8k_destroy_ba()
4083 struct mwl8k_cmd_set_new_stn *cmd; mwl8k_cmd_set_new_stn_add() local
4087 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_new_stn_add()
4088 if (cmd == NULL) mwl8k_cmd_set_new_stn_add()
4091 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_NEW_STN); mwl8k_cmd_set_new_stn_add()
4092 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_new_stn_add()
4093 cmd->aid = cpu_to_le16(sta->aid); mwl8k_cmd_set_new_stn_add()
4094 memcpy(cmd->mac_addr, sta->addr, ETH_ALEN); mwl8k_cmd_set_new_stn_add()
4095 cmd->stn_id = cpu_to_le16(sta->aid); mwl8k_cmd_set_new_stn_add()
4096 cmd->action = cpu_to_le16(MWL8K_STA_ACTION_ADD); mwl8k_cmd_set_new_stn_add()
4101 cmd->legacy_rates = cpu_to_le32(rates); mwl8k_cmd_set_new_stn_add()
4103 cmd->ht_rates[0] = sta->ht_cap.mcs.rx_mask[0]; mwl8k_cmd_set_new_stn_add()
4104 cmd->ht_rates[1] = sta->ht_cap.mcs.rx_mask[1]; mwl8k_cmd_set_new_stn_add()
4105 cmd->ht_rates[2] = sta->ht_cap.mcs.rx_mask[2]; mwl8k_cmd_set_new_stn_add()
4106 cmd->ht_rates[3] = sta->ht_cap.mcs.rx_mask[3]; mwl8k_cmd_set_new_stn_add()
4107 cmd->ht_capabilities_info = cpu_to_le16(sta->ht_cap.cap); mwl8k_cmd_set_new_stn_add()
4108 cmd->mac_ht_param_info = (sta->ht_cap.ampdu_factor & 3) | mwl8k_cmd_set_new_stn_add()
4110 cmd->is_qos_sta = 1; mwl8k_cmd_set_new_stn_add()
4113 rc = mwl8k_post_pervif_cmd(hw, vif, &cmd->header); mwl8k_cmd_set_new_stn_add()
4114 kfree(cmd); mwl8k_cmd_set_new_stn_add()
4122 struct mwl8k_cmd_set_new_stn *cmd; mwl8k_cmd_set_new_stn_add_self() local
4125 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_new_stn_add_self()
4126 if (cmd == NULL) mwl8k_cmd_set_new_stn_add_self()
4129 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_NEW_STN); mwl8k_cmd_set_new_stn_add_self()
4130 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_new_stn_add_self()
4131 memcpy(cmd->mac_addr, vif->addr, ETH_ALEN); mwl8k_cmd_set_new_stn_add_self()
4133 rc = mwl8k_post_pervif_cmd(hw, vif, &cmd->header); mwl8k_cmd_set_new_stn_add_self()
4134 kfree(cmd); mwl8k_cmd_set_new_stn_add_self()
4142 struct mwl8k_cmd_set_new_stn *cmd; mwl8k_cmd_set_new_stn_del() local
4168 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_set_new_stn_del()
4169 if (cmd == NULL) mwl8k_cmd_set_new_stn_del()
4172 cmd->header.code = cpu_to_le16(MWL8K_CMD_SET_NEW_STN); mwl8k_cmd_set_new_stn_del()
4173 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_set_new_stn_del()
4174 memcpy(cmd->mac_addr, addr, ETH_ALEN); mwl8k_cmd_set_new_stn_del()
4175 cmd->action = cpu_to_le16(MWL8K_STA_ACTION_REMOVE); mwl8k_cmd_set_new_stn_del()
4177 rc = mwl8k_post_pervif_cmd(hw, vif, &cmd->header); mwl8k_cmd_set_new_stn_del()
4178 kfree(cmd); mwl8k_cmd_set_new_stn_del()
4250 struct mwl8k_cmd_update_encryption *cmd; mwl8k_cmd_update_encryption_enable() local
4253 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_update_encryption_enable()
4254 if (cmd == NULL) mwl8k_cmd_update_encryption_enable()
4257 cmd->header.code = cpu_to_le16(MWL8K_CMD_UPDATE_ENCRYPTION); mwl8k_cmd_update_encryption_enable()
4258 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_update_encryption_enable()
4259 cmd->action = cpu_to_le32(MWL8K_ENCR_ENABLE); mwl8k_cmd_update_encryption_enable()
4260 memcpy(cmd->mac_addr, addr, ETH_ALEN); mwl8k_cmd_update_encryption_enable()
4261 cmd->encr_type = encr_type; mwl8k_cmd_update_encryption_enable()
4263 rc = mwl8k_post_pervif_cmd(hw, vif, &cmd->header); mwl8k_cmd_update_encryption_enable()
4264 kfree(cmd); mwl8k_cmd_update_encryption_enable()
4269 static int mwl8k_encryption_set_cmd_info(struct mwl8k_cmd_set_key *cmd, mwl8k_encryption_set_cmd_info() argument
4273 cmd->header.code = cpu_to_le16(MWL8K_CMD_UPDATE_ENCRYPTION); mwl8k_encryption_set_cmd_info()
4274 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_encryption_set_cmd_info()
4275 cmd->length = cpu_to_le16(sizeof(*cmd) - mwl8k_encryption_set_cmd_info()
4277 cmd->key_id = cpu_to_le32(key->keyidx); mwl8k_encryption_set_cmd_info()
4278 cmd->key_len = cpu_to_le16(key->keylen); mwl8k_encryption_set_cmd_info()
4279 memcpy(cmd->mac_addr, addr, ETH_ALEN); mwl8k_encryption_set_cmd_info()
4284 cmd->key_type_id = cpu_to_le16(MWL8K_ALG_WEP); mwl8k_encryption_set_cmd_info()
4286 cmd->key_info = cpu_to_le32(MWL8K_KEY_FLAG_WEP_TXKEY); mwl8k_encryption_set_cmd_info()
4290 cmd->key_type_id = cpu_to_le16(MWL8K_ALG_TKIP); mwl8k_encryption_set_cmd_info()
4291 cmd->key_info = (key->flags & IEEE80211_KEY_FLAG_PAIRWISE) mwl8k_encryption_set_cmd_info()
4294 cmd->key_info |= cpu_to_le32(MWL8K_KEY_FLAG_MICKEY_VALID mwl8k_encryption_set_cmd_info()
4298 cmd->key_type_id = cpu_to_le16(MWL8K_ALG_CCMP); mwl8k_encryption_set_cmd_info()
4299 cmd->key_info = (key->flags & IEEE80211_KEY_FLAG_PAIRWISE) mwl8k_encryption_set_cmd_info()
4315 struct mwl8k_cmd_set_key *cmd; mwl8k_cmd_encryption_set_key() local
4322 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_encryption_set_key()
4323 if (cmd == NULL) mwl8k_cmd_encryption_set_key()
4326 rc = mwl8k_encryption_set_cmd_info(cmd, addr, key); mwl8k_cmd_encryption_set_key()
4360 memcpy(cmd->key_material, key->key, keymlen); mwl8k_cmd_encryption_set_key()
4361 cmd->action = cpu_to_le32(action); mwl8k_cmd_encryption_set_key()
4363 rc = mwl8k_post_pervif_cmd(hw, vif, &cmd->header); mwl8k_cmd_encryption_set_key()
4365 kfree(cmd); mwl8k_cmd_encryption_set_key()
4375 struct mwl8k_cmd_set_key *cmd; mwl8k_cmd_encryption_remove_key() local
4379 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_encryption_remove_key()
4380 if (cmd == NULL) mwl8k_cmd_encryption_remove_key()
4383 rc = mwl8k_encryption_set_cmd_info(cmd, addr, key); mwl8k_cmd_encryption_remove_key()
4391 cmd->action = cpu_to_le32(MWL8K_ENCR_REMOVE_KEY); mwl8k_cmd_encryption_remove_key()
4393 rc = mwl8k_post_pervif_cmd(hw, vif, &cmd->header); mwl8k_cmd_encryption_remove_key()
4395 kfree(cmd); mwl8k_cmd_encryption_remove_key()
4511 struct mwl8k_cmd_update_stadb *cmd; mwl8k_cmd_update_stadb_add() local
4516 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_update_stadb_add()
4517 if (cmd == NULL) mwl8k_cmd_update_stadb_add()
4520 cmd->header.code = cpu_to_le16(MWL8K_CMD_UPDATE_STADB); mwl8k_cmd_update_stadb_add()
4521 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_update_stadb_add()
4522 cmd->action = cpu_to_le32(MWL8K_STA_DB_MODIFY_ENTRY); mwl8k_cmd_update_stadb_add()
4523 memcpy(cmd->peer_addr, sta->addr, ETH_ALEN); mwl8k_cmd_update_stadb_add()
4525 p = &cmd->peer_info; mwl8k_cmd_update_stadb_add()
4541 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_update_stadb_add()
4544 kfree(cmd); mwl8k_cmd_update_stadb_add()
4552 struct mwl8k_cmd_update_stadb *cmd; mwl8k_cmd_update_stadb_del() local
4555 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); mwl8k_cmd_update_stadb_del()
4556 if (cmd == NULL) mwl8k_cmd_update_stadb_del()
4559 cmd->header.code = cpu_to_le16(MWL8K_CMD_UPDATE_STADB); mwl8k_cmd_update_stadb_del()
4560 cmd->header.length = cpu_to_le16(sizeof(*cmd)); mwl8k_cmd_update_stadb_del()
4561 cmd->action = cpu_to_le32(MWL8K_STA_DB_DEL_ENTRY); mwl8k_cmd_update_stadb_del()
4562 memcpy(cmd->peer_addr, addr, ETH_ALEN); mwl8k_cmd_update_stadb_del()
4564 rc = mwl8k_post_cmd(hw, &cmd->header); mwl8k_cmd_update_stadb_del()
4565 kfree(cmd); mwl8k_cmd_update_stadb_del()
5156 struct mwl8k_cmd_pkt *cmd; mwl8k_prepare_multicast() local
5165 cmd = __mwl8k_cmd_mac_multicast_adr(hw, 0, mc_list); mwl8k_prepare_multicast()
5167 return (unsigned long)cmd; mwl8k_prepare_multicast()
5216 struct mwl8k_cmd_pkt *cmd = (void *)(unsigned long)multicast; mwl8k_configure_filter() local
5224 kfree(cmd); mwl8k_configure_filter()
5234 kfree(cmd); mwl8k_configure_filter()
5242 kfree(cmd); mwl8k_configure_filter()
5286 kfree(cmd); mwl8k_configure_filter()
5287 cmd = __mwl8k_cmd_mac_multicast_adr(hw, 1, NULL); mwl8k_configure_filter()
5290 if (cmd != NULL) { mwl8k_configure_filter()
5291 mwl8k_post_cmd(hw, cmd); mwl8k_configure_filter()
5292 kfree(cmd); mwl8k_configure_filter()
2281 mwl8k_post_pervif_cmd(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct mwl8k_cmd_pkt *cmd) mwl8k_post_pervif_cmd() argument
/linux-4.1.27/arch/arm/mach-omap2/
H A Domap4-restart.c17 * @cmd: passed from the userspace program rebooting the system (if provided)
19 * Resets the SoC. For @cmd, see the 'reboot' syscall in
22 void omap44xx_restart(enum reboot_mode mode, const char *cmd) omap44xx_restart() argument
24 /* XXX Should save 'cmd' into scratchpad for use after reboot */ omap44xx_restart()
H A Dam33xx-restart.c17 * @cmd: passed from the userspace program rebooting the system (if provided)
19 * Resets the SoC. For @cmd, see the 'reboot' syscall in
22 void am33xx_restart(enum reboot_mode mode, const char *cmd) am33xx_restart() argument
24 /* TODO: Handle mode and cmd if necessary */ am33xx_restart()
H A Domap3-restart.c25 * @cmd: passed from the userspace program rebooting the system (if provided)
27 * Resets the SoC. For @cmd, see the 'reboot' syscall in
30 void omap3xxx_restart(enum reboot_mode mode, const char *cmd) omap3xxx_restart() argument
32 omap3_ctrl_write_boot_mode((cmd ? (u8)*cmd : 0)); omap3xxx_restart()
/linux-4.1.27/drivers/staging/comedi/
H A Dcomedi_compat32.c90 static int translated_ioctl(struct file *file, unsigned int cmd, translated_ioctl() argument
94 return file->f_op->unlocked_ioctl(file, cmd, arg); translated_ioctl()
164 /* Copy 32-bit cmd structure to native cmd structure. */ get_compat_cmd()
165 static int get_compat_cmd(struct comedi_cmd __user *cmd, get_compat_cmd() argument
174 /* Copy cmd structure. */ get_compat_cmd()
176 !access_ok(VERIFY_WRITE, cmd, sizeof(*cmd))) get_compat_cmd()
181 err |= __put_user(temp.uint, &cmd->subdev); get_compat_cmd()
183 err |= __put_user(temp.uint, &cmd->flags); get_compat_cmd()
185 err |= __put_user(temp.uint, &cmd->start_src); get_compat_cmd()
187 err |= __put_user(temp.uint, &cmd->start_arg); get_compat_cmd()
189 err |= __put_user(temp.uint, &cmd->scan_begin_src); get_compat_cmd()
191 err |= __put_user(temp.uint, &cmd->scan_begin_arg); get_compat_cmd()
193 err |= __put_user(temp.uint, &cmd->convert_src); get_compat_cmd()
195 err |= __put_user(temp.uint, &cmd->convert_arg); get_compat_cmd()
197 err |= __put_user(temp.uint, &cmd->scan_end_src); get_compat_cmd()
199 err |= __put_user(temp.uint, &cmd->scan_end_arg); get_compat_cmd()
201 err |= __put_user(temp.uint, &cmd->stop_src); get_compat_cmd()
203 err |= __put_user(temp.uint, &cmd->stop_arg); get_compat_cmd()
205 err |= __put_user(compat_ptr(temp.uptr), &cmd->chanlist); get_compat_cmd()
207 err |= __put_user(temp.uint, &cmd->chanlist_len); get_compat_cmd()
209 err |= __put_user(compat_ptr(temp.uptr), &cmd->data); get_compat_cmd()
211 err |= __put_user(temp.uint, &cmd->data_len); get_compat_cmd()
215 /* Copy native cmd structure to 32-bit cmd structure. */ put_compat_cmd()
217 struct comedi_cmd __user *cmd) put_compat_cmd()
223 * Copy back most of cmd structure. put_compat_cmd()
228 if (!access_ok(VERIFY_READ, cmd, sizeof(*cmd)) || put_compat_cmd()
233 err |= __get_user(temp, &cmd->subdev); put_compat_cmd()
235 err |= __get_user(temp, &cmd->flags); put_compat_cmd()
237 err |= __get_user(temp, &cmd->start_src); put_compat_cmd()
239 err |= __get_user(temp, &cmd->start_arg); put_compat_cmd()
241 err |= __get_user(temp, &cmd->scan_begin_src); put_compat_cmd()
243 err |= __get_user(temp, &cmd->scan_begin_arg); put_compat_cmd()
245 err |= __get_user(temp, &cmd->convert_src); put_compat_cmd()
247 err |= __get_user(temp, &cmd->convert_arg); put_compat_cmd()
249 err |= __get_user(temp, &cmd->scan_end_src); put_compat_cmd()
251 err |= __get_user(temp, &cmd->scan_end_arg); put_compat_cmd()
253 err |= __get_user(temp, &cmd->stop_src); put_compat_cmd()
255 err |= __get_user(temp, &cmd->stop_arg); put_compat_cmd()
258 err |= __get_user(temp, &cmd->chanlist_len); put_compat_cmd()
261 err |= __get_user(temp, &cmd->data_len); put_compat_cmd()
269 struct comedi_cmd __user *cmd; compat_cmd() local
274 cmd = compat_alloc_user_space(sizeof(*cmd)); compat_cmd()
276 rc = get_compat_cmd(cmd, cmd32); compat_cmd()
280 rc = translated_ioctl(file, COMEDI_CMD, (unsigned long)cmd); compat_cmd()
282 /* Special case: copy cmd back to user. */ compat_cmd()
283 err = put_compat_cmd(cmd32, cmd); compat_cmd()
294 struct comedi_cmd __user *cmd; compat_cmdtest() local
299 cmd = compat_alloc_user_space(sizeof(*cmd)); compat_cmdtest()
301 rc = get_compat_cmd(cmd, cmd32); compat_cmdtest()
305 rc = translated_ioctl(file, COMEDI_CMDTEST, (unsigned long)cmd); compat_cmdtest()
309 err = put_compat_cmd(cmd32, cmd); compat_cmdtest()
417 long comedi_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) comedi_compat_ioctl() argument
421 switch (cmd) { comedi_compat_ioctl()
429 rc = translated_ioctl(file, cmd, arg); comedi_compat_ioctl()
438 rc = translated_ioctl(file, cmd, arg); comedi_compat_ioctl()
216 put_compat_cmd(struct comedi32_cmd_struct __user *cmd32, struct comedi_cmd __user *cmd) put_compat_cmd() argument
/linux-4.1.27/net/nfc/hci/
H A Dhcp.c31 * counted from the moment the cmd is sent to the transport.
40 struct hci_msg *cmd; nfc_hci_hcp_message_tx() local
45 cmd = kzalloc(sizeof(struct hci_msg), GFP_KERNEL); nfc_hci_hcp_message_tx()
46 if (cmd == NULL) nfc_hci_hcp_message_tx()
49 INIT_LIST_HEAD(&cmd->msg_l); nfc_hci_hcp_message_tx()
50 skb_queue_head_init(&cmd->msg_frags); nfc_hci_hcp_message_tx()
51 cmd->wait_response = (type == NFC_HCI_HCP_COMMAND) ? true : false; nfc_hci_hcp_message_tx()
52 cmd->cb = cb; nfc_hci_hcp_message_tx()
53 cmd->cb_context = cb_context; nfc_hci_hcp_message_tx()
54 cmd->completion_delay = completion_delay; nfc_hci_hcp_message_tx()
102 skb_queue_tail(&cmd->msg_frags, skb); nfc_hci_hcp_message_tx()
113 list_add_tail(&cmd->msg_l, &hdev->msg_tx_queue); nfc_hci_hcp_message_tx()
121 skb_queue_purge(&cmd->msg_frags); nfc_hci_hcp_message_tx()
122 kfree(cmd); nfc_hci_hcp_message_tx()
128 * Receive hcp message for pipe, with type and cmd.
/linux-4.1.27/drivers/s390/cio/
H A Ddevice_status.c80 cdev->private->irb.scsw.cmd.ectl = 0; ccw_device_accumulate_ecw()
81 if ((irb->scsw.cmd.stctl & SCSW_STCTL_ALERT_STATUS) && ccw_device_accumulate_ecw()
82 !(irb->scsw.cmd.stctl & SCSW_STCTL_INTER_STATUS)) ccw_device_accumulate_ecw()
83 cdev->private->irb.scsw.cmd.ectl = irb->scsw.cmd.ectl; ccw_device_accumulate_ecw()
85 if (!cdev->private->irb.scsw.cmd.ectl) ccw_device_accumulate_ecw()
97 if (!irb->scsw.cmd.eswf && ccw_device_accumulate_esw_valid()
98 (irb->scsw.cmd.stctl == SCSW_STCTL_STATUS_PEND)) ccw_device_accumulate_esw_valid()
100 if (irb->scsw.cmd.stctl == ccw_device_accumulate_esw_valid()
102 !(irb->scsw.cmd.actl & SCSW_ACTL_SUSPENDED)) ccw_device_accumulate_esw_valid()
125 if (irb->scsw.cmd.eswf) { ccw_device_accumulate_esw()
134 if (irb->scsw.cmd.cstat & (SCHN_STAT_CHN_DATA_CHK | ccw_device_accumulate_esw()
155 if (irb->scsw.cmd.cstat & SCHN_STAT_INTF_CTRL_CHK) ccw_device_accumulate_esw()
227 if (irb->scsw.cmd.fctl & SCSW_FCTL_CLEAR_FUNC) ccw_device_accumulate_irb()
231 if (irb->scsw.cmd.fctl & SCSW_FCTL_START_FUNC) { ccw_device_accumulate_irb()
233 cdev_irb->scsw.cmd.key = irb->scsw.cmd.key; ccw_device_accumulate_irb()
235 cdev_irb->scsw.cmd.sctl = irb->scsw.cmd.sctl; ccw_device_accumulate_irb()
237 cdev_irb->scsw.cmd.cc |= irb->scsw.cmd.cc; ccw_device_accumulate_irb()
239 cdev_irb->scsw.cmd.fmt = irb->scsw.cmd.fmt; ccw_device_accumulate_irb()
241 cdev_irb->scsw.cmd.pfch = irb->scsw.cmd.pfch; ccw_device_accumulate_irb()
243 cdev_irb->scsw.cmd.isic = irb->scsw.cmd.isic; ccw_device_accumulate_irb()
245 cdev_irb->scsw.cmd.alcc = irb->scsw.cmd.alcc; ccw_device_accumulate_irb()
247 cdev_irb->scsw.cmd.ssi = irb->scsw.cmd.ssi; ccw_device_accumulate_irb()
254 cdev_irb->scsw.cmd.fctl |= irb->scsw.cmd.fctl; ccw_device_accumulate_irb()
256 cdev_irb->scsw.cmd.actl = irb->scsw.cmd.actl; ccw_device_accumulate_irb()
258 cdev_irb->scsw.cmd.stctl |= irb->scsw.cmd.stctl; ccw_device_accumulate_irb()
263 if ((irb->scsw.cmd.stctl & SCSW_STCTL_PRIM_STATUS) || ccw_device_accumulate_irb()
264 ((irb->scsw.cmd.stctl == ccw_device_accumulate_irb()
266 (irb->scsw.cmd.actl & SCSW_ACTL_DEVACT) && ccw_device_accumulate_irb()
267 (irb->scsw.cmd.actl & SCSW_ACTL_SCHACT)) || ccw_device_accumulate_irb()
268 (irb->scsw.cmd.actl & SCSW_ACTL_SUSPENDED)) ccw_device_accumulate_irb()
269 cdev_irb->scsw.cmd.cpa = irb->scsw.cmd.cpa; ccw_device_accumulate_irb()
271 cdev_irb->scsw.cmd.dstat &= ~DEV_STAT_BUSY; ccw_device_accumulate_irb()
273 if (irb->scsw.cmd.stctl & ccw_device_accumulate_irb()
276 cdev_irb->scsw.cmd.dstat |= irb->scsw.cmd.dstat; ccw_device_accumulate_irb()
278 cdev_irb->scsw.cmd.cstat |= irb->scsw.cmd.cstat; ccw_device_accumulate_irb()
280 if ((irb->scsw.cmd.stctl & SCSW_STCTL_PRIM_STATUS) && ccw_device_accumulate_irb()
281 (irb->scsw.cmd.cstat & ~(SCHN_STAT_PCI | SCHN_STAT_INCORR_LEN)) ccw_device_accumulate_irb()
283 cdev_irb->scsw.cmd.count = irb->scsw.cmd.count; ccw_device_accumulate_irb()
300 if ((cdev_irb->scsw.cmd.dstat & DEV_STAT_UNIT_CHECK) && ccw_device_accumulate_irb()
363 if (!(irb->scsw.cmd.dstat & DEV_STAT_UNIT_CHECK) && ccw_device_accumulate_basic_sense()
364 (irb->scsw.cmd.dstat & DEV_STAT_CHN_END)) { ccw_device_accumulate_basic_sense()
382 if ((irb->scsw.cmd.actl & (SCSW_ACTL_DEVACT | SCSW_ACTL_SCHACT)) != 0) ccw_device_accumulate_and_sense()
386 !(irb->scsw.cmd.dstat & DEV_STAT_UNIT_CHECK)) { ccw_device_accumulate_and_sense()
/linux-4.1.27/drivers/staging/comedi/drivers/
H A Dme4000.c582 struct comedi_cmd *cmd) me4000_ai_check_chanlist()
586 unsigned int aref0 = CR_AREF(cmd->chanlist[0]); me4000_ai_check_chanlist()
589 for (i = 0; i < cmd->chanlist_len; i++) { me4000_ai_check_chanlist()
590 unsigned int chan = CR_CHAN(cmd->chanlist[i]); me4000_ai_check_chanlist()
591 unsigned int range = CR_RANGE(cmd->chanlist[i]); me4000_ai_check_chanlist()
592 unsigned int aref = CR_AREF(cmd->chanlist[i]); me4000_ai_check_chanlist()
620 struct comedi_cmd *cmd, ai_round_cmd_args()
630 if (cmd->start_arg) { ai_round_cmd_args()
631 *init_ticks = (cmd->start_arg * 33) / 1000; ai_round_cmd_args()
632 rest = (cmd->start_arg * 33) % 1000; ai_round_cmd_args()
634 if ((cmd->flags & CMDF_ROUND_MASK) == CMDF_ROUND_NEAREST) { ai_round_cmd_args()
637 } else if ((cmd->flags & CMDF_ROUND_MASK) == CMDF_ROUND_UP) { ai_round_cmd_args()
643 if (cmd->scan_begin_arg) { ai_round_cmd_args()
644 *scan_ticks = (cmd->scan_begin_arg * 33) / 1000; ai_round_cmd_args()
645 rest = (cmd->scan_begin_arg * 33) % 1000; ai_round_cmd_args()
647 if ((cmd->flags & CMDF_ROUND_MASK) == CMDF_ROUND_NEAREST) { ai_round_cmd_args()
650 } else if ((cmd->flags & CMDF_ROUND_MASK) == CMDF_ROUND_UP) { ai_round_cmd_args()
656 if (cmd->convert_arg) { ai_round_cmd_args()
657 *chan_ticks = (cmd->convert_arg * 33) / 1000; ai_round_cmd_args()
658 rest = (cmd->convert_arg * 33) % 1000; ai_round_cmd_args()
660 if ((cmd->flags & CMDF_ROUND_MASK) == CMDF_ROUND_NEAREST) { ai_round_cmd_args()
663 } else if ((cmd->flags & CMDF_ROUND_MASK) == CMDF_ROUND_UP) { ai_round_cmd_args()
689 struct comedi_subdevice *s, struct comedi_cmd *cmd) ai_write_chanlist()
697 for (i = 0; i < cmd->chanlist_len; i++) { ai_write_chanlist()
698 chan = CR_CHAN(cmd->chanlist[i]); ai_write_chanlist()
699 rang = CR_RANGE(cmd->chanlist[i]); ai_write_chanlist()
700 aref = CR_AREF(cmd->chanlist[i]); ai_write_chanlist()
726 struct comedi_cmd *cmd, ai_prepare()
739 if ((cmd->start_src == TRIG_EXT && ai_prepare()
740 cmd->scan_begin_src == TRIG_TIMER && ai_prepare()
741 cmd->convert_src == TRIG_TIMER) || ai_prepare()
742 (cmd->start_src == TRIG_EXT && ai_prepare()
743 cmd->scan_begin_src == TRIG_FOLLOW && ai_prepare()
744 cmd->convert_src == TRIG_TIMER)) { ai_prepare()
748 } else if (cmd->start_src == TRIG_EXT && ai_prepare()
749 cmd->scan_begin_src == TRIG_EXT && ai_prepare()
750 cmd->convert_src == TRIG_TIMER) { ai_prepare()
754 } else if (cmd->start_src == TRIG_EXT && ai_prepare()
755 cmd->scan_begin_src == TRIG_EXT && ai_prepare()
756 cmd->convert_src == TRIG_EXT) { ai_prepare()
768 if (cmd->stop_src == TRIG_COUNT) { ai_prepare()
769 outl(cmd->chanlist_len * cmd->stop_arg, ai_prepare()
772 } else if (cmd->stop_src == TRIG_NONE && ai_prepare()
773 cmd->scan_end_src == TRIG_COUNT) { ai_prepare()
774 outl(cmd->scan_end_arg, ai_prepare()
785 ai_write_chanlist(dev, s, cmd); ai_prepare()
797 struct comedi_cmd *cmd = &s->async->cmd; me4000_ai_do_cmd() local
806 s, cmd, &init_ticks, &scan_ticks, &chan_ticks); me4000_ai_do_cmd()
811 err = ai_prepare(dev, s, cmd, init_ticks, scan_ticks, chan_ticks); me4000_ai_do_cmd()
823 struct comedi_cmd *cmd) me4000_ai_do_cmd_test()
831 ai_round_cmd_args(dev, s, cmd, &init_ticks, &scan_ticks, &chan_ticks); me4000_ai_do_cmd_test()
835 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW | TRIG_EXT); me4000_ai_do_cmd_test()
836 err |= comedi_check_trigger_src(&cmd->scan_begin_src, me4000_ai_do_cmd_test()
838 err |= comedi_check_trigger_src(&cmd->convert_src, me4000_ai_do_cmd_test()
840 err |= comedi_check_trigger_src(&cmd->scan_end_src, me4000_ai_do_cmd_test()
842 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_NONE | TRIG_COUNT); me4000_ai_do_cmd_test()
849 err |= comedi_check_trigger_is_unique(cmd->start_src); me4000_ai_do_cmd_test()
850 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); me4000_ai_do_cmd_test()
851 err |= comedi_check_trigger_is_unique(cmd->convert_src); me4000_ai_do_cmd_test()
852 err |= comedi_check_trigger_is_unique(cmd->scan_end_src); me4000_ai_do_cmd_test()
853 err |= comedi_check_trigger_is_unique(cmd->stop_src); me4000_ai_do_cmd_test()
857 if (cmd->start_src == TRIG_NOW && me4000_ai_do_cmd_test()
858 cmd->scan_begin_src == TRIG_TIMER && me4000_ai_do_cmd_test()
859 cmd->convert_src == TRIG_TIMER) { me4000_ai_do_cmd_test()
860 } else if (cmd->start_src == TRIG_NOW && me4000_ai_do_cmd_test()
861 cmd->scan_begin_src == TRIG_FOLLOW && me4000_ai_do_cmd_test()
862 cmd->convert_src == TRIG_TIMER) { me4000_ai_do_cmd_test()
863 } else if (cmd->start_src == TRIG_EXT && me4000_ai_do_cmd_test()
864 cmd->scan_begin_src == TRIG_TIMER && me4000_ai_do_cmd_test()
865 cmd->convert_src == TRIG_TIMER) { me4000_ai_do_cmd_test()
866 } else if (cmd->start_src == TRIG_EXT && me4000_ai_do_cmd_test()
867 cmd->scan_begin_src == TRIG_FOLLOW && me4000_ai_do_cmd_test()
868 cmd->convert_src == TRIG_TIMER) { me4000_ai_do_cmd_test()
869 } else if (cmd->start_src == TRIG_EXT && me4000_ai_do_cmd_test()
870 cmd->scan_begin_src == TRIG_EXT && me4000_ai_do_cmd_test()
871 cmd->convert_src == TRIG_TIMER) { me4000_ai_do_cmd_test()
872 } else if (cmd->start_src == TRIG_EXT && me4000_ai_do_cmd_test()
873 cmd->scan_begin_src == TRIG_EXT && me4000_ai_do_cmd_test()
874 cmd->convert_src == TRIG_EXT) { me4000_ai_do_cmd_test()
884 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); me4000_ai_do_cmd_test()
886 if (cmd->chanlist_len < 1) { me4000_ai_do_cmd_test()
887 cmd->chanlist_len = 1; me4000_ai_do_cmd_test()
891 cmd->start_arg = 2000; me4000_ai_do_cmd_test()
895 cmd->scan_begin_arg = 2031; me4000_ai_do_cmd_test()
899 cmd->convert_arg = 2000; me4000_ai_do_cmd_test()
903 if (cmd->stop_src == TRIG_COUNT) me4000_ai_do_cmd_test()
904 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); me4000_ai_do_cmd_test()
906 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); me4000_ai_do_cmd_test()
914 if (cmd->start_src == TRIG_NOW && me4000_ai_do_cmd_test()
915 cmd->scan_begin_src == TRIG_TIMER && me4000_ai_do_cmd_test()
916 cmd->convert_src == TRIG_TIMER) { me4000_ai_do_cmd_test()
920 cmd->start_arg = 2000; /* 66 ticks at least */ me4000_ai_do_cmd_test()
925 cmd->convert_arg = 2000; /* 66 ticks at least */ me4000_ai_do_cmd_test()
928 if (scan_ticks <= cmd->chanlist_len * chan_ticks) { me4000_ai_do_cmd_test()
932 cmd->scan_end_arg = 2000 * cmd->chanlist_len + 31; me4000_ai_do_cmd_test()
935 } else if (cmd->start_src == TRIG_NOW && me4000_ai_do_cmd_test()
936 cmd->scan_begin_src == TRIG_FOLLOW && me4000_ai_do_cmd_test()
937 cmd->convert_src == TRIG_TIMER) { me4000_ai_do_cmd_test()
941 cmd->start_arg = 2000; /* 66 ticks at least */ me4000_ai_do_cmd_test()
946 cmd->convert_arg = 2000; /* 66 ticks at least */ me4000_ai_do_cmd_test()
949 } else if (cmd->start_src == TRIG_EXT && me4000_ai_do_cmd_test()
950 cmd->scan_begin_src == TRIG_TIMER && me4000_ai_do_cmd_test()
951 cmd->convert_src == TRIG_TIMER) { me4000_ai_do_cmd_test()
955 cmd->start_arg = 2000; /* 66 ticks at least */ me4000_ai_do_cmd_test()
960 cmd->convert_arg = 2000; /* 66 ticks at least */ me4000_ai_do_cmd_test()
963 if (scan_ticks <= cmd->chanlist_len * chan_ticks) { me4000_ai_do_cmd_test()
967 cmd->scan_end_arg = 2000 * cmd->chanlist_len + 31; me4000_ai_do_cmd_test()
970 } else if (cmd->start_src == TRIG_EXT && me4000_ai_do_cmd_test()
971 cmd->scan_begin_src == TRIG_FOLLOW && me4000_ai_do_cmd_test()
972 cmd->convert_src == TRIG_TIMER) { me4000_ai_do_cmd_test()
976 cmd->start_arg = 2000; /* 66 ticks at least */ me4000_ai_do_cmd_test()
981 cmd->convert_arg = 2000; /* 66 ticks at least */ me4000_ai_do_cmd_test()
984 } else if (cmd->start_src == TRIG_EXT && me4000_ai_do_cmd_test()
985 cmd->scan_begin_src == TRIG_EXT && me4000_ai_do_cmd_test()
986 cmd->convert_src == TRIG_TIMER) { me4000_ai_do_cmd_test()
990 cmd->start_arg = 2000; /* 66 ticks at least */ me4000_ai_do_cmd_test()
995 cmd->convert_arg = 2000; /* 66 ticks at least */ me4000_ai_do_cmd_test()
998 } else if (cmd->start_src == TRIG_EXT && me4000_ai_do_cmd_test()
999 cmd->scan_begin_src == TRIG_EXT && me4000_ai_do_cmd_test()
1000 cmd->convert_src == TRIG_EXT) { me4000_ai_do_cmd_test()
1004 cmd->start_arg = 2000; /* 66 ticks at least */ me4000_ai_do_cmd_test()
1008 if (cmd->scan_end_src == TRIG_COUNT) { me4000_ai_do_cmd_test()
1009 if (cmd->scan_end_arg == 0) { me4000_ai_do_cmd_test()
1011 cmd->scan_end_arg = 1; me4000_ai_do_cmd_test()
1020 if (cmd->chanlist && cmd->chanlist_len > 0) me4000_ai_do_cmd_test()
1021 err |= me4000_ai_check_chanlist(dev, s, cmd); me4000_ai_do_cmd_test()
580 me4000_ai_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) me4000_ai_check_chanlist() argument
618 ai_round_cmd_args(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd, unsigned int *init_ticks, unsigned int *scan_ticks, unsigned int *chan_ticks) ai_round_cmd_args() argument
688 ai_write_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) ai_write_chanlist() argument
724 ai_prepare(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd, unsigned int init_ticks, unsigned int scan_ticks, unsigned int chan_ticks) ai_prepare() argument
821 me4000_ai_do_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) me4000_ai_do_cmd_test() argument
H A Dcomedi_test.c173 struct comedi_cmd *cmd = &async->cmd; waveform_ai_interrupt() local
195 for (j = 0; j < cmd->chanlist_len; j++) { waveform_ai_interrupt()
198 sample = fake_waveform(dev, CR_CHAN(cmd->chanlist[j]), waveform_ai_interrupt()
199 CR_RANGE(cmd->chanlist[j]), waveform_ai_interrupt()
210 if (cmd->stop_src == TRIG_COUNT && async->scans_done >= cmd->stop_arg) waveform_ai_interrupt()
220 struct comedi_cmd *cmd) waveform_ai_cmdtest()
227 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW); waveform_ai_cmdtest()
228 err |= comedi_check_trigger_src(&cmd->scan_begin_src, TRIG_TIMER); waveform_ai_cmdtest()
229 err |= comedi_check_trigger_src(&cmd->convert_src, waveform_ai_cmdtest()
231 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); waveform_ai_cmdtest()
232 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE); waveform_ai_cmdtest()
239 err |= comedi_check_trigger_is_unique(cmd->convert_src); waveform_ai_cmdtest()
240 err |= comedi_check_trigger_is_unique(cmd->stop_src); waveform_ai_cmdtest()
249 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); waveform_ai_cmdtest()
251 if (cmd->convert_src == TRIG_NOW) waveform_ai_cmdtest()
252 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, 0); waveform_ai_cmdtest()
254 if (cmd->scan_begin_src == TRIG_TIMER) { waveform_ai_cmdtest()
255 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, waveform_ai_cmdtest()
257 if (cmd->convert_src == TRIG_TIMER) { waveform_ai_cmdtest()
258 err |= comedi_check_trigger_arg_min(&cmd-> waveform_ai_cmdtest()
260 cmd->convert_arg * waveform_ai_cmdtest()
261 cmd->chanlist_len); waveform_ai_cmdtest()
265 err |= comedi_check_trigger_arg_min(&cmd->chanlist_len, 1); waveform_ai_cmdtest()
266 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, waveform_ai_cmdtest()
267 cmd->chanlist_len); waveform_ai_cmdtest()
269 if (cmd->stop_src == TRIG_COUNT) waveform_ai_cmdtest()
270 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); waveform_ai_cmdtest()
272 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); waveform_ai_cmdtest()
279 if (cmd->scan_begin_src == TRIG_TIMER) { waveform_ai_cmdtest()
280 arg = cmd->scan_begin_arg; waveform_ai_cmdtest()
284 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, arg); waveform_ai_cmdtest()
286 if (cmd->convert_src == TRIG_TIMER) { waveform_ai_cmdtest()
287 arg = cmd->convert_arg; waveform_ai_cmdtest()
291 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, arg); waveform_ai_cmdtest()
304 struct comedi_cmd *cmd = &s->async->cmd; waveform_ai_cmd() local
306 if (cmd->flags & CMDF_PRIORITY) { waveform_ai_cmd()
312 devpriv->scan_period = cmd->scan_begin_arg / nano_per_micro; waveform_ai_cmd()
314 if (cmd->convert_src == TRIG_NOW) waveform_ai_cmd()
317 devpriv->convert_period = cmd->convert_arg / nano_per_micro; waveform_ai_cmd()
218 waveform_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) waveform_ai_cmdtest() argument
H A Dni_tiocmd.c91 struct comedi_cmd *cmd = &s->async->cmd; ni_tio_input_inttrig() local
95 if (trig_num != cmd->start_arg) ni_tio_input_inttrig()
118 struct comedi_cmd *cmd = &async->cmd; ni_tio_input_cmd() local
139 if (cmd->start_src == TRIG_INT) { ni_tio_input_cmd()
145 if (cmd->start_src == TRIG_NOW) ni_tio_input_cmd()
147 else if (cmd->start_src == TRIG_EXT) ni_tio_input_cmd()
148 ret = ni_tio_arm(counter, 1, cmd->start_arg); ni_tio_input_cmd()
170 struct comedi_cmd *cmd = &s->async->cmd; ni_tio_cmd_setup() local
177 if (cmd->scan_begin_src == TRIG_EXT) { ni_tio_cmd_setup()
179 gate_source = cmd->scan_begin_arg; ni_tio_cmd_setup()
180 } else if (cmd->convert_src == TRIG_EXT) { ni_tio_cmd_setup()
182 gate_source = cmd->convert_arg; ni_tio_cmd_setup()
186 if (cmd->flags & CMDF_WAKE_EOS) { ni_tio_cmd_setup()
198 struct comedi_cmd *cmd = &async->cmd; ni_tio_cmd() local
212 if (cmd->flags & CMDF_WRITE) ni_tio_cmd()
225 struct comedi_cmd *cmd) ni_tio_cmdtest()
236 err |= comedi_check_trigger_src(&cmd->start_src, sources); ni_tio_cmdtest()
238 err |= comedi_check_trigger_src(&cmd->scan_begin_src, ni_tio_cmdtest()
240 err |= comedi_check_trigger_src(&cmd->convert_src, ni_tio_cmdtest()
242 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); ni_tio_cmdtest()
243 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_NONE); ni_tio_cmdtest()
250 err |= comedi_check_trigger_is_unique(cmd->start_src); ni_tio_cmdtest()
251 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); ni_tio_cmdtest()
252 err |= comedi_check_trigger_is_unique(cmd->convert_src); ni_tio_cmdtest()
256 if (cmd->convert_src != TRIG_NOW && cmd->scan_begin_src != TRIG_FOLLOW) ni_tio_cmdtest()
264 switch (cmd->start_src) { ni_tio_cmdtest()
268 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); ni_tio_cmdtest()
275 if (cmd->scan_begin_src != TRIG_EXT) ni_tio_cmdtest()
276 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, 0); ni_tio_cmdtest()
278 if (cmd->convert_src != TRIG_EXT) ni_tio_cmdtest()
279 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, 0); ni_tio_cmdtest()
281 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, ni_tio_cmdtest()
282 cmd->chanlist_len); ni_tio_cmdtest()
283 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); ni_tio_cmdtest()
223 ni_tio_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) ni_tio_cmdtest() argument
H A Dni_labpc_common.c279 static bool labpc_use_continuous_mode(const struct comedi_cmd *cmd, labpc_use_continuous_mode() argument
282 if (mode == MODE_SINGLE_CHAN || cmd->scan_begin_src == TRIG_FOLLOW) labpc_use_continuous_mode()
288 static unsigned int labpc_ai_convert_period(const struct comedi_cmd *cmd, labpc_ai_convert_period() argument
291 if (cmd->convert_src != TRIG_TIMER) labpc_ai_convert_period()
294 if (mode == MODE_SINGLE_CHAN && cmd->scan_begin_src == TRIG_TIMER) labpc_ai_convert_period()
295 return cmd->scan_begin_arg; labpc_ai_convert_period()
297 return cmd->convert_arg; labpc_ai_convert_period()
300 static void labpc_set_ai_convert_period(struct comedi_cmd *cmd, labpc_set_ai_convert_period() argument
303 if (cmd->convert_src != TRIG_TIMER) labpc_set_ai_convert_period()
307 cmd->scan_begin_src == TRIG_TIMER) { labpc_set_ai_convert_period()
308 cmd->scan_begin_arg = ns; labpc_set_ai_convert_period()
309 if (cmd->convert_arg > cmd->scan_begin_arg) labpc_set_ai_convert_period()
310 cmd->convert_arg = cmd->scan_begin_arg; labpc_set_ai_convert_period()
312 cmd->convert_arg = ns; labpc_set_ai_convert_period()
316 static unsigned int labpc_ai_scan_period(const struct comedi_cmd *cmd, labpc_ai_scan_period() argument
319 if (cmd->scan_begin_src != TRIG_TIMER) labpc_ai_scan_period()
322 if (mode == MODE_SINGLE_CHAN && cmd->convert_src == TRIG_TIMER) labpc_ai_scan_period()
325 return cmd->scan_begin_arg; labpc_ai_scan_period()
328 static void labpc_set_ai_scan_period(struct comedi_cmd *cmd, labpc_set_ai_scan_period() argument
331 if (cmd->scan_begin_src != TRIG_TIMER) labpc_set_ai_scan_period()
334 if (mode == MODE_SINGLE_CHAN && cmd->convert_src == TRIG_TIMER) labpc_set_ai_scan_period()
337 cmd->scan_begin_arg = ns; labpc_set_ai_scan_period()
341 static void labpc_adc_timing(struct comedi_device *dev, struct comedi_cmd *cmd, labpc_adc_timing() argument
345 unsigned int convert_period = labpc_ai_convert_period(cmd, mode); labpc_adc_timing()
346 unsigned int scan_period = labpc_ai_scan_period(cmd, mode); labpc_adc_timing()
369 switch (cmd->flags & CMDF_ROUND_MASK) { labpc_adc_timing()
396 labpc_set_ai_convert_period(cmd, mode, labpc_adc_timing()
398 labpc_set_ai_scan_period(cmd, mode, labpc_adc_timing()
407 cmd->flags); labpc_adc_timing()
408 labpc_set_ai_scan_period(cmd, mode, scan_period); labpc_adc_timing()
416 cmd->flags); labpc_adc_timing()
419 labpc_set_ai_convert_period(cmd, mode, convert_period); labpc_adc_timing()
423 static enum scan_mode labpc_ai_scan_mode(const struct comedi_cmd *cmd) labpc_ai_scan_mode() argument
428 if (cmd->chanlist_len == 1) labpc_ai_scan_mode()
432 if (!cmd->chanlist) labpc_ai_scan_mode()
435 chan0 = CR_CHAN(cmd->chanlist[0]); labpc_ai_scan_mode()
436 chan1 = CR_CHAN(cmd->chanlist[1]); labpc_ai_scan_mode()
449 struct comedi_cmd *cmd) labpc_ai_check_chanlist()
451 enum scan_mode mode = labpc_ai_scan_mode(cmd); labpc_ai_check_chanlist()
452 unsigned int chan0 = CR_CHAN(cmd->chanlist[0]); labpc_ai_check_chanlist()
453 unsigned int range0 = CR_RANGE(cmd->chanlist[0]); labpc_ai_check_chanlist()
454 unsigned int aref0 = CR_AREF(cmd->chanlist[0]); labpc_ai_check_chanlist()
457 for (i = 0; i < cmd->chanlist_len; i++) { labpc_ai_check_chanlist()
458 unsigned int chan = CR_CHAN(cmd->chanlist[i]); labpc_ai_check_chanlist()
459 unsigned int range = CR_RANGE(cmd->chanlist[i]); labpc_ai_check_chanlist()
460 unsigned int aref = CR_AREF(cmd->chanlist[i]); labpc_ai_check_chanlist()
480 if (chan != (cmd->chanlist_len - i - 1)) { labpc_ai_check_chanlist()
505 struct comedi_subdevice *s, struct comedi_cmd *cmd) labpc_ai_cmdtest()
515 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW | TRIG_EXT); labpc_ai_cmdtest()
516 err |= comedi_check_trigger_src(&cmd->scan_begin_src, labpc_ai_cmdtest()
518 err |= comedi_check_trigger_src(&cmd->convert_src, labpc_ai_cmdtest()
520 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); labpc_ai_cmdtest()
525 err |= comedi_check_trigger_src(&cmd->stop_src, stop_mask); labpc_ai_cmdtest()
532 err |= comedi_check_trigger_is_unique(cmd->start_src); labpc_ai_cmdtest()
533 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); labpc_ai_cmdtest()
534 err |= comedi_check_trigger_is_unique(cmd->convert_src); labpc_ai_cmdtest()
535 err |= comedi_check_trigger_is_unique(cmd->stop_src); labpc_ai_cmdtest()
540 if (cmd->start_src == TRIG_EXT && cmd->stop_src == TRIG_EXT) labpc_ai_cmdtest()
548 switch (cmd->start_src) { labpc_ai_cmdtest()
550 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); labpc_ai_cmdtest()
557 if (!cmd->chanlist_len) labpc_ai_cmdtest()
559 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, labpc_ai_cmdtest()
560 cmd->chanlist_len); labpc_ai_cmdtest()
562 if (cmd->convert_src == TRIG_TIMER) { labpc_ai_cmdtest()
563 err |= comedi_check_trigger_arg_min(&cmd->convert_arg, labpc_ai_cmdtest()
568 if (cmd->scan_begin_src == TRIG_TIMER) { labpc_ai_cmdtest()
569 if (cmd->convert_src == TRIG_TIMER) { labpc_ai_cmdtest()
570 err |= comedi_check_trigger_arg_min(&cmd-> labpc_ai_cmdtest()
572 cmd->convert_arg * labpc_ai_cmdtest()
573 cmd->chanlist_len); labpc_ai_cmdtest()
575 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, labpc_ai_cmdtest()
577 cmd->chanlist_len); labpc_ai_cmdtest()
580 switch (cmd->stop_src) { labpc_ai_cmdtest()
582 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); labpc_ai_cmdtest()
585 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); labpc_ai_cmdtest()
600 tmp = cmd->convert_arg; labpc_ai_cmdtest()
601 tmp2 = cmd->scan_begin_arg; labpc_ai_cmdtest()
602 mode = labpc_ai_scan_mode(cmd); labpc_ai_cmdtest()
603 labpc_adc_timing(dev, cmd, mode); labpc_ai_cmdtest()
604 if (tmp != cmd->convert_arg || tmp2 != cmd->scan_begin_arg) labpc_ai_cmdtest()
611 if (cmd->chanlist && cmd->chanlist_len > 0) labpc_ai_cmdtest()
612 err |= labpc_ai_check_chanlist(dev, s, cmd); labpc_ai_cmdtest()
625 struct comedi_cmd *cmd = &async->cmd; labpc_ai_cmd() local
626 enum scan_mode mode = labpc_ai_scan_mode(cmd); labpc_ai_cmd()
628 cmd->chanlist[cmd->chanlist_len - 1] : labpc_ai_cmd()
629 cmd->chanlist[0]; labpc_ai_cmd()
640 if (cmd->stop_src == TRIG_COUNT) labpc_ai_cmd()
641 devpriv->count = cmd->stop_arg * cmd->chanlist_len; labpc_ai_cmd()
644 if (cmd->stop_src == TRIG_EXT) { labpc_ai_cmd()
661 (cmd->flags & (CMDF_WAKE_EOS | CMDF_PRIORITY)) == 0) labpc_ai_cmd()
666 (cmd->flags & CMDF_WAKE_EOS) == 0 && labpc_ai_cmd()
668 (cmd->stop_src != TRIG_COUNT || devpriv->count > 256)) labpc_ai_cmd()
677 (cmd->stop_src == TRIG_EXT)); labpc_ai_cmd()
689 devpriv->write_byte(dev, cmd->chanlist_len, INTERVAL_COUNT_REG); labpc_ai_cmd()
693 if (cmd->convert_src == TRIG_TIMER || labpc_ai_cmd()
694 cmd->scan_begin_src == TRIG_TIMER) { labpc_ai_cmd()
706 if (labpc_ai_convert_period(cmd, mode)) labpc_ai_cmd()
710 if (labpc_ai_scan_period(cmd, mode)) labpc_ai_cmd()
729 if (cmd->convert_src != TRIG_EXT) labpc_ai_cmd()
733 if (!labpc_use_continuous_mode(cmd, mode)) { labpc_ai_cmd()
735 if (cmd->scan_begin_src == TRIG_EXT) labpc_ai_cmd()
751 if (cmd->start_src == TRIG_EXT) labpc_ai_cmd()
755 if (cmd->stop_src == TRIG_EXT) labpc_ai_cmd()
770 struct comedi_cmd *cmd = &async->cmd; labpc_drain_fifo() local
780 if (cmd->stop_src == TRIG_COUNT) { labpc_drain_fifo()
818 struct comedi_cmd *cmd; labpc_interrupt() local
826 cmd = &async->cmd; labpc_interrupt()
869 if (cmd->stop_src == TRIG_EXT) { labpc_interrupt()
877 if (cmd->stop_src == TRIG_COUNT) { labpc_interrupt()
447 labpc_ai_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) labpc_ai_check_chanlist() argument
504 labpc_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) labpc_ai_cmdtest() argument
H A Dadl_pci9118.c21 * AI subdevice supports cmd and insn interface,
24 * - If cmd->scan_begin_src=TRIG_EXT then trigger input is TGIN (pin 46).
25 * - If cmd->convert_src=TRIG_EXT then trigger input is EXTTRG (pin 44).
26 * - If cmd->start_src/stop_src=TRIG_EXT then trigger input is TGIN (pin 46).
27 * - It is not necessary to have cmd.scan_end_arg=cmd.chanlist_len but
28 * cmd.scan_end_arg modulo cmd.chanlist_len must by 0.
37 * so there is some problems if cmd->chanlist_len is odd. This driver tries
39 * it on output but this can't be used if cmd->scan_begin_src=TRIG_FOLLOW
43 * cmd->scan_begin_src=TRIG_FOLLOW.
429 struct comedi_cmd *cmd = &s->async->cmd; valid_samples_in_act_dma_buf() local
431 unsigned int stop_pos = start_pos + cmd->chanlist_len; valid_samples_in_act_dma_buf()
436 if (span_len == cmd->chanlist_len) valid_samples_in_act_dma_buf()
447 n_samples = whole_spans * cmd->chanlist_len; valid_samples_in_act_dma_buf()
486 struct comedi_cmd *cmd = &s->async->cmd; move_block_from_dma() local
488 unsigned int stop_pos = start_pos + cmd->chanlist_len; move_block_from_dma()
493 if (span_len == cmd->chanlist_len) { move_block_from_dma()
556 struct comedi_cmd *cmd = &s->async->cmd; pci9118_calc_divisors() local
566 if (cmd->convert_src == TRIG_NOW && !chnsshfront) { pci9118_calc_divisors()
641 struct comedi_cmd *cmd = &s->async->cmd; interrupt_pci9118_ai_onesample() local
649 if (s->async->scans_done >= cmd->stop_arg) interrupt_pci9118_ai_onesample()
658 struct comedi_cmd *cmd = &s->async->cmd; interrupt_pci9118_ai_dma() local
682 if (s->async->scans_done >= cmd->stop_arg) interrupt_pci9118_ai_dma()
808 struct comedi_cmd *cmd = &s->async->cmd; pci9118_ai_inttrig() local
810 if (trig_num != cmd->start_arg) pci9118_ai_inttrig()
823 struct comedi_cmd *cmd = &s->async->cmd; Compute_and_setup_dma() local
903 cmd->stop_arg)) { Compute_and_setup_dma()
906 cmd->stop_arg; Compute_and_setup_dma()
914 cmd->stop_arg - dmalen0)) Compute_and_setup_dma()
917 cmd->stop_arg - dmalen0; Compute_and_setup_dma()
946 struct comedi_cmd *cmd = &s->async->cmd; pci9118_ai_cmd() local
950 devpriv->ai_flags = cmd->flags; pci9118_ai_cmd()
955 if (cmd->start_src == TRIG_EXT) pci9118_ai_cmd()
957 if (cmd->stop_src == TRIG_EXT) { pci9118_ai_cmd()
961 if (cmd->stop_src == TRIG_NONE) pci9118_ai_cmd()
963 if (cmd->stop_src == TRIG_COUNT) pci9118_ai_cmd()
974 if ((cmd->flags & CMDF_WAKE_EOS) && pci9118_ai_cmd()
975 (cmd->scan_end_arg == 1)) { pci9118_ai_cmd()
976 if (cmd->convert_src == TRIG_NOW) pci9118_ai_cmd()
978 if (cmd->convert_src == TRIG_TIMER) { pci9118_ai_cmd()
986 if ((cmd->flags & CMDF_WAKE_EOS) && pci9118_ai_cmd()
987 (cmd->scan_end_arg & 1) && pci9118_ai_cmd()
988 (cmd->scan_end_arg > 1)) { pci9118_ai_cmd()
989 if (cmd->scan_begin_src == TRIG_FOLLOW) { pci9118_ai_cmd()
1009 if (cmd->convert_src == TRIG_NOW && devpriv->softsshdelay) { pci9118_ai_cmd()
1016 if (cmd->convert_arg < devpriv->ai_ns_min) pci9118_ai_cmd()
1017 cmd->convert_arg = devpriv->ai_ns_min; pci9118_ai_cmd()
1018 addchans = devpriv->softsshdelay / cmd->convert_arg; pci9118_ai_cmd()
1019 if (devpriv->softsshdelay % cmd->convert_arg) pci9118_ai_cmd()
1026 cmd->chanlist_len + pci9118_ai_cmd()
1035 * to have cmd->scan_end_arg on output? pci9118_ai_cmd()
1037 (devpriv->ai_add_front + cmd->chanlist_len + pci9118_ai_cmd()
1038 devpriv->ai_add_back) * (cmd->scan_end_arg / pci9118_ai_cmd()
1039 cmd->chanlist_len); pci9118_ai_cmd()
1042 if (!check_channel_list(dev, s, cmd->chanlist_len, pci9118_ai_cmd()
1043 cmd->chanlist, devpriv->ai_add_front, pci9118_ai_cmd()
1051 pci9118_set_chanlist(dev, s, cmd->chanlist_len, cmd->chanlist, pci9118_ai_cmd()
1056 if (cmd->scan_begin_src != TRIG_TIMER && pci9118_ai_cmd()
1057 cmd->convert_src == TRIG_TIMER) { pci9118_ai_cmd()
1059 if (cmd->scan_begin_src == TRIG_EXT) pci9118_ai_cmd()
1064 comedi_8254_cascade_ns_to_timer(pacer, &cmd->convert_arg, pci9118_ai_cmd()
1076 if (cmd->scan_begin_src == TRIG_EXT) { pci9118_ai_cmd()
1087 if (cmd->scan_begin_src == TRIG_TIMER && pci9118_ai_cmd()
1088 cmd->convert_src != TRIG_EXT) { pci9118_ai_cmd()
1091 "cmd->scan_begin_src=TRIG_TIMER works only with bus mastering!\n"); pci9118_ai_cmd()
1099 &cmd->scan_begin_arg, &cmd->convert_arg, pci9118_ai_cmd()
1108 if (cmd->convert_src == TRIG_NOW && !devpriv->softsshdelay) pci9118_ai_cmd()
1114 if (cmd->scan_begin_src == TRIG_FOLLOW && pci9118_ai_cmd()
1115 cmd->convert_src == TRIG_EXT) { pci9118_ai_cmd()
1153 if (cmd->start_src == TRIG_NOW) pci9118_ai_cmd()
1155 else if (cmd->start_src == TRIG_INT) pci9118_ai_cmd()
1159 if (cmd->start_src == TRIG_EXT || cmd->stop_src == TRIG_EXT) pci9118_ai_cmd()
1167 struct comedi_cmd *cmd) pci9118_ai_cmdtest()
1176 err |= comedi_check_trigger_src(&cmd->start_src, pci9118_ai_cmdtest()
1182 err |= comedi_check_trigger_src(&cmd->scan_begin_src, flags); pci9118_ai_cmdtest()
1187 err |= comedi_check_trigger_src(&cmd->convert_src, flags); pci9118_ai_cmdtest()
1189 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); pci9118_ai_cmdtest()
1190 err |= comedi_check_trigger_src(&cmd->stop_src, pci9118_ai_cmdtest()
1198 err |= comedi_check_trigger_is_unique(cmd->start_src); pci9118_ai_cmdtest()
1199 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); pci9118_ai_cmdtest()
1200 err |= comedi_check_trigger_is_unique(cmd->convert_src); pci9118_ai_cmdtest()
1201 err |= comedi_check_trigger_is_unique(cmd->stop_src); pci9118_ai_cmdtest()
1205 if (cmd->start_src == TRIG_EXT && cmd->scan_begin_src == TRIG_EXT) pci9118_ai_cmdtest()
1208 if (cmd->start_src == TRIG_INT && cmd->scan_begin_src == TRIG_INT) pci9118_ai_cmdtest()
1211 if ((cmd->scan_begin_src & (TRIG_TIMER | TRIG_EXT)) && pci9118_ai_cmdtest()
1212 (!(cmd->convert_src & (TRIG_TIMER | TRIG_NOW)))) pci9118_ai_cmdtest()
1215 if ((cmd->scan_begin_src == TRIG_FOLLOW) && pci9118_ai_cmdtest()
1216 (!(cmd->convert_src & (TRIG_TIMER | TRIG_EXT)))) pci9118_ai_cmdtest()
1219 if (cmd->stop_src == TRIG_EXT && cmd->scan_begin_src == TRIG_EXT) pci9118_ai_cmdtest()
1227 switch (cmd->start_src) { pci9118_ai_cmdtest()
1230 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); pci9118_ai_cmdtest()
1237 if (cmd->scan_begin_src & (TRIG_FOLLOW | TRIG_EXT)) pci9118_ai_cmdtest()
1238 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, 0); pci9118_ai_cmdtest()
1240 if ((cmd->scan_begin_src == TRIG_TIMER) && pci9118_ai_cmdtest()
1241 (cmd->convert_src == TRIG_TIMER) && (cmd->scan_end_arg == 1)) { pci9118_ai_cmdtest()
1242 cmd->scan_begin_src = TRIG_FOLLOW; pci9118_ai_cmdtest()
1243 cmd->convert_arg = cmd->scan_begin_arg; pci9118_ai_cmdtest()
1244 cmd->scan_begin_arg = 0; pci9118_ai_cmdtest()
1247 if (cmd->scan_begin_src == TRIG_TIMER) { pci9118_ai_cmdtest()
1248 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, pci9118_ai_cmdtest()
1252 if (cmd->scan_begin_src == TRIG_EXT) { pci9118_ai_cmdtest()
1253 if (cmd->scan_begin_arg) { pci9118_ai_cmdtest()
1254 cmd->scan_begin_arg = 0; pci9118_ai_cmdtest()
1256 err |= comedi_check_trigger_arg_max(&cmd->scan_end_arg, pci9118_ai_cmdtest()
1261 if (cmd->convert_src & (TRIG_TIMER | TRIG_NOW)) { pci9118_ai_cmdtest()
1262 err |= comedi_check_trigger_arg_min(&cmd->convert_arg, pci9118_ai_cmdtest()
1266 if (cmd->convert_src == TRIG_EXT) pci9118_ai_cmdtest()
1267 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, 0); pci9118_ai_cmdtest()
1269 if (cmd->stop_src == TRIG_COUNT) pci9118_ai_cmdtest()
1270 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); pci9118_ai_cmdtest()
1272 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); pci9118_ai_cmdtest()
1274 err |= comedi_check_trigger_arg_min(&cmd->chanlist_len, 1); pci9118_ai_cmdtest()
1276 err |= comedi_check_trigger_arg_min(&cmd->scan_end_arg, pci9118_ai_cmdtest()
1277 cmd->chanlist_len); pci9118_ai_cmdtest()
1279 if ((cmd->scan_end_arg % cmd->chanlist_len)) { pci9118_ai_cmdtest()
1280 cmd->scan_end_arg = pci9118_ai_cmdtest()
1281 cmd->chanlist_len * (cmd->scan_end_arg / cmd->chanlist_len); pci9118_ai_cmdtest()
1290 if (cmd->scan_begin_src == TRIG_TIMER) { pci9118_ai_cmdtest()
1291 arg = cmd->scan_begin_arg; pci9118_ai_cmdtest()
1292 comedi_8254_cascade_ns_to_timer(dev->pacer, &arg, cmd->flags); pci9118_ai_cmdtest()
1293 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, arg); pci9118_ai_cmdtest()
1296 if (cmd->convert_src & (TRIG_TIMER | TRIG_NOW)) { pci9118_ai_cmdtest()
1297 arg = cmd->convert_arg; pci9118_ai_cmdtest()
1298 comedi_8254_cascade_ns_to_timer(dev->pacer, &arg, cmd->flags); pci9118_ai_cmdtest()
1299 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, arg); pci9118_ai_cmdtest()
1301 if (cmd->scan_begin_src == TRIG_TIMER && pci9118_ai_cmdtest()
1302 cmd->convert_src == TRIG_NOW) { pci9118_ai_cmdtest()
1303 if (cmd->convert_arg == 0) { pci9118_ai_cmdtest()
1305 (cmd->scan_end_arg + 2); pci9118_ai_cmdtest()
1307 arg = cmd->convert_arg * cmd->chanlist_len; pci9118_ai_cmdtest()
1309 err |= comedi_check_trigger_arg_min(&cmd-> pci9118_ai_cmdtest()
1318 if (cmd->chanlist) pci9118_ai_cmdtest()
1319 if (!check_channel_list(dev, s, cmd->chanlist_len, pci9118_ai_cmdtest()
1320 cmd->chanlist, 0, 0)) pci9118_ai_cmdtest()
1165 pci9118_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) pci9118_ai_cmdtest() argument
H A Ddas16m1.c52 irq can be omitted, although the cmd interface will not work without it.
151 struct comedi_cmd *cmd) das16m1_ai_check_chanlist()
155 if (cmd->chanlist_len == 1) das16m1_ai_check_chanlist()
158 if ((cmd->chanlist_len % 2) != 0) { das16m1_ai_check_chanlist()
164 for (i = 0; i < cmd->chanlist_len; i++) { das16m1_ai_check_chanlist()
165 unsigned int chan = CR_CHAN(cmd->chanlist[i]); das16m1_ai_check_chanlist()
178 struct comedi_subdevice *s, struct comedi_cmd *cmd) das16m1_cmd_test()
184 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW | TRIG_EXT); das16m1_cmd_test()
185 err |= comedi_check_trigger_src(&cmd->scan_begin_src, TRIG_FOLLOW); das16m1_cmd_test()
186 err |= comedi_check_trigger_src(&cmd->convert_src, das16m1_cmd_test()
188 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); das16m1_cmd_test()
189 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE); das16m1_cmd_test()
196 err |= comedi_check_trigger_is_unique(cmd->start_src); das16m1_cmd_test()
197 err |= comedi_check_trigger_is_unique(cmd->convert_src); das16m1_cmd_test()
198 err |= comedi_check_trigger_is_unique(cmd->stop_src); das16m1_cmd_test()
207 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); das16m1_cmd_test()
209 if (cmd->scan_begin_src == TRIG_FOLLOW) /* internal trigger */ das16m1_cmd_test()
210 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, 0); das16m1_cmd_test()
212 if (cmd->convert_src == TRIG_TIMER) das16m1_cmd_test()
213 err |= comedi_check_trigger_arg_min(&cmd->convert_arg, 1000); das16m1_cmd_test()
215 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, das16m1_cmd_test()
216 cmd->chanlist_len); das16m1_cmd_test()
218 if (cmd->stop_src == TRIG_COUNT) das16m1_cmd_test()
219 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); das16m1_cmd_test()
221 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); das16m1_cmd_test()
228 if (cmd->convert_src == TRIG_TIMER) { das16m1_cmd_test()
229 unsigned int arg = cmd->convert_arg; das16m1_cmd_test()
231 comedi_8254_cascade_ns_to_timer(dev->pacer, &arg, cmd->flags); das16m1_cmd_test()
232 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, arg); das16m1_cmd_test()
239 if (cmd->chanlist && cmd->chanlist_len > 0) das16m1_cmd_test()
240 err |= das16m1_ai_check_chanlist(dev, s, cmd); das16m1_cmd_test()
253 struct comedi_cmd *cmd = &async->cmd; das16m1_cmd_exec() local
278 for (i = 0; i < cmd->chanlist_len; i++) { das16m1_cmd_exec()
281 Q_CHAN(CR_CHAN(cmd->chanlist[i])) | das16m1_cmd_exec()
282 Q_RANGE(CR_RANGE(cmd->chanlist[i])); das16m1_cmd_exec()
288 if (cmd->convert_src == TRIG_TIMER) { das16m1_cmd_exec()
300 if (cmd->start_src == TRIG_EXT && cmd->convert_src != TRIG_EXT) das16m1_cmd_exec()
402 struct comedi_cmd *cmd; das16m1_handler() local
408 cmd = &async->cmd; das16m1_handler()
426 if (cmd->stop_src == TRIG_COUNT) { das16m1_handler()
427 if (num_samples > cmd->stop_arg * cmd->chanlist_len) das16m1_handler()
428 num_samples = cmd->stop_arg * cmd->chanlist_len; das16m1_handler()
438 if (cmd->stop_src == TRIG_COUNT) { das16m1_handler()
439 if (devpriv->adc_count >= cmd->stop_arg * cmd->chanlist_len) { das16m1_handler()
149 das16m1_ai_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) das16m1_ai_check_chanlist() argument
177 das16m1_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) das16m1_cmd_test() argument
H A Ddmm32at.c242 struct comedi_cmd *cmd) dmm32at_ai_check_chanlist()
244 unsigned int chan0 = CR_CHAN(cmd->chanlist[0]); dmm32at_ai_check_chanlist()
245 unsigned int range0 = CR_RANGE(cmd->chanlist[0]); dmm32at_ai_check_chanlist()
248 for (i = 1; i < cmd->chanlist_len; i++) { dmm32at_ai_check_chanlist()
249 unsigned int chan = CR_CHAN(cmd->chanlist[i]); dmm32at_ai_check_chanlist()
250 unsigned int range = CR_RANGE(cmd->chanlist[i]); dmm32at_ai_check_chanlist()
269 struct comedi_cmd *cmd) dmm32at_ai_cmdtest()
276 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW); dmm32at_ai_cmdtest()
277 err |= comedi_check_trigger_src(&cmd->scan_begin_src, TRIG_TIMER); dmm32at_ai_cmdtest()
278 err |= comedi_check_trigger_src(&cmd->convert_src, TRIG_TIMER); dmm32at_ai_cmdtest()
279 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); dmm32at_ai_cmdtest()
280 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE); dmm32at_ai_cmdtest()
287 err |= comedi_check_trigger_is_unique(cmd->stop_src); dmm32at_ai_cmdtest()
296 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); dmm32at_ai_cmdtest()
298 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, 1000000); dmm32at_ai_cmdtest()
299 err |= comedi_check_trigger_arg_max(&cmd->scan_begin_arg, 1000000000); dmm32at_ai_cmdtest()
301 if (cmd->convert_arg >= 17500) dmm32at_ai_cmdtest()
302 cmd->convert_arg = 20000; dmm32at_ai_cmdtest()
303 else if (cmd->convert_arg >= 12500) dmm32at_ai_cmdtest()
304 cmd->convert_arg = 15000; dmm32at_ai_cmdtest()
305 else if (cmd->convert_arg >= 7500) dmm32at_ai_cmdtest()
306 cmd->convert_arg = 10000; dmm32at_ai_cmdtest()
308 cmd->convert_arg = 5000; dmm32at_ai_cmdtest()
310 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, dmm32at_ai_cmdtest()
311 cmd->chanlist_len); dmm32at_ai_cmdtest()
313 if (cmd->stop_src == TRIG_COUNT) dmm32at_ai_cmdtest()
314 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); dmm32at_ai_cmdtest()
316 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); dmm32at_ai_cmdtest()
323 arg = cmd->convert_arg * cmd->scan_end_arg; dmm32at_ai_cmdtest()
324 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, arg); dmm32at_ai_cmdtest()
330 if (cmd->chanlist && cmd->chanlist_len > 0) dmm32at_ai_cmdtest()
331 err |= dmm32at_ai_check_chanlist(dev, s, cmd); dmm32at_ai_cmdtest()
373 struct comedi_cmd *cmd = &s->async->cmd; dmm32at_ai_cmd() local
376 dmm32at_ai_set_chanspec(dev, s, cmd->chanlist[0], cmd->chanlist_len); dmm32at_ai_cmd()
390 if (cmd->stop_src == TRIG_NONE || cmd->stop_arg > 1) { dmm32at_ai_cmd()
392 dmm32at_setaitimer(dev, cmd->scan_begin_arg); dmm32at_ai_cmd()
426 struct comedi_cmd *cmd = &s->async->cmd; dmm32at_isr() local
428 for (i = 0; i < cmd->chanlist_len; i++) { dmm32at_isr()
433 if (cmd->stop_src == TRIG_COUNT && dmm32at_isr()
434 s->async->scans_done >= cmd->stop_arg) dmm32at_isr()
240 dmm32at_ai_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) dmm32at_ai_check_chanlist() argument
267 dmm32at_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) dmm32at_ai_cmdtest() argument
H A Dadl_pci9111.c227 struct comedi_cmd *cmd) pci9111_ai_check_chanlist()
229 unsigned int range0 = CR_RANGE(cmd->chanlist[0]); pci9111_ai_check_chanlist()
230 unsigned int aref0 = CR_AREF(cmd->chanlist[0]); pci9111_ai_check_chanlist()
233 for (i = 1; i < cmd->chanlist_len; i++) { pci9111_ai_check_chanlist()
234 unsigned int chan = CR_CHAN(cmd->chanlist[i]); pci9111_ai_check_chanlist()
235 unsigned int range = CR_RANGE(cmd->chanlist[i]); pci9111_ai_check_chanlist()
236 unsigned int aref = CR_AREF(cmd->chanlist[i]); pci9111_ai_check_chanlist()
262 struct comedi_cmd *cmd) pci9111_ai_do_cmd_test()
269 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW); pci9111_ai_do_cmd_test()
270 err |= comedi_check_trigger_src(&cmd->scan_begin_src, pci9111_ai_do_cmd_test()
272 err |= comedi_check_trigger_src(&cmd->convert_src, pci9111_ai_do_cmd_test()
274 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); pci9111_ai_do_cmd_test()
275 err |= comedi_check_trigger_src(&cmd->stop_src, pci9111_ai_do_cmd_test()
283 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); pci9111_ai_do_cmd_test()
284 err |= comedi_check_trigger_is_unique(cmd->convert_src); pci9111_ai_do_cmd_test()
285 err |= comedi_check_trigger_is_unique(cmd->stop_src); pci9111_ai_do_cmd_test()
289 if (cmd->scan_begin_src != TRIG_FOLLOW) { pci9111_ai_do_cmd_test()
290 if (cmd->scan_begin_src != cmd->convert_src) pci9111_ai_do_cmd_test()
299 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); pci9111_ai_do_cmd_test()
301 if (cmd->convert_src == TRIG_TIMER) { pci9111_ai_do_cmd_test()
302 err |= comedi_check_trigger_arg_min(&cmd->convert_arg, pci9111_ai_do_cmd_test()
305 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, 0); pci9111_ai_do_cmd_test()
308 if (cmd->scan_begin_src == TRIG_TIMER) { pci9111_ai_do_cmd_test()
309 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, pci9111_ai_do_cmd_test()
312 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, 0); pci9111_ai_do_cmd_test()
315 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, pci9111_ai_do_cmd_test()
316 cmd->chanlist_len); pci9111_ai_do_cmd_test()
318 if (cmd->stop_src == TRIG_COUNT) pci9111_ai_do_cmd_test()
319 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); pci9111_ai_do_cmd_test()
321 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); pci9111_ai_do_cmd_test()
328 if (cmd->convert_src == TRIG_TIMER) { pci9111_ai_do_cmd_test()
329 arg = cmd->convert_arg; pci9111_ai_do_cmd_test()
330 comedi_8254_cascade_ns_to_timer(dev->pacer, &arg, cmd->flags); pci9111_ai_do_cmd_test()
331 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, arg); pci9111_ai_do_cmd_test()
338 if (cmd->scan_begin_src == TRIG_TIMER) { pci9111_ai_do_cmd_test()
339 arg = cmd->chanlist_len * cmd->convert_arg; pci9111_ai_do_cmd_test()
341 if (arg < cmd->scan_begin_arg) pci9111_ai_do_cmd_test()
342 arg *= (cmd->scan_begin_arg / arg); pci9111_ai_do_cmd_test()
344 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, arg); pci9111_ai_do_cmd_test()
351 if (cmd->chanlist && cmd->chanlist_len > 0) pci9111_ai_do_cmd_test()
352 err |= pci9111_ai_check_chanlist(dev, s, cmd); pci9111_ai_do_cmd_test()
364 struct comedi_cmd *cmd = &s->async->cmd; pci9111_ai_do_cmd() local
365 unsigned int last_chan = CR_CHAN(cmd->chanlist[cmd->chanlist_len - 1]); pci9111_ai_do_cmd()
372 if (cmd->chanlist_len > 1) pci9111_ai_do_cmd()
380 outb(CR_RANGE(cmd->chanlist[0]) & PCI9111_AI_RANGE_MASK, pci9111_ai_do_cmd()
385 if (cmd->convert_src == TRIG_TIMER) { pci9111_ai_do_cmd()
395 if (cmd->scan_begin_src == TRIG_TIMER) { pci9111_ai_do_cmd()
396 dev_private->scan_delay = (cmd->scan_begin_arg / pci9111_ai_do_cmd()
397 (cmd->convert_arg * cmd->chanlist_len)) - 1; pci9111_ai_do_cmd()
410 dev_private->chunk_num_samples = cmd->chanlist_len * pci9111_ai_do_cmd()
436 struct comedi_cmd *cmd = &s->async->cmd; pci9111_handle_fifo_half_full() local
450 if (devpriv->chunk_counter < cmd->chanlist_len) { pci9111_handle_fifo_half_full()
451 to_read = cmd->chanlist_len - pci9111_handle_fifo_half_full()
484 struct comedi_cmd *cmd; pci9111_interrupt() local
496 cmd = &async->cmd; pci9111_interrupt()
532 if (cmd->stop_src == TRIG_COUNT && async->scans_done >= cmd->stop_arg) pci9111_interrupt()
225 pci9111_ai_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) pci9111_ai_check_chanlist() argument
260 pci9111_ai_do_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) pci9111_ai_do_cmd_test() argument
H A Ddt3000.c251 static void dt3k_send_cmd(struct comedi_device *dev, unsigned int cmd) dt3k_send_cmd() argument
256 writew(cmd, dev->mmio + DPR_Command_Mbx); dt3k_send_cmd()
401 struct comedi_subdevice *s, struct comedi_cmd *cmd) dt3k_ai_cmdtest()
409 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW); dt3k_ai_cmdtest()
410 err |= comedi_check_trigger_src(&cmd->scan_begin_src, TRIG_TIMER); dt3k_ai_cmdtest()
411 err |= comedi_check_trigger_src(&cmd->convert_src, TRIG_TIMER); dt3k_ai_cmdtest()
412 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); dt3k_ai_cmdtest()
413 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_COUNT); dt3k_ai_cmdtest()
423 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); dt3k_ai_cmdtest()
425 if (cmd->scan_begin_src == TRIG_TIMER) { dt3k_ai_cmdtest()
426 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, dt3k_ai_cmdtest()
428 err |= comedi_check_trigger_arg_max(&cmd->scan_begin_arg, dt3k_ai_cmdtest()
432 if (cmd->convert_src == TRIG_TIMER) { dt3k_ai_cmdtest()
433 err |= comedi_check_trigger_arg_min(&cmd->convert_arg, dt3k_ai_cmdtest()
435 err |= comedi_check_trigger_arg_max(&cmd->convert_arg, dt3k_ai_cmdtest()
439 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, dt3k_ai_cmdtest()
440 cmd->chanlist_len); dt3k_ai_cmdtest()
442 if (cmd->stop_src == TRIG_COUNT) dt3k_ai_cmdtest()
443 err |= comedi_check_trigger_arg_max(&cmd->stop_arg, 0x00ffffff); dt3k_ai_cmdtest()
445 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); dt3k_ai_cmdtest()
452 if (cmd->scan_begin_src == TRIG_TIMER) { dt3k_ai_cmdtest()
453 arg = cmd->scan_begin_arg; dt3k_ai_cmdtest()
454 dt3k_ns_to_timer(100, &arg, cmd->flags); dt3k_ai_cmdtest()
455 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, arg); dt3k_ai_cmdtest()
458 if (cmd->convert_src == TRIG_TIMER) { dt3k_ai_cmdtest()
459 arg = cmd->convert_arg; dt3k_ai_cmdtest()
460 dt3k_ns_to_timer(50, &arg, cmd->flags); dt3k_ai_cmdtest()
461 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, arg); dt3k_ai_cmdtest()
463 if (cmd->scan_begin_src == TRIG_TIMER) { dt3k_ai_cmdtest()
464 arg = cmd->convert_arg * cmd->scan_end_arg; dt3k_ai_cmdtest()
465 err |= comedi_check_trigger_arg_min(&cmd-> dt3k_ai_cmdtest()
479 struct comedi_cmd *cmd = &s->async->cmd; dt3k_ai_cmd() local
485 for (i = 0; i < cmd->chanlist_len; i++) { dt3k_ai_cmd()
486 chan = CR_CHAN(cmd->chanlist[i]); dt3k_ai_cmd()
487 range = CR_RANGE(cmd->chanlist[i]); dt3k_ai_cmd()
491 aref = CR_AREF(cmd->chanlist[0]); dt3k_ai_cmd()
493 writew(cmd->scan_end_arg, dev->mmio + DPR_Params(0)); dt3k_ai_cmd()
495 if (cmd->convert_src == TRIG_TIMER) { dt3k_ai_cmd()
496 divider = dt3k_ns_to_timer(50, &cmd->convert_arg, cmd->flags); dt3k_ai_cmd()
501 if (cmd->scan_begin_src == TRIG_TIMER) { dt3k_ai_cmd()
502 tscandiv = dt3k_ns_to_timer(100, &cmd->scan_begin_arg, dt3k_ai_cmd()
503 cmd->flags); dt3k_ai_cmd()
400 dt3k_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) dt3k_ai_cmdtest() argument
H A Daddi_apci_2032.c88 struct comedi_cmd *cmd) apci2032_int_cmdtest()
94 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW); apci2032_int_cmdtest()
95 err |= comedi_check_trigger_src(&cmd->scan_begin_src, TRIG_EXT); apci2032_int_cmdtest()
96 err |= comedi_check_trigger_src(&cmd->convert_src, TRIG_NOW); apci2032_int_cmdtest()
97 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); apci2032_int_cmdtest()
98 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE); apci2032_int_cmdtest()
104 err |= comedi_check_trigger_is_unique(cmd->stop_src); apci2032_int_cmdtest()
113 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); apci2032_int_cmdtest()
114 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, 0); apci2032_int_cmdtest()
115 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, 0); apci2032_int_cmdtest()
116 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, apci2032_int_cmdtest()
117 cmd->chanlist_len); apci2032_int_cmdtest()
118 if (cmd->stop_src == TRIG_COUNT) apci2032_int_cmdtest()
119 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); apci2032_int_cmdtest()
121 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); apci2032_int_cmdtest()
136 struct comedi_cmd *cmd = &s->async->cmd; apci2032_int_cmd() local
143 for (n = 0; n < cmd->chanlist_len; n++) apci2032_int_cmd()
144 enabled_isns |= 1 << CR_CHAN(cmd->chanlist[n]); apci2032_int_cmd()
175 struct comedi_cmd *cmd = &s->async->cmd; apci2032_interrupt() local
204 for (i = 0; i < cmd->chanlist_len; i++) { apci2032_interrupt()
205 unsigned int chan = CR_CHAN(cmd->chanlist[i]); apci2032_interrupt()
213 if (cmd->stop_src == TRIG_COUNT && apci2032_interrupt()
214 s->async->scans_done >= cmd->stop_arg) apci2032_interrupt()
86 apci2032_int_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) apci2032_int_cmdtest() argument
H A Ddt2814.c123 struct comedi_subdevice *s, struct comedi_cmd *cmd) dt2814_ai_cmdtest()
130 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW); dt2814_ai_cmdtest()
131 err |= comedi_check_trigger_src(&cmd->scan_begin_src, TRIG_TIMER); dt2814_ai_cmdtest()
132 err |= comedi_check_trigger_src(&cmd->convert_src, TRIG_NOW); dt2814_ai_cmdtest()
133 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); dt2814_ai_cmdtest()
134 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE); dt2814_ai_cmdtest()
141 err |= comedi_check_trigger_is_unique(cmd->stop_src); dt2814_ai_cmdtest()
150 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); dt2814_ai_cmdtest()
152 err |= comedi_check_trigger_arg_max(&cmd->scan_begin_arg, 1000000000); dt2814_ai_cmdtest()
153 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, dt2814_ai_cmdtest()
156 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, dt2814_ai_cmdtest()
157 cmd->chanlist_len); dt2814_ai_cmdtest()
159 if (cmd->stop_src == TRIG_COUNT) dt2814_ai_cmdtest()
160 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 2); dt2814_ai_cmdtest()
162 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); dt2814_ai_cmdtest()
169 arg = cmd->scan_begin_arg; dt2814_ai_cmdtest()
170 dt2814_ns_to_timer(&arg, cmd->flags); dt2814_ai_cmdtest()
171 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, arg); dt2814_ai_cmdtest()
182 struct comedi_cmd *cmd = &s->async->cmd; dt2814_ai_cmd() local
186 trigvar = dt2814_ns_to_timer(&cmd->scan_begin_arg, cmd->flags); dt2814_ai_cmd()
188 chan = CR_CHAN(cmd->chanlist[0]); dt2814_ai_cmd()
190 devpriv->ntrig = cmd->stop_arg; dt2814_ai_cmd()
122 dt2814_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) dt2814_ai_cmdtest() argument
H A Dpcl711.c194 struct comedi_cmd *cmd = &s->async->cmd; pcl711_interrupt() local
208 if (cmd->stop_src == TRIG_COUNT && pcl711_interrupt()
209 s->async->scans_done >= cmd->stop_arg) pcl711_interrupt()
282 struct comedi_subdevice *s, struct comedi_cmd *cmd) pcl711_ai_cmdtest()
288 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW); pcl711_ai_cmdtest()
289 err |= comedi_check_trigger_src(&cmd->scan_begin_src, pcl711_ai_cmdtest()
291 err |= comedi_check_trigger_src(&cmd->convert_src, TRIG_NOW); pcl711_ai_cmdtest()
292 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); pcl711_ai_cmdtest()
293 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE); pcl711_ai_cmdtest()
300 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); pcl711_ai_cmdtest()
301 err |= comedi_check_trigger_is_unique(cmd->stop_src); pcl711_ai_cmdtest()
310 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); pcl711_ai_cmdtest()
312 if (cmd->scan_begin_src == TRIG_EXT) { pcl711_ai_cmdtest()
313 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, 0); pcl711_ai_cmdtest()
316 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, pcl711_ai_cmdtest()
320 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, 0); pcl711_ai_cmdtest()
321 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, pcl711_ai_cmdtest()
322 cmd->chanlist_len); pcl711_ai_cmdtest()
324 if (cmd->stop_src == TRIG_COUNT) pcl711_ai_cmdtest()
325 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); pcl711_ai_cmdtest()
327 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); pcl711_ai_cmdtest()
334 if (cmd->scan_begin_src == TRIG_TIMER) { pcl711_ai_cmdtest()
335 unsigned int arg = cmd->scan_begin_arg; pcl711_ai_cmdtest()
337 comedi_8254_cascade_ns_to_timer(dev->pacer, &arg, cmd->flags); pcl711_ai_cmdtest()
338 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, arg); pcl711_ai_cmdtest()
349 struct comedi_cmd *cmd = &s->async->cmd; pcl711_ai_cmd() local
351 pcl711_set_changain(dev, s, cmd->chanlist[0]); pcl711_ai_cmd()
353 if (cmd->scan_begin_src == TRIG_TIMER) { pcl711_ai_cmd()
281 pcl711_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) pcl711_ai_cmdtest() argument
H A Dcb_pcidas.c744 struct comedi_cmd *cmd) cb_pcidas_ai_check_chanlist()
746 unsigned int chan0 = CR_CHAN(cmd->chanlist[0]); cb_pcidas_ai_check_chanlist()
747 unsigned int range0 = CR_RANGE(cmd->chanlist[0]); cb_pcidas_ai_check_chanlist()
750 for (i = 1; i < cmd->chanlist_len; i++) { cb_pcidas_ai_check_chanlist()
751 unsigned int chan = CR_CHAN(cmd->chanlist[i]); cb_pcidas_ai_check_chanlist()
752 unsigned int range = CR_RANGE(cmd->chanlist[i]); cb_pcidas_ai_check_chanlist()
771 struct comedi_cmd *cmd) cb_pcidas_ai_cmdtest()
779 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW | TRIG_EXT); cb_pcidas_ai_cmdtest()
780 err |= comedi_check_trigger_src(&cmd->scan_begin_src, cb_pcidas_ai_cmdtest()
782 err |= comedi_check_trigger_src(&cmd->convert_src, cb_pcidas_ai_cmdtest()
784 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); cb_pcidas_ai_cmdtest()
785 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE); cb_pcidas_ai_cmdtest()
792 err |= comedi_check_trigger_is_unique(cmd->start_src); cb_pcidas_ai_cmdtest()
793 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); cb_pcidas_ai_cmdtest()
794 err |= comedi_check_trigger_is_unique(cmd->convert_src); cb_pcidas_ai_cmdtest()
795 err |= comedi_check_trigger_is_unique(cmd->stop_src); cb_pcidas_ai_cmdtest()
799 if (cmd->scan_begin_src == TRIG_FOLLOW && cmd->convert_src == TRIG_NOW) cb_pcidas_ai_cmdtest()
801 if (cmd->scan_begin_src != TRIG_FOLLOW && cmd->convert_src != TRIG_NOW) cb_pcidas_ai_cmdtest()
803 if (cmd->start_src == TRIG_EXT && cb_pcidas_ai_cmdtest()
804 (cmd->convert_src == TRIG_EXT || cmd->scan_begin_src == TRIG_EXT)) cb_pcidas_ai_cmdtest()
812 switch (cmd->start_src) { cb_pcidas_ai_cmdtest()
814 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); cb_pcidas_ai_cmdtest()
818 if ((cmd->start_arg cb_pcidas_ai_cmdtest()
820 cmd->start_arg &= ~(CR_FLAGS_MASK & cb_pcidas_ai_cmdtest()
824 if (!thisboard->is_1602 && (cmd->start_arg & CR_INVERT)) { cb_pcidas_ai_cmdtest()
825 cmd->start_arg &= (CR_FLAGS_MASK & ~CR_INVERT); cb_pcidas_ai_cmdtest()
831 if (cmd->scan_begin_src == TRIG_TIMER) { cb_pcidas_ai_cmdtest()
832 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, cb_pcidas_ai_cmdtest()
834 cmd->chanlist_len); cb_pcidas_ai_cmdtest()
837 if (cmd->convert_src == TRIG_TIMER) { cb_pcidas_ai_cmdtest()
838 err |= comedi_check_trigger_arg_min(&cmd->convert_arg, cb_pcidas_ai_cmdtest()
842 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, cb_pcidas_ai_cmdtest()
843 cmd->chanlist_len); cb_pcidas_ai_cmdtest()
845 if (cmd->stop_src == TRIG_COUNT) cb_pcidas_ai_cmdtest()
846 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); cb_pcidas_ai_cmdtest()
848 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); cb_pcidas_ai_cmdtest()
855 if (cmd->scan_begin_src == TRIG_TIMER) { cb_pcidas_ai_cmdtest()
856 arg = cmd->scan_begin_arg; cb_pcidas_ai_cmdtest()
857 comedi_8254_cascade_ns_to_timer(dev->pacer, &arg, cmd->flags); cb_pcidas_ai_cmdtest()
858 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, arg); cb_pcidas_ai_cmdtest()
860 if (cmd->convert_src == TRIG_TIMER) { cb_pcidas_ai_cmdtest()
861 arg = cmd->convert_arg; cb_pcidas_ai_cmdtest()
862 comedi_8254_cascade_ns_to_timer(dev->pacer, &arg, cmd->flags); cb_pcidas_ai_cmdtest()
863 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, arg); cb_pcidas_ai_cmdtest()
870 if (cmd->chanlist && cmd->chanlist_len > 0) cb_pcidas_ai_cmdtest()
871 err |= cb_pcidas_ai_check_chanlist(dev, s, cmd); cb_pcidas_ai_cmdtest()
885 struct comedi_cmd *cmd = &async->cmd; cb_pcidas_ai_cmd() local
897 bits = BEGIN_SCAN(CR_CHAN(cmd->chanlist[0])) | cb_pcidas_ai_cmd()
898 END_SCAN(CR_CHAN(cmd->chanlist[cmd->chanlist_len - 1])) | cb_pcidas_ai_cmd()
899 GAIN_BITS(CR_RANGE(cmd->chanlist[0])); cb_pcidas_ai_cmd()
901 if (CR_RANGE(cmd->chanlist[0]) & IS_UNIPOLAR) cb_pcidas_ai_cmd()
904 if (CR_AREF(cmd->chanlist[0]) != AREF_DIFF) cb_pcidas_ai_cmd()
907 if (cmd->convert_src == TRIG_EXT || cmd->scan_begin_src == TRIG_EXT) cb_pcidas_ai_cmd()
914 if (cmd->scan_begin_src == TRIG_TIMER || cb_pcidas_ai_cmd()
915 cmd->convert_src == TRIG_TIMER) { cb_pcidas_ai_cmd()
924 if (cmd->flags & CMDF_WAKE_EOS) { cb_pcidas_ai_cmd()
925 if (cmd->convert_src == TRIG_NOW && cmd->chanlist_len > 1) { cb_pcidas_ai_cmd()
944 if (cmd->start_src == TRIG_NOW) { cb_pcidas_ai_cmd()
949 if (cmd->start_arg & CR_INVERT) cb_pcidas_ai_cmd()
951 if (cmd->start_arg & CR_EDGE) cb_pcidas_ai_cmd()
955 if (cmd->convert_src == TRIG_NOW && cmd->chanlist_len > 1) cb_pcidas_ai_cmd()
964 struct comedi_cmd *cmd) cb_pcidas_ao_check_chanlist()
966 unsigned int chan0 = CR_CHAN(cmd->chanlist[0]); cb_pcidas_ao_check_chanlist()
968 if (cmd->chanlist_len > 1) { cb_pcidas_ao_check_chanlist()
969 unsigned int chan1 = CR_CHAN(cmd->chanlist[1]); cb_pcidas_ao_check_chanlist()
983 struct comedi_cmd *cmd) cb_pcidas_ao_cmdtest()
991 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_INT); cb_pcidas_ao_cmdtest()
992 err |= comedi_check_trigger_src(&cmd->scan_begin_src, cb_pcidas_ao_cmdtest()
994 err |= comedi_check_trigger_src(&cmd->convert_src, TRIG_NOW); cb_pcidas_ao_cmdtest()
995 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); cb_pcidas_ao_cmdtest()
996 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE); cb_pcidas_ao_cmdtest()
1003 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); cb_pcidas_ao_cmdtest()
1004 err |= comedi_check_trigger_is_unique(cmd->stop_src); cb_pcidas_ao_cmdtest()
1013 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); cb_pcidas_ao_cmdtest()
1015 if (cmd->scan_begin_src == TRIG_TIMER) { cb_pcidas_ao_cmdtest()
1016 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, cb_pcidas_ao_cmdtest()
1020 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, cb_pcidas_ao_cmdtest()
1021 cmd->chanlist_len); cb_pcidas_ao_cmdtest()
1023 if (cmd->stop_src == TRIG_COUNT) cb_pcidas_ao_cmdtest()
1024 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); cb_pcidas_ao_cmdtest()
1026 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); cb_pcidas_ao_cmdtest()
1033 if (cmd->scan_begin_src == TRIG_TIMER) { cb_pcidas_ao_cmdtest()
1034 unsigned int arg = cmd->scan_begin_arg; cb_pcidas_ao_cmdtest()
1037 &arg, cmd->flags); cb_pcidas_ao_cmdtest()
1038 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, arg); cb_pcidas_ao_cmdtest()
1045 if (cmd->chanlist && cmd->chanlist_len > 0) cb_pcidas_ao_cmdtest()
1046 err |= cb_pcidas_ao_check_chanlist(dev, s, cmd); cb_pcidas_ao_cmdtest()
1096 struct comedi_cmd *cmd = &async->cmd; cb_pcidas_ao_inttrig() local
1099 if (trig_num != cmd->start_arg) cb_pcidas_ao_inttrig()
1128 struct comedi_cmd *cmd = &async->cmd; cb_pcidas_ao_cmd() local
1134 for (i = 0; i < cmd->chanlist_len; i++) { cb_pcidas_ao_cmd()
1137 DAC_CHAN_EN(CR_CHAN(cmd->chanlist[i])); cb_pcidas_ao_cmd()
1139 devpriv->ao_control_bits |= DAC_RANGE(CR_CHAN(cmd->chanlist[i]), cb_pcidas_ao_cmd()
1140 CR_RANGE(cmd-> cb_pcidas_ao_cmd()
1152 if (cmd->scan_begin_src == TRIG_TIMER) { cb_pcidas_ao_cmd()
1159 switch (cmd->scan_begin_src) { cb_pcidas_ao_cmd()
1204 struct comedi_cmd *cmd = &async->cmd; handle_ao_interrupt() local
1214 if (cmd->stop_src == TRIG_COUNT && handle_ao_interrupt()
1215 async->scans_done >= cmd->stop_arg) { handle_ao_interrupt()
1242 struct comedi_cmd *cmd; cb_pcidas_interrupt() local
1253 cmd = &async->cmd; cb_pcidas_interrupt()
1280 if (cmd->stop_src == TRIG_COUNT && cb_pcidas_interrupt()
1281 async->scans_done >= cmd->stop_arg) cb_pcidas_interrupt()
1301 if (cmd->stop_src == TRIG_COUNT && cb_pcidas_interrupt()
1302 async->scans_done >= cmd->stop_arg) { cb_pcidas_interrupt()
742 cb_pcidas_ai_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) cb_pcidas_ai_check_chanlist() argument
769 cb_pcidas_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) cb_pcidas_ai_cmdtest() argument
962 cb_pcidas_ao_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) cb_pcidas_ao_check_chanlist() argument
981 cb_pcidas_ao_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) cb_pcidas_ao_cmdtest() argument
H A Damplc_pci224.c484 struct comedi_cmd *cmd = &s->async->cmd; pci224_ao_start() local
491 if (cmd->stop_src == TRIG_EXT) pci224_ao_start()
507 struct comedi_cmd *cmd = &s->async->cmd; pci224_ao_handle_fifo() local
518 if (cmd->stop_src == TRIG_COUNT && pci224_ao_handle_fifo()
519 s->async->scans_done >= cmd->stop_arg) { pci224_ao_handle_fifo()
545 room /= cmd->chanlist_len; pci224_ao_handle_fifo()
554 cmd->chanlist_len); pci224_ao_handle_fifo()
555 for (i = 0; i < cmd->chanlist_len; i++) { pci224_ao_handle_fifo()
560 if (cmd->stop_src == TRIG_COUNT && pci224_ao_handle_fifo()
561 s->async->scans_done >= cmd->stop_arg) { pci224_ao_handle_fifo()
587 if (cmd->scan_begin_src == TRIG_TIMER) { pci224_ao_handle_fifo()
590 /* cmd->scan_begin_src == TRIG_EXT */ pci224_ao_handle_fifo()
591 if (cmd->scan_begin_arg & CR_INVERT) pci224_ao_handle_fifo()
608 struct comedi_cmd *cmd = &s->async->cmd; pci224_ao_inttrig_start() local
610 if (trig_num != cmd->start_arg) pci224_ao_inttrig_start()
621 struct comedi_cmd *cmd) pci224_ao_check_chanlist()
628 range_check_0 = thisboard->ao_range_check[CR_RANGE(cmd->chanlist[0])]; pci224_ao_check_chanlist()
629 for (i = 0; i < cmd->chanlist_len; i++) { pci224_ao_check_chanlist()
630 unsigned int chan = CR_CHAN(cmd->chanlist[i]); pci224_ao_check_chanlist()
640 if (thisboard->ao_range_check[CR_RANGE(cmd->chanlist[i])] != pci224_ao_check_chanlist()
661 struct comedi_cmd *cmd) pci224_ao_cmdtest()
668 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_INT | TRIG_EXT); pci224_ao_cmdtest()
669 err |= comedi_check_trigger_src(&cmd->scan_begin_src, pci224_ao_cmdtest()
671 err |= comedi_check_trigger_src(&cmd->convert_src, TRIG_NOW); pci224_ao_cmdtest()
672 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); pci224_ao_cmdtest()
673 err |= comedi_check_trigger_src(&cmd->stop_src, pci224_ao_cmdtest()
681 err |= comedi_check_trigger_is_unique(cmd->start_src); pci224_ao_cmdtest()
682 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); pci224_ao_cmdtest()
683 err |= comedi_check_trigger_is_unique(cmd->stop_src); pci224_ao_cmdtest()
692 if (cmd->start_src & TRIG_EXT) pci224_ao_cmdtest()
694 if (cmd->scan_begin_src & TRIG_EXT) pci224_ao_cmdtest()
696 if (cmd->stop_src & TRIG_EXT) pci224_ao_cmdtest()
706 switch (cmd->start_src) { pci224_ao_cmdtest()
708 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); pci224_ao_cmdtest()
712 if (cmd->start_arg & ~CR_FLAGS_MASK) { pci224_ao_cmdtest()
713 cmd->start_arg = pci224_ao_cmdtest()
714 COMBINE(cmd->start_arg, 0, ~CR_FLAGS_MASK); pci224_ao_cmdtest()
718 if (cmd->start_arg & CR_FLAGS_MASK & ~CR_EDGE) { pci224_ao_cmdtest()
719 cmd->start_arg = COMBINE(cmd->start_arg, 0, pci224_ao_cmdtest()
726 switch (cmd->scan_begin_src) { pci224_ao_cmdtest()
728 err |= comedi_check_trigger_arg_max(&cmd->scan_begin_arg, pci224_ao_cmdtest()
731 arg = cmd->chanlist_len * CONVERT_PERIOD; pci224_ao_cmdtest()
734 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, arg); pci224_ao_cmdtest()
738 if (cmd->scan_begin_arg & ~CR_FLAGS_MASK) { pci224_ao_cmdtest()
739 cmd->scan_begin_arg = pci224_ao_cmdtest()
740 COMBINE(cmd->scan_begin_arg, 0, ~CR_FLAGS_MASK); pci224_ao_cmdtest()
744 if (cmd->scan_begin_arg & CR_FLAGS_MASK & pci224_ao_cmdtest()
746 cmd->scan_begin_arg = pci224_ao_cmdtest()
747 COMBINE(cmd->scan_begin_arg, 0, pci224_ao_cmdtest()
754 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, 0); pci224_ao_cmdtest()
755 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, pci224_ao_cmdtest()
756 cmd->chanlist_len); pci224_ao_cmdtest()
758 switch (cmd->stop_src) { pci224_ao_cmdtest()
760 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); pci224_ao_cmdtest()
764 if (cmd->stop_arg & ~CR_FLAGS_MASK) { pci224_ao_cmdtest()
765 cmd->stop_arg = pci224_ao_cmdtest()
766 COMBINE(cmd->stop_arg, 0, ~CR_FLAGS_MASK); pci224_ao_cmdtest()
770 if (cmd->stop_arg & CR_FLAGS_MASK & ~CR_EDGE) { pci224_ao_cmdtest()
771 cmd->stop_arg = pci224_ao_cmdtest()
772 COMBINE(cmd->stop_arg, 0, CR_FLAGS_MASK & ~CR_EDGE); pci224_ao_cmdtest()
776 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); pci224_ao_cmdtest()
785 if (cmd->scan_begin_src == TRIG_TIMER) { pci224_ao_cmdtest()
786 arg = cmd->scan_begin_arg; pci224_ao_cmdtest()
788 comedi_8254_cascade_ns_to_timer(dev->pacer, &arg, cmd->flags); pci224_ao_cmdtest()
789 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, arg); pci224_ao_cmdtest()
796 if (cmd->chanlist && cmd->chanlist_len > 0) pci224_ao_cmdtest()
797 err |= pci224_ao_check_chanlist(dev, s, cmd); pci224_ao_cmdtest()
831 struct comedi_cmd *cmd = &s->async->cmd; pci224_ao_cmd() local
839 if (!cmd->chanlist || cmd->chanlist_len == 0) pci224_ao_cmd()
845 for (i = 0; i < cmd->chanlist_len; i++) { pci224_ao_cmd()
846 ch = CR_CHAN(cmd->chanlist[i]); pci224_ao_cmd()
849 for (j = 0; j < cmd->chanlist_len; j++) { pci224_ao_cmd()
850 if (CR_CHAN(cmd->chanlist[j]) < ch) pci224_ao_cmd()
860 range = CR_RANGE(cmd->chanlist[0]); pci224_ao_cmd()
879 if (cmd->scan_begin_src == TRIG_TIMER) { pci224_ao_cmd()
885 if (cmd->start_src == TRIG_INT) { pci224_ao_cmd()
915 struct comedi_cmd *cmd = &s->async->cmd; pci224_ao_munge() local
925 if ((thisboard->ao_hwrange[CR_RANGE(cmd->chanlist[0])] & pci224_ao_munge()
946 struct comedi_cmd *cmd; pci224_interrupt() local
964 cmd = &s->async->cmd; pci224_interrupt()
967 if (cmd->start_src == TRIG_EXT) pci224_interrupt()
969 else if (cmd->stop_src == TRIG_EXT) pci224_interrupt()
619 pci224_ao_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) pci224_ao_check_chanlist() argument
660 pci224_ao_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) pci224_ao_cmdtest() argument
H A Ddas6402.c186 struct comedi_cmd *cmd = &async->cmd; das6402_interrupt() local
201 if (cmd->stop_src == TRIG_COUNT && das6402_interrupt()
202 async->scans_done >= cmd->stop_arg) das6402_interrupt()
234 struct comedi_cmd *cmd = &s->async->cmd; das6402_ai_cmd() local
235 unsigned int chan_lo = CR_CHAN(cmd->chanlist[0]); das6402_ai_cmd()
236 unsigned int chan_hi = CR_CHAN(cmd->chanlist[cmd->chanlist_len - 1]); das6402_ai_cmd()
238 das6402_ai_set_mode(dev, s, cmd->chanlist[0], DAS6402_MODE_FIFONEPTY); das6402_ai_cmd()
257 struct comedi_cmd *cmd) das6402_ai_check_chanlist()
259 unsigned int chan0 = CR_CHAN(cmd->chanlist[0]); das6402_ai_check_chanlist()
260 unsigned int range0 = CR_RANGE(cmd->chanlist[0]); das6402_ai_check_chanlist()
261 unsigned int aref0 = CR_AREF(cmd->chanlist[0]); das6402_ai_check_chanlist()
264 for (i = 1; i < cmd->chanlist_len; i++) { das6402_ai_check_chanlist()
265 unsigned int chan = CR_CHAN(cmd->chanlist[i]); das6402_ai_check_chanlist()
266 unsigned int range = CR_RANGE(cmd->chanlist[i]); das6402_ai_check_chanlist()
267 unsigned int aref = CR_AREF(cmd->chanlist[i]); das6402_ai_check_chanlist()
298 struct comedi_cmd *cmd) das6402_ai_cmdtest()
305 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW); das6402_ai_cmdtest()
306 err |= comedi_check_trigger_src(&cmd->scan_begin_src, TRIG_FOLLOW); das6402_ai_cmdtest()
307 err |= comedi_check_trigger_src(&cmd->convert_src, TRIG_TIMER); das6402_ai_cmdtest()
308 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); das6402_ai_cmdtest()
309 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE); das6402_ai_cmdtest()
316 err |= comedi_check_trigger_is_unique(cmd->stop_src); das6402_ai_cmdtest()
325 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); das6402_ai_cmdtest()
326 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, 0); das6402_ai_cmdtest()
327 err |= comedi_check_trigger_arg_min(&cmd->convert_arg, 10000); das6402_ai_cmdtest()
328 err |= comedi_check_trigger_arg_min(&cmd->chanlist_len, 1); das6402_ai_cmdtest()
329 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, das6402_ai_cmdtest()
330 cmd->chanlist_len); das6402_ai_cmdtest()
332 if (cmd->stop_src == TRIG_COUNT) das6402_ai_cmdtest()
333 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); das6402_ai_cmdtest()
335 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); das6402_ai_cmdtest()
342 arg = cmd->convert_arg; das6402_ai_cmdtest()
343 comedi_8254_cascade_ns_to_timer(dev->pacer, &arg, cmd->flags); das6402_ai_cmdtest()
344 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, arg); das6402_ai_cmdtest()
350 if (cmd->chanlist && cmd->chanlist_len > 0) das6402_ai_cmdtest()
351 err |= das6402_ai_check_chanlist(dev, s, cmd); das6402_ai_cmdtest()
255 das6402_ai_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) das6402_ai_check_chanlist() argument
296 das6402_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) das6402_ai_cmdtest() argument
H A Dcb_pcidas64.c1254 const struct comedi_cmd *cmd) enable_ai_interrupts()
1265 if (cmd->flags & CMDF_WAKE_EOS) { enable_ai_interrupts()
1989 * sets cmd members appropriately.
1992 static void check_adc_timing(struct comedi_device *dev, struct comedi_cmd *cmd) check_adc_timing() argument
2003 if (cmd->convert_src == TRIG_TIMER) { check_adc_timing()
2005 cmd->convert_arg = 0; check_adc_timing()
2007 convert_divisor = get_divisor(cmd->convert_arg, check_adc_timing()
2008 cmd->flags); check_adc_timing()
2013 cmd->convert_arg = convert_divisor * TIMER_BASE; check_adc_timing()
2015 } else if (cmd->convert_src == TRIG_NOW) { check_adc_timing()
2016 cmd->convert_arg = 0; check_adc_timing()
2019 if (cmd->scan_begin_src == TRIG_TIMER) { check_adc_timing()
2020 scan_divisor = get_divisor(cmd->scan_begin_arg, cmd->flags); check_adc_timing()
2021 if (cmd->convert_src == TRIG_TIMER) { check_adc_timing()
2022 min_scan_divisor = convert_divisor * cmd->chanlist_len; check_adc_timing()
2024 (convert_divisor * cmd->chanlist_len - 1) + check_adc_timing()
2034 cmd->scan_begin_arg = scan_divisor * TIMER_BASE; check_adc_timing()
2040 struct comedi_cmd *cmd) cb_pcidas64_ai_check_chanlist()
2043 unsigned int aref0 = CR_AREF(cmd->chanlist[0]); cb_pcidas64_ai_check_chanlist()
2046 for (i = 1; i < cmd->chanlist_len; i++) { cb_pcidas64_ai_check_chanlist()
2047 unsigned int aref = CR_AREF(cmd->chanlist[i]); cb_pcidas64_ai_check_chanlist()
2057 unsigned int chan0 = CR_CHAN(cmd->chanlist[0]); cb_pcidas64_ai_check_chanlist()
2059 for (i = 1; i < cmd->chanlist_len; i++) { cb_pcidas64_ai_check_chanlist()
2060 unsigned int chan = CR_CHAN(cmd->chanlist[i]); cb_pcidas64_ai_check_chanlist()
2068 if (cmd->chanlist_len == 3) { cb_pcidas64_ai_check_chanlist()
2079 struct comedi_cmd *cmd) ai_cmdtest()
2088 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW | TRIG_EXT); ai_cmdtest()
2095 err |= comedi_check_trigger_src(&cmd->scan_begin_src, triggers); ai_cmdtest()
2102 err |= comedi_check_trigger_src(&cmd->convert_src, triggers); ai_cmdtest()
2103 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); ai_cmdtest()
2104 err |= comedi_check_trigger_src(&cmd->stop_src, ai_cmdtest()
2112 err |= comedi_check_trigger_is_unique(cmd->start_src); ai_cmdtest()
2113 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); ai_cmdtest()
2114 err |= comedi_check_trigger_is_unique(cmd->convert_src); ai_cmdtest()
2115 err |= comedi_check_trigger_is_unique(cmd->stop_src); ai_cmdtest()
2119 if (cmd->convert_src == TRIG_EXT && cmd->scan_begin_src == TRIG_TIMER) ai_cmdtest()
2127 switch (cmd->start_src) { ai_cmdtest()
2129 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); ai_cmdtest()
2139 if (cmd->convert_src == TRIG_TIMER) { ai_cmdtest()
2141 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, ai_cmdtest()
2144 err |= comedi_check_trigger_arg_min(&cmd->convert_arg, ai_cmdtest()
2151 if (cmd->scan_begin_src == TRIG_TIMER) { ai_cmdtest()
2153 &cmd->scan_begin_arg, ai_cmdtest()
2154 cmd->convert_arg * ai_cmdtest()
2155 cmd->chanlist_len); ai_cmdtest()
2160 err |= comedi_check_trigger_arg_min(&cmd->chanlist_len, 1); ai_cmdtest()
2161 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, ai_cmdtest()
2162 cmd->chanlist_len); ai_cmdtest()
2164 switch (cmd->stop_src) { ai_cmdtest()
2168 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); ai_cmdtest()
2171 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); ai_cmdtest()
2182 if (cmd->convert_src == TRIG_TIMER) { ai_cmdtest()
2183 tmp_arg = cmd->convert_arg; ai_cmdtest()
2184 tmp_arg2 = cmd->scan_begin_arg; ai_cmdtest()
2185 check_adc_timing(dev, cmd); ai_cmdtest()
2186 if (tmp_arg != cmd->convert_arg) ai_cmdtest()
2188 if (tmp_arg2 != cmd->scan_begin_arg) ai_cmdtest()
2196 if (cmd->chanlist && cmd->chanlist_len > 0) ai_cmdtest()
2197 err |= cb_pcidas64_ai_check_chanlist(dev, s, cmd); ai_cmdtest()
2205 static int use_hw_sample_counter(struct comedi_cmd *cmd) use_hw_sample_counter() argument
2210 if (cmd->stop_src == TRIG_COUNT && cmd->stop_arg <= max_counter_value) use_hw_sample_counter()
2217 struct comedi_cmd *cmd) setup_sample_counters()
2222 if (use_hw_sample_counter(cmd)) { setup_sample_counters()
2223 writew(cmd->stop_arg & 0xffff, setup_sample_counters()
2225 writew((cmd->stop_arg >> 16) & 0xff, setup_sample_counters()
2247 const struct comedi_cmd *cmd) ai_convert_counter_6xxx()
2250 return cmd->convert_arg / TIMER_BASE - 3; ai_convert_counter_6xxx()
2254 struct comedi_cmd *cmd) ai_scan_counter_6xxx()
2259 switch (cmd->scan_begin_src) { ai_scan_counter_6xxx()
2261 count = (cmd->scan_begin_arg - ai_scan_counter_6xxx()
2262 (cmd->convert_arg * (cmd->chanlist_len - 1))) / ai_scan_counter_6xxx()
2266 count = cmd->convert_arg / TIMER_BASE; ai_scan_counter_6xxx()
2275 struct comedi_cmd *cmd) ai_convert_counter_4020()
2280 switch (cmd->scan_begin_src) { ai_convert_counter_4020()
2282 divisor = cmd->scan_begin_arg / TIMER_BASE; ai_convert_counter_4020()
2298 const struct comedi_cmd *cmd) select_master_clock_4020()
2304 if (cmd->scan_begin_src == TRIG_OTHER) { select_master_clock_4020()
2319 const struct comedi_cmd *cmd) select_master_clock()
2325 select_master_clock_4020(dev, cmd); select_master_clock()
2351 static void set_ai_pacing(struct comedi_device *dev, struct comedi_cmd *cmd) set_ai_pacing() argument
2357 check_adc_timing(dev, cmd); set_ai_pacing()
2359 select_master_clock(dev, cmd); set_ai_pacing()
2362 convert_counter = ai_convert_counter_4020(dev, cmd); set_ai_pacing()
2364 convert_counter = ai_convert_counter_6xxx(dev, cmd); set_ai_pacing()
2365 scan_counter = ai_scan_counter_6xxx(dev, cmd); set_ai_pacing()
2382 static int use_internal_queue_6xxx(const struct comedi_cmd *cmd) use_internal_queue_6xxx() argument
2386 for (i = 0; i + 1 < cmd->chanlist_len; i++) { use_internal_queue_6xxx()
2387 if (CR_CHAN(cmd->chanlist[i + 1]) != use_internal_queue_6xxx()
2388 CR_CHAN(cmd->chanlist[i]) + 1) use_internal_queue_6xxx()
2390 if (CR_RANGE(cmd->chanlist[i + 1]) != use_internal_queue_6xxx()
2391 CR_RANGE(cmd->chanlist[i])) use_internal_queue_6xxx()
2393 if (CR_AREF(cmd->chanlist[i + 1]) != CR_AREF(cmd->chanlist[i])) use_internal_queue_6xxx()
2400 const struct comedi_cmd *cmd) setup_channel_queue()
2408 if (use_internal_queue_6xxx(cmd)) { setup_channel_queue()
2414 bits |= adc_chan_bits(CR_CHAN(cmd->chanlist[0])); setup_channel_queue()
2417 CR_RANGE(cmd->chanlist[0])); setup_channel_queue()
2420 CR_AREF(cmd->chanlist[0]) == setup_channel_queue()
2422 if (CR_AREF(cmd->chanlist[0]) == AREF_COMMON) setup_channel_queue()
2426 (CR_CHAN(cmd->chanlist[cmd->chanlist_len - 1])), setup_channel_queue()
2446 for (i = 0; i < cmd->chanlist_len; i++) { setup_channel_queue()
2449 bits |= adc_chan_bits(CR_CHAN(cmd-> setup_channel_queue()
2453 CR_RANGE(cmd-> setup_channel_queue()
2458 CR_AREF(cmd-> setup_channel_queue()
2461 if (CR_AREF(cmd->chanlist[i]) == AREF_COMMON) setup_channel_queue()
2464 if (i == cmd->chanlist_len - 1) setup_channel_queue()
2484 for (i = 0; i < cmd->chanlist_len; i++) { setup_channel_queue()
2485 unsigned int channel = CR_CHAN(cmd->chanlist[i]); setup_channel_queue()
2486 unsigned int range = CR_RANGE(cmd->chanlist[i]); setup_channel_queue()
2542 struct comedi_cmd *cmd = &async->cmd; ai_cmd() local
2551 retval = setup_channel_queue(dev, cmd); ai_cmd()
2558 set_ai_pacing(dev, cmd); ai_cmd()
2560 setup_sample_counters(dev, cmd); ai_cmd()
2562 enable_ai_interrupts(dev, cmd); ai_cmd()
2570 if (cmd->convert_src == TRIG_EXT) ai_cmd()
2578 if (cmd->chanlist_len == 4) ai_cmd()
2580 else if (cmd->chanlist_len == 2) ai_cmd()
2584 adc_lo_chan_4020_bits(CR_CHAN(cmd->chanlist[0])); ai_cmd()
2587 adc_hi_chan_4020_bits(CR_CHAN(cmd->chanlist ai_cmd()
2588 [cmd->chanlist_len - 1])); ai_cmd()
2597 if ((cmd->flags & CMDF_WAKE_EOS) == 0 || ai_cmd()
2620 if (cmd->start_src == TRIG_EXT && CR_CHAN(cmd->start_arg)) ai_cmd()
2622 if (cmd->stop_src == TRIG_EXT && CR_CHAN(cmd->stop_arg)) ai_cmd()
2631 if (cmd->flags & CMDF_WAKE_EOS) ai_cmd()
2634 if (cmd->start_src == TRIG_EXT) { ai_cmd()
2636 if (cmd->start_arg & CR_INVERT) ai_cmd()
2638 } else if (cmd->start_src == TRIG_NOW) { ai_cmd()
2641 if (use_hw_sample_counter(cmd)) ai_cmd()
2650 if (cmd->start_src == TRIG_NOW) ai_cmd()
2799 struct comedi_cmd *cmd = &async->cmd; handle_ai_interrupt() local
2822 ((cmd->flags & CMDF_WAKE_EOS) && handle_ai_interrupt()
2834 if ((cmd->stop_src == TRIG_COUNT && handle_ai_interrupt()
2835 async->scans_done >= cmd->stop_arg) || handle_ai_interrupt()
2836 (cmd->stop_src == TRIG_EXT && (status & ADC_STOP_BIT))) handle_ai_interrupt()
2914 const struct comedi_cmd *cmd) load_ao_dma_buffer()
2947 static void load_ao_dma(struct comedi_device *dev, const struct comedi_cmd *cmd) load_ao_dma() argument
2966 num_bytes = load_ao_dma_buffer(dev, cmd); load_ao_dma()
2976 struct comedi_cmd *cmd; handle_ao_interrupt() local
2984 cmd = &async->cmd; handle_ao_interrupt()
2999 load_ao_dma(dev, cmd); handle_ao_interrupt()
3009 if ((cmd->stop_src == TRIG_COUNT && handle_ao_interrupt()
3010 async->scans_done >= cmd->stop_arg) || handle_ao_interrupt()
3101 const struct comedi_cmd *cmd) set_dac_control0_reg()
3107 if (cmd->start_src == TRIG_EXT) { set_dac_control0_reg()
3109 if (cmd->start_arg & CR_INVERT) set_dac_control0_reg()
3114 if (cmd->scan_begin_src == TRIG_EXT) { set_dac_control0_reg()
3116 if (cmd->scan_begin_arg & CR_INVERT) set_dac_control0_reg()
3123 const struct comedi_cmd *cmd) set_dac_control1_reg()
3128 for (i = 0; i < cmd->chanlist_len; i++) { set_dac_control1_reg()
3131 channel = CR_CHAN(cmd->chanlist[i]); set_dac_control1_reg()
3132 range = CR_RANGE(cmd->chanlist[i]); set_dac_control1_reg()
3142 const struct comedi_cmd *cmd) set_dac_select_reg()
3148 first_channel = CR_CHAN(cmd->chanlist[0]); set_dac_select_reg()
3149 last_channel = CR_CHAN(cmd->chanlist[cmd->chanlist_len - 1]); set_dac_select_reg()
3165 const struct comedi_cmd *cmd) set_dac_interval_regs()
3170 if (cmd->scan_begin_src != TRIG_TIMER) set_dac_interval_regs()
3173 divisor = get_ao_divisor(cmd->scan_begin_arg, cmd->flags); set_dac_interval_regs()
3184 static int prep_ao_dma(struct comedi_device *dev, const struct comedi_cmd *cmd) prep_ao_dma() argument
3208 if (cmd->stop_src == TRIG_COUNT && prep_ao_dma()
3209 s->async->scans_done >= cmd->stop_arg) prep_ao_dma()
3212 nbytes = load_ao_dma_buffer(dev, cmd); prep_ao_dma()
3215 load_ao_dma(dev, cmd); prep_ao_dma()
3224 struct comedi_cmd *cmd) external_ai_queue_in_use()
3232 else if (use_internal_queue_6xxx(cmd)) external_ai_queue_in_use()
3241 struct comedi_cmd *cmd = &s->async->cmd; ao_inttrig() local
3244 if (trig_num != cmd->start_arg) ao_inttrig()
3247 retval = prep_ao_dma(dev, cmd); ao_inttrig()
3251 set_dac_control0_reg(dev, cmd); ao_inttrig()
3253 if (cmd->start_src == TRIG_INT) ao_inttrig()
3264 struct comedi_cmd *cmd = &s->async->cmd; ao_cmd() local
3266 if (external_ai_queue_in_use(dev, s, cmd)) { ao_cmd()
3275 set_dac_select_reg(dev, cmd); ao_cmd()
3276 set_dac_interval_regs(dev, cmd); ao_cmd()
3280 set_dac_control1_reg(dev, cmd); ao_cmd()
3288 struct comedi_cmd *cmd) cb_pcidas64_ao_check_chanlist()
3290 unsigned int chan0 = CR_CHAN(cmd->chanlist[0]); cb_pcidas64_ao_check_chanlist()
3293 for (i = 1; i < cmd->chanlist_len; i++) { cb_pcidas64_ao_check_chanlist()
3294 unsigned int chan = CR_CHAN(cmd->chanlist[i]); cb_pcidas64_ao_check_chanlist()
3307 struct comedi_cmd *cmd) ao_cmdtest()
3315 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_INT | TRIG_EXT); ao_cmdtest()
3316 err |= comedi_check_trigger_src(&cmd->scan_begin_src, ao_cmdtest()
3318 err |= comedi_check_trigger_src(&cmd->convert_src, TRIG_NOW); ao_cmdtest()
3319 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); ao_cmdtest()
3320 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_NONE); ao_cmdtest()
3327 err |= comedi_check_trigger_is_unique(cmd->start_src); ao_cmdtest()
3328 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); ao_cmdtest()
3332 if (cmd->convert_src == TRIG_EXT && cmd->scan_begin_src == TRIG_TIMER) ao_cmdtest()
3334 if (cmd->stop_src != TRIG_COUNT && ao_cmdtest()
3335 cmd->stop_src != TRIG_NONE && cmd->stop_src != TRIG_EXT) ao_cmdtest()
3343 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); ao_cmdtest()
3345 if (cmd->scan_begin_src == TRIG_TIMER) { ao_cmdtest()
3346 err |= comedi_check_trigger_arg_min(&cmd->scan_begin_arg, ao_cmdtest()
3348 if (get_ao_divisor(cmd->scan_begin_arg, cmd->flags) > ao_cmdtest()
3350 cmd->scan_begin_arg = (max_counter_value + 2) * ao_cmdtest()
3356 err |= comedi_check_trigger_arg_min(&cmd->chanlist_len, 1); ao_cmdtest()
3357 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, ao_cmdtest()
3358 cmd->chanlist_len); ao_cmdtest()
3365 if (cmd->scan_begin_src == TRIG_TIMER) { ao_cmdtest()
3366 tmp_arg = cmd->scan_begin_arg; ao_cmdtest()
3367 cmd->scan_begin_arg = get_divisor(cmd->scan_begin_arg, ao_cmdtest()
3368 cmd->flags) * TIMER_BASE; ao_cmdtest()
3369 if (tmp_arg != cmd->scan_begin_arg) ao_cmdtest()
3377 if (cmd->chanlist && cmd->chanlist_len > 0) ao_cmdtest()
3378 err |= cb_pcidas64_ao_check_chanlist(dev, s, cmd); ao_cmdtest()
1253 enable_ai_interrupts(struct comedi_device *dev, const struct comedi_cmd *cmd) enable_ai_interrupts() argument
2038 cb_pcidas64_ai_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) cb_pcidas64_ai_check_chanlist() argument
2078 ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) ai_cmdtest() argument
2216 setup_sample_counters(struct comedi_device *dev, struct comedi_cmd *cmd) setup_sample_counters() argument
2246 ai_convert_counter_6xxx(const struct comedi_device *dev, const struct comedi_cmd *cmd) ai_convert_counter_6xxx() argument
2253 ai_scan_counter_6xxx(struct comedi_device *dev, struct comedi_cmd *cmd) ai_scan_counter_6xxx() argument
2274 ai_convert_counter_4020(struct comedi_device *dev, struct comedi_cmd *cmd) ai_convert_counter_4020() argument
2297 select_master_clock_4020(struct comedi_device *dev, const struct comedi_cmd *cmd) select_master_clock_4020() argument
2318 select_master_clock(struct comedi_device *dev, const struct comedi_cmd *cmd) select_master_clock() argument
2399 setup_channel_queue(struct comedi_device *dev, const struct comedi_cmd *cmd) setup_channel_queue() argument
2913 load_ao_dma_buffer(struct comedi_device *dev, const struct comedi_cmd *cmd) load_ao_dma_buffer() argument
3100 set_dac_control0_reg(struct comedi_device *dev, const struct comedi_cmd *cmd) set_dac_control0_reg() argument
3122 set_dac_control1_reg(struct comedi_device *dev, const struct comedi_cmd *cmd) set_dac_control1_reg() argument
3141 set_dac_select_reg(struct comedi_device *dev, const struct comedi_cmd *cmd) set_dac_select_reg() argument
3164 set_dac_interval_regs(struct comedi_device *dev, const struct comedi_cmd *cmd) set_dac_interval_regs() argument
3222 external_ai_queue_in_use(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) external_ai_queue_in_use() argument
3286 cb_pcidas64_ao_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) cb_pcidas64_ao_check_chanlist() argument
3306 ao_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) ao_cmdtest() argument
H A Ddas1800.c73 irq can be omitted, although the cmd interface will not work without it.
75 analog input cmd triggers supported:
483 struct comedi_cmd *cmd = &s->async->cmd; das1800_handle_fifo_not_empty() local
495 if (cmd->stop_src == TRIG_COUNT && das1800_handle_fifo_not_empty()
496 s->async->scans_done >= cmd->stop_arg) das1800_handle_fifo_not_empty()
592 struct comedi_cmd *cmd = &async->cmd; das1800_ai_handler() local
627 } else if (cmd->stop_src == TRIG_COUNT && das1800_ai_handler()
628 async->scans_done >= cmd->stop_arg) { das1800_ai_handler()
708 struct comedi_cmd *cmd) das1800_ai_check_chanlist()
710 unsigned int unipolar0 = CR_RANGE(cmd->chanlist[0]) & UNIPOLAR; das1800_ai_check_chanlist()
713 for (i = 1; i < cmd->chanlist_len; i++) { das1800_ai_check_chanlist()
714 unsigned int unipolar = CR_RANGE(cmd->chanlist[i]) & UNIPOLAR; das1800_ai_check_chanlist()
726 /* test analog input cmd */ das1800_ai_do_cmdtest()
729 struct comedi_cmd *cmd) das1800_ai_do_cmdtest()
737 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW | TRIG_EXT); das1800_ai_do_cmdtest()
738 err |= comedi_check_trigger_src(&cmd->scan_begin_src, das1800_ai_do_cmdtest()
740 err |= comedi_check_trigger_src(&cmd->convert_src, das1800_ai_do_cmdtest()
742 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); das1800_ai_do_cmdtest()
743 err |= comedi_check_trigger_src(&cmd->stop_src, das1800_ai_do_cmdtest()
751 err |= comedi_check_trigger_is_unique(cmd->start_src); das1800_ai_do_cmdtest()
752 err |= comedi_check_trigger_is_unique(cmd->scan_begin_src); das1800_ai_do_cmdtest()
753 err |= comedi_check_trigger_is_unique(cmd->convert_src); das1800_ai_do_cmdtest()
754 err |= comedi_check_trigger_is_unique(cmd->stop_src); das1800_ai_do_cmdtest()
758 if (cmd->scan_begin_src != TRIG_FOLLOW && das1800_ai_do_cmdtest()
759 cmd->convert_src != TRIG_TIMER) das1800_ai_do_cmdtest()
767 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); das1800_ai_do_cmdtest()
769 if (cmd->convert_src == TRIG_TIMER) { das1800_ai_do_cmdtest()
770 err |= comedi_check_trigger_arg_min(&cmd->convert_arg, das1800_ai_do_cmdtest()
774 err |= comedi_check_trigger_arg_min(&cmd->chanlist_len, 1); das1800_ai_do_cmdtest()
775 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, das1800_ai_do_cmdtest()
776 cmd->chanlist_len); das1800_ai_do_cmdtest()
778 switch (cmd->stop_src) { das1800_ai_do_cmdtest()
780 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); das1800_ai_do_cmdtest()
783 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); das1800_ai_do_cmdtest()
794 if (cmd->scan_begin_src == TRIG_FOLLOW && das1800_ai_do_cmdtest()
795 cmd->convert_src == TRIG_TIMER) { das1800_ai_do_cmdtest()
797 arg = cmd->convert_arg; das1800_ai_do_cmdtest()
798 comedi_8254_cascade_ns_to_timer(dev->pacer, &arg, cmd->flags); das1800_ai_do_cmdtest()
799 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, arg); das1800_ai_do_cmdtest()
800 } else if (cmd->convert_src == TRIG_TIMER) { das1800_ai_do_cmdtest()
802 arg = burst_convert_arg(cmd->convert_arg, cmd->flags); das1800_ai_do_cmdtest()
803 err |= comedi_check_trigger_arg_is(&cmd->convert_arg, arg); das1800_ai_do_cmdtest()
805 if (cmd->scan_begin_src == TRIG_TIMER) { das1800_ai_do_cmdtest()
806 arg = cmd->convert_arg * cmd->chanlist_len; das1800_ai_do_cmdtest()
807 err |= comedi_check_trigger_arg_max(&cmd-> das1800_ai_do_cmdtest()
811 arg = cmd->scan_begin_arg; das1800_ai_do_cmdtest()
813 cmd->flags); das1800_ai_do_cmdtest()
814 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, das1800_ai_do_cmdtest()
823 if (cmd->chanlist && cmd->chanlist_len > 0) das1800_ai_do_cmdtest()
824 err |= das1800_ai_check_chanlist(dev, s, cmd); das1800_ai_do_cmdtest()
833 static int control_a_bits(const struct comedi_cmd *cmd) control_a_bits() argument
838 if (cmd->stop_src == TRIG_EXT) control_a_bits()
840 switch (cmd->start_src) { control_a_bits()
855 static int control_c_bits(const struct comedi_cmd *cmd) control_c_bits() argument
863 aref = CR_AREF(cmd->chanlist[0]); control_c_bits()
870 if (CR_RANGE(cmd->chanlist[0]) & UNIPOLAR) control_c_bits()
872 switch (cmd->scan_begin_src) { control_c_bits()
874 switch (cmd->convert_src) { control_c_bits()
907 struct comedi_cmd *cmd = &s->async->cmd; das1800_ai_transfer_size() local
914 switch (cmd->scan_begin_src) { das1800_ai_transfer_size()
916 if (cmd->convert_src == TRIG_TIMER) das1800_ai_transfer_size()
917 samples = ns / cmd->convert_arg; das1800_ai_transfer_size()
920 samples = ns / (cmd->scan_begin_arg * cmd->chanlist_len); das1800_ai_transfer_size()
965 const struct comedi_cmd *cmd) program_chanlist()
972 n = cmd->chanlist_len; program_chanlist()
980 CR_CHAN(cmd->chanlist[i]) | program_chanlist()
981 ((CR_RANGE(cmd->chanlist[i]) & range_mask) << program_chanlist()
996 const struct comedi_cmd *cmd = &async->cmd; das1800_ai_do_cmd() local
1000 if (cmd->flags & (CMDF_WAKE_EOS | CMDF_PRIORITY)) das1800_ai_do_cmd()
1005 if (cmd->flags & CMDF_WAKE_EOS) { das1800_ai_do_cmd()
1016 control_a = control_a_bits(cmd); das1800_ai_do_cmd()
1017 control_c = control_c_bits(cmd); das1800_ai_do_cmd()
1020 program_chanlist(dev, cmd); das1800_ai_do_cmd()
1023 if ((cmd->scan_begin_src == TRIG_FOLLOW || das1800_ai_do_cmd()
1024 cmd->scan_begin_src == TRIG_TIMER) && das1800_ai_do_cmd()
1025 cmd->convert_src == TRIG_TIMER) { das1800_ai_do_cmd()
1031 if (cmd->stop_src == TRIG_EXT) das1800_ai_do_cmd()
1039 outb(cmd->convert_arg / 1000 - 1, das1800_ai_do_cmd()
1041 outb(cmd->chanlist_len - 1, dev->iobase + DAS1800_BURST_LENGTH); das1800_ai_do_cmd()
706 das1800_ai_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) das1800_ai_check_chanlist() argument
727 das1800_ai_do_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) das1800_ai_do_cmdtest() argument
964 program_chanlist(struct comedi_device *dev, const struct comedi_cmd *cmd) program_chanlist() argument
H A Dni_at_a2150.c160 struct comedi_cmd *cmd = &async->cmd; a2150_interrupt() local
195 if (devpriv->count < num_points && cmd->stop_src == TRIG_COUNT) a2150_interrupt()
200 if (cmd->stop_src == TRIG_NONE) { a2150_interrupt()
220 if (cmd->stop_src == TRIG_COUNT) { a2150_interrupt()
373 struct comedi_cmd *cmd) a2150_ai_check_chanlist()
375 unsigned int chan0 = CR_CHAN(cmd->chanlist[0]); a2150_ai_check_chanlist()
376 unsigned int aref0 = CR_AREF(cmd->chanlist[0]); a2150_ai_check_chanlist()
379 if (cmd->chanlist_len == 2 && (chan0 == 1 || chan0 == 3)) { a2150_ai_check_chanlist()
385 if (cmd->chanlist_len == 3) { a2150_ai_check_chanlist()
391 for (i = 1; i < cmd->chanlist_len; i++) { a2150_ai_check_chanlist()
392 unsigned int chan = CR_CHAN(cmd->chanlist[i]); a2150_ai_check_chanlist()
393 unsigned int aref = CR_AREF(cmd->chanlist[i]); a2150_ai_check_chanlist()
414 struct comedi_subdevice *s, struct comedi_cmd *cmd) a2150_ai_cmdtest()
422 err |= comedi_check_trigger_src(&cmd->start_src, TRIG_NOW | TRIG_EXT); a2150_ai_cmdtest()
423 err |= comedi_check_trigger_src(&cmd->scan_begin_src, TRIG_TIMER); a2150_ai_cmdtest()
424 err |= comedi_check_trigger_src(&cmd->convert_src, TRIG_NOW); a2150_ai_cmdtest()
425 err |= comedi_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); a2150_ai_cmdtest()
426 err |= comedi_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE); a2150_ai_cmdtest()
433 err |= comedi_check_trigger_is_unique(cmd->start_src); a2150_ai_cmdtest()
434 err |= comedi_check_trigger_is_unique(cmd->stop_src); a2150_ai_cmdtest()
443 err |= comedi_check_trigger_arg_is(&cmd->start_arg, 0); a2150_ai_cmdtest()
445 if (cmd->convert_src == TRIG_TIMER) { a2150_ai_cmdtest()
446 err |= comedi_check_trigger_arg_min(&cmd->convert_arg, a2150_ai_cmdtest()
450 err |= comedi_check_trigger_arg_min(&cmd->chanlist_len, 1); a2150_ai_cmdtest()
451 err |= comedi_check_trigger_arg_is(&cmd->scan_end_arg, a2150_ai_cmdtest()
452 cmd->chanlist_len); a2150_ai_cmdtest()
454 if (cmd->stop_src == TRIG_COUNT) a2150_ai_cmdtest()
455 err |= comedi_check_trigger_arg_min(&cmd->stop_arg, 1); a2150_ai_cmdtest()
457 err |= comedi_check_trigger_arg_is(&cmd->stop_arg, 0); a2150_ai_cmdtest()
464 if (cmd->scan_begin_src == TRIG_TIMER) { a2150_ai_cmdtest()
465 arg = cmd->scan_begin_arg; a2150_ai_cmdtest()
466 a2150_get_timing(dev, &arg, cmd->flags); a2150_ai_cmdtest()
467 err |= comedi_check_trigger_arg_is(&cmd->scan_begin_arg, arg); a2150_ai_cmdtest()
474 if (cmd->chanlist && cmd->chanlist_len > 0) a2150_ai_cmdtest()
475 err |= a2150_ai_check_chanlist(dev, s, cmd); a2150_ai_cmdtest()
489 struct comedi_cmd *cmd = &async->cmd; a2150_ai_cmd() local
493 if (cmd->flags & CMDF_PRIORITY) { a2150_ai_cmd()
502 if (a2150_set_chanlist(dev, CR_CHAN(cmd->chanlist[0]), a2150_ai_cmd()
503 cmd->chanlist_len) < 0) a2150_ai_cmd()
507 if (CR_AREF(cmd->chanlist[0]) == AREF_OTHER) a2150_ai_cmd()
511 if (CR_AREF(cmd->chanlist[2]) == AREF_OTHER) a2150_ai_cmd()
517 a2150_get_timing(dev, &cmd->scan_begin_arg, cmd->flags); a2150_ai_cmd()
523 devpriv->count = cmd->stop_arg * cmd->chanlist_len; a2150_ai_cmd()
529 desc->size = comedi_bytes_per_sample(s) * cmd->chanlist_len * a2150_ai_cmd()
530 ONE_THIRD_SECOND / cmd->scan_begin_arg; a2150_ai_cmd()
553 if (cmd->start_src == TRIG_NOW && a2150_ai_cmd()
563 if (cmd->start_src == TRIG_EXT) { a2150_ai_cmd()
565 } else if (cmd->start_src == TRIG_OTHER) { a2150_ai_cmd()
573 if (cmd->start_src == TRIG_NOW) a2150_ai_cmd()
371 a2150_ai_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) a2150_ai_check_chanlist() argument
413 a2150_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) a2150_ai_cmdtest() argument
/linux-4.1.27/drivers/media/pci/ivtv/
H A Divtv-mailbox.c37 #define API_RESULT (1 << 1) /* Allow 1 second for this cmd to end */
38 #define API_FAST_RESULT (3 << 1) /* Allow 0.1 second for this cmd to end */
189 static void write_mailbox(volatile struct ivtv_mailbox __iomem *mbox, int cmd, int args, u32 data[]) write_mailbox() argument
193 write_sync(cmd, &mbox->cmd); write_mailbox()
207 IVTV_DEBUG_WARN("Clearing mailbox %d: cmd 0x%08x flags 0x%08x\n", clear_all_mailboxes()
208 i, readl(&mbdata->mbox[i].cmd), readl(&mbdata->mbox[i].flags)); clear_all_mailboxes()
214 static int ivtv_api_call(struct ivtv *itv, int cmd, int args, u32 data[]) ivtv_api_call() argument
216 struct ivtv_mailbox_data *mbdata = (cmd >= 128) ? &itv->enc_mbox : &itv->dec_mbox; ivtv_api_call()
228 cmd < 0 || cmd > 255 || api_info[cmd].name == NULL) { ivtv_api_call()
229 IVTV_ERR("Invalid MB call: cmd = 0x%02x, args = %d\n", cmd, args); ivtv_api_call()
233 if (api_info[cmd].flags & API_HIGH_VOL) { ivtv_api_call()
234 IVTV_DEBUG_HI_MB("MB Call: %s\n", api_info[cmd].name); ivtv_api_call()
237 IVTV_DEBUG_MB("MB Call: %s\n", api_info[cmd].name); ivtv_api_call()
247 if (itv->api_cache[cmd].last_jiffies && ivtv_api_call()
249 itv->api_cache[cmd].last_jiffies + ivtv_api_call()
251 !memcmp(data, itv->api_cache[cmd].data, sizeof(itv->api_cache[cmd].data))) { ivtv_api_call()
252 itv->api_cache[cmd].last_jiffies = jiffies; ivtv_api_call()
256 flags = api_info[cmd].flags; ivtv_api_call()
262 write_mailbox(&mbdata->mbox[mb], cmd, args, data); ivtv_api_call()
267 api_info[cmd].name, mb, readl(&mbdata->mbox[mb].flags)); ivtv_api_call()
269 IVTV_WARN("Could not find free DMA mailbox for %s\n", api_info[cmd].name); ivtv_api_call()
279 IVTV_DEBUG_WARN("No free mailbox found (%s)\n", api_info[cmd].name); ivtv_api_call()
284 write_mailbox(mbox, cmd, args, data); ivtv_api_call()
286 memcpy(itv->api_cache[cmd].data, data, sizeof(itv->api_cache[cmd].data)); ivtv_api_call()
287 itv->api_cache[cmd].last_jiffies = jiffies; ivtv_api_call()
306 IVTV_DEBUG_WARN("Could not get result (%s)\n", api_info[cmd].name); ivtv_api_call()
319 api_info[cmd].name, ivtv_api_call()
329 int ivtv_api(struct ivtv *itv, int cmd, int args, u32 data[]) ivtv_api() argument
331 int res = ivtv_api_call(itv, cmd, args, data); ivtv_api()
336 return (res == -EBUSY) ? ivtv_api_call(itv, cmd, args, data) : res; ivtv_api()
339 int ivtv_api_func(void *priv, u32 cmd, int in, int out, u32 data[CX2341X_MBOX_MAX_DATA]) ivtv_api_func() argument
341 return ivtv_api(priv, cmd, in, data); ivtv_api_func()
344 int ivtv_vapi_result(struct ivtv *itv, u32 data[CX2341X_MBOX_MAX_DATA], int cmd, int args, ...) ivtv_vapi_result() argument
354 return ivtv_api(itv, cmd, args, data); ivtv_vapi_result()
357 int ivtv_vapi(struct ivtv *itv, int cmd, int args, ...) ivtv_vapi() argument
368 return ivtv_api(itv, cmd, args, data); ivtv_vapi()
/linux-4.1.27/net/nfc/
H A Ddigital_core.c117 struct digital_cmd *cmd; digital_wq_cmd_complete() local
124 cmd = list_first_entry_or_null(&ddev->cmd_queue, struct digital_cmd, digital_wq_cmd_complete()
126 if (!cmd) { digital_wq_cmd_complete()
131 list_del(&cmd->queue); digital_wq_cmd_complete()
135 if (!IS_ERR(cmd->resp)) digital_wq_cmd_complete()
137 cmd->resp->data, cmd->resp->len, false); digital_wq_cmd_complete()
139 cmd->cmd_cb(ddev, cmd->cb_context, cmd->resp); digital_wq_cmd_complete()
141 kfree(cmd->mdaa_params); digital_wq_cmd_complete()
142 kfree(cmd); digital_wq_cmd_complete()
150 struct digital_cmd *cmd = arg; digital_send_cmd_complete() local
152 cmd->resp = resp; digital_send_cmd_complete()
160 struct digital_cmd *cmd; digital_wq_cmd() local
168 cmd = list_first_entry_or_null(&ddev->cmd_queue, struct digital_cmd, digital_wq_cmd()
170 if (!cmd || cmd->pending) { digital_wq_cmd()
177 if (cmd->req) digital_wq_cmd()
179 cmd->req->data, cmd->req->len, false); digital_wq_cmd()
181 switch (cmd->type) { digital_wq_cmd()
183 rc = ddev->ops->in_send_cmd(ddev, cmd->req, cmd->timeout, digital_wq_cmd()
184 digital_send_cmd_complete, cmd); digital_wq_cmd()
188 rc = ddev->ops->tg_send_cmd(ddev, cmd->req, cmd->timeout, digital_wq_cmd()
189 digital_send_cmd_complete, cmd); digital_wq_cmd()
193 rc = ddev->ops->tg_listen(ddev, cmd->timeout, digital_wq_cmd()
194 digital_send_cmd_complete, cmd); digital_wq_cmd()
198 params = cmd->mdaa_params; digital_wq_cmd()
200 rc = ddev->ops->tg_listen_mdaa(ddev, params, cmd->timeout, digital_wq_cmd()
201 digital_send_cmd_complete, cmd); digital_wq_cmd()
205 rc = ddev->ops->tg_listen_md(ddev, cmd->timeout, digital_wq_cmd()
206 digital_send_cmd_complete, cmd); digital_wq_cmd()
210 pr_err("Unknown cmd type %d\n", cmd->type); digital_wq_cmd()
220 list_del(&cmd->queue); digital_wq_cmd()
223 kfree_skb(cmd->req); digital_wq_cmd()
224 kfree(cmd->mdaa_params); digital_wq_cmd()
225 kfree(cmd); digital_wq_cmd()
235 struct digital_cmd *cmd; digital_send_cmd() local
237 cmd = kzalloc(sizeof(struct digital_cmd), GFP_KERNEL); digital_send_cmd()
238 if (!cmd) digital_send_cmd()
241 cmd->type = cmd_type; digital_send_cmd()
242 cmd->timeout = timeout; digital_send_cmd()
243 cmd->req = skb; digital_send_cmd()
244 cmd->mdaa_params = params; digital_send_cmd()
245 cmd->cmd_cb = cmd_cb; digital_send_cmd()
246 cmd->cb_context = cb_context; digital_send_cmd()
247 INIT_LIST_HEAD(&cmd->queue); digital_send_cmd()
250 list_add_tail(&cmd->queue, &ddev->cmd_queue); digital_send_cmd()
825 struct digital_cmd *cmd, *n; nfc_digital_unregister_device() local
837 list_for_each_entry_safe(cmd, n, &ddev->cmd_queue, queue) { nfc_digital_unregister_device()
838 list_del(&cmd->queue); nfc_digital_unregister_device()
839 kfree(cmd->mdaa_params); nfc_digital_unregister_device()
840 kfree(cmd); nfc_digital_unregister_device()
/linux-4.1.27/drivers/crypto/vmx/
H A DMakefile14 $(call cmd,perl)
17 $(call cmd,perl)
/linux-4.1.27/drivers/xen/
H A Dfallback.c8 int xen_event_channel_op_compat(int cmd, void *arg) xen_event_channel_op_compat() argument
13 op.cmd = cmd; xen_event_channel_op_compat()
17 switch (cmd) { xen_event_channel_op_compat()
47 int xen_physdev_op_compat(int cmd, void *arg) xen_physdev_op_compat() argument
52 op.cmd = cmd; xen_physdev_op_compat()
56 switch (cmd) { xen_physdev_op_compat()
/linux-4.1.27/drivers/video/fbdev/savage/
H A Dsavagefb_accel.c36 int cmd; savagefb_copyarea() local
41 cmd = BCI_CMD_RECT | BCI_CMD_DEST_GBD | BCI_CMD_SRC_GBD; savagefb_copyarea()
42 BCI_CMD_SET_ROP(cmd, savagefb_rop[0]); savagefb_copyarea()
45 cmd |= BCI_CMD_RECT_XP; savagefb_copyarea()
52 cmd |= BCI_CMD_RECT_YP; savagefb_copyarea()
59 BCI_SEND(cmd); savagefb_copyarea()
68 int cmd, color; savagefb_fillrect() local
78 cmd = BCI_CMD_RECT | BCI_CMD_RECT_XP | BCI_CMD_RECT_YP | savagefb_fillrect()
83 BCI_CMD_SET_ROP(cmd, savagefb_rop[rect->rop]); savagefb_fillrect()
86 BCI_SEND(cmd); savagefb_fillrect()
96 int cmd; savagefb_imageblit() local
115 cmd = BCI_CMD_RECT | BCI_CMD_RECT_XP | BCI_CMD_RECT_YP | savagefb_imageblit()
120 BCI_CMD_SET_ROP(cmd, savagefb_rop[0]); savagefb_imageblit()
127 BCI_SEND(cmd); savagefb_imageblit()
/linux-4.1.27/arch/powerpc/kernel/
H A Dsmp-tbsync.c26 volatile int cmd; member in struct:__anon2361
46 int cmd; smp_generic_take_timebase() local
61 cmd = tbsync->cmd; smp_generic_take_timebase()
65 if (cmd == kExit) smp_generic_take_timebase()
70 if (cmd == kSetAndTest) smp_generic_take_timebase()
77 static int start_contest(int cmd, long offset, int num) start_contest() argument
83 tbsync->cmd = cmd; start_contest()
161 tbsync->cmd = kExit; smp_generic_give_timebase()
/linux-4.1.27/drivers/block/
H A Dnull_blk.c171 static void free_cmd(struct nullb_cmd *cmd) free_cmd() argument
173 put_tag(cmd->nq, cmd->tag); free_cmd()
178 struct nullb_cmd *cmd; __alloc_cmd() local
183 cmd = &nq->cmds[tag]; __alloc_cmd()
184 cmd->tag = tag; __alloc_cmd()
185 cmd->nq = nq; __alloc_cmd()
186 return cmd; __alloc_cmd()
194 struct nullb_cmd *cmd; alloc_cmd() local
197 cmd = __alloc_cmd(nq); alloc_cmd()
198 if (cmd || !can_wait) alloc_cmd()
199 return cmd; alloc_cmd()
203 cmd = __alloc_cmd(nq); alloc_cmd()
204 if (cmd) alloc_cmd()
211 return cmd; alloc_cmd()
214 static void end_cmd(struct nullb_cmd *cmd) end_cmd() argument
218 blk_mq_end_request(cmd->rq, 0); end_cmd()
221 INIT_LIST_HEAD(&cmd->rq->queuelist); end_cmd()
222 blk_end_request_all(cmd->rq, 0); end_cmd()
225 bio_endio(cmd->bio, 0); end_cmd()
229 free_cmd(cmd); end_cmd()
236 struct nullb_cmd *cmd; null_cmd_timer_expired() local
243 cmd = container_of(entry, struct nullb_cmd, ll_list); null_cmd_timer_expired()
245 end_cmd(cmd); null_cmd_timer_expired()
252 static void null_cmd_end_timer(struct nullb_cmd *cmd) null_cmd_end_timer() argument
256 cmd->ll_list.next = NULL; null_cmd_end_timer()
257 if (llist_add(&cmd->ll_list, &cq->list)) { null_cmd_end_timer()
274 static inline void null_handle_cmd(struct nullb_cmd *cmd) null_handle_cmd() argument
281 blk_mq_complete_request(cmd->rq); null_handle_cmd()
284 blk_complete_request(cmd->rq); null_handle_cmd()
290 end_cmd(cmd); null_handle_cmd()
295 end_cmd(cmd); null_handle_cmd()
298 null_cmd_end_timer(cmd); null_handle_cmd()
317 struct nullb_cmd *cmd; null_queue_bio() local
319 cmd = alloc_cmd(nq, 1); null_queue_bio()
320 cmd->bio = bio; null_queue_bio()
322 null_handle_cmd(cmd); null_queue_bio()
329 struct nullb_cmd *cmd; null_rq_prep_fn() local
331 cmd = alloc_cmd(nq, 0); null_rq_prep_fn()
332 if (cmd) { null_rq_prep_fn()
333 cmd->rq = req; null_rq_prep_fn()
334 req->special = cmd; null_rq_prep_fn()
346 struct nullb_cmd *cmd = rq->special; null_request_fn() local
349 null_handle_cmd(cmd); null_request_fn()
357 struct nullb_cmd *cmd = blk_mq_rq_to_pdu(bd->rq); null_queue_rq() local
359 cmd->rq = bd->rq; null_queue_rq()
360 cmd->nq = hctx->driver_data; null_queue_rq()
364 null_handle_cmd(cmd); null_queue_rq()
426 struct nullb_cmd *cmd; setup_commands() local
429 nq->cmds = kzalloc(nq->queue_depth * sizeof(*cmd), GFP_KERNEL); setup_commands()
441 cmd = &nq->cmds[i]; setup_commands()
442 INIT_LIST_HEAD(&cmd->list); setup_commands()
443 cmd->ll_list.next = NULL; setup_commands()
444 cmd->tag = -1U; setup_commands()
/linux-4.1.27/arch/cris/arch-v10/kernel/
H A Ddma.c231 *R_DMA_CH0_CMD = IO_STATE(R_DMA_CH0_CMD, cmd, reset); cris_free_dma()
232 while (IO_EXTRACT(R_DMA_CH0_CMD, cmd, *R_DMA_CH0_CMD) == cris_free_dma()
233 IO_STATE_VALUE(R_DMA_CH0_CMD, cmd, reset)); cris_free_dma()
236 *R_DMA_CH1_CMD = IO_STATE(R_DMA_CH1_CMD, cmd, reset); cris_free_dma()
237 while (IO_EXTRACT(R_DMA_CH1_CMD, cmd, *R_DMA_CH1_CMD) == cris_free_dma()
238 IO_STATE_VALUE(R_DMA_CH1_CMD, cmd, reset)); cris_free_dma()
241 *R_DMA_CH2_CMD = IO_STATE(R_DMA_CH2_CMD, cmd, reset); cris_free_dma()
242 while (IO_EXTRACT(R_DMA_CH2_CMD, cmd, *R_DMA_CH2_CMD) == cris_free_dma()
243 IO_STATE_VALUE(R_DMA_CH2_CMD, cmd, reset)); cris_free_dma()
246 *R_DMA_CH3_CMD = IO_STATE(R_DMA_CH3_CMD, cmd, reset); cris_free_dma()
247 while (IO_EXTRACT(R_DMA_CH3_CMD, cmd, *R_DMA_CH3_CMD) == cris_free_dma()
248 IO_STATE_VALUE(R_DMA_CH3_CMD, cmd, reset)); cris_free_dma()
251 *R_DMA_CH4_CMD = IO_STATE(R_DMA_CH4_CMD, cmd, reset); cris_free_dma()
252 while (IO_EXTRACT(R_DMA_CH4_CMD, cmd, *R_DMA_CH4_CMD) == cris_free_dma()
253 IO_STATE_VALUE(R_DMA_CH4_CMD, cmd, reset)); cris_free_dma()
256 *R_DMA_CH5_CMD = IO_STATE(R_DMA_CH5_CMD, cmd, reset); cris_free_dma()
257 while (IO_EXTRACT(R_DMA_CH5_CMD, cmd, *R_DMA_CH5_CMD) == cris_free_dma()
258 IO_STATE_VALUE(R_DMA_CH5_CMD, cmd, reset)); cris_free_dma()
261 *R_DMA_CH6_CMD = IO_STATE(R_DMA_CH6_CMD, cmd, reset); cris_free_dma()
262 while (IO_EXTRACT(R_DMA_CH6_CMD, cmd, *R_DMA_CH6_CMD) == cris_free_dma()
263 IO_STATE_VALUE(R_DMA_CH6_CMD, cmd, reset)); cris_free_dma()
266 *R_DMA_CH7_CMD = IO_STATE(R_DMA_CH7_CMD, cmd, reset); cris_free_dma()
267 while (IO_EXTRACT(R_DMA_CH7_CMD, cmd, *R_DMA_CH7_CMD) == cris_free_dma()
268 IO_STATE_VALUE(R_DMA_CH7_CMD, cmd, reset)); cris_free_dma()
271 *R_DMA_CH8_CMD = IO_STATE(R_DMA_CH8_CMD, cmd, reset); cris_free_dma()
272 while (IO_EXTRACT(R_DMA_CH8_CMD, cmd, *R_DMA_CH8_CMD) == cris_free_dma()
273 IO_STATE_VALUE(R_DMA_CH8_CMD, cmd, reset)); cris_free_dma()
276 *R_DMA_CH9_CMD = IO_STATE(R_DMA_CH9_CMD, cmd, reset); cris_free_dma()
277 while (IO_EXTRACT(R_DMA_CH9_CMD, cmd, *R_DMA_CH9_CMD) == cris_free_dma()
278 IO_STATE_VALUE(R_DMA_CH9_CMD, cmd, reset)); cris_free_dma()
/linux-4.1.27/drivers/crypto/ccp/
H A Dccp-dev.c37 struct ccp_cmd *cmd; member in struct:ccp_tasklet_data
73 * @cmd: ccp_cmd struct to be processed
75 * Queue a cmd to be processed by the CCP. If queueing the cmd
76 * would exceed the defined length of the cmd queue the cmd will
81 * called to notify the caller of completion (if the cmd was not
82 * backlogged) or advancement out of the backlog. If the cmd has
87 * The cmd has been successfully queued if:
91 int ccp_enqueue_cmd(struct ccp_cmd *cmd) ccp_enqueue_cmd() argument
102 if (!cmd->callback) ccp_enqueue_cmd()
105 cmd->ccp = ccp; ccp_enqueue_cmd()
113 if (cmd->flags & CCP_CMD_MAY_BACKLOG) ccp_enqueue_cmd()
114 list_add_tail(&cmd->entry, &ccp->backlog); ccp_enqueue_cmd()
118 list_add_tail(&cmd->entry, &ccp->cmd); ccp_enqueue_cmd()
143 struct ccp_cmd *cmd = container_of(work, struct ccp_cmd, work); ccp_do_cmd_backlog() local
144 struct ccp_device *ccp = cmd->ccp; ccp_do_cmd_backlog()
148 cmd->callback(cmd->data, -EINPROGRESS); ccp_do_cmd_backlog()
153 list_add_tail(&cmd->entry, &ccp->cmd); ccp_do_cmd_backlog()
173 struct ccp_cmd *cmd = NULL; ccp_dequeue_cmd() local
193 cmd = list_first_entry(&ccp->cmd, struct ccp_cmd, entry); ccp_dequeue_cmd()
194 list_del(&cmd->entry); ccp_dequeue_cmd()
212 return cmd; ccp_dequeue_cmd()
218 struct ccp_cmd *cmd = tdata->cmd; ccp_do_cmd_complete() local
220 cmd->callback(cmd->data, cmd->ret); ccp_do_cmd_complete()
227 struct ccp_cmd *cmd; ccp_cmd_queue_thread() local
239 cmd = ccp_dequeue_cmd(cmd_q); ccp_cmd_queue_thread()
240 if (!cmd) ccp_cmd_queue_thread()
246 cmd->ret = ccp_run_cmd(cmd_q, cmd); ccp_cmd_queue_thread()
249 tdata.cmd = cmd; ccp_cmd_queue_thread()
303 INIT_LIST_HEAD(&ccp->cmd); ccp_alloc_struct()
470 struct ccp_cmd *cmd; ccp_destroy() local
506 /* Flush the cmd and backlog queue */ ccp_destroy()
507 while (!list_empty(&ccp->cmd)) { ccp_destroy()
509 cmd = list_first_entry(&ccp->cmd, struct ccp_cmd, entry); ccp_destroy()
510 list_del(&cmd->entry); ccp_destroy()
511 cmd->callback(cmd->data, -ENODEV); ccp_destroy()
515 cmd = list_first_entry(&ccp->backlog, struct ccp_cmd, entry); ccp_destroy()
516 list_del(&cmd->entry); ccp_destroy()
517 cmd->callback(cmd->data, -ENODEV); ccp_destroy()
H A Dccp-crypto-main.c42 * than one cmd at a time. Therefore we must maintain a cmd list to insure
59 struct ccp_cmd *cmd; member in struct:ccp_crypto_cmd
98 /* Held cmds will be after the current cmd in the queue so start ccp_crypto_cmd_complete()
99 * searching for a cmd with a matching tfm for submission. ccp_crypto_cmd_complete()
110 * Because cmds can be executed from any point in the cmd list ccp_crypto_cmd_complete()
114 /* Skip over this cmd if it is the next backlog cmd */ ccp_crypto_cmd_complete()
122 /* Skip over this cmd if it is now the next backlog cmd */ ccp_crypto_cmd_complete()
127 /* Remove the cmd entry from the list of cmds */ ccp_crypto_cmd_complete()
155 * the completion callbacks and retrieve the next cmd (cmd with ccp_crypto_complete()
174 /* Submit the next cmd */ ccp_crypto_complete()
176 /* Since we have already queued the cmd, we must indicate that ccp_crypto_complete()
179 held->cmd->flags |= CCP_CMD_MAY_BACKLOG; ccp_crypto_complete()
180 ret = ccp_enqueue_cmd(held->cmd); ccp_crypto_complete()
212 /* Check if the cmd can/should be queued */ ccp_crypto_enqueue_cmd()
215 if (!(crypto_cmd->cmd->flags & CCP_CMD_MAY_BACKLOG)) ccp_crypto_enqueue_cmd()
219 /* Look for an entry with the same tfm. If there is a cmd ccp_crypto_enqueue_cmd()
220 * with the same tfm in the list then the current cmd cannot ccp_crypto_enqueue_cmd()
232 ret = ccp_enqueue_cmd(crypto_cmd->cmd); ccp_crypto_enqueue_cmd()
236 !(crypto_cmd->cmd->flags & CCP_CMD_MAY_BACKLOG)) ccp_crypto_enqueue_cmd()
266 * @cmd: ccp_cmd struct to be sent to the CCP
269 struct ccp_cmd *cmd) ccp_crypto_enqueue_request()
285 crypto_cmd->cmd = cmd; ccp_crypto_enqueue_request()
289 cmd->callback = ccp_crypto_complete; ccp_crypto_enqueue_request()
290 cmd->data = crypto_cmd; ccp_crypto_enqueue_request()
293 cmd->flags |= CCP_CMD_MAY_BACKLOG; ccp_crypto_enqueue_request()
295 cmd->flags &= ~CCP_CMD_MAY_BACKLOG; ccp_crypto_enqueue_request()
268 ccp_crypto_enqueue_request(struct crypto_async_request *req, struct ccp_cmd *cmd) ccp_crypto_enqueue_request() argument
/linux-4.1.27/drivers/gpu/drm/udl/
H A Dudl_transfer.c115 * the rlx command simply assumes alternating raw and rl spans within one cmd.
131 uint8_t *cmd = *command_buffer_ptr; udl_compress_hline16() local
134 (cmd_buffer_end - MIN_RLX_CMD_BYTES > cmd)) { udl_compress_hline16()
141 prefetchw((void *) cmd); /* pull in one cache line at least */ udl_compress_hline16()
143 *cmd++ = 0xaf; udl_compress_hline16()
144 *cmd++ = 0x6b; udl_compress_hline16()
145 *cmd++ = (uint8_t) ((dev_addr >> 16) & 0xFF); udl_compress_hline16()
146 *cmd++ = (uint8_t) ((dev_addr >> 8) & 0xFF); udl_compress_hline16()
147 *cmd++ = (uint8_t) ((dev_addr) & 0xFF); udl_compress_hline16()
149 cmd_pixels_count_byte = cmd++; /* we'll know this later */ udl_compress_hline16()
152 raw_pixels_count_byte = cmd++; /* we'll know this later */ udl_compress_hline16()
157 (int)(cmd_buffer_end - cmd) / 2))) * bpp; udl_compress_hline16()
166 *(uint16_t *)cmd = cpu_to_be16(pixel_val16); udl_compress_hline16()
168 cmd += 2; udl_compress_hline16()
184 *cmd++ = (((pixel - start) / bpp) - 1) & 0xFF; udl_compress_hline16()
188 raw_pixels_count_byte = cmd++; udl_compress_hline16()
201 if (cmd_buffer_end <= MIN_RLX_CMD_BYTES + cmd) { udl_compress_hline16()
203 if (cmd_buffer_end > cmd) udl_compress_hline16()
204 memset(cmd, 0xAF, cmd_buffer_end - cmd); udl_compress_hline16()
205 cmd = (uint8_t *) cmd_buffer_end; udl_compress_hline16()
208 *command_buffer_ptr = cmd; udl_compress_hline16()
230 u8 *cmd = *urb_buf_ptr; udl_render_hline() local
243 (u8 **) &cmd, (u8 *) cmd_end, bpp); udl_render_hline()
245 if (cmd >= cmd_end) { udl_render_hline()
246 int len = cmd - (u8 *) urb->transfer_buffer; udl_render_hline()
254 cmd = urb->transfer_buffer; udl_render_hline()
255 cmd_end = &cmd[urb->transfer_buffer_length]; udl_render_hline()
259 *urb_buf_ptr = cmd; udl_render_hline()
/linux-4.1.27/drivers/w1/
H A Dw1_netlink.c47 struct w1_netlink_cmd *cmd; /* advances as cmds are appened */ member in struct:w1_cb_block
109 block->cmd = NULL; w1_reply_make_space()
148 /* Append cmd to msg, include cmd->data as well. This is because
153 struct w1_netlink_cmd *cmd) w1_netlink_queue_cmd()
157 sizeof(struct w1_netlink_msg) + sizeof(*cmd) + cmd->len); w1_netlink_queue_cmd()
160 * in trying to bundle this cmd after an existing one, because w1_netlink_queue_cmd()
167 block->cmd = (struct w1_netlink_cmd *)(block->msg->data); w1_netlink_queue_cmd()
169 space = sizeof(*cmd) + cmd->len; w1_netlink_queue_cmd()
170 if (block->cmd != cmd) w1_netlink_queue_cmd()
171 memcpy(block->cmd, cmd, space); w1_netlink_queue_cmd()
192 struct w1_netlink_cmd *cmd = (struct w1_netlink_cmd *)block->msg->data; w1_netlink_queue_status() local
193 memcpy(cmd, req_cmd, sizeof(*cmd)); w1_netlink_queue_status()
194 block->cn->len += sizeof(*cmd); w1_netlink_queue_status()
195 block->msg->len += sizeof(*cmd); w1_netlink_queue_status()
196 cmd->len = 0; w1_netlink_queue_status()
256 struct w1_netlink_cmd *cache_cmd = block->cmd; w1_send_slave()
261 /* Add cmd back if the packet was sent */ w1_send_slave()
262 if (!block->cmd) { w1_send_slave()
267 data = (u64 *)(block->cmd->data + block->cmd->len); w1_send_slave()
272 block->cmd->len += sizeof(*data); w1_send_slave()
291 if (req_cmd->cmd == W1_CMD_LIST_SLAVES) { w1_get_slaves()
300 w1_search_process_cb(dev, req_cmd->cmd == W1_CMD_ALARM_SEARCH ? w1_get_slaves()
308 struct w1_netlink_cmd *cmd) w1_process_command_io()
312 switch (cmd->cmd) { w1_process_command_io()
314 w1_touch_block(dev, cmd->data, cmd->len); w1_process_command_io()
315 w1_netlink_queue_cmd(dev->priv, cmd); w1_process_command_io()
318 w1_read_block(dev, cmd->data, cmd->len); w1_process_command_io()
319 w1_netlink_queue_cmd(dev->priv, cmd); w1_process_command_io()
322 w1_write_block(dev, cmd->data, cmd->len); w1_process_command_io()
333 struct w1_netlink_cmd *cmd) w1_process_command_addremove()
339 if (cmd->len != sizeof(*id)) w1_process_command_addremove()
342 id = (struct w1_reg_num *)cmd->data; w1_process_command_addremove()
345 switch (cmd->cmd) { w1_process_command_addremove()
374 switch (req_cmd->cmd) { w1_process_command_master()
407 struct w1_netlink_cmd *cmd) w1_process_command_slave()
409 dev_dbg(&sl->master->dev, "%s: %02x.%012llx.%02x: cmd=%02x, len=%u.\n", w1_process_command_slave()
411 sl->reg_num.crc, cmd->cmd, cmd->len); w1_process_command_slave()
413 return w1_process_command_io(sl->master, cmd); w1_process_command_slave()
469 struct w1_netlink_cmd *cmd = (struct w1_netlink_cmd *)node->msg->data; w1_process_cb() local
478 if (cmd->len + sizeof(struct w1_netlink_cmd) > mlen) { w1_process_cb()
484 err = w1_process_command_slave(sl, cmd); w1_process_cb()
486 err = w1_process_command_master(dev, cmd); w1_process_cb()
489 w1_netlink_queue_status(node->block, node->msg, cmd, err); w1_process_cb()
492 len = sizeof(*cmd) + cmd->len; w1_process_cb()
493 cmd = (struct w1_netlink_cmd *)((u8 *)cmd + len); w1_process_cb()
497 if (!cmd || err) w1_process_cb()
498 w1_netlink_queue_status(node->block, node->msg, cmd, err); w1_process_cb()
520 struct w1_netlink_cmd *cmd = (struct w1_netlink_cmd *)msg->data; w1_list_count_cmds() local
525 if (cmd->len + sizeof(struct w1_netlink_cmd) > mlen) w1_list_count_cmds()
528 switch (cmd->cmd) { w1_list_count_cmds()
535 len = sizeof(*cmd) + cmd->len; w1_list_count_cmds()
536 cmd = (struct w1_netlink_cmd *)((u8 *)cmd + len); w1_list_count_cmds()
611 * one node per cmd to point into the original message, w1_cn_callback()
152 w1_netlink_queue_cmd(struct w1_cb_block *block, struct w1_netlink_cmd *cmd) w1_netlink_queue_cmd() argument
307 w1_process_command_io(struct w1_master *dev, struct w1_netlink_cmd *cmd) w1_process_command_io() argument
332 w1_process_command_addremove(struct w1_master *dev, struct w1_netlink_cmd *cmd) w1_process_command_addremove() argument
406 w1_process_command_slave(struct w1_slave *sl, struct w1_netlink_cmd *cmd) w1_process_command_slave() argument
/linux-4.1.27/drivers/net/ethernet/mellanox/mlx4/
H A Den_ethtool.c714 struct ethtool_cmd *cmd) ethtool_get_ptys_settings()
742 cmd->supported = 0; ethtool_get_ptys_settings()
743 cmd->advertising = 0; ethtool_get_ptys_settings()
745 cmd->supported |= ptys_get_supported_port(&ptys_reg); ethtool_get_ptys_settings()
748 cmd->supported |= ptys2ethtool_link_modes(eth_proto, SUPPORTED); ethtool_get_ptys_settings()
751 cmd->advertising |= ptys2ethtool_link_modes(eth_proto, ADVERTISED); ethtool_get_ptys_settings()
753 cmd->supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause; ethtool_get_ptys_settings()
754 cmd->advertising |= (priv->prof->tx_pause) ? ADVERTISED_Pause : 0; ethtool_get_ptys_settings()
756 cmd->advertising |= (priv->prof->tx_pause ^ priv->prof->rx_pause) ? ethtool_get_ptys_settings()
759 cmd->port = ptys_get_active_port(&ptys_reg); ethtool_get_ptys_settings()
760 cmd->transceiver = (SUPPORTED_TP & cmd->supported) ? ethtool_get_ptys_settings()
764 cmd->supported |= SUPPORTED_Autoneg; ethtool_get_ptys_settings()
765 cmd->advertising |= ADVERTISED_Autoneg; ethtool_get_ptys_settings()
768 cmd->autoneg = (priv->port_state.flags & MLX4_EN_PORT_ANC) ? ethtool_get_ptys_settings()
772 cmd->lp_advertising = ptys2ethtool_link_modes(eth_proto, ADVERTISED); ethtool_get_ptys_settings()
774 cmd->lp_advertising |= (priv->port_state.flags & MLX4_EN_PORT_ANC) ? ethtool_get_ptys_settings()
777 cmd->phy_address = 0; ethtool_get_ptys_settings()
778 cmd->mdio_support = 0; ethtool_get_ptys_settings()
779 cmd->maxtxpkt = 0; ethtool_get_ptys_settings()
780 cmd->maxrxpkt = 0; ethtool_get_ptys_settings()
781 cmd->eth_tp_mdix = ETH_TP_MDI_INVALID; ethtool_get_ptys_settings()
782 cmd->eth_tp_mdix_ctrl = ETH_TP_MDI_AUTO; ethtool_get_ptys_settings()
788 struct ethtool_cmd *cmd) ethtool_get_default_settings()
793 cmd->autoneg = AUTONEG_DISABLE; ethtool_get_default_settings()
794 cmd->supported = SUPPORTED_10000baseT_Full; ethtool_get_default_settings()
795 cmd->advertising = ADVERTISED_10000baseT_Full; ethtool_get_default_settings()
799 cmd->port = PORT_FIBRE; ethtool_get_default_settings()
800 cmd->transceiver = XCVR_EXTERNAL; ethtool_get_default_settings()
801 cmd->supported |= SUPPORTED_FIBRE; ethtool_get_default_settings()
802 cmd->advertising |= ADVERTISED_FIBRE; ethtool_get_default_settings()
804 cmd->port = PORT_TP; ethtool_get_default_settings()
805 cmd->transceiver = XCVR_INTERNAL; ethtool_get_default_settings()
806 cmd->supported |= SUPPORTED_TP; ethtool_get_default_settings()
807 cmd->advertising |= ADVERTISED_TP; ethtool_get_default_settings()
809 cmd->port = -1; ethtool_get_default_settings()
810 cmd->transceiver = -1; ethtool_get_default_settings()
814 static int mlx4_en_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) mlx4_en_get_settings() argument
827 ret = ethtool_get_ptys_settings(dev, cmd); mlx4_en_get_settings()
829 ethtool_get_default_settings(dev, cmd); mlx4_en_get_settings()
832 ethtool_cmd_speed_set(cmd, priv->port_state.link_speed); mlx4_en_get_settings()
833 cmd->duplex = DUPLEX_FULL; mlx4_en_get_settings()
835 ethtool_cmd_speed_set(cmd, SPEED_UNKNOWN); mlx4_en_get_settings()
836 cmd->duplex = DUPLEX_UNKNOWN; mlx4_en_get_settings()
860 static int mlx4_en_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) mlx4_en_set_settings() argument
867 u32 ptys_adv = ethtool2ptys_link_modes(cmd->advertising, ADVERTISED); mlx4_en_set_settings()
868 int speed = ethtool_cmd_speed(cmd); mlx4_en_set_settings()
871 speed, cmd->advertising, cmd->autoneg, cmd->duplex); mlx4_en_set_settings()
874 (cmd->duplex == DUPLEX_HALF)) mlx4_en_set_settings()
888 proto_admin = cmd->autoneg == AUTONEG_ENABLE ? mlx4_en_set_settings()
1210 struct ethtool_rxnfc *cmd) mlx4_en_validate_flow()
1216 if (cmd->fs.location >= MAX_NUM_OF_FS_RULES) mlx4_en_validate_flow()
1219 if (cmd->fs.flow_type & FLOW_MAC_EXT) { mlx4_en_validate_flow()
1221 if (!is_broadcast_ether_addr(cmd->fs.m_ext.h_dest)) mlx4_en_validate_flow()
1225 switch (cmd->fs.flow_type & ~(FLOW_EXT | FLOW_MAC_EXT)) { mlx4_en_validate_flow()
1228 if (cmd->fs.m_u.tcp_ip4_spec.tos) mlx4_en_validate_flow()
1230 l4_mask = &cmd->fs.m_u.tcp_ip4_spec; mlx4_en_validate_flow()
1239 l3_mask = &cmd->fs.m_u.usr_ip4_spec; mlx4_en_validate_flow()
1241 cmd->fs.h_u.usr_ip4_spec.ip_ver != ETH_RX_NFC_IP4 || mlx4_en_validate_flow()
1248 eth_mask = &cmd->fs.m_u.ether_spec; mlx4_en_validate_flow()
1264 if ((cmd->fs.flow_type & FLOW_EXT)) { mlx4_en_validate_flow()
1265 if (cmd->fs.m_ext.vlan_etype || mlx4_en_validate_flow()
1266 !((cmd->fs.m_ext.vlan_tci & cpu_to_be16(VLAN_VID_MASK)) == mlx4_en_validate_flow()
1268 (cmd->fs.m_ext.vlan_tci & cpu_to_be16(VLAN_VID_MASK)) == mlx4_en_validate_flow()
1272 if (cmd->fs.m_ext.vlan_tci) { mlx4_en_validate_flow()
1273 if (be16_to_cpu(cmd->fs.h_ext.vlan_tci) >= VLAN_N_VID) mlx4_en_validate_flow()
1282 static int mlx4_en_ethtool_add_mac_rule(struct ethtool_rxnfc *cmd, mlx4_en_ethtool_add_mac_rule() argument
1294 if ((cmd->fs.flow_type & FLOW_EXT) && mlx4_en_ethtool_add_mac_rule()
1295 (cmd->fs.m_ext.vlan_tci & cpu_to_be16(VLAN_VID_MASK))) { mlx4_en_ethtool_add_mac_rule()
1296 spec_l2->eth.vlan_id = cmd->fs.h_ext.vlan_tci; mlx4_en_ethtool_add_mac_rule()
1306 struct ethtool_rxnfc *cmd, mlx4_en_ethtool_add_mac_rule_by_ipv4()
1315 if (cmd->fs.flow_type & FLOW_MAC_EXT) mlx4_en_ethtool_add_mac_rule_by_ipv4()
1316 memcpy(&mac, cmd->fs.h_ext.h_dest, ETH_ALEN); mlx4_en_ethtool_add_mac_rule_by_ipv4()
1323 return mlx4_en_ethtool_add_mac_rule(cmd, rule_list_h, spec_l2, &mac[0]); mlx4_en_ethtool_add_mac_rule_by_ipv4()
1330 struct ethtool_rxnfc *cmd, add_ip_rule()
1336 struct ethtool_usrip4_spec *l3_mask = &cmd->fs.m_u.usr_ip4_spec; add_ip_rule()
1345 err = mlx4_en_ethtool_add_mac_rule_by_ipv4(priv, cmd, list_h, spec_l2, add_ip_rule()
1346 cmd->fs.h_u. add_ip_rule()
1351 spec_l3->ipv4.src_ip = cmd->fs.h_u.usr_ip4_spec.ip4src; add_ip_rule()
1354 spec_l3->ipv4.dst_ip = cmd->fs.h_u.usr_ip4_spec.ip4dst; add_ip_rule()
1368 struct ethtool_rxnfc *cmd, add_tcp_udp_rule()
1375 struct ethtool_tcpip4_spec *l4_mask = &cmd->fs.m_u.tcp_ip4_spec; add_tcp_udp_rule()
1388 err = mlx4_en_ethtool_add_mac_rule_by_ipv4(priv, cmd, list_h, add_tcp_udp_rule()
1390 cmd->fs.h_u. add_tcp_udp_rule()
1395 spec_l3->ipv4.src_ip = cmd->fs.h_u.tcp_ip4_spec.ip4src; add_tcp_udp_rule()
1396 spec_l3->ipv4.dst_ip = cmd->fs.h_u.tcp_ip4_spec.ip4dst; add_tcp_udp_rule()
1397 spec_l4->tcp_udp.src_port = cmd->fs.h_u.tcp_ip4_spec.psrc; add_tcp_udp_rule()
1398 spec_l4->tcp_udp.dst_port = cmd->fs.h_u.tcp_ip4_spec.pdst; add_tcp_udp_rule()
1400 err = mlx4_en_ethtool_add_mac_rule_by_ipv4(priv, cmd, list_h, add_tcp_udp_rule()
1402 cmd->fs.h_u. add_tcp_udp_rule()
1407 spec_l3->ipv4.src_ip = cmd->fs.h_u.udp_ip4_spec.ip4src; add_tcp_udp_rule()
1408 spec_l3->ipv4.dst_ip = cmd->fs.h_u.udp_ip4_spec.ip4dst; add_tcp_udp_rule()
1409 spec_l4->tcp_udp.src_port = cmd->fs.h_u.udp_ip4_spec.psrc; add_tcp_udp_rule()
1410 spec_l4->tcp_udp.dst_port = cmd->fs.h_u.udp_ip4_spec.pdst; add_tcp_udp_rule()
1436 struct ethtool_rxnfc *cmd, mlx4_en_ethtool_to_net_trans_rule()
1444 err = mlx4_en_validate_flow(dev, cmd); mlx4_en_ethtool_to_net_trans_rule()
1448 switch (cmd->fs.flow_type & ~(FLOW_EXT | FLOW_MAC_EXT)) { mlx4_en_ethtool_to_net_trans_rule()
1454 eth_spec = &cmd->fs.h_u.ether_spec; mlx4_en_ethtool_to_net_trans_rule()
1455 mlx4_en_ethtool_add_mac_rule(cmd, rule_list_h, spec_l2, mlx4_en_ethtool_to_net_trans_rule()
1462 err = add_ip_rule(priv, cmd, rule_list_h); mlx4_en_ethtool_to_net_trans_rule()
1465 err = add_tcp_udp_rule(priv, cmd, rule_list_h, TCP_V4_FLOW); mlx4_en_ethtool_to_net_trans_rule()
1468 err = add_tcp_udp_rule(priv, cmd, rule_list_h, UDP_V4_FLOW); mlx4_en_ethtool_to_net_trans_rule()
1476 struct ethtool_rxnfc *cmd) mlx4_en_flow_replace()
1493 rule.priority = MLX4_DOMAIN_ETHTOOL | cmd->fs.location; mlx4_en_flow_replace()
1497 if (cmd->fs.ring_cookie == RX_CLS_FLOW_DISC) mlx4_en_flow_replace()
1499 else if (cmd->fs.ring_cookie & EN_ETHTOOL_QP_ATTACH) { mlx4_en_flow_replace()
1500 qpn = cmd->fs.ring_cookie & (EN_ETHTOOL_QP_ATTACH - 1); mlx4_en_flow_replace()
1502 if (cmd->fs.ring_cookie >= priv->rx_ring_num) { mlx4_en_flow_replace()
1504 cmd->fs.ring_cookie); mlx4_en_flow_replace()
1507 qpn = priv->rss_map.qps[cmd->fs.ring_cookie].qpn; mlx4_en_flow_replace()
1510 cmd->fs.ring_cookie); mlx4_en_flow_replace()
1515 err = mlx4_en_ethtool_to_net_trans_rule(dev, cmd, &rule.list); mlx4_en_flow_replace()
1519 loc_rule = &priv->ethtool_rules[cmd->fs.location]; mlx4_en_flow_replace()
1524 cmd->fs.location, loc_rule->id); mlx4_en_flow_replace()
1535 cmd->fs.location); mlx4_en_flow_replace()
1539 memcpy(&loc_rule->flow_spec, &cmd->fs, mlx4_en_flow_replace()
1552 struct ethtool_rxnfc *cmd) mlx4_en_flow_detach()
1558 if (cmd->fs.location >= MAX_NUM_OF_FS_RULES) mlx4_en_flow_detach()
1561 rule = &priv->ethtool_rules[cmd->fs.location]; mlx4_en_flow_detach()
1570 cmd->fs.location, rule->id); mlx4_en_flow_detach()
1581 static int mlx4_en_get_flow(struct net_device *dev, struct ethtool_rxnfc *cmd, mlx4_en_get_flow() argument
1593 memcpy(&cmd->fs, &rule->flow_spec, mlx4_en_get_flow()
1613 static int mlx4_en_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd, mlx4_en_get_rxnfc() argument
1621 if ((cmd->cmd == ETHTOOL_GRXCLSRLCNT || mlx4_en_get_rxnfc()
1622 cmd->cmd == ETHTOOL_GRXCLSRULE || mlx4_en_get_rxnfc()
1623 cmd->cmd == ETHTOOL_GRXCLSRLALL) && mlx4_en_get_rxnfc()
1628 switch (cmd->cmd) { mlx4_en_get_rxnfc()
1630 cmd->data = priv->rx_ring_num; mlx4_en_get_rxnfc()
1633 cmd->rule_cnt = mlx4_en_get_num_flows(priv); mlx4_en_get_rxnfc()
1636 err = mlx4_en_get_flow(dev, cmd, cmd->fs.location); mlx4_en_get_rxnfc()
1639 while ((!err || err == -ENOENT) && priority < cmd->rule_cnt) { mlx4_en_get_rxnfc()
1640 err = mlx4_en_get_flow(dev, cmd, i); mlx4_en_get_rxnfc()
1655 static int mlx4_en_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd) mlx4_en_set_rxnfc() argument
1665 switch (cmd->cmd) { mlx4_en_set_rxnfc()
1667 err = mlx4_en_flow_replace(dev, cmd); mlx4_en_set_rxnfc()
1670 err = mlx4_en_flow_detach(dev, cmd); mlx4_en_set_rxnfc()
1673 en_warn(priv, "Unsupported ethtool command. (%d)\n", cmd->cmd); mlx4_en_set_rxnfc()
713 ethtool_get_ptys_settings(struct net_device *dev, struct ethtool_cmd *cmd) ethtool_get_ptys_settings() argument
787 ethtool_get_default_settings(struct net_device *dev, struct ethtool_cmd *cmd) ethtool_get_default_settings() argument
1209 mlx4_en_validate_flow(struct net_device *dev, struct ethtool_rxnfc *cmd) mlx4_en_validate_flow() argument
1305 mlx4_en_ethtool_add_mac_rule_by_ipv4(struct mlx4_en_priv *priv, struct ethtool_rxnfc *cmd, struct list_head *rule_list_h, struct mlx4_spec_list *spec_l2, __be32 ipv4_dst) mlx4_en_ethtool_add_mac_rule_by_ipv4() argument
1329 add_ip_rule(struct mlx4_en_priv *priv, struct ethtool_rxnfc *cmd, struct list_head *list_h) add_ip_rule() argument
1367 add_tcp_udp_rule(struct mlx4_en_priv *priv, struct ethtool_rxnfc *cmd, struct list_head *list_h, int proto) add_tcp_udp_rule() argument
1435 mlx4_en_ethtool_to_net_trans_rule(struct net_device *dev, struct ethtool_rxnfc *cmd, struct list_head *rule_list_h) mlx4_en_ethtool_to_net_trans_rule() argument
1475 mlx4_en_flow_replace(struct net_device *dev, struct ethtool_rxnfc *cmd) mlx4_en_flow_replace() argument
1551 mlx4_en_flow_detach(struct net_device *dev, struct ethtool_rxnfc *cmd) mlx4_en_flow_detach() argument
/linux-4.1.27/arch/cris/arch-v32/drivers/pci/
H A Dbios.c53 u16 cmd, old_cmd; pcibios_enable_resources() local
57 pci_read_config_word(dev, PCI_COMMAND, &cmd); pcibios_enable_resources()
58 old_cmd = cmd; pcibios_enable_resources()
70 cmd |= PCI_COMMAND_IO; pcibios_enable_resources()
72 cmd |= PCI_COMMAND_MEMORY; pcibios_enable_resources()
75 cmd |= PCI_COMMAND_MEMORY; pcibios_enable_resources()
76 if (cmd != old_cmd) { pcibios_enable_resources()
77 printk("PCI: Enabling device %s (%04x -> %04x)\n", pci_name(dev), old_cmd, cmd); pcibios_enable_resources()
78 pci_write_config_word(dev, PCI_COMMAND, cmd); pcibios_enable_resources()
/linux-4.1.27/drivers/staging/unisys/uislib/
H A Duislib.c157 bus_no = msg->cmd.create_bus.bus_no; create_bus()
158 dev_count = msg->cmd.create_bus.dev_count; create_bus()
189 bus->bus_inst_uuid = msg->cmd.create_bus.bus_inst_uuid; create_bus()
209 if ((msg->cmd.create_bus.channel_addr != 0) && create_bus()
210 (msg->cmd.create_bus.channel_bytes != 0)) { create_bus()
211 bus->bus_channel_bytes = msg->cmd.create_bus.channel_bytes; create_bus()
213 init_vbus_channel(msg->cmd.create_bus.channel_addr, create_bus()
214 msg->cmd.create_bus.channel_bytes); create_bus()
218 struct guest_msgs cmd; create_bus() local
220 cmd.msgtype = GUEST_ADD_VBUS; create_bus()
221 cmd.add_vbus.bus_no = bus_no; create_bus()
222 cmd.add_vbus.chanptr = bus->bus_channel; create_bus()
223 cmd.add_vbus.dev_count = dev_count; create_bus()
224 cmd.add_vbus.bus_uuid = msg->cmd.create_bus.bus_data_type_uuid; create_bus()
225 cmd.add_vbus.instance_uuid = msg->cmd.create_bus.bus_inst_uuid; create_bus()
232 if (!virt_control_chan_func(&cmd)) { create_bus()
262 struct guest_msgs cmd; destroy_bus() local
265 bus_no = msg->cmd.destroy_bus.bus_no; destroy_bus()
296 cmd.msgtype = GUEST_DEL_VBUS; destroy_bus()
297 cmd.del_vbus.bus_no = bus_no; destroy_bus()
301 if (!virt_control_chan_func(&cmd)) destroy_bus()
327 struct guest_msgs cmd; create_device() local
333 bus_no = msg->cmd.create_device.bus_no; create_device()
334 dev_no = msg->cmd.create_device.dev_no; create_device()
346 dev->channel_uuid = msg->cmd.create_device.data_type_uuid; create_device()
347 dev->intr = msg->cmd.create_device.intr; create_device()
348 dev->channel_addr = msg->cmd.create_device.channel_addr; create_device()
363 if (min_size > msg->cmd.create_device.channel_bytes) { create_device()
371 msg->cmd.create_device.channel_bytes); create_device()
379 dev->instance_uuid = msg->cmd.create_device.dev_inst_uuid; create_device()
380 dev->channel_bytes = msg->cmd.create_device.channel_bytes; create_device()
424 cmd.msgtype = GUEST_ADD_VHBA; create_device()
425 cmd.add_vhba.chanptr = dev->chanptr; create_device()
426 cmd.add_vhba.bus_no = bus_no; create_device()
427 cmd.add_vhba.device_no = dev_no; create_device()
428 cmd.add_vhba.instance_uuid = dev->instance_uuid; create_device()
429 cmd.add_vhba.intr = dev->intr; create_device()
441 cmd.msgtype = GUEST_ADD_VNIC; create_device()
442 cmd.add_vnic.chanptr = dev->chanptr; create_device()
443 cmd.add_vnic.bus_no = bus_no; create_device()
444 cmd.add_vnic.device_no = dev_no; create_device()
445 cmd.add_vnic.instance_uuid = dev->instance_uuid; create_device()
446 cmd.add_vhba.intr = dev->intr; create_device()
461 if (!virt_control_chan_func(&cmd)) { create_device()
495 struct guest_msgs cmd; pause_device() local
498 bus_no = msg->cmd.device_change_state.bus_no; pause_device()
499 dev_no = msg->cmd.device_change_state.dev_no; pause_device()
528 cmd.msgtype = GUEST_PAUSE_VHBA; pause_device()
529 cmd.pause_vhba.chanptr = dev->chanptr; pause_device()
532 cmd.msgtype = GUEST_PAUSE_VNIC; pause_device()
533 cmd.pause_vnic.chanptr = dev->chanptr; pause_device()
539 if (!virt_control_chan_func(&cmd)) { pause_device()
552 struct guest_msgs cmd; resume_device() local
555 bus_no = msg->cmd.device_change_state.bus_no; resume_device()
556 dev_no = msg->cmd.device_change_state.dev_no; resume_device()
586 cmd.msgtype = GUEST_RESUME_VHBA; resume_device()
587 cmd.resume_vhba.chanptr = dev->chanptr; resume_device()
590 cmd.msgtype = GUEST_RESUME_VNIC; resume_device()
591 cmd.resume_vnic.chanptr = dev->chanptr; resume_device()
597 if (!virt_control_chan_func(&cmd)) { resume_device()
610 struct guest_msgs cmd; destroy_device() local
613 bus_no = msg->cmd.destroy_device.bus_no; destroy_device()
614 dev_no = msg->cmd.destroy_device.bus_no; destroy_device()
643 cmd.msgtype = GUEST_DEL_VHBA; destroy_device()
644 cmd.del_vhba.chanptr = dev->chanptr; destroy_device()
647 cmd.msgtype = GUEST_DEL_VNIC; destroy_device()
648 cmd.del_vnic.chanptr = dev->chanptr; destroy_device()
657 if (!virt_control_chan_func(&cmd)) { destroy_device()
682 max_bus_count = msg->cmd.init_chipset.bus_count; init_chipset()
683 platform_no = msg->cmd.init_chipset.platform_number; init_chipset()
707 msg.cmd.destroy_bus.bus_no = bus_no; delete_bus_glue()
718 msg.cmd.destroy_device.bus_no = bus_no; delete_device_glue()
719 msg.cmd.destroy_device.dev_no = dev_no; delete_device_glue()
744 msg.cmd.init_chipset.bus_count = 23; uislib_client_inject_add_bus()
745 msg.cmd.init_chipset.switch_count = 0; uislib_client_inject_add_bus()
756 msg.cmd.create_bus.bus_no = bus_no; uislib_client_inject_add_bus()
757 msg.cmd.create_bus.dev_count = 23; /* devNo+1; */ uislib_client_inject_add_bus()
758 msg.cmd.create_bus.channel_addr = channel_addr; uislib_client_inject_add_bus()
759 msg.cmd.create_bus.channel_bytes = n_channel_bytes; uislib_client_inject_add_bus()
785 msg.cmd.device_change_state.bus_no = bus_no; uislib_client_inject_pause_vhba()
786 msg.cmd.device_change_state.dev_no = dev_no; uislib_client_inject_pause_vhba()
787 msg.cmd.device_change_state.state = segment_state_standby; uislib_client_inject_pause_vhba()
802 msg.cmd.device_change_state.bus_no = bus_no; uislib_client_inject_resume_vhba()
803 msg.cmd.device_change_state.dev_no = dev_no; uislib_client_inject_resume_vhba()
804 msg.cmd.device_change_state.state = segment_state_running; uislib_client_inject_resume_vhba()
833 msg.cmd.create_device.bus_no = bus_no; uislib_client_inject_add_vhba()
834 msg.cmd.create_device.dev_no = dev_no; uislib_client_inject_add_vhba()
835 msg.cmd.create_device.dev_inst_uuid = inst_uuid; uislib_client_inject_add_vhba()
837 msg.cmd.create_device.intr = *intr; uislib_client_inject_add_vhba()
839 memset(&msg.cmd.create_device.intr, 0, uislib_client_inject_add_vhba()
841 msg.cmd.create_device.channel_addr = phys_chan_addr; uislib_client_inject_add_vhba()
847 msg.cmd.create_device.channel_bytes = chan_bytes; uislib_client_inject_add_vhba()
848 msg.cmd.create_device.data_type_uuid = spar_vhba_channel_protocol_uuid; uislib_client_inject_add_vhba()
888 msg.cmd.create_device.bus_no = bus_no; uislib_client_inject_add_vnic()
889 msg.cmd.create_device.dev_no = dev_no; uislib_client_inject_add_vnic()
890 msg.cmd.create_device.dev_inst_uuid = inst_uuid; uislib_client_inject_add_vnic()
892 msg.cmd.create_device.intr = *intr; uislib_client_inject_add_vnic()
894 memset(&msg.cmd.create_device.intr, 0, uislib_client_inject_add_vnic()
896 msg.cmd.create_device.channel_addr = phys_chan_addr; uislib_client_inject_add_vnic()
902 msg.cmd.create_device.channel_bytes = chan_bytes; uislib_client_inject_add_vnic()
903 msg.cmd.create_device.data_type_uuid = spar_vnic_channel_protocol_uuid; uislib_client_inject_add_vnic()
923 msg.cmd.device_change_state.bus_no = bus_no; uislib_client_inject_pause_vnic()
924 msg.cmd.device_change_state.dev_no = dev_no; uislib_client_inject_pause_vnic()
925 msg.cmd.device_change_state.state = segment_state_standby; uislib_client_inject_pause_vnic()
940 msg.cmd.device_change_state.bus_no = bus_no; uislib_client_inject_resume_vnic()
941 msg.cmd.device_change_state.dev_no = dev_no; uislib_client_inject_resume_vnic()
942 msg.cmd.device_change_state.state = segment_state_running; uislib_client_inject_resume_vnic()
/linux-4.1.27/drivers/net/ethernet/chelsio/cxgb3/
H A Dcxgb3_ioctl.h53 uint32_t cmd; member in struct:ch_reg
59 uint32_t cmd; member in struct:ch_cntxt
69 uint32_t cmd; member in struct:ch_desc
77 uint32_t cmd; member in struct:ch_mem_range
86 uint32_t cmd; member in struct:ch_qset_params
100 uint32_t cmd; member in struct:ch_pktsched_params
118 uint32_t cmd; member in struct:ch_mtus
124 uint32_t cmd; member in struct:ch_pm
133 uint32_t cmd; member in struct:ch_tcam
141 uint32_t cmd; member in struct:ch_tcb
147 uint32_t cmd; member in struct:ch_tcam_word
153 uint32_t cmd; member in struct:ch_trace
/linux-4.1.27/arch/sparc/kernel/
H A Dreboot.c39 void machine_restart(char *cmd) machine_restart() argument
46 if (cmd) machine_restart()
47 prom_reboot(cmd); machine_restart()
H A Dleon_pci.c54 u16 cmd; pcibios_fixup_bus() local
76 pci_bus_read_config_word(pbus, dev->devfn, PCI_COMMAND, &cmd); pcibios_fixup_bus()
77 if (has_io && !(cmd & PCI_COMMAND_IO)) { pcibios_fixup_bus()
82 cmd |= PCI_COMMAND_IO; pcibios_fixup_bus()
84 cmd); pcibios_fixup_bus()
86 if (has_mem && !(cmd & PCI_COMMAND_MEMORY)) { pcibios_fixup_bus()
91 cmd |= PCI_COMMAND_MEMORY; pcibios_fixup_bus()
93 cmd); pcibios_fixup_bus()
/linux-4.1.27/arch/mips/lasat/
H A Dpicvue.c172 static void pvc_funcset(u8 cmd) pvc_funcset() argument
174 pvc_write(FUNC_SET_CMD | (cmd & (EIGHT_BYTE|TWO_LINES|LARGE_FONT)), pvc_funcset()
183 static void pvc_entrymode(u8 cmd) pvc_entrymode() argument
185 pvc_write(ENTRYMODE_CMD | (cmd & (AUTO_INC|CURSOR_FOLLOWS_DISP)), pvc_entrymode()
194 void pvc_dispcnt(u8 cmd) pvc_dispcnt() argument
196 pvc_write(DISP_CNT_CMD | (cmd & (DISP_ON|CUR_ON|CUR_BLINK)), MODE_INST); pvc_dispcnt()
204 void pvc_move(u8 cmd) pvc_move() argument
206 pvc_write(MOVE_CMD | (cmd & (DISPLAY|RIGHT)), MODE_INST); pvc_move()
223 u8 cmd = EIGHT_BYTE; pvc_init() local
226 cmd |= (SMALL_FONT|TWO_LINES); pvc_init()
228 cmd |= (LARGE_FONT|ONE_LINE); pvc_init()
229 pvc_funcset(cmd); pvc_init()
/linux-4.1.27/drivers/net/ethernet/samsung/sxgbe/
H A Dsxgbe_ethtool.c186 struct ethtool_cmd *cmd) sxgbe_getsettings()
191 return phy_ethtool_gset(priv->phydev, cmd); sxgbe_getsettings()
196 static int sxgbe_setsettings(struct net_device *dev, struct ethtool_cmd *cmd) sxgbe_setsettings() argument
201 return phy_ethtool_sset(priv->phydev, cmd); sxgbe_setsettings()
334 struct ethtool_rxnfc *cmd) sxgbe_get_rss_hash_opts()
336 cmd->data = 0; sxgbe_get_rss_hash_opts()
339 switch (cmd->flow_type) { sxgbe_get_rss_hash_opts()
342 cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3; sxgbe_get_rss_hash_opts()
348 cmd->data |= RXH_IP_SRC | RXH_IP_DST; sxgbe_get_rss_hash_opts()
352 cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3; sxgbe_get_rss_hash_opts()
358 cmd->data |= RXH_IP_SRC | RXH_IP_DST; sxgbe_get_rss_hash_opts()
367 static int sxgbe_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd, sxgbe_get_rxnfc() argument
373 switch (cmd->cmd) { sxgbe_get_rxnfc()
375 ret = sxgbe_get_rss_hash_opts(priv, cmd); sxgbe_get_rxnfc()
385 struct ethtool_rxnfc *cmd) sxgbe_set_rss_hash_opt()
392 if (cmd->data & ~(RXH_IP_SRC | RXH_IP_DST | sxgbe_set_rss_hash_opt()
396 switch (cmd->flow_type) { sxgbe_set_rss_hash_opt()
399 if (!(cmd->data & RXH_IP_SRC) || sxgbe_set_rss_hash_opt()
400 !(cmd->data & RXH_IP_DST) || sxgbe_set_rss_hash_opt()
401 !(cmd->data & RXH_L4_B_0_1) || sxgbe_set_rss_hash_opt()
402 !(cmd->data & RXH_L4_B_2_3)) sxgbe_set_rss_hash_opt()
408 if (!(cmd->data & RXH_IP_SRC) || sxgbe_set_rss_hash_opt()
409 !(cmd->data & RXH_IP_DST) || sxgbe_set_rss_hash_opt()
410 !(cmd->data & RXH_L4_B_0_1) || sxgbe_set_rss_hash_opt()
411 !(cmd->data & RXH_L4_B_2_3)) sxgbe_set_rss_hash_opt()
425 if (!(cmd->data & RXH_IP_SRC) || sxgbe_set_rss_hash_opt()
426 !(cmd->data & RXH_IP_DST) || sxgbe_set_rss_hash_opt()
427 (cmd->data & RXH_L4_B_0_1) || sxgbe_set_rss_hash_opt()
428 (cmd->data & RXH_L4_B_2_3)) sxgbe_set_rss_hash_opt()
444 static int sxgbe_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd) sxgbe_set_rxnfc() argument
449 switch (cmd->cmd) { sxgbe_set_rxnfc()
451 ret = sxgbe_set_rss_hash_opt(priv, cmd); sxgbe_set_rxnfc()
185 sxgbe_getsettings(struct net_device *dev, struct ethtool_cmd *cmd) sxgbe_getsettings() argument
333 sxgbe_get_rss_hash_opts(struct sxgbe_priv_data *priv, struct ethtool_rxnfc *cmd) sxgbe_get_rss_hash_opts() argument
384 sxgbe_set_rss_hash_opt(struct sxgbe_priv_data *priv, struct ethtool_rxnfc *cmd) sxgbe_set_rss_hash_opt() argument
/linux-4.1.27/drivers/staging/mt29f_spinand/
H A Dmt29f_spinand.c73 static int spinand_cmd(struct spi_device *spi, struct spinand_cmd *cmd) spinand_cmd() argument
83 x[0].tx_buf = &cmd->cmd; spinand_cmd()
86 if (cmd->n_addr) { spinand_cmd()
87 x[1].len = cmd->n_addr; spinand_cmd()
88 x[1].tx_buf = cmd->addr; spinand_cmd()
92 if (cmd->n_dummy) { spinand_cmd()
93 x[2].len = cmd->n_dummy; spinand_cmd()
98 if (cmd->n_tx) { spinand_cmd()
99 x[3].len = cmd->n_tx; spinand_cmd()
100 x[3].tx_buf = cmd->tx_buf; spinand_cmd()
104 if (cmd->n_rx) { spinand_cmd()
105 x[3].len = cmd->n_rx; spinand_cmd()
106 x[3].rx_buf = cmd->rx_buf; spinand_cmd()
122 struct spinand_cmd cmd = {0}; spinand_read_id() local
124 cmd.cmd = CMD_READ_ID; spinand_read_id()
125 cmd.n_rx = 3; spinand_read_id()
126 cmd.rx_buf = &nand_id[0]; spinand_read_id()
128 retval = spinand_cmd(spi_nand, &cmd); spinand_read_id()
150 struct spinand_cmd cmd = {0}; spinand_read_status() local
153 cmd.cmd = CMD_READ_REG; spinand_read_status()
154 cmd.n_addr = 1; spinand_read_status()
155 cmd.addr[0] = REG_STATUS; spinand_read_status()
156 cmd.n_rx = 1; spinand_read_status()
157 cmd.rx_buf = status; spinand_read_status()
159 ret = spinand_cmd(spi_nand, &cmd); spinand_read_status()
198 struct spinand_cmd cmd = {0}; spinand_get_otp() local
201 cmd.cmd = CMD_READ_REG; spinand_get_otp()
202 cmd.n_addr = 1; spinand_get_otp()
203 cmd.addr[0] = REG_OTP; spinand_get_otp()
204 cmd.n_rx = 1; spinand_get_otp()
205 cmd.rx_buf = otp; spinand_get_otp()
207 retval = spinand_cmd(spi_nand, &cmd); spinand_get_otp()
223 struct spinand_cmd cmd = {0}; spinand_set_otp() local
225 cmd.cmd = CMD_WRITE_REG, spinand_set_otp()
226 cmd.n_addr = 1, spinand_set_otp()
227 cmd.addr[0] = REG_OTP, spinand_set_otp()
228 cmd.n_tx = 1, spinand_set_otp()
229 cmd.tx_buf = otp, spinand_set_otp()
231 retval = spinand_cmd(spi_nand, &cmd); spinand_set_otp()
295 struct spinand_cmd cmd = {0}; spinand_write_enable() local
297 cmd.cmd = CMD_WR_ENABLE; spinand_write_enable()
298 return spinand_cmd(spi_nand, &cmd); spinand_write_enable()
303 struct spinand_cmd cmd = {0}; spinand_read_page_to_cache() local
307 cmd.cmd = CMD_READ; spinand_read_page_to_cache()
308 cmd.n_addr = 3; spinand_read_page_to_cache()
309 cmd.addr[1] = (u8)((row & 0xff00) >> 8); spinand_read_page_to_cache()
310 cmd.addr[2] = (u8)(row & 0x00ff); spinand_read_page_to_cache()
312 return spinand_cmd(spi_nand, &cmd); spinand_read_page_to_cache()
326 struct spinand_cmd cmd = {0}; spinand_read_from_cache() local
330 cmd.cmd = CMD_READ_RDM; spinand_read_from_cache()
331 cmd.n_addr = 3; spinand_read_from_cache()
332 cmd.addr[0] = (u8)((column & 0xff00) >> 8); spinand_read_from_cache()
333 cmd.addr[0] |= (u8)(((page_id >> 6) & 0x1) << 4); spinand_read_from_cache()
334 cmd.addr[1] = (u8)(column & 0x00ff); spinand_read_from_cache()
335 cmd.addr[2] = (u8)(0xff); spinand_read_from_cache()
336 cmd.n_dummy = 0; spinand_read_from_cache()
337 cmd.n_rx = len; spinand_read_from_cache()
338 cmd.rx_buf = rbuf; spinand_read_from_cache()
340 return spinand_cmd(spi_nand, &cmd); spinand_read_from_cache()
424 struct spinand_cmd cmd = {0}; spinand_program_data_to_cache() local
428 cmd.cmd = CMD_PROG_PAGE_CLRCACHE; spinand_program_data_to_cache()
429 cmd.n_addr = 2; spinand_program_data_to_cache()
430 cmd.addr[0] = (u8)((column & 0xff00) >> 8); spinand_program_data_to_cache()
431 cmd.addr[0] |= (u8)(((page_id >> 6) & 0x1) << 4); spinand_program_data_to_cache()
432 cmd.addr[1] = (u8)(column & 0x00ff); spinand_program_data_to_cache()
433 cmd.n_tx = len; spinand_program_data_to_cache()
434 cmd.tx_buf = wbuf; spinand_program_data_to_cache()
436 return spinand_cmd(spi_nand, &cmd); spinand_program_data_to_cache()
450 struct spinand_cmd cmd = {0}; spinand_program_execute() local
454 cmd.cmd = CMD_PROG_PAGE_EXC; spinand_program_execute()
455 cmd.n_addr = 3; spinand_program_execute()
456 cmd.addr[1] = (u8)((row & 0xff00) >> 8); spinand_program_execute()
457 cmd.addr[2] = (u8)(row & 0x00ff); spinand_program_execute()
459 return spinand_cmd(spi_nand, &cmd); spinand_program_execute()
559 struct spinand_cmd cmd = {0}; spinand_erase_block_erase() local
563 cmd.cmd = CMD_ERASE_BLK; spinand_erase_block_erase()
564 cmd.n_addr = 3; spinand_erase_block_erase()
565 cmd.addr[1] = (u8)((row & 0xff00) >> 8); spinand_erase_block_erase()
566 cmd.addr[2] = (u8)(row & 0x00ff); spinand_erase_block_erase()
568 return spinand_cmd(spi_nand, &cmd); spinand_erase_block_erase()
733 struct spinand_cmd cmd = {0}; spinand_reset() local
735 cmd.cmd = CMD_RESET; spinand_reset()
737 if (spinand_cmd(spi_nand, &cmd) < 0) spinand_reset()
806 /* a minimum of 250us must elapse before issuing RESET cmd*/ spinand_cmdfunc()
824 struct spinand_cmd cmd = {0}; spinand_lock_block() local
830 cmd.cmd = CMD_WRITE_REG; spinand_lock_block()
831 cmd.n_addr = 1; spinand_lock_block()
832 cmd.addr[0] = REG_BLOCK_LOCK; spinand_lock_block()
833 cmd.n_tx = 1; spinand_lock_block()
834 cmd.tx_buf = &lock; spinand_lock_block()
836 ret = spinand_cmd(spi_nand, &cmd); spinand_lock_block()
/linux-4.1.27/drivers/i2c/busses/
H A Di2c-pmcmsp.c413 dev_dbg(&pmcmsptwi_adapter.dev, "Writing cmd reg 0x%08x\n", reg); pmcmsptwi_do_xfer()
433 static inline u32 pmcmsptwi_cmd_to_reg(const struct pmcmsptwi_cmd *cmd) pmcmsptwi_cmd_to_reg() argument
435 return ((cmd->type & 0x3) << 8) | pmcmsptwi_cmd_to_reg()
436 (((cmd->write_len - 1) & 0x7) << 4) | pmcmsptwi_cmd_to_reg()
437 ((cmd->read_len - 1) & 0x7); pmcmsptwi_cmd_to_reg()
444 struct pmcmsptwi_cmd *cmd, pmcmsptwi_xfer_cmd()
449 if ((cmd->type == MSP_TWI_CMD_WRITE && cmd->write_len == 0) || pmcmsptwi_xfer_cmd()
450 (cmd->type == MSP_TWI_CMD_READ && cmd->read_len == 0) || pmcmsptwi_xfer_cmd()
451 (cmd->type == MSP_TWI_CMD_WRITE_READ && pmcmsptwi_xfer_cmd()
452 (cmd->read_len == 0 || cmd->write_len == 0))) { pmcmsptwi_xfer_cmd()
461 "Setting address to 0x%04x\n", cmd->addr); pmcmsptwi_xfer_cmd()
462 pmcmsptwi_writel(cmd->addr, data->iobase + MSP_TWI_ADD_REG_OFFSET); pmcmsptwi_xfer_cmd()
464 if (cmd->type == MSP_TWI_CMD_WRITE || pmcmsptwi_xfer_cmd()
465 cmd->type == MSP_TWI_CMD_WRITE_READ) { pmcmsptwi_xfer_cmd()
466 u64 tmp = be64_to_cpup((__be64 *)cmd->write_data); pmcmsptwi_xfer_cmd()
467 tmp >>= (MSP_MAX_BYTES_PER_RW - cmd->write_len) * 8; pmcmsptwi_xfer_cmd()
471 if (cmd->write_len > 4) pmcmsptwi_xfer_cmd()
476 retval = pmcmsptwi_do_xfer(pmcmsptwi_cmd_to_reg(cmd), data); pmcmsptwi_xfer_cmd()
480 if (cmd->type == MSP_TWI_CMD_READ || pmcmsptwi_xfer_cmd()
481 cmd->type == MSP_TWI_CMD_WRITE_READ) { pmcmsptwi_xfer_cmd()
483 u64 rmsk = ~(0xffffffffffffffffLL << (cmd->read_len * 8)); pmcmsptwi_xfer_cmd()
486 if (cmd->read_len > 4) pmcmsptwi_xfer_cmd()
492 for (i = 0; i < cmd->read_len; i++) pmcmsptwi_xfer_cmd()
493 cmd->read_data[i] = tmp >> i; pmcmsptwi_xfer_cmd()
511 struct pmcmsptwi_cmd cmd; pmcmsptwi_master_xfer() local
518 cmd.type = MSP_TWI_CMD_WRITE_READ; pmcmsptwi_master_xfer()
519 cmd.write_len = msg->len; pmcmsptwi_master_xfer()
520 cmd.write_data = msg->buf; pmcmsptwi_master_xfer()
521 cmd.read_len = nextmsg->len; pmcmsptwi_master_xfer()
522 cmd.read_data = nextmsg->buf; pmcmsptwi_master_xfer()
524 cmd.type = MSP_TWI_CMD_READ; pmcmsptwi_master_xfer()
525 cmd.read_len = msg->len; pmcmsptwi_master_xfer()
526 cmd.read_data = msg->buf; pmcmsptwi_master_xfer()
527 cmd.write_len = 0; pmcmsptwi_master_xfer()
528 cmd.write_data = NULL; pmcmsptwi_master_xfer()
530 cmd.type = MSP_TWI_CMD_WRITE; pmcmsptwi_master_xfer()
531 cmd.read_len = 0; pmcmsptwi_master_xfer()
532 cmd.read_data = NULL; pmcmsptwi_master_xfer()
533 cmd.write_len = msg->len; pmcmsptwi_master_xfer()
534 cmd.write_data = msg->buf; pmcmsptwi_master_xfer()
542 cmd.addr = msg->addr; pmcmsptwi_master_xfer()
555 ret = pmcmsptwi_xfer_cmd(&cmd, data); pmcmsptwi_master_xfer()
443 pmcmsptwi_xfer_cmd( struct pmcmsptwi_cmd *cmd, struct pmcmsptwi_data *data) pmcmsptwi_xfer_cmd() argument
/linux-4.1.27/drivers/android/
H A Dbinder_trace.h31 TP_PROTO(unsigned int cmd, unsigned long arg),
32 TP_ARGS(cmd, arg),
35 __field(unsigned int, cmd)
39 __entry->cmd = cmd;
42 TP_printk("cmd=0x%x arg=0x%lx", __entry->cmd, __entry->arg)
292 TP_PROTO(uint32_t cmd),
293 TP_ARGS(cmd),
295 __field(uint32_t, cmd)
298 __entry->cmd = cmd;
300 TP_printk("cmd=0x%x %s",
301 __entry->cmd,
302 _IOC_NR(__entry->cmd) < ARRAY_SIZE(binder_command_strings) ?
303 binder_command_strings[_IOC_NR(__entry->cmd)] :
308 TP_PROTO(uint32_t cmd),
309 TP_ARGS(cmd),
311 __field(uint32_t, cmd)
314 __entry->cmd = cmd;
316 TP_printk("cmd=0x%x %s",
317 __entry->cmd,
318 _IOC_NR(__entry->cmd) < ARRAY_SIZE(binder_return_strings) ?
319 binder_return_strings[_IOC_NR(__entry->cmd)] :
/linux-4.1.27/arch/powerpc/platforms/82xx/
H A Dpq2.h4 void pq2_restart(char *cmd);
/linux-4.1.27/sound/hda/
H A Dtrace.h19 TP_PROTO(struct hdac_bus *bus, unsigned int cmd),
20 TP_ARGS(bus, cmd),
25 dev_name((bus)->dev), (cmd) >> 28, cmd);
/linux-4.1.27/fs/ext2/
H A Dioctl.c20 long ext2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ext2_ioctl() argument
28 ext2_debug ("cmd = %u, arg = %lu\n", cmd, arg); ext2_ioctl()
30 switch (cmd) { ext2_ioctl()
167 long ext2_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) ext2_compat_ioctl() argument
170 switch (cmd) { ext2_compat_ioctl()
172 cmd = EXT2_IOC_GETFLAGS; ext2_compat_ioctl()
175 cmd = EXT2_IOC_SETFLAGS; ext2_compat_ioctl()
178 cmd = EXT2_IOC_GETVERSION; ext2_compat_ioctl()
181 cmd = EXT2_IOC_SETVERSION; ext2_compat_ioctl()
186 return ext2_ioctl(file, cmd, (unsigned long) compat_ptr(arg)); ext2_compat_ioctl()
/linux-4.1.27/drivers/scsi/qla2xxx/
H A Dqla_target.c108 *cmd, struct atio_from_isp *atio, int ha_locked);
112 struct qla_tgt_cmd *cmd);
1299 struct qla_tgt_cmd *cmd; abort_cmd_for_tag() local
1311 list_for_each_entry(cmd, &vha->qla_cmd_list, cmd_list) { abort_cmd_for_tag()
1312 if (tag == cmd->atio.u.isp24.exchange_addr) { abort_cmd_for_tag()
1313 cmd->state = QLA_TGT_STATE_ABORTED; abort_cmd_for_tag()
1332 struct qla_tgt_cmd *cmd; abort_cmds_for_lun() local
1347 list_for_each_entry(cmd, &vha->qla_cmd_list, cmd_list) { abort_cmds_for_lun()
1351 cmd_key = sid_to_key(cmd->atio.u.isp24.fcp_hdr.s_id); abort_cmds_for_lun()
1353 (struct scsi_lun *)&cmd->atio.u.isp24.fcp_cmnd.lun); abort_cmds_for_lun()
1355 cmd->state = QLA_TGT_STATE_ABORTED; abort_cmds_for_lun()
1374 struct qla_tgt_cmd *cmd = __qlt_24xx_handle_abts() local
1376 if (cmd->tag == abts->exchange_addr_to_abort) { __qlt_24xx_handle_abts()
1377 lun = cmd->unpacked_lun; __qlt_24xx_handle_abts()
1384 /* cmd not in LIO lists, look in qla list */ __qlt_24xx_handle_abts()
1392 "unable to find cmd in driver or LIO for tag 0x%x\n", __qlt_24xx_handle_abts()
1405 "qla_target(%d): %s: Allocation of ABORT cmd failed", __qlt_24xx_handle_abts()
1606 struct qla_tgt_cmd *cmd = prm->cmd; qlt_pci_map_calc_cnt() local
1608 BUG_ON(cmd->sg_cnt == 0); qlt_pci_map_calc_cnt()
1610 prm->sg = (struct scatterlist *)cmd->sg; qlt_pci_map_calc_cnt()
1611 prm->seg_cnt = pci_map_sg(prm->tgt->ha->pdev, cmd->sg, qlt_pci_map_calc_cnt()
1612 cmd->sg_cnt, cmd->dma_data_direction); qlt_pci_map_calc_cnt()
1616 prm->cmd->sg_mapped = 1; qlt_pci_map_calc_cnt()
1618 if (cmd->se_cmd.prot_op == TARGET_PROT_NORMAL) { qlt_pci_map_calc_cnt()
1629 if ((cmd->se_cmd.prot_op == TARGET_PROT_DIN_INSERT) || qlt_pci_map_calc_cnt()
1630 (cmd->se_cmd.prot_op == TARGET_PROT_DOUT_STRIP)) { qlt_pci_map_calc_cnt()
1631 prm->seg_cnt = DIV_ROUND_UP(cmd->bufflen, cmd->blk_sz); qlt_pci_map_calc_cnt()
1636 if (cmd->prot_sg_cnt) { qlt_pci_map_calc_cnt()
1637 prm->prot_sg = cmd->prot_sg; qlt_pci_map_calc_cnt()
1639 cmd->prot_sg, cmd->prot_sg_cnt, qlt_pci_map_calc_cnt()
1640 cmd->dma_data_direction); qlt_pci_map_calc_cnt()
1644 if ((cmd->se_cmd.prot_op == TARGET_PROT_DIN_INSERT) || qlt_pci_map_calc_cnt()
1645 (cmd->se_cmd.prot_op == TARGET_PROT_DOUT_STRIP)) { qlt_pci_map_calc_cnt()
1647 prm->prot_seg_cnt = DIV_ROUND_UP(cmd->bufflen, qlt_pci_map_calc_cnt()
1648 cmd->blk_sz); qlt_pci_map_calc_cnt()
1658 ql_dbg(ql_dbg_tgt, prm->cmd->vha, 0xe04d, qlt_pci_map_calc_cnt()
1660 0, prm->cmd->sg_cnt); qlt_pci_map_calc_cnt()
1664 static void qlt_unmap_sg(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd) qlt_unmap_sg() argument
1668 if (!cmd->sg_mapped) qlt_unmap_sg()
1671 pci_unmap_sg(ha->pdev, cmd->sg, cmd->sg_cnt, cmd->dma_data_direction); qlt_unmap_sg()
1672 cmd->sg_mapped = 0; qlt_unmap_sg()
1674 if (cmd->prot_sg_cnt) qlt_unmap_sg()
1675 pci_unmap_sg(ha->pdev, cmd->prot_sg, cmd->prot_sg_cnt, qlt_unmap_sg()
1676 cmd->dma_data_direction); qlt_unmap_sg()
1678 if (cmd->ctx_dsd_alloced) qlt_unmap_sg()
1679 qla2x00_clean_dsd_pool(ha, NULL, cmd); qlt_unmap_sg()
1681 if (cmd->ctx) qlt_unmap_sg()
1682 dma_pool_free(ha->dl_dma_pool, cmd->ctx, cmd->ctx->crc_ctx_dma); qlt_unmap_sg()
1736 /* always increment cmd handle */ qlt_make_handle()
1744 "empty cmd slots in ha %p\n", vha->vp_idx, ha); qlt_make_handle()
1765 struct atio_from_isp *atio = &prm->cmd->atio; qlt_24xx_build_ctio_pkt()
1785 ha->tgt.cmds[h-1] = prm->cmd; qlt_24xx_build_ctio_pkt()
1788 pkt->nport_handle = prm->cmd->loop_id; qlt_24xx_build_ctio_pkt()
1797 pkt->u.status0.relative_offset = cpu_to_le32(prm->cmd->offset); qlt_24xx_build_ctio_pkt()
1873 pkt24->u.status0.transfer_length = cpu_to_le32(prm->cmd->bufflen); qlt_load_data_segments()
1910 static inline int qlt_has_data(struct qla_tgt_cmd *cmd) qlt_has_data() argument
1912 return cmd->bufflen > 0; qlt_has_data()
1918 static int qlt_pre_xmit_response(struct qla_tgt_cmd *cmd, qlt_pre_xmit_response() argument
1922 struct qla_tgt *tgt = cmd->tgt; qlt_pre_xmit_response()
1925 struct se_cmd *se_cmd = &cmd->se_cmd; qlt_pre_xmit_response()
1927 prm->cmd = cmd; qlt_pre_xmit_response()
1930 prm->sense_buffer = &cmd->sense_buffer[0]; qlt_pre_xmit_response()
1941 if ((xmit_type & QLA_TGT_XMIT_DATA) && qlt_has_data(cmd)) { qlt_pre_xmit_response()
1953 cmd->tag, se_cmd->t_task_cdb ? se_cmd->t_task_cdb[0] : 0, qlt_pre_xmit_response()
1954 cmd->bufflen, prm->rq_result); qlt_pre_xmit_response()
1961 cmd->tag, se_cmd->t_task_cdb ? se_cmd->t_task_cdb[0] : 0, qlt_pre_xmit_response()
1962 cmd->bufflen, prm->rq_result); qlt_pre_xmit_response()
1971 if (qlt_has_data(cmd)) { qlt_pre_xmit_response()
1985 struct qla_tgt_cmd *cmd, int sending_sense) qlt_need_explicit_conf()
1991 return cmd->conf_compl_supported; qlt_need_explicit_conf()
1994 cmd->conf_compl_supported; qlt_need_explicit_conf()
2028 static void qlt_check_srr_debug(struct qla_tgt_cmd *cmd, int *xmit_type) qlt_check_srr_debug() argument
2034 ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf015, qlt_check_srr_debug()
2035 "Dropping cmd %p (tag %d) status", cmd, cmd->tag); qlt_check_srr_debug()
2042 if (cmd->dma_data_direction != DMA_FROM_DEVICE) qlt_check_srr_debug()
2045 if (qlt_has_data(cmd) && (cmd->sg_cnt > 1) && qlt_check_srr_debug()
2051 leave = qlt_srr_random() % cmd->sg_cnt; qlt_check_srr_debug()
2054 tot_len += cmd->sg[i].length; qlt_check_srr_debug()
2056 ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf016, qlt_check_srr_debug()
2057 "Cutting cmd %p (tag %d) buffer" qlt_check_srr_debug()
2058 " tail to len %d, sg_cnt %d (cmd->bufflen %d," qlt_check_srr_debug()
2059 " cmd->sg_cnt %d)", cmd, cmd->tag, tot_len, leave, qlt_check_srr_debug()
2060 cmd->bufflen, cmd->sg_cnt); qlt_check_srr_debug()
2062 cmd->bufflen = tot_len; qlt_check_srr_debug()
2063 cmd->sg_cnt = leave; qlt_check_srr_debug()
2066 if (qlt_has_data(cmd) && ((qlt_srr_random() % 100) == 70)) { qlt_check_srr_debug()
2067 unsigned int offset = qlt_srr_random() % cmd->bufflen; qlt_check_srr_debug()
2069 ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf017, qlt_check_srr_debug()
2070 "Cutting cmd %p (tag %d) buffer head " qlt_check_srr_debug()
2071 "to offset %d (cmd->bufflen %d)", cmd, cmd->tag, offset, qlt_check_srr_debug()
2072 cmd->bufflen); qlt_check_srr_debug()
2075 else if (qlt_set_data_offset(cmd, offset)) { qlt_check_srr_debug()
2076 ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf018, qlt_check_srr_debug()
2077 "qlt_set_data_offset() failed (tag %d)", cmd->tag); qlt_check_srr_debug()
2082 static inline void qlt_check_srr_debug(struct qla_tgt_cmd *cmd, int *xmit_type) qlt_check_srr_debug() argument
2093 if (qlt_need_explicit_conf(prm->tgt->ha, prm->cmd, 0)) { qlt_24xx_init_ctio_to_isp()
2103 if (qlt_need_explicit_conf(prm->tgt->ha, prm->cmd, 1)) { qlt_24xx_init_ctio_to_isp()
2104 if (prm->cmd->se_cmd.scsi_status != 0) { qlt_24xx_init_ctio_to_isp()
2105 ql_dbg(ql_dbg_tgt, prm->cmd->vha, 0xe017, qlt_24xx_init_ctio_to_isp()
2161 if (!sp->cmd->prot_chk) qlt_hba_err_chk_enabled()
2194 /* wait til Mode Sense/Select cmd, modepage Ah, subpage 2 qlt_set_t10dif_tags()
2276 struct qla_tgt_cmd *cmd = prm->cmd; qlt_build_ctio_crc2_pkt() local
2277 struct se_cmd *se_cmd = &cmd->se_cmd; qlt_build_ctio_crc2_pkt()
2279 struct atio_from_isp *atio = &prm->cmd->atio; qlt_build_ctio_crc2_pkt()
2290 "qla_target(%d):%s: se_cmd[%p] CRC2 prot_op[0x%x] cmd prot sg:cnt[%p:%x] lba[%llu]\n", qlt_build_ctio_crc2_pkt()
2299 data_bytes = cmd->bufflen; qlt_build_ctio_crc2_pkt()
2300 dif_bytes = (data_bytes / cmd->blk_sz) * 8; qlt_build_ctio_crc2_pkt()
2367 ha->tgt.cmds[h-1] = prm->cmd; qlt_build_ctio_crc2_pkt()
2371 pkt->nport_handle = prm->cmd->loop_id; qlt_build_ctio_crc2_pkt()
2384 pkt->relative_offset = cpu_to_le32(prm->cmd->offset); qlt_build_ctio_crc2_pkt()
2387 if (cmd->dma_data_direction == DMA_TO_DEVICE) qlt_build_ctio_crc2_pkt()
2389 else if (cmd->dma_data_direction == DMA_FROM_DEVICE) qlt_build_ctio_crc2_pkt()
2401 crc_ctx_pkt = cmd->ctx = qlt_build_ctio_crc2_pkt()
2439 crc_ctx_pkt->blk_size = cpu_to_le16(cmd->blk_sz); qlt_build_ctio_crc2_pkt()
2450 prm->tot_dsds, cmd)) qlt_build_ctio_crc2_pkt()
2453 (prm->tot_dsds - prm->prot_seg_cnt), cmd)) qlt_build_ctio_crc2_pkt()
2462 prm->prot_seg_cnt, cmd)) qlt_build_ctio_crc2_pkt()
2478 int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type, qlt_xmit_response() argument
2481 struct scsi_qla_host *vha = cmd->vha; qlt_xmit_response()
2490 if (cmd->sess && cmd->sess->deleted == QLA_SESS_DELETION_IN_PROGRESS) { qlt_xmit_response()
2491 cmd->state = QLA_TGT_STATE_PROCESSED; qlt_xmit_response()
2492 if (cmd->sess->logout_completed) qlt_xmit_response()
2494 qlt_abort_cmd_on_host_reset(cmd->vha, cmd); qlt_xmit_response()
2496 qlt_send_term_exchange(vha, cmd, &cmd->atio, 1); qlt_xmit_response()
2503 qlt_check_srr_debug(cmd, &xmit_type); qlt_xmit_response()
2505 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe018, qlt_xmit_response()
2506 "is_send_status=%d, cmd->bufflen=%d, cmd->sg_cnt=%d, cmd->dma_data_direction=%d se_cmd[%p]\n", qlt_xmit_response()
2508 1 : 0, cmd->bufflen, cmd->sg_cnt, cmd->dma_data_direction, qlt_xmit_response()
2509 &cmd->se_cmd); qlt_xmit_response()
2511 res = qlt_pre_xmit_response(cmd, &prm, xmit_type, scsi_status, qlt_xmit_response()
2519 if (qla2x00_reset_active(vha) || cmd->reset_count != ha->chip_reset) { qlt_xmit_response()
2524 cmd->state = QLA_TGT_STATE_PROCESSED; qlt_xmit_response()
2525 qlt_abort_cmd_on_host_reset(cmd->vha, cmd); qlt_xmit_response()
2528 qla2x00_reset_active(vha), cmd->reset_count, qlt_xmit_response()
2539 if (cmd->se_cmd.prot_op && (xmit_type & QLA_TGT_XMIT_DATA)) qlt_xmit_response()
2550 if (qlt_has_data(cmd) && (xmit_type & QLA_TGT_XMIT_DATA)) { qlt_xmit_response()
2555 if (cmd->se_cmd.prot_op == TARGET_PROT_NORMAL) qlt_xmit_response()
2566 if (qlt_need_explicit_conf(ha, cmd, 0)) { qlt_xmit_response()
2616 cmd->state = QLA_TGT_STATE_PROCESSED; /* Mid-level is done processing */ qlt_xmit_response()
2617 cmd->cmd_sent_to_fw = 1; qlt_xmit_response()
2627 qlt_unmap_sg(vha, cmd); qlt_xmit_response()
2634 int qlt_rdy_to_xfer(struct qla_tgt_cmd *cmd) qlt_rdy_to_xfer() argument
2637 struct scsi_qla_host *vha = cmd->vha; qlt_rdy_to_xfer()
2639 struct qla_tgt *tgt = cmd->tgt; qlt_rdy_to_xfer()
2645 prm.cmd = cmd; qlt_rdy_to_xfer()
2660 if (qla2x00_reset_active(vha) || (cmd->reset_count != ha->chip_reset) || qlt_rdy_to_xfer()
2661 (cmd->sess && cmd->sess->deleted == QLA_SESS_DELETION_IN_PROGRESS)) { qlt_rdy_to_xfer()
2666 cmd->state = QLA_TGT_STATE_NEED_DATA; qlt_rdy_to_xfer()
2667 qlt_abort_cmd_on_host_reset(cmd->vha, cmd); qlt_rdy_to_xfer()
2670 qla2x00_reset_active(vha), cmd->reset_count, qlt_rdy_to_xfer()
2680 if (cmd->se_cmd.prot_op) qlt_rdy_to_xfer()
2694 if (cmd->se_cmd.prot_op == TARGET_PROT_NORMAL) qlt_rdy_to_xfer()
2697 cmd->state = QLA_TGT_STATE_NEED_DATA; qlt_rdy_to_xfer()
2698 cmd->cmd_sent_to_fw = 1; qlt_rdy_to_xfer()
2708 qlt_unmap_sg(vha, cmd); qlt_rdy_to_xfer()
2721 qlt_handle_dif_error(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd, qlt_handle_dif_error() argument
2729 uint64_t lba = cmd->se_cmd.t_task_lba; qlt_handle_dif_error()
2744 cmd->atio.u.isp24.fcp_cmnd.cdb[0], lba, qlt_handle_dif_error()
2753 ((cmd->se_cmd.prot_type != TARGET_DIF_TYPE3_PROT) || qlt_handle_dif_error()
2759 cmd->se_cmd.bad_sector = e_ref_tag; qlt_handle_dif_error()
2760 cmd->se_cmd.pi_err = 0; qlt_handle_dif_error()
2765 if (cmd->prot_sg_cnt) { qlt_handle_dif_error()
2770 sgl = cmd->prot_sg; qlt_handle_dif_error()
2773 for_each_sg(sgl, sg, cmd->prot_sg_cnt, i) { qlt_handle_dif_error()
2801 if (cmd->se_cmd.prot_type == SCSI_PROT_DIF_TYPE3) qlt_handle_dif_error()
2811 cmd->se_cmd.pi_err = TCM_LOGICAL_BLOCK_GUARD_CHECK_FAILED; qlt_handle_dif_error()
2812 cmd->se_cmd.bad_sector = cmd->se_cmd.t_task_lba; qlt_handle_dif_error()
2815 "Guard ERR: cdb 0x%x lba 0x%llx: [Actual|Expected] Ref Tag[0x%x|0x%x], App Tag [0x%x|0x%x], Guard [0x%x|0x%x] cmd=%p\n", qlt_handle_dif_error()
2816 cmd->atio.u.isp24.fcp_cmnd.cdb[0], lba, qlt_handle_dif_error()
2818 a_guard, e_guard, cmd); qlt_handle_dif_error()
2824 cmd->se_cmd.pi_err = TCM_LOGICAL_BLOCK_REF_TAG_CHECK_FAILED; qlt_handle_dif_error()
2825 cmd->se_cmd.bad_sector = e_ref_tag; qlt_handle_dif_error()
2828 "Ref Tag ERR: cdb 0x%x lba 0x%llx: [Actual|Expected] Ref Tag[0x%x|0x%x], App Tag [0x%x|0x%x], Guard [0x%x|0x%x] cmd=%p\n", qlt_handle_dif_error()
2829 cmd->atio.u.isp24.fcp_cmnd.cdb[0], lba, qlt_handle_dif_error()
2831 a_guard, e_guard, cmd); qlt_handle_dif_error()
2837 cmd->se_cmd.pi_err = TCM_LOGICAL_BLOCK_APP_TAG_CHECK_FAILED; qlt_handle_dif_error()
2838 cmd->se_cmd.bad_sector = cmd->se_cmd.t_task_lba; qlt_handle_dif_error()
2841 "App Tag ERR: cdb 0x%x lba 0x%llx: [Actual|Expected] Ref Tag[0x%x|0x%x], App Tag [0x%x|0x%x], Guard [0x%x|0x%x] cmd=%p\n", qlt_handle_dif_error()
2842 cmd->atio.u.isp24.fcp_cmnd.cdb[0], lba, qlt_handle_dif_error()
2844 a_guard, e_guard, cmd); qlt_handle_dif_error()
2938 struct qla_tgt_cmd *cmd, __qlt_send_term_exchange()
2957 if (cmd != NULL) { __qlt_send_term_exchange()
2958 if (cmd->state < QLA_TGT_STATE_PROCESSED) { __qlt_send_term_exchange()
2960 "qla_target(%d): Terminating cmd %p with " __qlt_send_term_exchange()
2961 "incorrect state %d\n", vha->vp_idx, cmd, __qlt_send_term_exchange()
2962 cmd->state); __qlt_send_term_exchange()
2972 ctio24->nport_handle = cmd ? cmd->loop_id : CTIO7_NHANDLE_UNRECOGNIZED; __qlt_send_term_exchange()
2999 struct qla_tgt_cmd *cmd, struct atio_from_isp *atio, int ha_locked) qlt_send_term_exchange()
3008 rc = __qlt_send_term_exchange(vha, cmd, atio); qlt_send_term_exchange()
3014 rc = __qlt_send_term_exchange(vha, cmd, atio); qlt_send_term_exchange()
3019 if (cmd && ((cmd->state != QLA_TGT_STATE_ABORTED) || qlt_send_term_exchange()
3020 !cmd->cmd_sent_to_fw)) { qlt_send_term_exchange()
3021 if (cmd->sg_mapped) qlt_send_term_exchange()
3022 qlt_unmap_sg(vha, cmd); qlt_send_term_exchange()
3023 vha->hw->tgt.tgt_ops->free_cmd(cmd); qlt_send_term_exchange()
3035 struct qla_tgt_cmd *cmd, *tcmd; qlt_init_term_exchange() local
3040 cmd = tcmd = NULL; qlt_init_term_exchange()
3045 list_for_each_entry_safe(cmd, tcmd, &free_list, cmd_list) { qlt_init_term_exchange()
3046 list_del(&cmd->cmd_list); qlt_init_term_exchange()
3047 /* This cmd was never sent to TCM. There is no need qlt_init_term_exchange()
3050 qlt_free_cmd(cmd); qlt_init_term_exchange()
3079 void qlt_abort_cmd(struct qla_tgt_cmd *cmd) qlt_abort_cmd() argument
3081 struct qla_tgt *tgt = cmd->tgt; qlt_abort_cmd()
3083 struct se_cmd *se_cmd = &cmd->se_cmd; qlt_abort_cmd()
3086 "qla_target(%d): terminating exchange for aborted cmd=%p " qlt_abort_cmd()
3087 "(se_cmd=%p, tag=%llu)", vha->vp_idx, cmd, &cmd->se_cmd, qlt_abort_cmd()
3088 cmd->tag); qlt_abort_cmd()
3090 cmd->state = QLA_TGT_STATE_ABORTED; qlt_abort_cmd()
3091 cmd->cmd_flags |= BIT_6; qlt_abort_cmd()
3093 qlt_send_term_exchange(vha, cmd, &cmd->atio, 0); qlt_abort_cmd()
3097 void qlt_free_cmd(struct qla_tgt_cmd *cmd) qlt_free_cmd() argument
3099 struct qla_tgt_sess *sess = cmd->sess; qlt_free_cmd()
3101 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe074, qlt_free_cmd()
3103 __func__, &cmd->se_cmd, qlt_free_cmd()
3104 be16_to_cpu(cmd->atio.u.isp24.fcp_hdr.ox_id)); qlt_free_cmd()
3106 BUG_ON(cmd->cmd_in_wq); qlt_free_cmd()
3108 if (!cmd->q_full) qlt_free_cmd()
3109 qlt_decr_num_pend_cmds(cmd->vha); qlt_free_cmd()
3111 BUG_ON(cmd->sg_mapped); qlt_free_cmd()
3112 cmd->jiffies_at_free = get_jiffies_64(); qlt_free_cmd()
3113 if (unlikely(cmd->free_sg)) qlt_free_cmd()
3114 kfree(cmd->sg); qlt_free_cmd()
3120 cmd->jiffies_at_free = get_jiffies_64(); qlt_free_cmd()
3121 percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag); qlt_free_cmd()
3127 struct qla_tgt_cmd *cmd, void *ctio) qlt_prepare_srr_ctio()
3134 cmd->cmd_flags |= BIT_15; qlt_prepare_srr_ctio()
3148 sc->cmd = cmd; qlt_prepare_srr_ctio()
3213 struct qla_tgt_cmd *cmd, uint32_t status) qlt_term_ctio_exchange()
3225 qlt_send_term_exchange(vha, cmd, &cmd->atio, 1); qlt_term_ctio_exchange()
3238 struct qla_tgt_cmd *cmd = ha->tgt.cmds[handle]; qlt_get_cmd() local
3240 return cmd; qlt_get_cmd()
3249 struct qla_tgt_cmd *cmd = NULL; qlt_ctio_to_cmd() local
3266 cmd = qlt_get_cmd(vha, handle); qlt_ctio_to_cmd()
3267 if (unlikely(cmd == NULL)) { qlt_ctio_to_cmd()
3282 return cmd; qlt_ctio_to_cmd()
3287 qlt_abort_cmd_on_host_reset(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd) qlt_abort_cmd_on_host_reset() argument
3292 if (cmd->sg_mapped) qlt_abort_cmd_on_host_reset()
3293 qlt_unmap_sg(vha, cmd); qlt_abort_cmd_on_host_reset()
3298 if (cmd->state == QLA_TGT_STATE_PROCESSED) { qlt_abort_cmd_on_host_reset()
3301 } else if (cmd->state == QLA_TGT_STATE_NEED_DATA) { qlt_abort_cmd_on_host_reset()
3302 cmd->write_data_transferred = 0; qlt_abort_cmd_on_host_reset()
3303 cmd->state = QLA_TGT_STATE_DATA_IN; qlt_abort_cmd_on_host_reset()
3308 ha->tgt.tgt_ops->handle_data(cmd); qlt_abort_cmd_on_host_reset()
3310 } else if (cmd->state == QLA_TGT_STATE_ABORTED) { qlt_abort_cmd_on_host_reset()
3316 cmd->state); qlt_abort_cmd_on_host_reset()
3320 cmd->cmd_flags |= BIT_12; qlt_abort_cmd_on_host_reset()
3321 ha->tgt.tgt_ops->free_cmd(cmd); qlt_abort_cmd_on_host_reset()
3327 struct qla_tgt_cmd *cmd; qlt_host_reset_handler() local
3349 cmd = qlt_get_cmd(base_vha, i); qlt_host_reset_handler()
3350 if (!cmd) qlt_host_reset_handler()
3353 vha = cmd->vha; qlt_host_reset_handler()
3354 qlt_abort_cmd_on_host_reset(vha, cmd); qlt_host_reset_handler()
3369 struct qla_tgt_cmd *cmd; qlt_do_ctio_completion() local
3381 cmd = qlt_ctio_to_cmd(vha, handle, ctio); qlt_do_ctio_completion()
3382 if (cmd == NULL) qlt_do_ctio_completion()
3385 se_cmd = &cmd->se_cmd; qlt_do_ctio_completion()
3387 cmd->cmd_sent_to_fw = 0; qlt_do_ctio_completion()
3389 qlt_unmap_sg(vha, cmd); qlt_do_ctio_completion()
3405 status, cmd->state, se_cmd); qlt_do_ctio_completion()
3414 status, cmd->state, se_cmd); qlt_do_ctio_completion()
3421 vha->vp_idx, status, cmd->state, se_cmd); qlt_do_ctio_completion()
3422 if (qlt_prepare_srr_ctio(vha, cmd, ctio) != 0) qlt_do_ctio_completion()
3432 vha->vp_idx, status, cmd->state, se_cmd, qlt_do_ctio_completion()
3436 if (qlt_handle_dif_error(vha, cmd, ctio)) { qlt_do_ctio_completion()
3437 if (cmd->state == QLA_TGT_STATE_NEED_DATA) { qlt_do_ctio_completion()
3445 cmd->state = QLA_TGT_STATE_PROCESSED; qlt_do_ctio_completion()
3446 ha->tgt.tgt_ops->handle_dif_err(cmd); qlt_do_ctio_completion()
3461 vha->vp_idx, status, cmd->state, se_cmd); qlt_do_ctio_completion()
3466 /* "cmd->state == QLA_TGT_STATE_ABORTED" means qlt_do_ctio_completion()
3467 * cmd is already aborted/terminated, we don't qlt_do_ctio_completion()
3472 if ((cmd->state != QLA_TGT_STATE_NEED_DATA) && qlt_do_ctio_completion()
3473 (cmd->state != QLA_TGT_STATE_ABORTED)) { qlt_do_ctio_completion()
3474 cmd->cmd_flags |= BIT_13; qlt_do_ctio_completion()
3475 if (qlt_term_ctio_exchange(vha, ctio, cmd, status)) qlt_do_ctio_completion()
3481 if (cmd->state == QLA_TGT_STATE_PROCESSED) { qlt_do_ctio_completion()
3483 } else if (cmd->state == QLA_TGT_STATE_NEED_DATA) { qlt_do_ctio_completion()
3486 cmd->state = QLA_TGT_STATE_DATA_IN; qlt_do_ctio_completion()
3491 cmd->write_data_transferred = 1; qlt_do_ctio_completion()
3493 ha->tgt.tgt_ops->handle_data(cmd); qlt_do_ctio_completion()
3495 } else if (cmd->state == QLA_TGT_STATE_ABORTED) { qlt_do_ctio_completion()
3497 "Aborted command %p (tag %d) finished\n", cmd, cmd->tag); qlt_do_ctio_completion()
3501 "not return a CTIO complete\n", vha->vp_idx, cmd->state); qlt_do_ctio_completion()
3505 (cmd->state != QLA_TGT_STATE_ABORTED)) { qlt_do_ctio_completion()
3511 ha->tgt.tgt_ops->free_cmd(cmd); qlt_do_ctio_completion()
3551 static void __qlt_do_work(struct qla_tgt_cmd *cmd) __qlt_do_work() argument
3553 scsi_qla_host_t *vha = cmd->vha; __qlt_do_work()
3556 struct qla_tgt_sess *sess = cmd->sess; __qlt_do_work()
3557 struct atio_from_isp *atio = &cmd->atio; __qlt_do_work()
3563 cmd->cmd_in_wq = 0; __qlt_do_work()
3564 cmd->cmd_flags |= BIT_1; __qlt_do_work()
3568 if (cmd->state == QLA_TGT_STATE_ABORTED) { __qlt_do_work()
3570 "cmd with tag %u is aborted\n", __qlt_do_work()
3571 cmd->atio.u.isp24.exchange_addr); __qlt_do_work()
3576 cmd->tag = atio->u.isp24.exchange_addr; __qlt_do_work()
3577 cmd->unpacked_lun = scsilun_to_int( __qlt_do_work()
3597 ret = ha->tgt.tgt_ops->handle_cmd(vha, cmd, cdb, data_length, __qlt_do_work()
3610 ql_dbg(ql_dbg_io, vha, 0x3060, "Terminating work cmd %p", cmd); __qlt_do_work()
3612 * cmd has not sent to target yet, so pass NULL as the second __qlt_do_work()
3615 cmd->cmd_flags |= BIT_2; __qlt_do_work()
3617 qlt_send_term_exchange(vha, NULL, &cmd->atio, 1); __qlt_do_work()
3620 percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag); __qlt_do_work()
3627 struct qla_tgt_cmd *cmd = container_of(work, struct qla_tgt_cmd, work); qlt_do_work() local
3628 scsi_qla_host_t *vha = cmd->vha; qlt_do_work()
3632 list_del(&cmd->cmd_list); qlt_do_work()
3635 __qlt_do_work(cmd); qlt_do_work()
3643 struct qla_tgt_cmd *cmd; qlt_get_tag() local
3650 cmd = &((struct qla_tgt_cmd *)se_sess->sess_cmd_map)[tag]; qlt_get_tag()
3651 memset(cmd, 0, sizeof(struct qla_tgt_cmd)); qlt_get_tag()
3653 memcpy(&cmd->atio, atio, sizeof(*atio)); qlt_get_tag()
3654 cmd->state = QLA_TGT_STATE_NEW; qlt_get_tag()
3655 cmd->tgt = vha->vha_tgt.qla_tgt; qlt_get_tag()
3657 cmd->vha = vha; qlt_get_tag()
3658 cmd->se_cmd.map_tag = tag; qlt_get_tag()
3659 cmd->sess = sess; qlt_get_tag()
3660 cmd->loop_id = sess->loop_id; qlt_get_tag()
3661 cmd->conf_compl_supported = sess->conf_compl_supported; qlt_get_tag()
3663 cmd->cmd_flags = 0; qlt_get_tag()
3664 cmd->jiffies_at_alloc = get_jiffies_64(); qlt_get_tag()
3666 cmd->reset_count = vha->hw->chip_reset; qlt_get_tag()
3668 return cmd; qlt_get_tag()
3681 struct qla_tgt_cmd *cmd; qlt_create_sess_from_atio() local
3719 cmd = qlt_get_tag(vha, sess, &op->atio); qlt_create_sess_from_atio()
3720 if (!cmd) { qlt_create_sess_from_atio()
3732 __qlt_do_work(cmd); qlt_create_sess_from_atio()
3751 struct qla_tgt_cmd *cmd; qlt_handle_cmd_for_atio() local
3792 cmd = qlt_get_tag(vha, sess, atio); qlt_handle_cmd_for_atio()
3793 if (!cmd) { qlt_handle_cmd_for_atio()
3795 "qla_target(%d): Allocation of cmd failed\n", vha->vp_idx); qlt_handle_cmd_for_atio()
3800 cmd->cmd_in_wq = 1; qlt_handle_cmd_for_atio()
3801 cmd->cmd_flags |= BIT_0; qlt_handle_cmd_for_atio()
3804 list_add_tail(&cmd->cmd_list, &vha->qla_cmd_list); qlt_handle_cmd_for_atio()
3807 INIT_WORK(&cmd->work, qlt_do_work); qlt_handle_cmd_for_atio()
3808 queue_work(qla_tgt_wq, &cmd->work); qlt_handle_cmd_for_atio()
3969 "qla_target(%d): %s: Allocation of ABORT cmd failed\n", __qlt_abort_task()
4116 struct qla_tgt_cmd *cmd; abort_cmds_for_s_id() local
4132 list_for_each_entry(cmd, &vha->qla_cmd_list, cmd_list) { abort_cmds_for_s_id()
4133 uint32_t cmd_key = sid_to_key(cmd->atio.u.isp24.fcp_hdr.s_id); abort_cmds_for_s_id()
4135 cmd->state = QLA_TGT_STATE_ABORTED; abort_cmds_for_s_id()
4321 static int qlt_set_data_offset(struct qla_tgt_cmd *cmd, uint32_t offset) qlt_set_data_offset() argument
4327 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe023, qlt_set_data_offset()
4328 "Entering qla_tgt_set_data_offset: cmd: %p, cmd->sg: %p, " qlt_set_data_offset()
4329 "cmd->sg_cnt: %u, direction: %d\n", qlt_set_data_offset()
4330 cmd, cmd->sg, cmd->sg_cnt, cmd->dma_data_direction); qlt_set_data_offset()
4339 if (!cmd->sg || !cmd->sg_cnt) { qlt_set_data_offset()
4340 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe055, qlt_set_data_offset()
4341 "Missing cmd->sg or zero cmd->sg_cnt in" qlt_set_data_offset()
4346 * Walk the current cmd->sg list until we locate the new sg_srr_start qlt_set_data_offset()
4348 for_each_sg(cmd->sg, sg, cmd->sg_cnt, i) { qlt_set_data_offset()
4349 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe024, qlt_set_data_offset()
4356 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe025, qlt_set_data_offset()
4367 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe056, qlt_set_data_offset()
4371 sg_srr_cnt = (cmd->sg_cnt - i); qlt_set_data_offset()
4375 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe057, qlt_set_data_offset()
4400 cmd->sg = sg_srr;
4401 cmd->sg_cnt = sg_srr_cnt;
4402 cmd->bufflen = bufflen;
4403 cmd->offset += offset;
4404 cmd->free_sg = 1;
4406 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe026, "New cmd->sg: %p\n", cmd->sg);
4407 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe027, "New cmd->sg_cnt: %u\n",
4408 cmd->sg_cnt);
4409 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe028, "New cmd->bufflen: %u\n",
4410 cmd->bufflen);
4411 ql_dbg(ql_dbg_tgt, cmd->vha, 0xe029, "New cmd->offset: %u\n",
4412 cmd->offset);
4414 if (cmd->sg_cnt < 0)
4417 if (cmd->bufflen < 0)
4423 static inline int qlt_srr_adjust_data(struct qla_tgt_cmd *cmd, qlt_srr_adjust_data() argument
4428 rel_offs = srr_rel_offs - cmd->offset; qlt_srr_adjust_data()
4429 ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf027, "srr_rel_offs=%d, rel_offs=%d", qlt_srr_adjust_data()
4435 ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf062, qlt_srr_adjust_data()
4437 cmd->vha->vp_idx, rel_offs); qlt_srr_adjust_data()
4439 } else if (rel_offs == cmd->bufflen) qlt_srr_adjust_data()
4442 res = qlt_set_data_offset(cmd, rel_offs); qlt_srr_adjust_data()
4454 struct qla_tgt_cmd *cmd = sctio->cmd; qlt_handle_srr() local
4455 struct se_cmd *se_cmd = &cmd->se_cmd; qlt_handle_srr()
4464 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf028, "SRR cmd %p, srr_ui %x\n", qlt_handle_srr()
4465 cmd, srr_ui); qlt_handle_srr()
4477 if (!cmd->sg || !cmd->sg_cnt) { qlt_handle_srr()
4480 " missing cmd->sg, state: %d\n", cmd->state); qlt_handle_srr()
4490 cmd->bufflen = se_cmd->data_length; qlt_handle_srr()
4492 if (qlt_has_data(cmd)) { qlt_handle_srr()
4493 if (qlt_srr_adjust_data(cmd, offset, &xmit_type) != 0) qlt_handle_srr()
4502 "qla_target(%d): SRR for in data for cmd " qlt_handle_srr()
4504 "reject", vha->vp_idx, cmd->tag, qlt_handle_srr()
4505 cmd->se_cmd.scsi_status); qlt_handle_srr()
4510 if (!cmd->sg || !cmd->sg_cnt) { qlt_handle_srr()
4513 " missing cmd->sg\n"); qlt_handle_srr()
4523 cmd->bufflen = se_cmd->data_length; qlt_handle_srr()
4525 if (qlt_has_data(cmd)) { qlt_handle_srr()
4526 if (qlt_srr_adjust_data(cmd, offset, &xmit_type) != 0) qlt_handle_srr()
4533 cmd->cmd_flags |= BIT_8; qlt_handle_srr()
4534 qlt_rdy_to_xfer(cmd); qlt_handle_srr()
4538 "qla_target(%d): SRR for out data for cmd " qlt_handle_srr()
4540 "reject", vha->vp_idx, cmd->tag, qlt_handle_srr()
4541 cmd->se_cmd.scsi_status); qlt_handle_srr()
4554 cmd->cmd_flags |= BIT_7; qlt_handle_srr()
4555 qlt_xmit_response(cmd, xmit_type, se_cmd->scsi_status); qlt_handle_srr()
4566 if (cmd->state == QLA_TGT_STATE_NEED_DATA) { qlt_handle_srr()
4567 cmd->state = QLA_TGT_STATE_DATA_IN; qlt_handle_srr()
4570 cmd->cmd_flags |= BIT_9; qlt_handle_srr()
4571 qlt_send_term_exchange(vha, cmd, &cmd->atio, 1); qlt_handle_srr()
4610 struct qla_tgt_cmd *cmd; qlt_handle_srr_work() local
4644 cmd = sctio->cmd; qlt_handle_srr_work()
4650 cmd->offset = 0; qlt_handle_srr_work()
4651 if (cmd->free_sg) { qlt_handle_srr_work()
4652 kfree(cmd->sg); qlt_handle_srr_work()
4653 cmd->sg = NULL; qlt_handle_srr_work()
4654 cmd->free_sg = 0; qlt_handle_srr_work()
4656 se_cmd = &cmd->se_cmd; qlt_handle_srr_work()
4658 cmd->sg_cnt = se_cmd->t_data_nents; qlt_handle_srr_work()
4659 cmd->sg = se_cmd->t_data_sg; qlt_handle_srr_work()
4662 "SRR cmd %p (se_cmd %p, tag %d, op %x), " qlt_handle_srr_work()
4663 "sg_cnt=%d, offset=%d", cmd, &cmd->se_cmd, cmd->tag, qlt_handle_srr_work()
4665 cmd->sg_cnt, cmd->offset); qlt_handle_srr_work()
4746 qlt_send_term_exchange(vha, sctio->cmd, qlt_prepare_srr_imm()
4747 &sctio->cmd->atio, 1); qlt_prepare_srr_imm()
4971 struct qla_tgt_cmd *cmd; qlt_alloc_qfull_cmd() local
5007 cmd = &((struct qla_tgt_cmd *)se_sess->sess_cmd_map)[tag]; qlt_alloc_qfull_cmd()
5008 if (!cmd) { qlt_alloc_qfull_cmd()
5010 "qla_target(%d): %s: Allocation of cmd failed\n", qlt_alloc_qfull_cmd()
5023 memset(cmd, 0, sizeof(struct qla_tgt_cmd)); qlt_alloc_qfull_cmd()
5026 INIT_LIST_HEAD(&cmd->cmd_list); qlt_alloc_qfull_cmd()
5027 memcpy(&cmd->atio, atio, sizeof(*atio)); qlt_alloc_qfull_cmd()
5029 cmd->tgt = vha->vha_tgt.qla_tgt; qlt_alloc_qfull_cmd()
5030 cmd->vha = vha; qlt_alloc_qfull_cmd()
5031 cmd->reset_count = vha->hw->chip_reset; qlt_alloc_qfull_cmd()
5032 cmd->q_full = 1; qlt_alloc_qfull_cmd()
5035 cmd->q_full = 1; qlt_alloc_qfull_cmd()
5037 cmd->state = status; qlt_alloc_qfull_cmd()
5039 cmd->term_exchg = 1; qlt_alloc_qfull_cmd()
5041 list_add_tail(&cmd->cmd_list, &vha->hw->tgt.q_full_list); qlt_alloc_qfull_cmd()
5055 struct qla_tgt_cmd *cmd, *tcmd; qlt_free_qfull_cmds() local
5071 list_for_each_entry_safe(cmd, tcmd, &ha->tgt.q_full_list, cmd_list) { qlt_free_qfull_cmds()
5072 if (cmd->q_full) qlt_free_qfull_cmds()
5073 /* cmd->state is a borrowed field to hold status */ qlt_free_qfull_cmds()
5074 rc = __qlt_send_busy(vha, &cmd->atio, cmd->state); qlt_free_qfull_cmds()
5075 else if (cmd->term_exchg) qlt_free_qfull_cmds()
5076 rc = __qlt_send_term_exchange(vha, NULL, &cmd->atio); qlt_free_qfull_cmds()
5081 if (cmd->q_full) qlt_free_qfull_cmds()
5084 be16_to_cpu(cmd->atio.u.isp24.fcp_hdr.ox_id)); qlt_free_qfull_cmds()
5085 else if (cmd->term_exchg) qlt_free_qfull_cmds()
5088 be16_to_cpu(cmd->atio.u.isp24.fcp_hdr.ox_id)); qlt_free_qfull_cmds()
5091 "%s: Unexpected cmd in QFull list %p\n", __func__, qlt_free_qfull_cmds()
5092 cmd); qlt_free_qfull_cmds()
5094 list_del(&cmd->cmd_list); qlt_free_qfull_cmds()
5095 list_add_tail(&cmd->cmd_list, &free_list); qlt_free_qfull_cmds()
5102 cmd = NULL; qlt_free_qfull_cmds()
5104 list_for_each_entry_safe(cmd, tcmd, &free_list, cmd_list) { qlt_free_qfull_cmds()
5105 list_del(&cmd->cmd_list); qlt_free_qfull_cmds()
5106 /* This cmd was never sent to TCM. There is no need qlt_free_qfull_cmds()
5109 qlt_free_cmd(cmd); qlt_free_qfull_cmds()
6490 qlt_update_vp_map(struct scsi_qla_host *vha, int cmd) qlt_update_vp_map() argument
6495 switch (cmd) { qlt_update_vp_map()
1984 qlt_need_explicit_conf(struct qla_hw_data *ha, struct qla_tgt_cmd *cmd, int sending_sense) qlt_need_explicit_conf() argument
2937 __qlt_send_term_exchange(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd, struct atio_from_isp *atio) __qlt_send_term_exchange() argument
2998 qlt_send_term_exchange(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd, struct atio_from_isp *atio, int ha_locked) qlt_send_term_exchange() argument
3126 qlt_prepare_srr_ctio(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd, void *ctio) qlt_prepare_srr_ctio() argument
3212 qlt_term_ctio_exchange(struct scsi_qla_host *vha, void *ctio, struct qla_tgt_cmd *cmd, uint32_t status) qlt_term_ctio_exchange() argument
/linux-4.1.27/drivers/media/rc/img-ir/
H A Dimg-ir-sharp.c18 unsigned int addr, cmd, exp, chk; img_ir_sharp_scancode() local
24 cmd = (raw >> 5) & 0xff; img_ir_sharp_scancode()
36 request->scancode = addr << 8 | cmd; img_ir_sharp_scancode()
44 unsigned int addr, cmd, exp = 0, chk = 0; img_ir_sharp_filter() local
49 cmd = (in->data >> 0) & 0xff; img_ir_sharp_filter()
60 cmd << 5 | img_ir_sharp_filter()
/linux-4.1.27/drivers/net/wireless/ath/wil6210/
H A Dwmi.c179 } __packed cmd = { __wmi_send() local
183 .len = cpu_to_le16(sizeof(cmd.wmi) + len), __wmi_send()
197 if (sizeof(cmd) + len > r->entry_size) { __wmi_send()
199 (int)(sizeof(cmd) + len), r->entry_size); __wmi_send()
246 cmd.hdr.seq = cpu_to_le16(++wil->wmi_seq); __wmi_send()
249 wil_hex_dump_wmi("Cmd ", DUMP_PREFIX_OFFSET, 16, 1, &cmd, __wmi_send()
250 sizeof(cmd), true); __wmi_send()
251 wil_hex_dump_wmi("cmd ", DUMP_PREFIX_OFFSET, 16, 1, buf, __wmi_send()
253 wil_memcpy_toio_32(dst, &cmd, sizeof(cmd)); __wmi_send()
254 wil_memcpy_toio_32(dst + sizeof(cmd), buf, len); __wmi_send()
262 trace_wil6210_wmi_cmd(&cmd.wmi, buf, len); __wmi_send()
717 u8 *cmd; wmi_recv_cmd() local
738 /* read cmd descriptor from tail */ wmi_recv_cmd()
746 /* read cmd header from descriptor */ wmi_recv_cmd()
757 /* read cmd buffer from descriptor */ wmi_recv_cmd()
767 cmd = (void *)&evt->event.wmi; wmi_recv_cmd()
768 wil_memcpy_fromio_32(cmd, src, len); wmi_recv_cmd()
842 struct wmi_echo_cmd cmd = { wmi_echo() local
846 return wmi_call(wil, WMI_ECHO_CMDID, &cmd, sizeof(cmd), wmi_echo()
852 struct wmi_set_mac_address_cmd cmd; wmi_set_mac_address() local
854 ether_addr_copy(cmd.mac, addr); wmi_set_mac_address()
858 return wmi_send(wil, WMI_SET_MAC_ADDRESS_CMDID, &cmd, sizeof(cmd)); wmi_set_mac_address()
865 struct wmi_pcp_start_cmd cmd = { wmi_pcp_start() local
878 cmd.disable_sec = 1; wmi_pcp_start()
880 if ((cmd.pcp_max_assoc_sta > WIL6210_MAX_CID) || wmi_pcp_start()
881 (cmd.pcp_max_assoc_sta <= 0)) { wmi_pcp_start()
885 cmd.pcp_max_assoc_sta = WIL6210_MAX_CID; wmi_pcp_start()
892 rc = wmi_call(wil, WMI_PCP_START_CMDID, &cmd, sizeof(cmd), wmi_pcp_start()
911 struct wmi_set_ssid_cmd cmd = { wmi_set_ssid() local
915 if (ssid_len > sizeof(cmd.ssid)) wmi_set_ssid()
918 memcpy(cmd.ssid, ssid, ssid_len); wmi_set_ssid()
920 return wmi_send(wil, WMI_SET_SSID_CMDID, &cmd, sizeof(cmd)); wmi_set_ssid()
928 struct wmi_set_ssid_cmd cmd; wmi_get_ssid() member in struct:__anon7742
930 int len; /* reply.cmd.ssid_len in CPU order */ wmi_get_ssid()
937 len = le32_to_cpu(reply.cmd.ssid_len); wmi_get_ssid()
938 if (len > sizeof(reply.cmd.ssid)) wmi_get_ssid()
942 memcpy(ssid, reply.cmd.ssid, len); wmi_get_ssid()
949 struct wmi_set_pcp_channel_cmd cmd = { wmi_set_channel() local
953 return wmi_send(wil, WMI_SET_PCP_CHANNEL_CMDID, &cmd, sizeof(cmd)); wmi_set_channel()
961 struct wmi_set_pcp_channel_cmd cmd; wmi_get_channel() member in struct:__anon7743
969 if (reply.cmd.channel > 3) wmi_get_channel()
972 *channel = reply.cmd.channel + 1; wmi_get_channel()
979 struct wmi_p2p_cfg_cmd cmd = { wmi_p2p_cfg() local
984 return wmi_send(wil, WMI_P2P_CFG_CMDID, &cmd, sizeof(cmd)); wmi_p2p_cfg()
990 struct wmi_delete_cipher_key_cmd cmd = { wmi_del_cipher_key() local
995 memcpy(cmd.mac, mac_addr, WMI_MAC_LEN); wmi_del_cipher_key()
997 return wmi_send(wil, WMI_DELETE_CIPHER_KEY_CMDID, &cmd, sizeof(cmd)); wmi_del_cipher_key()
1003 struct wmi_add_cipher_key_cmd cmd = { wmi_add_cipher_key() local
1009 if (!key || (key_len > sizeof(cmd.key))) wmi_add_cipher_key()
1012 memcpy(cmd.key, key, key_len); wmi_add_cipher_key()
1014 memcpy(cmd.mac, mac_addr, WMI_MAC_LEN); wmi_add_cipher_key()
1016 return wmi_send(wil, WMI_ADD_CIPHER_KEY_CMDID, &cmd, sizeof(cmd)); wmi_add_cipher_key()
1023 struct wmi_set_appie_cmd *cmd = kzalloc(len, GFP_KERNEL); wmi_set_ie() local
1025 if (!cmd) wmi_set_ie()
1030 cmd->mgmt_frm_type = type; wmi_set_ie()
1032 cmd->ie_len = cpu_to_le16(ie_len); wmi_set_ie()
1033 memcpy(cmd->ie_info, ie, ie_len); wmi_set_ie()
1034 rc = wmi_send(wil, WMI_SET_APPIE_CMDID, cmd, len); wmi_set_ie()
1035 kfree(cmd); wmi_set_ie()
1076 struct wmi_cfg_rx_chain_cmd cmd = { wmi_rx_chain_add() local
1097 cmd.sniffer_cfg.mode = cpu_to_le32(WMI_SNIFFER_ON); wmi_rx_chain_add()
1099 cmd.sniffer_cfg.channel = ch->hw_value - 1; wmi_rx_chain_add()
1100 cmd.sniffer_cfg.phy_info_mode = wmi_rx_chain_add()
1102 cmd.sniffer_cfg.phy_support = wmi_rx_chain_add()
1110 cmd.l3_l4_ctrl |= (1 << L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS); wmi_rx_chain_add()
1114 cmd.l2_802_3_offload_ctrl |= wmi_rx_chain_add()
1118 rc = wmi_call(wil, WMI_CFG_RX_CHAIN_CMDID, &cmd, sizeof(cmd), wmi_rx_chain_add()
1137 struct wmi_temp_sense_cmd cmd = { wmi_get_temperature() local
1147 rc = wmi_call(wil, WMI_TEMP_SENSE_CMDID, &cmd, sizeof(cmd), wmi_get_temperature()
1162 struct wmi_disconnect_sta_cmd cmd = { wmi_disconnect_sta() local
1166 ether_addr_copy(cmd.dst_mac, mac); wmi_disconnect_sta()
1170 return wmi_send(wil, WMI_DISCONNECT_STA_CMDID, &cmd, sizeof(cmd)); wmi_disconnect_sta()
1175 struct wmi_vring_ba_en_cmd cmd = { wmi_addba() local
1185 return wmi_send(wil, WMI_VRING_BA_EN_CMDID, &cmd, sizeof(cmd)); wmi_addba()
1190 struct wmi_vring_ba_dis_cmd cmd = { wmi_delba_tx() local
1198 return wmi_send(wil, WMI_VRING_BA_DIS_CMDID, &cmd, sizeof(cmd)); wmi_delba_tx()
1203 struct wmi_rcp_delba_cmd cmd = { wmi_delba_rx() local
1211 return wmi_send(wil, WMI_RCP_DELBA_CMDID, &cmd, sizeof(cmd)); wmi_delba_rx()
1218 struct wmi_rcp_addba_resp_cmd cmd = { wmi_addba_rx_resp() local
1240 rc = wmi_call(wil, WMI_RCP_ADDBA_RESP_CMDID, &cmd, sizeof(cmd), wmi_addba_rx_resp()
/linux-4.1.27/include/net/
H A Dwext.h9 int wext_handle_ioctl(struct net *net, struct ifreq *ifr, unsigned int cmd,
11 int compat_wext_handle_ioctl(struct net *net, unsigned int cmd,
17 static inline int wext_handle_ioctl(struct net *net, struct ifreq *ifr, unsigned int cmd, wext_handle_ioctl() argument
22 static inline int compat_wext_handle_ioctl(struct net *net, unsigned int cmd, compat_wext_handle_ioctl() argument
45 unsigned int cmd, struct iw_request_info *info,
48 unsigned int cmd, struct iw_request_info *info,
/linux-4.1.27/drivers/net/ethernet/chelsio/cxgb4vf/
H A Dt4vf_hw.c99 * @cmd: the command to write
116 int t4vf_wr_mbox_core(struct adapter *adapter, const void *cmd, int size, t4vf_wr_mbox_core() argument
160 for (i = 0, p = cmd; i < size; i += 8) t4vf_wr_mbox_core()
213 WARN_ON((be32_to_cpu(*(const __be32 *)cmd) t4vf_wr_mbox_core()
347 struct fw_reset_cmd cmd; t4vf_fw_reset() local
349 memset(&cmd, 0, sizeof(cmd)); t4vf_fw_reset()
350 cmd.op_to_write = cpu_to_be32(FW_CMD_OP_V(FW_RESET_CMD) | t4vf_fw_reset()
352 cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd)); t4vf_fw_reset()
353 return t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), NULL); t4vf_fw_reset()
370 struct fw_params_cmd cmd, rpl; t4vf_query_params() local
377 memset(&cmd, 0, sizeof(cmd)); t4vf_query_params()
378 cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_PARAMS_CMD) | t4vf_query_params()
383 cmd.retval_len16 = cpu_to_be32(FW_CMD_LEN16_V(len16)); t4vf_query_params()
384 for (i = 0, p = &cmd.param[0]; i < nparams; i++, p++) t4vf_query_params()
387 ret = t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), &rpl); t4vf_query_params()
408 struct fw_params_cmd cmd; t4vf_set_params() local
415 memset(&cmd, 0, sizeof(cmd)); t4vf_set_params()
416 cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_PARAMS_CMD) | t4vf_set_params()
421 cmd.retval_len16 = cpu_to_be32(FW_CMD_LEN16_V(len16)); t4vf_set_params()
422 for (i = 0, p = &cmd.param[0]; i < nparams; i++, p++) { t4vf_set_params()
427 return t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), NULL); t4vf_set_params()
702 struct fw_rss_glb_config_cmd cmd, rpl; t4vf_get_rss_glb_config() local
709 memset(&cmd, 0, sizeof(cmd)); t4vf_get_rss_glb_config()
710 cmd.op_to_write = cpu_to_be32(FW_CMD_OP_V(FW_RSS_GLB_CONFIG_CMD) | t4vf_get_rss_glb_config()
713 cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd)); t4vf_get_rss_glb_config()
714 v = t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), &rpl); t4vf_get_rss_glb_config()
777 struct fw_pfvf_cmd cmd, rpl; t4vf_get_vfres() local
785 memset(&cmd, 0, sizeof(cmd)); t4vf_get_vfres()
786 cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_PFVF_CMD) | t4vf_get_vfres()
789 cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd)); t4vf_get_vfres()
790 v = t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), &rpl); t4vf_get_vfres()
830 struct fw_rss_vi_config_cmd cmd, rpl; t4vf_read_rss_vi_config() local
833 memset(&cmd, 0, sizeof(cmd)); t4vf_read_rss_vi_config()
834 cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_RSS_VI_CONFIG_CMD) | t4vf_read_rss_vi_config()
838 cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd)); t4vf_read_rss_vi_config()
839 v = t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), &rpl); t4vf_read_rss_vi_config()
881 struct fw_rss_vi_config_cmd cmd, rpl; t4vf_write_rss_vi_config() local
883 memset(&cmd, 0, sizeof(cmd)); t4vf_write_rss_vi_config()
884 cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_RSS_VI_CONFIG_CMD) | t4vf_write_rss_vi_config()
888 cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd)); t4vf_write_rss_vi_config()
905 cmd.u.basicvirtual.defaultq_to_udpen = cpu_to_be32(word); t4vf_write_rss_vi_config()
913 return t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), &rpl); t4vf_write_rss_vi_config()
936 struct fw_rss_ind_tbl_cmd cmd; t4vf_config_rss_range() local
941 memset(&cmd, 0, sizeof(cmd)); t4vf_config_rss_range()
942 cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_RSS_IND_TBL_CMD) | t4vf_config_rss_range()
946 cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd)); t4vf_config_rss_range()
955 __be32 *qp = &cmd.iq0_to_iq2; t4vf_config_rss_range()
963 cmd.niqid = cpu_to_be16(nq); t4vf_config_rss_range()
964 cmd.startidx = cpu_to_be16(start); t4vf_config_rss_range()
1005 ret = t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), NULL); t4vf_config_rss_range()
1023 struct fw_vi_cmd cmd, rpl; t4vf_alloc_vi() local
1030 memset(&cmd, 0, sizeof(cmd)); t4vf_alloc_vi()
1031 cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_VI_CMD) | t4vf_alloc_vi()
1035 cmd.alloc_to_len16 = cpu_to_be32(FW_LEN16(cmd) | t4vf_alloc_vi()
1037 cmd.portid_pkd = FW_VI_CMD_PORTID_V(port_id); t4vf_alloc_vi()
1038 v = t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), &rpl); t4vf_alloc_vi()
1055 struct fw_vi_cmd cmd; t4vf_free_vi() local
1060 memset(&cmd, 0, sizeof(cmd)); t4vf_free_vi()
1061 cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_VI_CMD) | t4vf_free_vi()
1064 cmd.alloc_to_len16 = cpu_to_be32(FW_LEN16(cmd) | t4vf_free_vi()
1066 cmd.type_viid = cpu_to_be16(FW_VI_CMD_VIID_V(viid)); t4vf_free_vi()
1067 return t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), NULL); t4vf_free_vi()
1082 struct fw_vi_enable_cmd cmd; t4vf_enable_vi() local
1084 memset(&cmd, 0, sizeof(cmd)); t4vf_enable_vi()
1085 cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_ENABLE_CMD) | t4vf_enable_vi()
1089 cmd.ien_to_len16 = cpu_to_be32(FW_VI_ENABLE_CMD_IEN_V(rx_en) | t4vf_enable_vi()
1091 FW_LEN16(cmd)); t4vf_enable_vi()
1092 return t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), NULL); t4vf_enable_vi()
1106 struct fw_vi_enable_cmd cmd; t4vf_identify_port() local
1108 memset(&cmd, 0, sizeof(cmd)); t4vf_identify_port()
1109 cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_ENABLE_CMD) | t4vf_identify_port()
1113 cmd.ien_to_len16 = cpu_to_be32(FW_VI_ENABLE_CMD_LED_F | t4vf_identify_port()
1114 FW_LEN16(cmd)); t4vf_identify_port()
1115 cmd.blinkdur = cpu_to_be16(nblinks); t4vf_identify_port()
1116 return t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), NULL); t4vf_identify_port()
1136 struct fw_vi_rxmode_cmd cmd; t4vf_set_rxmode() local
1150 memset(&cmd, 0, sizeof(cmd)); t4vf_set_rxmode()
1151 cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_RXMODE_CMD) | t4vf_set_rxmode()
1155 cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd)); t4vf_set_rxmode()
1156 cmd.mtu_to_vlanexen = t4vf_set_rxmode()
1162 return t4vf_wr_mbox_core(adapter, &cmd, sizeof(cmd), NULL, sleep_ok); t4vf_set_rxmode()
1193 struct fw_vi_mac_cmd cmd, rpl; t4vf_alloc_mac_filt() local
1202 unsigned int fw_naddr = (rem < ARRAY_SIZE(cmd.u.exact) t4vf_alloc_mac_filt()
1204 : ARRAY_SIZE(cmd.u.exact)); t4vf_alloc_mac_filt()
1210 memset(&cmd, 0, sizeof(cmd)); t4vf_alloc_mac_filt()
1211 cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) | t4vf_alloc_mac_filt()
1216 cmd.freemacs_to_len16 = t4vf_alloc_mac_filt()
1220 for (i = 0, p = cmd.u.exact; i < fw_naddr; i++, p++) { t4vf_alloc_mac_filt()
1228 ret = t4vf_wr_mbox_core(adapter, &cmd, sizeof(cmd), &rpl, t4vf_alloc_mac_filt()
1284 struct fw_vi_mac_cmd cmd, rpl; t4vf_change_mac() local
1285 struct fw_vi_mac_exact *p = &cmd.u.exact[0]; t4vf_change_mac()
1299 memset(&cmd, 0, sizeof(cmd)); t4vf_change_mac()
1300 cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) | t4vf_change_mac()
1304 cmd.freemacs_to_len16 = cpu_to_be32(FW_CMD_LEN16_V(len16)); t4vf_change_mac()
1309 ret = t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), &rpl); t4vf_change_mac()
1332 struct fw_vi_mac_cmd cmd; t4vf_set_addr_hash() local
1336 memset(&cmd, 0, sizeof(cmd)); t4vf_set_addr_hash()
1337 cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) | t4vf_set_addr_hash()
1341 cmd.freemacs_to_len16 = cpu_to_be32(FW_VI_MAC_CMD_HASHVECEN_F | t4vf_set_addr_hash()
1344 cmd.u.hash.hashvec = cpu_to_be64(vec); t4vf_set_addr_hash()
1345 return t4vf_wr_mbox_core(adapter, &cmd, sizeof(cmd), NULL, sleep_ok); t4vf_set_addr_hash()
1372 struct fw_vi_stats_cmd cmd, rpl; t4vf_get_port_stats() local
1378 memset(&cmd, 0, sizeof(cmd)); t4vf_get_port_stats()
1379 cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_STATS_CMD) | t4vf_get_port_stats()
1383 cmd.retval_len16 = cpu_to_be32(FW_CMD_LEN16_V(len16)); t4vf_get_port_stats()
1384 cmd.u.ctl.nstats_ix = t4vf_get_port_stats()
1387 ret = t4vf_wr_mbox_ns(adapter, &cmd, len, &rpl); t4vf_get_port_stats()
1435 struct fw_iq_cmd cmd; t4vf_iq_free() local
1437 memset(&cmd, 0, sizeof(cmd)); t4vf_iq_free()
1438 cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_IQ_CMD) | t4vf_iq_free()
1441 cmd.alloc_to_len16 = cpu_to_be32(FW_IQ_CMD_FREE_F | t4vf_iq_free()
1442 FW_LEN16(cmd)); t4vf_iq_free()
1443 cmd.type_to_iqandstindex = t4vf_iq_free()
1446 cmd.iqid = cpu_to_be16(iqid); t4vf_iq_free()
1447 cmd.fl0id = cpu_to_be16(fl0id); t4vf_iq_free()
1448 cmd.fl1id = cpu_to_be16(fl1id); t4vf_iq_free()
1449 return t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), NULL); t4vf_iq_free()
1461 struct fw_eq_eth_cmd cmd; t4vf_eth_eq_free() local
1463 memset(&cmd, 0, sizeof(cmd)); t4vf_eth_eq_free()
1464 cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_EQ_ETH_CMD) | t4vf_eth_eq_free()
1467 cmd.alloc_to_len16 = cpu_to_be32(FW_EQ_ETH_CMD_FREE_F | t4vf_eth_eq_free()
1468 FW_LEN16(cmd)); t4vf_eth_eq_free()
1469 cmd.eqid_pkd = cpu_to_be32(FW_EQ_ETH_CMD_EQID_V(eqid)); t4vf_eth_eq_free()
1470 return t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), NULL); t4vf_eth_eq_free()
/linux-4.1.27/drivers/isdn/act2000/
H A Dcapi.c100 if ((hdr->cmd.cmd == valid_msg[i].cmd.cmd) && actcapi_chkhdr()
101 (hdr->cmd.subcmd == valid_msg[i].cmd.subcmd)) { actcapi_chkhdr()
113 m->hdr.cmd.cmd = c; \
114 m->hdr.cmd.subcmd = s; \
573 msg->hdr.cmd.cmd = 0x86; actcapi_data_b3_ind()
574 msg->hdr.cmd.subcmd = 0x03; actcapi_data_b3_ind()
639 isdn_ctrl cmd; actcapi_dispatch() local
645 ccmd = ((msg->hdr.cmd.cmd << 8) | msg->hdr.cmd.subcmd); actcapi_dispatch()
662 cmd.driver = card->myid; actcapi_dispatch()
663 cmd.command = ISDN_STAT_BSENT; actcapi_dispatch()
664 cmd.arg = chan; actcapi_dispatch()
665 cmd.parm.length = len; actcapi_dispatch()
666 card->interface.statcallb(&cmd); actcapi_dispatch()
676 cmd.driver = card->myid; actcapi_dispatch()
677 cmd.command = ISDN_STAT_DHUP; actcapi_dispatch()
678 cmd.arg = chan; actcapi_dispatch()
679 card->interface.statcallb(&cmd); actcapi_dispatch()
695 cmd.driver = card->myid; actcapi_dispatch()
696 cmd.command = ISDN_STAT_ICALL; actcapi_dispatch()
697 cmd.arg = chan; actcapi_dispatch()
698 cmd.parm.setup.si1 = msg->msg.connect_ind.si1; actcapi_dispatch()
699 cmd.parm.setup.si2 = msg->msg.connect_ind.si2; actcapi_dispatch()
701 strcpy(cmd.parm.setup.eazmsn, actcapi_dispatch()
704 cmd.parm.setup.eazmsn[0] = msg->msg.connect_ind.eaz; actcapi_dispatch()
705 cmd.parm.setup.eazmsn[1] = 0; actcapi_dispatch()
707 memset(cmd.parm.setup.phone, 0, sizeof(cmd.parm.setup.phone)); actcapi_dispatch()
708 memcpy(cmd.parm.setup.phone, msg->msg.connect_ind.addr.num, actcapi_dispatch()
710 cmd.parm.setup.plan = msg->msg.connect_ind.addr.tnp; actcapi_dispatch()
711 cmd.parm.setup.screen = 0; actcapi_dispatch()
712 if (card->interface.statcallb(&cmd) == 2) actcapi_dispatch()
747 cmd.driver = card->myid; actcapi_dispatch()
748 cmd.command = ISDN_STAT_BCONN; actcapi_dispatch()
749 cmd.arg = chan; actcapi_dispatch()
750 card->interface.statcallb(&cmd); actcapi_dispatch()
762 cmd.driver = card->myid; actcapi_dispatch()
763 cmd.command = ISDN_STAT_BHUP; actcapi_dispatch()
764 cmd.arg = chan; actcapi_dispatch()
765 card->interface.statcallb(&cmd); actcapi_dispatch()
770 cmd.driver = card->myid; actcapi_dispatch()
771 cmd.command = ISDN_STAT_BHUP; actcapi_dispatch()
772 cmd.arg = chan; actcapi_dispatch()
773 card->interface.statcallb(&cmd); actcapi_dispatch()
785 cmd.driver = card->myid; actcapi_dispatch()
786 cmd.command = ISDN_STAT_DHUP; actcapi_dispatch()
787 cmd.arg = chan; actcapi_dispatch()
788 card->interface.statcallb(&cmd); actcapi_dispatch()
807 cmd.driver = card->myid; actcapi_dispatch()
808 cmd.command = ISDN_STAT_DHUP; actcapi_dispatch()
809 cmd.arg = chan; actcapi_dispatch()
810 card->interface.statcallb(&cmd); actcapi_dispatch()
827 cmd.driver = card->myid; actcapi_dispatch()
828 cmd.command = ISDN_STAT_DHUP; actcapi_dispatch()
829 cmd.arg = chan; actcapi_dispatch()
830 card->interface.statcallb(&cmd); actcapi_dispatch()
845 cmd.driver = card->myid; actcapi_dispatch()
846 cmd.command = ISDN_STAT_DHUP; actcapi_dispatch()
847 cmd.arg = chan; actcapi_dispatch()
848 card->interface.statcallb(&cmd); actcapi_dispatch()
856 cmd.driver = card->myid; actcapi_dispatch()
857 cmd.command = ISDN_STAT_DCONN; actcapi_dispatch()
858 cmd.arg = chan; actcapi_dispatch()
859 card->interface.statcallb(&cmd); actcapi_dispatch()
862 cmd.driver = card->myid; actcapi_dispatch()
863 cmd.command = ISDN_STAT_DHUP; actcapi_dispatch()
864 cmd.arg = chan; actcapi_dispatch()
865 card->interface.statcallb(&cmd); actcapi_dispatch()
877 cmd.driver = card->myid; actcapi_dispatch()
878 cmd.command = ISDN_STAT_DHUP; actcapi_dispatch()
879 cmd.arg = chan; actcapi_dispatch()
880 card->interface.statcallb(&cmd); actcapi_dispatch()
921 cmd.command = ISDN_STAT_RUN; actcapi_dispatch()
922 cmd.driver = card->myid; actcapi_dispatch()
923 cmd.arg = 0; actcapi_dispatch()
927 card->interface.statcallb(&cmd); actcapi_dispatch()
1020 if (msg->hdr.cmd.cmd == 0x86) actcapi_debug_msg()
1028 if ((msg->hdr.cmd.cmd == valid_msg[i].cmd.cmd) && actcapi_debug_msg()
1029 (msg->hdr.cmd.subcmd == valid_msg[i].cmd.subcmd)) { actcapi_debug_msg()
1037 printk(KERN_DEBUG " Cmd = 0x%02x\n", msg->hdr.cmd.cmd); actcapi_debug_msg()
1038 printk(KERN_DEBUG " SubCmd = 0x%02x\n", msg->hdr.cmd.subcmd); actcapi_debug_msg()
/linux-4.1.27/include/target/
H A Dtarget_core_backend.h37 void (*transport_complete)(struct se_cmd *cmd,
41 sense_reason_t (*parse_cdb)(struct se_cmd *cmd);
59 sense_reason_t (*execute_rw)(struct se_cmd *cmd, struct scatterlist *,
61 sense_reason_t (*execute_sync_cache)(struct se_cmd *cmd);
62 sense_reason_t (*execute_write_same)(struct se_cmd *cmd);
63 sense_reason_t (*execute_write_same_unmap)(struct se_cmd *cmd);
64 sense_reason_t (*execute_unmap)(struct se_cmd *cmd);
73 sense_reason_t spc_parse_cdb(struct se_cmd *cmd, unsigned int *size);
74 sense_reason_t spc_emulate_report_luns(struct se_cmd *cmd);
78 sense_reason_t sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops);
81 sector_t sbc_get_write_same_sectors(struct se_cmd *cmd);
82 sense_reason_t sbc_execute_unmap(struct se_cmd *cmd,
83 sense_reason_t (*do_unmap_fn)(struct se_cmd *cmd, void *priv,
139 sense_reason_t passthrough_parse_cdb(struct se_cmd *cmd,
140 sense_reason_t (*exec_cmd)(struct se_cmd *cmd));
/linux-4.1.27/net/tipc/
H A Dnetlink.c72 .cmd = TIPC_NL_BEARER_DISABLE,
77 .cmd = TIPC_NL_BEARER_ENABLE,
82 .cmd = TIPC_NL_BEARER_GET,
88 .cmd = TIPC_NL_BEARER_SET,
93 .cmd = TIPC_NL_SOCK_GET,
98 .cmd = TIPC_NL_PUBL_GET,
103 .cmd = TIPC_NL_LINK_GET,
109 .cmd = TIPC_NL_LINK_SET,
114 .cmd = TIPC_NL_LINK_RESET_STATS,
119 .cmd = TIPC_NL_MEDIA_GET,
125 .cmd = TIPC_NL_MEDIA_SET,
130 .cmd = TIPC_NL_NODE_GET,
135 .cmd = TIPC_NL_NET_GET,
140 .cmd = TIPC_NL_NET_SET,
145 .cmd = TIPC_NL_NAME_TABLE_GET,
/linux-4.1.27/drivers/scsi/bfa/
H A Dbfad_bsg.c26 bfad_iocmd_ioc_enable(struct bfad_s *bfad, void *cmd) bfad_iocmd_ioc_enable() argument
28 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_ioc_enable()
49 bfad_iocmd_ioc_disable(struct bfad_s *bfad, void *cmd) bfad_iocmd_ioc_disable() argument
51 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_ioc_disable()
79 bfad_iocmd_ioc_get_info(struct bfad_s *bfad, void *cmd) bfad_iocmd_ioc_get_info() argument
82 struct bfa_bsg_ioc_info_s *iocmd = (struct bfa_bsg_ioc_info_s *)cmd; bfad_iocmd_ioc_get_info()
118 bfad_iocmd_ioc_get_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_ioc_get_attr() argument
120 struct bfa_bsg_ioc_attr_s *iocmd = (struct bfa_bsg_ioc_attr_s *)cmd; bfad_iocmd_ioc_get_attr()
147 bfad_iocmd_ioc_get_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_ioc_get_stats() argument
149 struct bfa_bsg_ioc_stats_s *iocmd = (struct bfa_bsg_ioc_stats_s *)cmd; bfad_iocmd_ioc_get_stats()
157 bfad_iocmd_ioc_get_fwstats(struct bfad_s *bfad, void *cmd, bfad_iocmd_ioc_get_fwstats() argument
161 (struct bfa_bsg_ioc_fwstats_s *)cmd; bfad_iocmd_ioc_get_fwstats()
187 bfad_iocmd_ioc_reset_stats(struct bfad_s *bfad, void *cmd, unsigned int v_cmd) bfad_iocmd_ioc_reset_stats() argument
189 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_ioc_reset_stats()
205 bfad_iocmd_ioc_set_name(struct bfad_s *bfad, void *cmd, unsigned int v_cmd) bfad_iocmd_ioc_set_name() argument
207 struct bfa_bsg_ioc_name_s *iocmd = (struct bfa_bsg_ioc_name_s *) cmd; bfad_iocmd_ioc_set_name()
219 bfad_iocmd_iocfc_get_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_iocfc_get_attr() argument
221 struct bfa_bsg_iocfc_attr_s *iocmd = (struct bfa_bsg_iocfc_attr_s *)cmd; bfad_iocmd_iocfc_get_attr()
230 bfad_iocmd_ioc_fw_sig_inv(struct bfad_s *bfad, void *cmd) bfad_iocmd_ioc_fw_sig_inv() argument
232 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_ioc_fw_sig_inv()
242 bfad_iocmd_iocfc_set_intr(struct bfad_s *bfad, void *cmd) bfad_iocmd_iocfc_set_intr() argument
244 struct bfa_bsg_iocfc_intr_s *iocmd = (struct bfa_bsg_iocfc_intr_s *)cmd; bfad_iocmd_iocfc_set_intr()
255 bfad_iocmd_port_enable(struct bfad_s *bfad, void *cmd) bfad_iocmd_port_enable() argument
257 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_port_enable()
276 bfad_iocmd_port_disable(struct bfad_s *bfad, void *cmd) bfad_iocmd_port_disable() argument
278 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_port_disable()
298 bfad_iocmd_port_get_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_port_get_attr() argument
300 struct bfa_bsg_port_attr_s *iocmd = (struct bfa_bsg_port_attr_s *)cmd; bfad_iocmd_port_get_attr()
326 bfad_iocmd_port_get_stats(struct bfad_s *bfad, void *cmd, bfad_iocmd_port_get_stats() argument
329 struct bfa_bsg_port_stats_s *iocmd = (struct bfa_bsg_port_stats_s *)cmd; bfad_iocmd_port_get_stats()
360 bfad_iocmd_port_reset_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_port_reset_stats() argument
362 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_port_reset_stats()
383 struct bfa_bsg_port_cfg_s *cmd = (struct bfa_bsg_port_cfg_s *)iocmd; bfad_iocmd_set_port_cfg() local
388 cmd->status = bfa_fcport_cfg_topology(&bfad->bfa, cmd->param); bfad_iocmd_set_port_cfg()
390 cmd->status = bfa_fcport_cfg_speed(&bfad->bfa, cmd->param); bfad_iocmd_set_port_cfg()
392 cmd->status = bfa_fcport_cfg_hardalpa(&bfad->bfa, cmd->param); bfad_iocmd_set_port_cfg()
394 cmd->status = bfa_fcport_clr_hardalpa(&bfad->bfa); bfad_iocmd_set_port_cfg()
401 bfad_iocmd_port_cfg_maxfrsize(struct bfad_s *bfad, void *cmd) bfad_iocmd_port_cfg_maxfrsize() argument
404 (struct bfa_bsg_port_cfg_maxfrsize_s *)cmd; bfad_iocmd_port_cfg_maxfrsize()
415 bfad_iocmd_port_cfg_bbcr(struct bfad_s *bfad, unsigned int cmd, void *pcmd) bfad_iocmd_port_cfg_bbcr() argument
423 if (cmd == IOCMD_PORT_BBCR_ENABLE) bfad_iocmd_port_cfg_bbcr()
425 else if (cmd == IOCMD_PORT_BBCR_DISABLE) bfad_iocmd_port_cfg_bbcr()
453 bfad_iocmd_lport_get_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_lport_get_attr() argument
456 struct bfa_bsg_lport_attr_s *iocmd = (struct bfa_bsg_lport_attr_s *)cmd; bfad_iocmd_lport_get_attr()
476 bfad_iocmd_lport_get_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_lport_get_stats() argument
480 (struct bfa_bsg_lport_stats_s *)cmd; bfad_iocmd_lport_get_stats()
500 bfad_iocmd_lport_reset_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_lport_reset_stats() argument
504 (struct bfa_bsg_reset_stats_s *)cmd; bfad_iocmd_lport_reset_stats()
534 bfad_iocmd_lport_get_iostats(struct bfad_s *bfad, void *cmd) bfad_iocmd_lport_get_iostats() argument
538 (struct bfa_bsg_lport_iostats_s *)cmd; bfad_iocmd_lport_get_iostats()
559 bfad_iocmd_lport_get_rports(struct bfad_s *bfad, void *cmd, bfad_iocmd_lport_get_rports() argument
563 (struct bfa_bsg_lport_get_rports_s *)cmd; bfad_iocmd_lport_get_rports()
601 bfad_iocmd_rport_get_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_rport_get_attr() argument
603 struct bfa_bsg_rport_attr_s *iocmd = (struct bfa_bsg_rport_attr_s *)cmd; bfad_iocmd_rport_get_attr()
638 bfad_iocmd_rport_get_addr(struct bfad_s *bfad, void *cmd) bfad_iocmd_rport_get_addr() argument
641 (struct bfa_bsg_rport_scsi_addr_s *)cmd; bfad_iocmd_rport_get_addr()
687 bfad_iocmd_rport_get_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_rport_get_stats() argument
690 (struct bfa_bsg_rport_stats_s *)cmd; bfad_iocmd_rport_get_stats()
728 bfad_iocmd_rport_clr_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_rport_clr_stats() argument
731 (struct bfa_bsg_rport_reset_stats_s *)cmd; bfad_iocmd_rport_clr_stats()
764 bfad_iocmd_rport_set_speed(struct bfad_s *bfad, void *cmd) bfad_iocmd_rport_set_speed() argument
767 (struct bfa_bsg_rport_set_speed_s *)cmd; bfad_iocmd_rport_set_speed()
800 bfad_iocmd_vport_get_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_vport_get_attr() argument
803 struct bfa_bsg_vport_attr_s *iocmd = (struct bfa_bsg_vport_attr_s *)cmd; bfad_iocmd_vport_get_attr()
823 bfad_iocmd_vport_get_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_vport_get_stats() argument
827 (struct bfa_bsg_vport_stats_s *)cmd; bfad_iocmd_vport_get_stats()
851 bfad_iocmd_vport_clr_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_vport_clr_stats() argument
855 (struct bfa_bsg_reset_stats_s *)cmd; bfad_iocmd_vport_clr_stats()
876 bfad_iocmd_fabric_get_lports(struct bfad_s *bfad, void *cmd, bfad_iocmd_fabric_get_lports() argument
880 (struct bfa_bsg_fabric_get_lports_s *)cmd; bfad_iocmd_fabric_get_lports()
931 bfad_iocmd_ratelim(struct bfad_s *bfad, unsigned int cmd, void *pcmd) bfad_iocmd_ratelim() argument
943 if (cmd == IOCMD_RATELIM_ENABLE) bfad_iocmd_ratelim()
945 else if (cmd == IOCMD_RATELIM_DISABLE) bfad_iocmd_ratelim()
960 bfad_iocmd_ratelim_speed(struct bfad_s *bfad, unsigned int cmd, void *pcmd) bfad_iocmd_ratelim_speed() argument
989 bfad_iocmd_cfg_fcpim(struct bfad_s *bfad, void *cmd) bfad_iocmd_cfg_fcpim() argument
991 struct bfa_bsg_fcpim_s *iocmd = (struct bfa_bsg_fcpim_s *)cmd; bfad_iocmd_cfg_fcpim()
1002 bfad_iocmd_fcpim_get_modstats(struct bfad_s *bfad, void *cmd) bfad_iocmd_fcpim_get_modstats() argument
1005 (struct bfa_bsg_fcpim_modstats_s *)cmd; bfad_iocmd_fcpim_get_modstats()
1024 bfad_iocmd_fcpim_clr_modstats(struct bfad_s *bfad, void *cmd) bfad_iocmd_fcpim_clr_modstats() argument
1027 (struct bfa_bsg_fcpim_modstatsclr_s *)cmd; bfad_iocmd_fcpim_clr_modstats()
1046 bfad_iocmd_fcpim_get_del_itn_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_fcpim_get_del_itn_stats() argument
1049 (struct bfa_bsg_fcpim_del_itn_stats_s *)cmd; bfad_iocmd_fcpim_get_del_itn_stats()
1063 bfad_iocmd_itnim_get_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_itnim_get_attr() argument
1065 struct bfa_bsg_itnim_attr_s *iocmd = (struct bfa_bsg_itnim_attr_s *)cmd; bfad_iocmd_itnim_get_attr()
1082 bfad_iocmd_itnim_get_iostats(struct bfad_s *bfad, void *cmd) bfad_iocmd_itnim_get_iostats() argument
1085 (struct bfa_bsg_itnim_iostats_s *)cmd; bfad_iocmd_itnim_get_iostats()
1113 bfad_iocmd_itnim_reset_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_itnim_reset_stats() argument
1116 (struct bfa_bsg_rport_reset_stats_s *)cmd; bfad_iocmd_itnim_reset_stats()
1142 bfad_iocmd_itnim_get_itnstats(struct bfad_s *bfad, void *cmd) bfad_iocmd_itnim_get_itnstats() argument
1145 (struct bfa_bsg_itnim_itnstats_s *)cmd; bfad_iocmd_itnim_get_itnstats()
1171 bfad_iocmd_fcport_enable(struct bfad_s *bfad, void *cmd) bfad_iocmd_fcport_enable() argument
1173 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_fcport_enable()
1184 bfad_iocmd_fcport_disable(struct bfad_s *bfad, void *cmd) bfad_iocmd_fcport_disable() argument
1186 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_fcport_disable()
1197 bfad_iocmd_ioc_get_pcifn_cfg(struct bfad_s *bfad, void *cmd) bfad_iocmd_ioc_get_pcifn_cfg() argument
1199 struct bfa_bsg_pcifn_cfg_s *iocmd = (struct bfa_bsg_pcifn_cfg_s *)cmd; bfad_iocmd_ioc_get_pcifn_cfg()
1219 bfad_iocmd_pcifn_create(struct bfad_s *bfad, void *cmd) bfad_iocmd_pcifn_create() argument
1221 struct bfa_bsg_pcifn_s *iocmd = (struct bfa_bsg_pcifn_s *)cmd; bfad_iocmd_pcifn_create()
1242 bfad_iocmd_pcifn_delete(struct bfad_s *bfad, void *cmd) bfad_iocmd_pcifn_delete() argument
1244 struct bfa_bsg_pcifn_s *iocmd = (struct bfa_bsg_pcifn_s *)cmd; bfad_iocmd_pcifn_delete()
1264 bfad_iocmd_pcifn_bw(struct bfad_s *bfad, void *cmd) bfad_iocmd_pcifn_bw() argument
1266 struct bfa_bsg_pcifn_s *iocmd = (struct bfa_bsg_pcifn_s *)cmd; bfad_iocmd_pcifn_bw()
1288 bfad_iocmd_adapter_cfg_mode(struct bfad_s *bfad, void *cmd) bfad_iocmd_adapter_cfg_mode() argument
1291 (struct bfa_bsg_adapter_cfg_mode_s *)cmd; bfad_iocmd_adapter_cfg_mode()
1311 bfad_iocmd_port_cfg_mode(struct bfad_s *bfad, void *cmd) bfad_iocmd_port_cfg_mode() argument
1314 (struct bfa_bsg_port_cfg_mode_s *)cmd; bfad_iocmd_port_cfg_mode()
1335 bfad_iocmd_ablk_optrom(struct bfad_s *bfad, unsigned int cmd, void *pcmd) bfad_iocmd_ablk_optrom() argument
1343 if (cmd == IOCMD_FLASH_ENABLE_OPTROM) bfad_iocmd_ablk_optrom()
1361 bfad_iocmd_faa_query(struct bfad_s *bfad, void *cmd) bfad_iocmd_faa_query() argument
1363 struct bfa_bsg_faa_attr_s *iocmd = (struct bfa_bsg_faa_attr_s *)cmd; bfad_iocmd_faa_query()
1384 bfad_iocmd_cee_attr(struct bfad_s *bfad, void *cmd, unsigned int payload_len) bfad_iocmd_cee_attr() argument
1387 (struct bfa_bsg_cee_attr_s *)cmd; bfad_iocmd_cee_attr()
1420 bfad_iocmd_cee_get_stats(struct bfad_s *bfad, void *cmd, bfad_iocmd_cee_get_stats() argument
1424 (struct bfa_bsg_cee_stats_s *)cmd; bfad_iocmd_cee_get_stats()
1457 bfad_iocmd_cee_reset_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_cee_reset_stats() argument
1459 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_cee_reset_stats()
1471 bfad_iocmd_sfp_media(struct bfad_s *bfad, void *cmd) bfad_iocmd_sfp_media() argument
1473 struct bfa_bsg_sfp_media_s *iocmd = (struct bfa_bsg_sfp_media_s *)cmd; bfad_iocmd_sfp_media()
1493 bfad_iocmd_sfp_speed(struct bfad_s *bfad, void *cmd) bfad_iocmd_sfp_speed() argument
1495 struct bfa_bsg_sfp_speed_s *iocmd = (struct bfa_bsg_sfp_speed_s *)cmd; bfad_iocmd_sfp_speed()
1514 bfad_iocmd_flash_get_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_flash_get_attr() argument
1517 (struct bfa_bsg_flash_attr_s *)cmd; bfad_iocmd_flash_get_attr()
1535 bfad_iocmd_flash_erase_part(struct bfad_s *bfad, void *cmd) bfad_iocmd_flash_erase_part() argument
1537 struct bfa_bsg_flash_s *iocmd = (struct bfa_bsg_flash_s *)cmd; bfad_iocmd_flash_erase_part()
1555 bfad_iocmd_flash_update_part(struct bfad_s *bfad, void *cmd, bfad_iocmd_flash_update_part() argument
1558 struct bfa_bsg_flash_s *iocmd = (struct bfa_bsg_flash_s *)cmd; bfad_iocmd_flash_update_part()
1587 bfad_iocmd_flash_read_part(struct bfad_s *bfad, void *cmd, bfad_iocmd_flash_read_part() argument
1590 struct bfa_bsg_flash_s *iocmd = (struct bfa_bsg_flash_s *)cmd; bfad_iocmd_flash_read_part()
1619 bfad_iocmd_diag_temp(struct bfad_s *bfad, void *cmd) bfad_iocmd_diag_temp() argument
1622 (struct bfa_bsg_diag_get_temp_s *)cmd; bfad_iocmd_diag_temp()
1641 bfad_iocmd_diag_memtest(struct bfad_s *bfad, void *cmd) bfad_iocmd_diag_memtest() argument
1644 (struct bfa_bsg_diag_memtest_s *)cmd; bfad_iocmd_diag_memtest()
1664 bfad_iocmd_diag_loopback(struct bfad_s *bfad, void *cmd) bfad_iocmd_diag_loopback() argument
1667 (struct bfa_bsg_diag_loopback_s *)cmd; bfad_iocmd_diag_loopback()
1687 bfad_iocmd_diag_fwping(struct bfad_s *bfad, void *cmd) bfad_iocmd_diag_fwping() argument
1690 (struct bfa_bsg_diag_fwping_s *)cmd; bfad_iocmd_diag_fwping()
1711 bfad_iocmd_diag_queuetest(struct bfad_s *bfad, void *cmd) bfad_iocmd_diag_queuetest() argument
1713 struct bfa_bsg_diag_qtest_s *iocmd = (struct bfa_bsg_diag_qtest_s *)cmd; bfad_iocmd_diag_queuetest()
1732 bfad_iocmd_diag_sfp(struct bfad_s *bfad, void *cmd) bfad_iocmd_diag_sfp() argument
1735 (struct bfa_bsg_sfp_show_s *)cmd; bfad_iocmd_diag_sfp()
1755 bfad_iocmd_diag_led(struct bfad_s *bfad, void *cmd) bfad_iocmd_diag_led() argument
1757 struct bfa_bsg_diag_led_s *iocmd = (struct bfa_bsg_diag_led_s *)cmd; bfad_iocmd_diag_led()
1768 bfad_iocmd_diag_beacon_lport(struct bfad_s *bfad, void *cmd) bfad_iocmd_diag_beacon_lport() argument
1771 (struct bfa_bsg_diag_beacon_s *)cmd; bfad_iocmd_diag_beacon_lport()
1783 bfad_iocmd_diag_lb_stat(struct bfad_s *bfad, void *cmd) bfad_iocmd_diag_lb_stat() argument
1786 (struct bfa_bsg_diag_lb_stat_s *)cmd; bfad_iocmd_diag_lb_stat()
1880 bfad_iocmd_phy_get_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_phy_get_attr() argument
1883 (struct bfa_bsg_phy_attr_s *)cmd; bfad_iocmd_phy_get_attr()
1901 bfad_iocmd_phy_get_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_phy_get_stats() argument
1904 (struct bfa_bsg_phy_stats_s *)cmd; bfad_iocmd_phy_get_stats()
1922 bfad_iocmd_phy_read(struct bfad_s *bfad, void *cmd, unsigned int payload_len) bfad_iocmd_phy_read() argument
1924 struct bfa_bsg_phy_s *iocmd = (struct bfa_bsg_phy_s *)cmd; bfad_iocmd_phy_read()
1954 bfad_iocmd_vhba_query(struct bfad_s *bfad, void *cmd) bfad_iocmd_vhba_query() argument
1957 (struct bfa_bsg_vhba_attr_s *)cmd; bfad_iocmd_vhba_query()
1973 bfad_iocmd_phy_update(struct bfad_s *bfad, void *cmd, unsigned int payload_len) bfad_iocmd_phy_update() argument
1975 struct bfa_bsg_phy_s *iocmd = (struct bfa_bsg_phy_s *)cmd; bfad_iocmd_phy_update()
2003 bfad_iocmd_porglog_get(struct bfad_s *bfad, void *cmd) bfad_iocmd_porglog_get() argument
2005 struct bfa_bsg_debug_s *iocmd = (struct bfa_bsg_debug_s *)cmd; bfad_iocmd_porglog_get()
2023 bfad_iocmd_debug_fw_core(struct bfad_s *bfad, void *cmd, bfad_iocmd_debug_fw_core() argument
2026 struct bfa_bsg_debug_s *iocmd = (struct bfa_bsg_debug_s *)cmd; bfad_iocmd_debug_fw_core()
2057 bfad_iocmd_debug_ctl(struct bfad_s *bfad, void *cmd, unsigned int v_cmd) bfad_iocmd_debug_ctl() argument
2059 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_debug_ctl()
2078 bfad_iocmd_porglog_ctl(struct bfad_s *bfad, void *cmd) bfad_iocmd_porglog_ctl() argument
2080 struct bfa_bsg_portlogctl_s *iocmd = (struct bfa_bsg_portlogctl_s *)cmd; bfad_iocmd_porglog_ctl()
2092 bfad_iocmd_fcpim_cfg_profile(struct bfad_s *bfad, void *cmd, unsigned int v_cmd) bfad_iocmd_fcpim_cfg_profile() argument
2095 (struct bfa_bsg_fcpim_profile_s *)cmd; bfad_iocmd_fcpim_cfg_profile()
2111 bfad_iocmd_itnim_get_ioprofile(struct bfad_s *bfad, void *cmd) bfad_iocmd_itnim_get_ioprofile() argument
2114 (struct bfa_bsg_itnim_ioprofile_s *)cmd; bfad_iocmd_itnim_get_ioprofile()
2138 bfad_iocmd_fcport_get_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_fcport_get_stats() argument
2141 (struct bfa_bsg_fcport_stats_s *)cmd; bfad_iocmd_fcport_get_stats()
2163 bfad_iocmd_fcport_reset_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_fcport_reset_stats() argument
2165 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_fcport_reset_stats()
2187 bfad_iocmd_boot_cfg(struct bfad_s *bfad, void *cmd) bfad_iocmd_boot_cfg() argument
2189 struct bfa_bsg_boot_s *iocmd = (struct bfa_bsg_boot_s *)cmd; bfad_iocmd_boot_cfg()
2209 bfad_iocmd_boot_query(struct bfad_s *bfad, void *cmd) bfad_iocmd_boot_query() argument
2211 struct bfa_bsg_boot_s *iocmd = (struct bfa_bsg_boot_s *)cmd; bfad_iocmd_boot_query()
2231 bfad_iocmd_preboot_query(struct bfad_s *bfad, void *cmd) bfad_iocmd_preboot_query() argument
2233 struct bfa_bsg_preboot_s *iocmd = (struct bfa_bsg_preboot_s *)cmd; bfad_iocmd_preboot_query()
2250 bfad_iocmd_ethboot_cfg(struct bfad_s *bfad, void *cmd) bfad_iocmd_ethboot_cfg() argument
2252 struct bfa_bsg_ethboot_s *iocmd = (struct bfa_bsg_ethboot_s *)cmd; bfad_iocmd_ethboot_cfg()
2273 bfad_iocmd_ethboot_query(struct bfad_s *bfad, void *cmd) bfad_iocmd_ethboot_query() argument
2275 struct bfa_bsg_ethboot_s *iocmd = (struct bfa_bsg_ethboot_s *)cmd; bfad_iocmd_ethboot_query()
2296 bfad_iocmd_cfg_trunk(struct bfad_s *bfad, void *cmd, unsigned int v_cmd) bfad_iocmd_cfg_trunk() argument
2298 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_cfg_trunk()
2336 bfad_iocmd_trunk_get_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_trunk_get_attr() argument
2338 struct bfa_bsg_trunk_attr_s *iocmd = (struct bfa_bsg_trunk_attr_s *)cmd; bfad_iocmd_trunk_get_attr()
2359 bfad_iocmd_qos(struct bfad_s *bfad, void *cmd, unsigned int v_cmd) bfad_iocmd_qos() argument
2361 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_qos()
2387 bfad_iocmd_qos_get_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_qos_get_attr() argument
2389 struct bfa_bsg_qos_attr_s *iocmd = (struct bfa_bsg_qos_attr_s *)cmd; bfad_iocmd_qos_get_attr()
2413 bfad_iocmd_qos_get_vc_attr(struct bfad_s *bfad, void *cmd) bfad_iocmd_qos_get_vc_attr() argument
2416 (struct bfa_bsg_qos_vc_attr_s *)cmd; bfad_iocmd_qos_get_vc_attr()
2445 bfad_iocmd_qos_get_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_qos_get_stats() argument
2448 (struct bfa_bsg_fcport_stats_s *)cmd; bfad_iocmd_qos_get_stats()
2477 bfad_iocmd_qos_reset_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_qos_reset_stats() argument
2479 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd; bfad_iocmd_qos_reset_stats()
2508 bfad_iocmd_vf_get_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_vf_get_stats() argument
2511 (struct bfa_bsg_vf_stats_s *)cmd; bfad_iocmd_vf_get_stats()
2531 bfad_iocmd_vf_clr_stats(struct bfad_s *bfad, void *cmd) bfad_iocmd_vf_clr_stats() argument
2534 (struct bfa_bsg_vf_reset_stats_s *)cmd; bfad_iocmd_vf_clr_stats()
2591 bfad_iocmd_fcpim_lunmask_query(struct bfad_s *bfad, void *cmd) bfad_iocmd_fcpim_lunmask_query() argument
2594 (struct bfa_bsg_fcpim_lunmask_query_s *)cmd; bfad_iocmd_fcpim_lunmask_query()
2605 bfad_iocmd_fcpim_cfg_lunmask(struct bfad_s *bfad, void *cmd, unsigned int v_cmd) bfad_iocmd_fcpim_cfg_lunmask() argument
2608 (struct bfa_bsg_fcpim_lunmask_s *)cmd; bfad_iocmd_fcpim_cfg_lunmask()
2624 bfad_iocmd_fcpim_throttle_query(struct bfad_s *bfad, void *cmd) bfad_iocmd_fcpim_throttle_query() argument
2627 (struct bfa_bsg_fcpim_throttle_s *)cmd; bfad_iocmd_fcpim_throttle_query()
2639 bfad_iocmd_fcpim_throttle_set(struct bfad_s *bfad, void *cmd) bfad_iocmd_fcpim_throttle_set() argument
2642 (struct bfa_bsg_fcpim_throttle_s *)cmd; bfad_iocmd_fcpim_throttle_set()
2654 bfad_iocmd_tfru_read(struct bfad_s *bfad, void *cmd) bfad_iocmd_tfru_read() argument
2657 (struct bfa_bsg_tfru_s *)cmd; bfad_iocmd_tfru_read()
2676 bfad_iocmd_tfru_write(struct bfad_s *bfad, void *cmd) bfad_iocmd_tfru_write() argument
2679 (struct bfa_bsg_tfru_s *)cmd; bfad_iocmd_tfru_write()
2698 bfad_iocmd_fruvpd_read(struct bfad_s *bfad, void *cmd) bfad_iocmd_fruvpd_read() argument
2701 (struct bfa_bsg_fruvpd_s *)cmd; bfad_iocmd_fruvpd_read()
2720 bfad_iocmd_fruvpd_update(struct bfad_s *bfad, void *cmd) bfad_iocmd_fruvpd_update() argument
2723 (struct bfa_bsg_fruvpd_s *)cmd; bfad_iocmd_fruvpd_update()
2742 bfad_iocmd_fruvpd_get_max_size(struct bfad_s *bfad, void *cmd) bfad_iocmd_fruvpd_get_max_size() argument
2745 (struct bfa_bsg_fruvpd_max_size_s *)cmd; bfad_iocmd_fruvpd_get_max_size()
2757 bfad_iocmd_handler(struct bfad_s *bfad, unsigned int cmd, void *iocmd, bfad_iocmd_handler() argument
2762 switch (cmd) { bfad_iocmd_handler()
2783 rc = bfad_iocmd_ioc_reset_stats(bfad, iocmd, cmd); bfad_iocmd_handler()
2787 rc = bfad_iocmd_ioc_set_name(bfad, iocmd, cmd); bfad_iocmd_handler()
2814 rc = bfad_iocmd_set_port_cfg(bfad, iocmd, cmd); bfad_iocmd_handler()
2821 rc = bfad_iocmd_port_cfg_bbcr(bfad, cmd, iocmd); bfad_iocmd_handler()
2870 rc = bfad_iocmd_ratelim(bfad, cmd, iocmd); bfad_iocmd_handler()
2873 rc = bfad_iocmd_ratelim_speed(bfad, cmd, iocmd); bfad_iocmd_handler()
2928 rc = bfad_iocmd_ablk_optrom(bfad, cmd, iocmd); bfad_iocmd_handler()
3024 rc = bfad_iocmd_debug_ctl(bfad, iocmd, cmd); bfad_iocmd_handler()
3031 rc = bfad_iocmd_fcpim_cfg_profile(bfad, iocmd, cmd); bfad_iocmd_handler()
3059 rc = bfad_iocmd_cfg_trunk(bfad, iocmd, cmd); bfad_iocmd_handler()
3066 rc = bfad_iocmd_qos(bfad, iocmd, cmd); bfad_iocmd_handler()
3092 rc = bfad_iocmd_lunmask(bfad, iocmd, cmd); bfad_iocmd_handler()
3099 rc = bfad_iocmd_fcpim_cfg_lunmask(bfad, iocmd, cmd); bfad_iocmd_handler()
3413 /* Check if the port is online before sending FC Passthru cmd */ bfad_im_bsg_els_ct_request()
/linux-4.1.27/drivers/isdn/isdnloop/
H A Disdnloop.c59 isdn_ctrl cmd; isdnloop_bchan_send() local
67 cmd.driver = card->myid; isdnloop_bchan_send()
68 cmd.arg = ch; isdnloop_bchan_send()
76 cmd.command = ISDN_STAT_BSENT; isdnloop_bchan_send()
77 cmd.parm.length = len; isdnloop_bchan_send()
78 card->interface.statcallb(&cmd); isdnloop_bchan_send()
119 * cmd = pointer to struct to be filled.
122 isdnloop_parse_setup(char *setup, isdn_ctrl *cmd) isdnloop_parse_setup() argument
128 strlcpy(cmd->parm.setup.phone, t, sizeof(cmd->parm.setup.phone)); isdnloop_parse_setup()
132 cmd->parm.setup.si1 = 0; isdnloop_parse_setup()
134 cmd->parm.setup.si1 = simple_strtoul(t, NULL, 10); isdnloop_parse_setup()
138 cmd->parm.setup.si2 = 0; isdnloop_parse_setup()
140 cmd->parm.setup.si2 = isdnloop_parse_setup()
142 strlcpy(cmd->parm.setup.eazmsn, s, sizeof(cmd->parm.setup.eazmsn)); isdnloop_parse_setup()
143 cmd->parm.setup.plan = 0; isdnloop_parse_setup()
144 cmd->parm.setup.screen = 0; isdnloop_parse_setup()
189 isdn_ctrl cmd; isdnloop_parse_status() local
193 cmd.command = s->command; isdnloop_parse_status()
201 cmd.driver = card->myid; isdnloop_parse_status()
202 cmd.arg = channel; isdnloop_parse_status()
217 isdnloop_parse_setup(status + 6, &cmd); isdnloop_parse_status()
221 sprintf(cmd.parm.setup.phone, "LEASED%d", card->myid); isdnloop_parse_status()
222 sprintf(cmd.parm.setup.eazmsn, "%d", channel + 1); isdnloop_parse_status()
223 cmd.parm.setup.si1 = 7; isdnloop_parse_status()
224 cmd.parm.setup.si2 = 0; isdnloop_parse_status()
225 cmd.parm.setup.plan = 0; isdnloop_parse_status()
226 cmd.parm.setup.screen = 0; isdnloop_parse_status()
230 strlcpy(cmd.parm.num, status + 3, sizeof(cmd.parm.num)); isdnloop_parse_status()
234 snprintf(cmd.parm.num, sizeof(cmd.parm.num), "%d", isdnloop_parse_status()
241 snprintf(cmd.parm.num, sizeof(cmd.parm.num), "%s%c%c", isdnloop_parse_status()
244 strlcpy(cmd.parm.num, status + 1, sizeof(cmd.parm.num)); isdnloop_parse_status()
250 cmd.arg = 0; isdnloop_parse_status()
251 cmd.driver = card->myid; isdnloop_parse_status()
252 card->interface.statcallb(&cmd); isdnloop_parse_status()
253 cmd.command = ISDN_STAT_DHUP; isdnloop_parse_status()
254 cmd.arg = 0; isdnloop_parse_status()
255 cmd.driver = card->myid; isdnloop_parse_status()
256 card->interface.statcallb(&cmd); isdnloop_parse_status()
257 cmd.command = ISDN_STAT_BHUP; isdnloop_parse_status()
260 cmd.arg = 1; isdnloop_parse_status()
261 cmd.driver = card->myid; isdnloop_parse_status()
262 card->interface.statcallb(&cmd); isdnloop_parse_status()
263 cmd.command = ISDN_STAT_DHUP; isdnloop_parse_status()
264 cmd.arg = 1; isdnloop_parse_status()
265 cmd.driver = card->myid; isdnloop_parse_status()
268 card->interface.statcallb(&cmd); isdnloop_parse_status()
318 isdn_ctrl cmd; isdnloop_polldchan() local
365 cmd.command = ISDN_STAT_STAVAIL; isdnloop_polldchan()
366 cmd.driver = card->myid; isdnloop_polldchan()
367 cmd.arg = avail; isdnloop_polldchan()
368 card->interface.statcallb(&cmd); isdnloop_polldchan()
658 * cmd = pointer to struct to be filled when parsing setup.
666 isdnloop_try_call(isdnloop_card *card, char *p, int lch, isdn_ctrl *cmd) isdnloop_try_call() argument
676 isdnloop_parse_setup(p, cmd); isdnloop_try_call()
686 if (!(strcmp(cc->s0num[i], cmd->parm.setup.phone))) isdnloop_try_call()
693 if (!(strcmp(nbuf, cmd->parm.setup.phone))) isdnloop_try_call()
703 if (!(si2bit[cmd->parm.setup.si1] & cc->sil[ch])) { isdnloop_try_call()
780 isdn_ctrl cmd; isdnloop_parse_cmd() local
865 switch (isdnloop_try_call(card, p, ch - 1, &cmd)) { isdnloop_parse_cmd()
870 isdnloop_vstphone(card, cmd.parm.setup.eazmsn, 1), isdnloop_parse_cmd()
871 cmd.parm.setup.si1, isdnloop_parse_cmd()
872 cmd.parm.setup.si2, isdnloop_parse_cmd()
874 cmd.parm.setup.phone, 0)); isdnloop_parse_cmd()
970 isdn_ctrl cmd; isdnloop_writecmd() local
1005 cmd.command = ISDN_STAT_STAVAIL; isdnloop_writecmd()
1006 cmd.driver = card->myid; isdnloop_writecmd()
1007 cmd.arg = ocount; isdnloop_writecmd()
1008 card->interface.statcallb(&cmd); isdnloop_writecmd()
1019 isdn_ctrl cmd; isdnloop_stopcard() local
1028 cmd.command = ISDN_STAT_STOP; isdnloop_stopcard()
1029 cmd.driver = card->myid; isdnloop_stopcard()
1030 card->interface.statcallb(&cmd); isdnloop_stopcard()
1135 isdn_ctrl cmd; isdnloop_command() local
1168 cmd.command = ISDN_STAT_RUN; isdnloop_command()
1169 cmd.driver = card->myid; isdnloop_command()
1170 cmd.arg = 0; isdnloop_command()
1171 card->interface.statcallb(&cmd); isdnloop_command()
1181 cmd.command = ISDN_STAT_RUN; isdnloop_command()
1182 cmd.driver = card->myid; isdnloop_command()
1183 cmd.arg = 0; isdnloop_command()
1184 card->interface.statcallb(&cmd); isdnloop_command()
1510 isdn_ctrl cmd; isdnloop_exit() local
1517 cmd.command = ISDN_STAT_UNLOAD; isdnloop_exit()
1518 cmd.driver = card->myid; isdnloop_exit()
1519 card->interface.statcallb(&cmd); isdnloop_exit()
/linux-4.1.27/drivers/net/wireless/mwifiex/
H A Dsta_cmd.c44 struct host_cmd_ds_command *cmd, u16 cmd_action) mwifiex_cmd_802_11_rssi_info()
46 cmd->command = cpu_to_le16(HostCmd_CMD_RSSI_INFO); mwifiex_cmd_802_11_rssi_info()
47 cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_802_11_rssi_info) + mwifiex_cmd_802_11_rssi_info()
49 cmd->params.rssi_info.action = cpu_to_le16(cmd_action); mwifiex_cmd_802_11_rssi_info()
50 cmd->params.rssi_info.ndata = cpu_to_le16(priv->data_avg_factor); mwifiex_cmd_802_11_rssi_info()
51 cmd->params.rssi_info.nbcn = cpu_to_le16(priv->bcn_avg_factor); mwifiex_cmd_802_11_rssi_info()
74 struct host_cmd_ds_command *cmd, mwifiex_cmd_mac_control()
77 struct host_cmd_ds_mac_control *mac_ctrl = &cmd->params.mac_ctrl; mwifiex_cmd_mac_control()
81 "mac_control: only support set cmd\n"); mwifiex_cmd_mac_control()
85 cmd->command = cpu_to_le16(HostCmd_CMD_MAC_CONTROL); mwifiex_cmd_mac_control()
86 cmd->size = mwifiex_cmd_mac_control()
109 struct host_cmd_ds_command *cmd, mwifiex_cmd_802_11_snmp_mib()
113 struct host_cmd_ds_802_11_snmp_mib *snmp_mib = &cmd->params.smib; mwifiex_cmd_802_11_snmp_mib()
115 dev_dbg(priv->adapter->dev, "cmd: SNMP_CMD: cmd_oid = 0x%x\n", cmd_oid); mwifiex_cmd_802_11_snmp_mib()
116 cmd->command = cpu_to_le16(HostCmd_CMD_802_11_SNMP_MIB); mwifiex_cmd_802_11_snmp_mib()
117 cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_802_11_snmp_mib) mwifiex_cmd_802_11_snmp_mib()
124 le16_add_cpu(&cmd->size, MAX_SNMP_BUF_SIZE); mwifiex_cmd_802_11_snmp_mib()
129 le16_add_cpu(&cmd->size, sizeof(u16)); mwifiex_cmd_802_11_snmp_mib()
133 "cmd: SNMP_CMD: Action=0x%x, OID=0x%x, OIDSize=0x%x," mwifiex_cmd_802_11_snmp_mib()
148 mwifiex_cmd_802_11_get_log(struct host_cmd_ds_command *cmd) mwifiex_cmd_802_11_get_log() argument
150 cmd->command = cpu_to_le16(HostCmd_CMD_802_11_GET_LOG); mwifiex_cmd_802_11_get_log()
151 cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_802_11_get_log) + mwifiex_cmd_802_11_get_log()
166 struct host_cmd_ds_command *cmd, mwifiex_cmd_tx_rate_cfg()
169 struct host_cmd_ds_tx_rate_cfg *rate_cfg = &cmd->params.tx_rate_cfg; mwifiex_cmd_tx_rate_cfg()
174 cmd->command = cpu_to_le16(HostCmd_CMD_TX_RATE_CFG); mwifiex_cmd_tx_rate_cfg()
224 cmd->size = mwifiex_cmd_tx_rate_cfg()
241 static int mwifiex_cmd_tx_power_cfg(struct host_cmd_ds_command *cmd, mwifiex_cmd_tx_power_cfg() argument
246 struct host_cmd_ds_txpwr_cfg *cmd_txp_cfg = &cmd->params.txp_cfg; mwifiex_cmd_tx_power_cfg()
248 cmd->command = cpu_to_le16(HostCmd_CMD_TXPWR_CFG); mwifiex_cmd_tx_power_cfg()
249 cmd->size = mwifiex_cmd_tx_power_cfg()
265 cmd->size = cpu_to_le16(le16_to_cpu(cmd->size) + mwifiex_cmd_tx_power_cfg()
285 struct host_cmd_ds_command *cmd, mwifiex_cmd_rf_tx_power()
288 struct host_cmd_ds_rf_tx_pwr *txp = &cmd->params.txp; mwifiex_cmd_rf_tx_power()
290 cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_rf_tx_pwr) mwifiex_cmd_rf_tx_power()
292 cmd->command = cpu_to_le16(HostCmd_CMD_RF_TX_PWR); mwifiex_cmd_rf_tx_power()
302 struct host_cmd_ds_command *cmd, mwifiex_cmd_rf_antenna()
306 struct host_cmd_ds_rf_ant_mimo *ant_mimo = &cmd->params.ant_mimo; mwifiex_cmd_rf_antenna()
307 struct host_cmd_ds_rf_ant_siso *ant_siso = &cmd->params.ant_siso; mwifiex_cmd_rf_antenna()
309 cmd->command = cpu_to_le16(HostCmd_CMD_RF_ANTENNA); mwifiex_cmd_rf_antenna()
315 cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_rf_ant_mimo) + mwifiex_cmd_rf_antenna()
322 cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_rf_ant_siso) + mwifiex_cmd_rf_antenna()
342 struct host_cmd_ds_command *cmd, mwifiex_cmd_802_11_hs_cfg()
347 struct host_cmd_ds_802_11_hs_cfg_enh *hs_cfg = &cmd->params.opt_hs_cfg; mwifiex_cmd_802_11_hs_cfg()
353 cmd->command = cpu_to_le16(HostCmd_CMD_802_11_HS_CFG_ENH); mwifiex_cmd_802_11_hs_cfg()
360 "cmd: Attach %d bytes ArpFilter to HSCfg cmd\n", mwifiex_cmd_802_11_hs_cfg()
365 cmd->size = cpu_to_le16 mwifiex_cmd_802_11_hs_cfg()
370 cmd->size = cpu_to_le16(S_DS_GEN + sizeof(struct mwifiex_cmd_802_11_hs_cfg()
382 "cmd: HS_CFG_CMD: condition:0x%x gpio:0x%x gap:0x%x\n", mwifiex_cmd_802_11_hs_cfg()
400 struct host_cmd_ds_command *cmd, mwifiex_cmd_802_11_mac_address()
403 cmd->command = cpu_to_le16(HostCmd_CMD_802_11_MAC_ADDRESS); mwifiex_cmd_802_11_mac_address()
404 cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_802_11_mac_address) + mwifiex_cmd_802_11_mac_address()
406 cmd->result = 0; mwifiex_cmd_802_11_mac_address()
408 cmd->params.mac_addr.action = cpu_to_le16(cmd_action); mwifiex_cmd_802_11_mac_address()
411 memcpy(cmd->params.mac_addr.mac_addr, priv->curr_addr, mwifiex_cmd_802_11_mac_address()
425 mwifiex_cmd_mac_multicast_adr(struct host_cmd_ds_command *cmd, mwifiex_cmd_mac_multicast_adr() argument
429 struct host_cmd_ds_mac_multicast_adr *mcast_addr = &cmd->params.mc_addr; mwifiex_cmd_mac_multicast_adr()
431 cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_mac_multicast_adr) + mwifiex_cmd_mac_multicast_adr()
433 cmd->command = cpu_to_le16(HostCmd_CMD_MAC_MULTICAST_ADR); mwifiex_cmd_mac_multicast_adr()
453 struct host_cmd_ds_command *cmd, mwifiex_cmd_802_11_deauthenticate()
456 struct host_cmd_ds_802_11_deauthenticate *deauth = &cmd->params.deauth; mwifiex_cmd_802_11_deauthenticate()
458 cmd->command = cpu_to_le16(HostCmd_CMD_802_11_DEAUTHENTICATE); mwifiex_cmd_802_11_deauthenticate()
459 cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_802_11_deauthenticate) mwifiex_cmd_802_11_deauthenticate()
465 dev_dbg(priv->adapter->dev, "cmd: Deauth: %pM\n", deauth->mac_addr); mwifiex_cmd_802_11_deauthenticate()
479 static int mwifiex_cmd_802_11_ad_hoc_stop(struct host_cmd_ds_command *cmd) mwifiex_cmd_802_11_ad_hoc_stop() argument
481 cmd->command = cpu_to_le16(HostCmd_CMD_802_11_AD_HOC_STOP); mwifiex_cmd_802_11_ad_hoc_stop()
482 cmd->size = cpu_to_le16(S_DS_GEN); mwifiex_cmd_802_11_ad_hoc_stop()
557 struct host_cmd_ds_command *cmd, mwifiex_set_aes_key_v2()
593 cmd->size = cpu_to_le16(size); mwifiex_set_aes_key_v2()
608 struct host_cmd_ds_command *cmd, mwifiex_cmd_802_11_key_material_v2()
616 &cmd->params.key_material_v2; mwifiex_cmd_802_11_key_material_v2()
618 cmd->command = cpu_to_le16(HostCmd_CMD_802_11_KEY_MATERIAL); mwifiex_cmd_802_11_key_material_v2()
639 cmd->size = cpu_to_le16(sizeof(struct mwifiex_ie_types_header) + mwifiex_cmd_802_11_key_material_v2()
657 cmd->size = cpu_to_le16(sizeof(struct mwifiex_ie_types_header) + mwifiex_cmd_802_11_key_material_v2()
702 cmd->size = cpu_to_le16(sizeof(struct mwifiex_ie_types_header) + mwifiex_cmd_802_11_key_material_v2()
730 cmd->size = cpu_to_le16(sizeof(struct mwifiex_ie_types_header) + mwifiex_cmd_802_11_key_material_v2()
750 return mwifiex_set_aes_key_v2(priv, cmd, enc_key, km); mwifiex_cmd_802_11_key_material_v2()
765 cmd->size = cpu_to_le16(sizeof(struct mwifiex_ie_types_header) + mwifiex_cmd_802_11_key_material_v2()
784 struct host_cmd_ds_command *cmd, mwifiex_cmd_802_11_key_material_v1()
789 &cmd->params.key_material; mwifiex_cmd_802_11_key_material_v1()
794 cmd->command = cpu_to_le16(HostCmd_CMD_802_11_KEY_MATERIAL); mwifiex_cmd_802_11_key_material_v1()
798 cmd->size = mwifiex_cmd_802_11_key_material_v1()
810 cmd->size = cpu_to_le16(key_param_len + mwifiex_cmd_802_11_key_material_v1()
857 cmd->size = cpu_to_le16(sizeof(key_material->action) mwifiex_cmd_802_11_key_material_v1()
863 dev_dbg(priv->adapter->dev, "cmd: CMAC_AES\n"); mwifiex_cmd_802_11_key_material_v1()
876 dev_dbg(priv->adapter->dev, "cmd: WPA_AES\n"); mwifiex_cmd_802_11_key_material_v1()
895 dev_dbg(priv->adapter->dev, "cmd: WPA_TKIP\n"); mwifiex_cmd_802_11_key_material_v1()
942 cmd->size = cpu_to_le16(sizeof(key_material->action) + S_DS_GEN mwifiex_cmd_802_11_key_material_v1()
959 cmd->size = cpu_to_le16(cmd_size); mwifiex_cmd_802_11_key_material_v1()
968 struct host_cmd_ds_command *cmd, mwifiex_cmd_802_11_key_material()
973 return mwifiex_cmd_802_11_key_material_v2(priv, cmd, mwifiex_cmd_802_11_key_material()
978 return mwifiex_cmd_802_11_key_material_v1(priv, cmd, mwifiex_cmd_802_11_key_material()
992 struct host_cmd_ds_command *cmd, mwifiex_cmd_802_11d_domain_info()
997 &cmd->params.domain_info; mwifiex_cmd_802_11d_domain_info()
1004 cmd->command = cpu_to_le16(HostCmd_CMD_802_11D_DOMAIN_INFO); mwifiex_cmd_802_11d_domain_info()
1007 cmd->size = cpu_to_le16(sizeof(domain_info->action) + S_DS_GEN); mwifiex_cmd_802_11d_domain_info()
1026 cmd->size = cpu_to_le16(sizeof(domain_info->action) + mwifiex_cmd_802_11d_domain_info()
1031 cmd->size = cpu_to_le16(sizeof(domain_info->action) + S_DS_GEN); mwifiex_cmd_802_11d_domain_info()
1045 static int mwifiex_cmd_ibss_coalescing_status(struct host_cmd_ds_command *cmd, mwifiex_cmd_ibss_coalescing_status() argument
1049 &(cmd->params.ibss_coalescing); mwifiex_cmd_ibss_coalescing_status()
1051 cmd->command = cpu_to_le16(HostCmd_CMD_802_11_IBSS_COALESCING_STATUS); mwifiex_cmd_ibss_coalescing_status()
1052 cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_802_11_ibss_status) + mwifiex_cmd_ibss_coalescing_status()
1054 cmd->result = 0; mwifiex_cmd_ibss_coalescing_status()
1091 static int mwifiex_cmd_reg_access(struct host_cmd_ds_command *cmd, mwifiex_cmd_reg_access() argument
1096 switch (le16_to_cpu(cmd->command)) { mwifiex_cmd_reg_access()
1101 cmd->size = cpu_to_le16(sizeof(*mac_reg) + S_DS_GEN); mwifiex_cmd_reg_access()
1102 mac_reg = &cmd->params.mac_reg; mwifiex_cmd_reg_access()
1113 cmd->size = cpu_to_le16(sizeof(*bbp_reg) + S_DS_GEN); mwifiex_cmd_reg_access()
1114 bbp_reg = &cmd->params.bbp_reg; mwifiex_cmd_reg_access()
1125 cmd->size = cpu_to_le16(sizeof(*rf_reg) + S_DS_GEN); mwifiex_cmd_reg_access()
1126 rf_reg = &cmd->params.rf_reg; mwifiex_cmd_reg_access()
1136 cmd->size = cpu_to_le16(sizeof(*pmic_reg) + S_DS_GEN); mwifiex_cmd_reg_access()
1137 pmic_reg = &cmd->params.pmic_reg; mwifiex_cmd_reg_access()
1148 cmd->size = cpu_to_le16(sizeof(*cau_reg) + S_DS_GEN); mwifiex_cmd_reg_access()
1149 cau_reg = &cmd->params.rf_reg; mwifiex_cmd_reg_access()
1160 &cmd->params.eeprom; mwifiex_cmd_reg_access()
1162 cmd->size = cpu_to_le16(sizeof(*cmd_eeprom) + S_DS_GEN); mwifiex_cmd_reg_access()
1187 struct host_cmd_ds_command *cmd, u16 action) mwifiex_cmd_pcie_host_spec()
1190 &cmd->params.pcie_host_spec; mwifiex_cmd_pcie_host_spec()
1193 cmd->command = cpu_to_le16(HostCmd_CMD_PCIE_DESC_DETAILS); mwifiex_cmd_pcie_host_spec()
1194 cmd->size = cpu_to_le16(sizeof(struct mwifiex_cmd_pcie_host_spec()
1196 cmd->result = 0; mwifiex_cmd_pcie_host_spec()
1233 struct host_cmd_ds_command *cmd, mwifiex_cmd_802_11_subsc_evt()
1236 struct host_cmd_ds_802_11_subsc_evt *subsc_evt = &cmd->params.subsc_evt; mwifiex_cmd_802_11_subsc_evt()
1241 cmd->command = cpu_to_le16(HostCmd_CMD_802_11_SUBSCRIBE_EVENT); mwifiex_cmd_802_11_subsc_evt()
1242 cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_802_11_subsc_evt) + mwifiex_cmd_802_11_subsc_evt()
1246 dev_dbg(priv->adapter->dev, "cmd: action: %d\n", subsc_evt_cfg->action); mwifiex_cmd_802_11_subsc_evt()
1255 dev_dbg(priv->adapter->dev, "cmd: event bitmap : %16x\n", mwifiex_cmd_802_11_subsc_evt()
1293 le16_add_cpu(&cmd->size, mwifiex_cmd_802_11_subsc_evt()
1313 le16_add_cpu(&cmd->size, mwifiex_cmd_802_11_subsc_evt()
1369 struct host_cmd_ds_command *cmd, mwifiex_cmd_mef_cfg()
1372 struct host_cmd_ds_mef_cfg *mef_cfg = &cmd->params.mef_cfg; mwifiex_cmd_mef_cfg()
1377 cmd->command = cpu_to_le16(HostCmd_CMD_MEF_CFG); mwifiex_cmd_mef_cfg()
1396 cmd->size = cpu_to_le16((u16) (pos - (u8 *)mef_cfg) + S_DS_GEN); mwifiex_cmd_mef_cfg()
1436 /* property header is 6 bytes, data must fit in cmd buffer */ for_each_property_of_node()
1452 struct host_cmd_ds_command *cmd, void *data_buf) mwifiex_cmd_cfg_data()
1457 u8 *data = (u8 *)cmd + S_DS_GEN; mwifiex_cmd_cfg_data()
1476 cmd->command = cpu_to_le16(HostCmd_CMD_CFG_DATA); mwifiex_cmd_cfg_data()
1477 cmd->size = cpu_to_le16(S_DS_GEN + len); mwifiex_cmd_cfg_data()
1484 struct host_cmd_ds_command *cmd, mwifiex_cmd_coalesce_cfg()
1488 &cmd->params.coalesce_cfg; mwifiex_cmd_coalesce_cfg()
1494 cmd->command = cpu_to_le16(HostCmd_CMD_COALESCE_CFG); mwifiex_cmd_coalesce_cfg()
1495 cmd->size = cpu_to_le16(S_DS_GEN); mwifiex_cmd_coalesce_cfg()
1534 le16_add_cpu(&cmd->size, le16_to_cpu(rule->header.len) + mwifiex_cmd_coalesce_cfg()
1541 le16_add_cpu(&cmd->size, sizeof(u16) + sizeof(u16)); mwifiex_cmd_coalesce_cfg()
1548 struct host_cmd_ds_command *cmd, mwifiex_cmd_tdls_oper()
1551 struct host_cmd_ds_tdls_oper *tdls_oper = &cmd->params.tdls_oper; mwifiex_cmd_tdls_oper()
1565 cmd->command = cpu_to_le16(HostCmd_CMD_TDLS_OPER); mwifiex_cmd_tdls_oper()
1566 cmd->size = cpu_to_le16(S_DS_GEN); mwifiex_cmd_tdls_oper()
1567 le16_add_cpu(&cmd->size, sizeof(struct host_cmd_ds_tdls_oper)); mwifiex_cmd_tdls_oper()
1670 le16_add_cpu(&cmd->size, config_len); mwifiex_cmd_tdls_oper()
1676 static int mwifiex_cmd_sdio_rx_aggr_cfg(struct host_cmd_ds_command *cmd, mwifiex_cmd_sdio_rx_aggr_cfg() argument
1680 &cmd->params.sdio_rx_aggr_cfg; mwifiex_cmd_sdio_rx_aggr_cfg()
1682 cmd->command = cpu_to_le16(HostCmd_CMD_SDIO_SP_RX_AGGR_CFG); mwifiex_cmd_sdio_rx_aggr_cfg()
1683 cmd->size = mwifiex_cmd_sdio_rx_aggr_cfg()
1874 "cmd: WMM: WMM_GET_STATUS cmd sent\n"); mwifiex_sta_prepare_cmd()
1936 "PREP_CMD: unknown cmd- %#x\n", cmd_no); mwifiex_sta_prepare_cmd()
2105 /* Send cmd to FW to enable/disable 11D function */ mwifiex_sta_init_cmd()
2115 /* Send cmd to FW to configure 11n specific configuration mwifiex_sta_init_cmd()
43 mwifiex_cmd_802_11_rssi_info(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action) mwifiex_cmd_802_11_rssi_info() argument
73 mwifiex_cmd_mac_control(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action, u16 *action) mwifiex_cmd_mac_control() argument
108 mwifiex_cmd_802_11_snmp_mib(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action, u32 cmd_oid, u16 *ul_temp) mwifiex_cmd_802_11_snmp_mib() argument
165 mwifiex_cmd_tx_rate_cfg(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action, u16 *pbitmap_rates) mwifiex_cmd_tx_rate_cfg() argument
284 mwifiex_cmd_rf_tx_power(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action, void *data_buf) mwifiex_cmd_rf_tx_power() argument
301 mwifiex_cmd_rf_antenna(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action, struct mwifiex_ds_ant_cfg *ant_cfg) mwifiex_cmd_rf_antenna() argument
341 mwifiex_cmd_802_11_hs_cfg(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action, struct mwifiex_hs_config_param *hscfg_param) mwifiex_cmd_802_11_hs_cfg() argument
399 mwifiex_cmd_802_11_mac_address(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action) mwifiex_cmd_802_11_mac_address() argument
452 mwifiex_cmd_802_11_deauthenticate(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u8 *mac) mwifiex_cmd_802_11_deauthenticate() argument
556 mwifiex_set_aes_key_v2(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, struct mwifiex_ds_encrypt_key *enc_key, struct host_cmd_ds_802_11_key_material_v2 *km) mwifiex_set_aes_key_v2() argument
607 mwifiex_cmd_802_11_key_material_v2(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action, u32 cmd_oid, struct mwifiex_ds_encrypt_key *enc_key) mwifiex_cmd_802_11_key_material_v2() argument
783 mwifiex_cmd_802_11_key_material_v1(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action, u32 cmd_oid, struct mwifiex_ds_encrypt_key *enc_key) mwifiex_cmd_802_11_key_material_v1() argument
967 mwifiex_cmd_802_11_key_material(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action, u32 cmd_oid, struct mwifiex_ds_encrypt_key *enc_key) mwifiex_cmd_802_11_key_material() argument
991 mwifiex_cmd_802_11d_domain_info(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action) mwifiex_cmd_802_11d_domain_info() argument
1186 mwifiex_cmd_pcie_host_spec(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 action) mwifiex_cmd_pcie_host_spec() argument
1232 mwifiex_cmd_802_11_subsc_evt(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, struct mwifiex_ds_misc_subsc_evt *subsc_evt_cfg) mwifiex_cmd_802_11_subsc_evt() argument
1368 mwifiex_cmd_mef_cfg(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, struct mwifiex_ds_mef_cfg *mef) mwifiex_cmd_mef_cfg() argument
1451 mwifiex_cmd_cfg_data(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, void *data_buf) mwifiex_cmd_cfg_data() argument
1483 mwifiex_cmd_coalesce_cfg(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action, void *data_buf) mwifiex_cmd_coalesce_cfg() argument
1547 mwifiex_cmd_tdls_oper(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, void *data_buf) mwifiex_cmd_tdls_oper() argument
/linux-4.1.27/drivers/firmware/
H A Dqcom_scm.c118 struct qcom_scm_command *cmd; alloc_qcom_scm_command() local
119 size_t len = sizeof(*cmd) + sizeof(struct qcom_scm_response) + cmd_size + alloc_qcom_scm_command()
123 cmd = kzalloc(PAGE_ALIGN(len), GFP_KERNEL); alloc_qcom_scm_command()
124 if (cmd) { alloc_qcom_scm_command()
125 cmd->len = cpu_to_le32(len); alloc_qcom_scm_command()
127 cmd->buf_offset = cpu_to_le32(offset); alloc_qcom_scm_command()
128 cmd->resp_hdr_offset = cpu_to_le32(offset + cmd_size); alloc_qcom_scm_command()
130 return cmd; alloc_qcom_scm_command()
135 * @cmd: command to free
139 static inline void free_qcom_scm_command(struct qcom_scm_command *cmd) free_qcom_scm_command() argument
141 kfree(cmd); free_qcom_scm_command()
146 * @cmd: command
151 const struct qcom_scm_command *cmd) qcom_scm_command_to_response()
153 return (void *)cmd + le32_to_cpu(cmd->resp_hdr_offset); qcom_scm_command_to_response()
158 * @cmd: command
162 static inline void *qcom_scm_get_command_buffer(const struct qcom_scm_command *cmd) qcom_scm_get_command_buffer() argument
164 return (void *)cmd->buf; qcom_scm_get_command_buffer()
219 static int __qcom_scm_call(const struct qcom_scm_command *cmd) __qcom_scm_call() argument
222 u32 cmd_addr = virt_to_phys(cmd); __qcom_scm_call()
228 __cpuc_flush_dcache_area((void *)cmd, cmd->len); __qcom_scm_call()
229 outer_flush_range(cmd_addr, cmd_addr + cmd->len); __qcom_scm_call()
279 struct qcom_scm_command *cmd; qcom_scm_call() local
283 cmd = alloc_qcom_scm_command(cmd_len, resp_len); qcom_scm_call()
284 if (!cmd) qcom_scm_call()
287 cmd->id = cpu_to_le32((svc_id << 10) | cmd_id); qcom_scm_call()
289 memcpy(qcom_scm_get_command_buffer(cmd), cmd_buf, cmd_len); qcom_scm_call()
292 ret = __qcom_scm_call(cmd); qcom_scm_call()
297 rsp = qcom_scm_command_to_response(cmd); qcom_scm_call()
310 free_qcom_scm_command(cmd); qcom_scm_call()
316 #define SCM_ATOMIC(svc, cmd, n) (((((svc) << 10)|((cmd) & 0x3ff)) << 12) | \
330 static s32 qcom_scm_call_atomic1(u32 svc, u32 cmd, u32 arg1) qcom_scm_call_atomic1() argument
334 register u32 r0 asm("r0") = SCM_ATOMIC(svc, cmd, 1); qcom_scm_call_atomic1()
399 } cmd; qcom_scm_set_boot_addr() local
401 cmd.addr = cpu_to_le32(addr); qcom_scm_set_boot_addr()
402 cmd.flags = cpu_to_le32(flags); qcom_scm_set_boot_addr()
404 &cmd, sizeof(cmd), NULL, 0); qcom_scm_set_boot_addr()
150 qcom_scm_command_to_response( const struct qcom_scm_command *cmd) qcom_scm_command_to_response() argument
/linux-4.1.27/drivers/scsi/libsas/
H A Dsas_scsi_host.c148 static struct sas_task *sas_create_task(struct scsi_cmnd *cmd, sas_create_task() argument
158 task->uldd_task = cmd; sas_create_task()
159 ASSIGN_SAS_TASK(cmd, task); sas_create_task()
165 int_to_scsilun(cmd->device->lun, &lun); sas_create_task()
168 task->ssp_task.cmd = cmd; sas_create_task()
170 task->scatter = scsi_sglist(cmd); sas_create_task()
171 task->num_scatter = scsi_sg_count(cmd); sas_create_task()
172 task->total_xfer_len = scsi_bufflen(cmd); sas_create_task()
173 task->data_dir = cmd->sc_data_direction; sas_create_task()
180 int sas_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd) sas_queuecommand() argument
183 struct domain_device *dev = cmd_to_domain_dev(cmd); sas_queuecommand()
189 cmd->result = DID_BAD_TARGET << 16; sas_queuecommand()
195 res = ata_sas_queuecmd(cmd, dev->sata_dev.ap); sas_queuecommand()
200 task = sas_create_task(cmd, dev, GFP_ATOMIC); sas_queuecommand()
211 ASSIGN_SAS_TASK(cmd, NULL); sas_queuecommand()
214 cmd->result = DID_SOFT_ERROR << 16; /* retry */ sas_queuecommand()
216 cmd->result = DID_ERROR << 16; sas_queuecommand()
218 cmd->scsi_done(cmd); sas_queuecommand()
222 static void sas_eh_finish_cmd(struct scsi_cmnd *cmd) sas_eh_finish_cmd() argument
224 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(cmd->device->host); sas_eh_finish_cmd()
225 struct sas_task *task = TO_SAS_TASK(cmd); sas_eh_finish_cmd()
231 sas_end_task(cmd, task); sas_eh_finish_cmd()
237 scsi_eh_finish_cmd(cmd, &sas_ha->eh_done_q); sas_eh_finish_cmd()
240 static void sas_eh_defer_cmd(struct scsi_cmnd *cmd) sas_eh_defer_cmd() argument
242 struct domain_device *dev = cmd_to_domain_dev(cmd); sas_eh_defer_cmd()
244 struct sas_task *task = TO_SAS_TASK(cmd); sas_eh_defer_cmd()
247 sas_eh_finish_cmd(cmd); sas_eh_defer_cmd()
252 sas_end_task(cmd, task); sas_eh_defer_cmd()
253 list_move_tail(&cmd->eh_entry, &ha->eh_ata_q); sas_eh_defer_cmd()
258 struct scsi_cmnd *cmd, *n; sas_scsi_clear_queue_lu() local
260 list_for_each_entry_safe(cmd, n, error_q, eh_entry) { list_for_each_entry_safe()
261 if (cmd->device->sdev_target == my_cmd->device->sdev_target && list_for_each_entry_safe()
262 cmd->device->lun == my_cmd->device->lun) list_for_each_entry_safe()
263 sas_eh_defer_cmd(cmd); list_for_each_entry_safe()
270 struct scsi_cmnd *cmd, *n; sas_scsi_clear_queue_I_T() local
272 list_for_each_entry_safe(cmd, n, error_q, eh_entry) { list_for_each_entry_safe()
273 struct domain_device *x = cmd_to_domain_dev(cmd); list_for_each_entry_safe()
276 sas_eh_finish_cmd(cmd); list_for_each_entry_safe()
283 struct scsi_cmnd *cmd, *n; sas_scsi_clear_queue_port() local
285 list_for_each_entry_safe(cmd, n, error_q, eh_entry) { list_for_each_entry_safe()
286 struct domain_device *dev = cmd_to_domain_dev(cmd); list_for_each_entry_safe()
290 sas_eh_finish_cmd(cmd); list_for_each_entry_safe()
350 static int sas_recover_lu(struct domain_device *dev, struct scsi_cmnd *cmd) sas_recover_lu() argument
357 int_to_scsilun(cmd->device->lun, &lun); sas_recover_lu()
361 cmd->device->lun); sas_recover_lu()
487 int sas_eh_abort_handler(struct scsi_cmnd *cmd) sas_eh_abort_handler() argument
490 struct sas_task *task = TO_SAS_TASK(cmd); sas_eh_abort_handler()
491 struct Scsi_Host *host = cmd->device->host; sas_eh_abort_handler()
509 int sas_eh_device_reset_handler(struct scsi_cmnd *cmd) sas_eh_device_reset_handler() argument
513 struct Scsi_Host *host = cmd->device->host; sas_eh_device_reset_handler()
514 struct domain_device *dev = cmd_to_domain_dev(cmd); sas_eh_device_reset_handler()
518 return sas_queue_reset(dev, SAS_DEV_LU_RESET, cmd->device->lun, 0); sas_eh_device_reset_handler()
520 int_to_scsilun(cmd->device->lun, &lun); sas_eh_device_reset_handler()
532 int sas_eh_bus_reset_handler(struct scsi_cmnd *cmd) sas_eh_bus_reset_handler() argument
535 struct Scsi_Host *host = cmd->device->host; sas_eh_bus_reset_handler()
536 struct domain_device *dev = cmd_to_domain_dev(cmd); sas_eh_bus_reset_handler()
554 static int try_to_reset_cmd_device(struct scsi_cmnd *cmd) try_to_reset_cmd_device() argument
557 struct Scsi_Host *shost = cmd->device->host; try_to_reset_cmd_device()
562 res = shost->hostt->eh_device_reset_handler(cmd); try_to_reset_cmd_device()
568 return shost->hostt->eh_bus_reset_handler(cmd); try_to_reset_cmd_device()
575 struct scsi_cmnd *cmd, *n; sas_eh_handle_sas_errors() local
584 list_for_each_entry_safe(cmd, n, work_q, eh_entry) { list_for_each_entry_safe()
585 struct domain_device *dev = cmd_to_domain_dev(cmd); list_for_each_entry_safe()
593 task = TO_SAS_TASK(cmd); list_for_each_entry_safe()
597 list_move_tail(&cmd->eh_entry, &done); list_for_each_entry_safe()
601 list_for_each_entry_safe(cmd, n, work_q, eh_entry) { list_for_each_entry_safe()
602 struct sas_task *task = TO_SAS_TASK(cmd); list_for_each_entry_safe()
604 list_del_init(&cmd->eh_entry); list_for_each_entry_safe()
619 cmd->eh_eflags = 0; list_for_each_entry_safe()
625 sas_eh_defer_cmd(cmd); list_for_each_entry_safe()
630 sas_eh_defer_cmd(cmd); list_for_each_entry_safe()
635 tmf_resp = sas_recover_lu(task->dev, cmd); list_for_each_entry_safe()
640 cmd->device->lun); list_for_each_entry_safe()
641 sas_eh_defer_cmd(cmd); list_for_each_entry_safe()
642 sas_scsi_clear_queue_lu(work_q, cmd); list_for_each_entry_safe()
656 sas_eh_finish_cmd(cmd); list_for_each_entry_safe()
661 try_to_reset_cmd_device(cmd); list_for_each_entry_safe()
670 sas_eh_finish_cmd(cmd); list_for_each_entry_safe()
682 sas_eh_finish_cmd(cmd); list_for_each_entry_safe()
693 cmd->device->lun); list_for_each_entry_safe()
695 sas_eh_finish_cmd(cmd); list_for_each_entry_safe()
706 list_for_each_entry_safe(cmd, n, work_q, eh_entry)
707 sas_eh_finish_cmd(cmd);
806 enum blk_eh_timer_return sas_scsi_timed_out(struct scsi_cmnd *cmd) sas_scsi_timed_out() argument
808 scmd_dbg(cmd, "command %p timed out\n", cmd); sas_scsi_timed_out()
813 int sas_ioctl(struct scsi_device *sdev, int cmd, void __user *arg) sas_ioctl() argument
818 return ata_sas_scsi_ioctl(dev->sata_dev.ap, sdev, cmd, arg); sas_ioctl()
/linux-4.1.27/drivers/media/platform/exynos4-is/
H A Dfimc-is-param.c296 isp->aa.cmd = ISP_AA_COMMAND_START; __is_set_init_isp_aa()
311 void __is_set_isp_flash(struct fimc_is *is, u32 cmd, u32 redeye) __is_set_isp_flash() argument
316 isp->flash.cmd = cmd; __is_set_isp_flash()
323 void __is_set_isp_awb(struct fimc_is *is, u32 cmd, u32 val) __is_set_isp_awb() argument
330 isp->awb.cmd = cmd; __is_set_isp_awb()
337 void __is_set_isp_effect(struct fimc_is *is, u32 cmd) __is_set_isp_effect() argument
344 isp->effect.cmd = cmd; __is_set_isp_effect()
350 void __is_set_isp_iso(struct fimc_is *is, u32 cmd, u32 val) __is_set_isp_iso() argument
357 isp->iso.cmd = cmd; __is_set_isp_iso()
364 void __is_set_isp_adjust(struct fimc_is *is, u32 cmd, u32 val) __is_set_isp_adjust() argument
373 switch (cmd) { __is_set_isp_adjust()
403 isp->adjust.cmd = cmd; __is_set_isp_adjust()
407 isp->adjust.cmd |= cmd; __is_set_isp_adjust()
422 isp->metering.cmd = val; __is_set_isp_metering()
446 void __is_set_isp_afc(struct fimc_is *is, u32 cmd, u32 val) __is_set_isp_afc() argument
453 isp->afc.cmd = cmd; __is_set_isp_afc()
481 fd->control.cmd = val; __is_set_fd_control()
499 fd->config.cmd = FD_CONFIG_COMMAND_MAXIMUM_NUMBER; __is_set_fd_config_maxface()
503 fd->config.cmd |= FD_CONFIG_COMMAND_MAXIMUM_NUMBER; __is_set_fd_config_maxface()
519 fd->config.cmd = FD_CONFIG_COMMAND_ROLL_ANGLE; __is_set_fd_config_rollangle()
523 fd->config.cmd |= FD_CONFIG_COMMAND_ROLL_ANGLE; __is_set_fd_config_rollangle()
539 fd->config.cmd = FD_CONFIG_COMMAND_YAW_ANGLE; __is_set_fd_config_yawangle()
543 fd->config.cmd |= FD_CONFIG_COMMAND_YAW_ANGLE; __is_set_fd_config_yawangle()
559 fd->config.cmd = FD_CONFIG_COMMAND_SMILE_MODE; __is_set_fd_config_smilemode()
563 fd->config.cmd |= FD_CONFIG_COMMAND_SMILE_MODE; __is_set_fd_config_smilemode()
579 fd->config.cmd = FD_CONFIG_COMMAND_BLINK_MODE; __is_set_fd_config_blinkmode()
583 fd->config.cmd |= FD_CONFIG_COMMAND_BLINK_MODE; __is_set_fd_config_blinkmode()
599 fd->config.cmd = FD_CONFIG_COMMAND_EYES_DETECT; __is_set_fd_config_eyedetect()
603 fd->config.cmd |= FD_CONFIG_COMMAND_EYES_DETECT; __is_set_fd_config_eyedetect()
619 fd->config.cmd = FD_CONFIG_COMMAND_MOUTH_DETECT; __is_set_fd_config_mouthdetect()
623 fd->config.cmd |= FD_CONFIG_COMMAND_MOUTH_DETECT; __is_set_fd_config_mouthdetect()
639 fd->config.cmd = FD_CONFIG_COMMAND_ORIENTATION; __is_set_fd_config_orientation()
643 fd->config.cmd |= FD_CONFIG_COMMAND_ORIENTATION; __is_set_fd_config_orientation()
659 fd->config.cmd = FD_CONFIG_COMMAND_ORIENTATION_VALUE; __is_set_fd_config_orientation_val()
663 fd->config.cmd |= FD_CONFIG_COMMAND_ORIENTATION_VALUE; __is_set_fd_config_orientation_val()
684 global->shotmode.cmd = 1; fimc_is_set_initial_params()
688 isp->control.cmd = CONTROL_COMMAND_START; fimc_is_set_initial_params()
693 isp->otf_input.cmd = OTF_INPUT_COMMAND_ENABLE; fimc_is_set_initial_params()
709 isp->dma1_input.cmd = DMA_INPUT_COMMAND_DISABLE; fimc_is_set_initial_params()
721 isp->dma2_input.cmd = DMA_INPUT_COMMAND_DISABLE; fimc_is_set_initial_params()
733 isp->aa.cmd = ISP_AA_COMMAND_START; fimc_is_set_initial_params()
772 isp->otf_output.cmd = OTF_OUTPUT_COMMAND_ENABLE; fimc_is_set_initial_params()
784 isp->dma1_output.cmd = DMA_OUTPUT_COMMAND_DISABLE; fimc_is_set_initial_params()
800 isp->dma2_output.cmd = DMA_OUTPUT_COMMAND_DISABLE; fimc_is_set_initial_params()
822 drc->control.cmd = CONTROL_COMMAND_START; fimc_is_set_initial_params()
825 drc->otf_input.cmd = OTF_INPUT_COMMAND_ENABLE; fimc_is_set_initial_params()
836 drc->dma_input.cmd = DMA_INPUT_COMMAND_DISABLE; fimc_is_set_initial_params()
848 drc->otf_output.cmd = OTF_OUTPUT_COMMAND_ENABLE; fimc_is_set_initial_params()
863 fd->otf_input.cmd = OTF_INPUT_COMMAND_ENABLE; fimc_is_set_initial_params()
875 fd->dma_input.cmd = DMA_INPUT_COMMAND_DISABLE; fimc_is_set_initial_params()
/linux-4.1.27/drivers/irqchip/
H A Dirq-gic-v3-its.c176 static void its_encode_cmd(struct its_cmd_block *cmd, u8 cmd_nr) its_encode_cmd() argument
178 cmd->raw_cmd[0] &= ~0xffUL; its_encode_cmd()
179 cmd->raw_cmd[0] |= cmd_nr; its_encode_cmd()
182 static void its_encode_devid(struct its_cmd_block *cmd, u32 devid) its_encode_devid() argument
184 cmd->raw_cmd[0] &= BIT_ULL(32) - 1; its_encode_devid()
185 cmd->raw_cmd[0] |= ((u64)devid) << 32; its_encode_devid()
188 static void its_encode_event_id(struct its_cmd_block *cmd, u32 id) its_encode_event_id() argument
190 cmd->raw_cmd[1] &= ~0xffffffffUL; its_encode_event_id()
191 cmd->raw_cmd[1] |= id; its_encode_event_id()
194 static void its_encode_phys_id(struct its_cmd_block *cmd, u32 phys_id) its_encode_phys_id() argument
196 cmd->raw_cmd[1] &= 0xffffffffUL; its_encode_phys_id()
197 cmd->raw_cmd[1] |= ((u64)phys_id) << 32; its_encode_phys_id()
200 static void its_encode_size(struct its_cmd_block *cmd, u8 size) its_encode_size() argument
202 cmd->raw_cmd[1] &= ~0x1fUL; its_encode_size()
203 cmd->raw_cmd[1] |= size & 0x1f; its_encode_size()
206 static void its_encode_itt(struct its_cmd_block *cmd, u64 itt_addr) its_encode_itt() argument
208 cmd->raw_cmd[2] &= ~0xffffffffffffUL; its_encode_itt()
209 cmd->raw_cmd[2] |= itt_addr & 0xffffffffff00UL; its_encode_itt()
212 static void its_encode_valid(struct its_cmd_block *cmd, int valid) its_encode_valid() argument
214 cmd->raw_cmd[2] &= ~(1UL << 63); its_encode_valid()
215 cmd->raw_cmd[2] |= ((u64)!!valid) << 63; its_encode_valid()
218 static void its_encode_target(struct its_cmd_block *cmd, u64 target_addr) its_encode_target() argument
220 cmd->raw_cmd[2] &= ~(0xffffffffUL << 16); its_encode_target()
221 cmd->raw_cmd[2] |= (target_addr & (0xffffffffUL << 16)); its_encode_target()
224 static void its_encode_collection(struct its_cmd_block *cmd, u16 col) its_encode_collection() argument
226 cmd->raw_cmd[2] &= ~0xffffUL; its_encode_collection()
227 cmd->raw_cmd[2] |= col; its_encode_collection()
230 static inline void its_fixup_cmd(struct its_cmd_block *cmd) its_fixup_cmd() argument
233 cmd->raw_cmd[0] = cpu_to_le64(cmd->raw_cmd[0]); its_fixup_cmd()
234 cmd->raw_cmd[1] = cpu_to_le64(cmd->raw_cmd[1]); its_fixup_cmd()
235 cmd->raw_cmd[2] = cpu_to_le64(cmd->raw_cmd[2]); its_fixup_cmd()
236 cmd->raw_cmd[3] = cpu_to_le64(cmd->raw_cmd[3]); its_fixup_cmd()
239 static struct its_collection *its_build_mapd_cmd(struct its_cmd_block *cmd, its_build_mapd_cmd() argument
248 its_encode_cmd(cmd, GITS_CMD_MAPD); its_build_mapd_cmd()
249 its_encode_devid(cmd, desc->its_mapd_cmd.dev->device_id); its_build_mapd_cmd()
250 its_encode_size(cmd, size - 1); its_build_mapd_cmd()
251 its_encode_itt(cmd, itt_addr); its_build_mapd_cmd()
252 its_encode_valid(cmd, desc->its_mapd_cmd.valid); its_build_mapd_cmd()
254 its_fixup_cmd(cmd); its_build_mapd_cmd()
259 static struct its_collection *its_build_mapc_cmd(struct its_cmd_block *cmd, its_build_mapc_cmd() argument
262 its_encode_cmd(cmd, GITS_CMD_MAPC); its_build_mapc_cmd()
263 its_encode_collection(cmd, desc->its_mapc_cmd.col->col_id); its_build_mapc_cmd()
264 its_encode_target(cmd, desc->its_mapc_cmd.col->target_address); its_build_mapc_cmd()
265 its_encode_valid(cmd, desc->its_mapc_cmd.valid); its_build_mapc_cmd()
267 its_fixup_cmd(cmd); its_build_mapc_cmd()
272 static struct its_collection *its_build_mapvi_cmd(struct its_cmd_block *cmd, its_build_mapvi_cmd() argument
280 its_encode_cmd(cmd, GITS_CMD_MAPVI); its_build_mapvi_cmd()
281 its_encode_devid(cmd, desc->its_mapvi_cmd.dev->device_id); its_build_mapvi_cmd()
282 its_encode_event_id(cmd, desc->its_mapvi_cmd.event_id); its_build_mapvi_cmd()
283 its_encode_phys_id(cmd, desc->its_mapvi_cmd.phys_id); its_build_mapvi_cmd()
284 its_encode_collection(cmd, col->col_id); its_build_mapvi_cmd()
286 its_fixup_cmd(cmd); its_build_mapvi_cmd()
291 static struct its_collection *its_build_movi_cmd(struct its_cmd_block *cmd, its_build_movi_cmd() argument
299 its_encode_cmd(cmd, GITS_CMD_MOVI); its_build_movi_cmd()
300 its_encode_devid(cmd, desc->its_movi_cmd.dev->device_id); its_build_movi_cmd()
301 its_encode_event_id(cmd, desc->its_movi_cmd.event_id); its_build_movi_cmd()
302 its_encode_collection(cmd, desc->its_movi_cmd.col->col_id); its_build_movi_cmd()
304 its_fixup_cmd(cmd); its_build_movi_cmd()
309 static struct its_collection *its_build_discard_cmd(struct its_cmd_block *cmd, its_build_discard_cmd() argument
317 its_encode_cmd(cmd, GITS_CMD_DISCARD); its_build_discard_cmd()
318 its_encode_devid(cmd, desc->its_discard_cmd.dev->device_id); its_build_discard_cmd()
319 its_encode_event_id(cmd, desc->its_discard_cmd.event_id); its_build_discard_cmd()
321 its_fixup_cmd(cmd); its_build_discard_cmd()
326 static struct its_collection *its_build_inv_cmd(struct its_cmd_block *cmd, its_build_inv_cmd() argument
334 its_encode_cmd(cmd, GITS_CMD_INV); its_build_inv_cmd()
335 its_encode_devid(cmd, desc->its_inv_cmd.dev->device_id); its_build_inv_cmd()
336 its_encode_event_id(cmd, desc->its_inv_cmd.event_id); its_build_inv_cmd()
338 its_fixup_cmd(cmd); its_build_inv_cmd()
343 static struct its_collection *its_build_invall_cmd(struct its_cmd_block *cmd, its_build_invall_cmd() argument
346 its_encode_cmd(cmd, GITS_CMD_INVALL); its_build_invall_cmd()
347 its_encode_collection(cmd, desc->its_mapc_cmd.col->col_id); its_build_invall_cmd()
349 its_fixup_cmd(cmd); its_build_invall_cmd()
377 struct its_cmd_block *cmd; its_allocate_entry() local
390 cmd = its->cmd_write++; its_allocate_entry()
396 return cmd; its_allocate_entry()
408 static void its_flush_cmd(struct its_node *its, struct its_cmd_block *cmd) its_flush_cmd() argument
415 __flush_dcache_area(cmd, sizeof(*cmd)); its_flush_cmd()
449 struct its_cmd_block *cmd, *sync_cmd, *next_cmd; its_send_single_command() local
455 cmd = its_allocate_entry(its); its_send_single_command()
456 if (!cmd) { /* We're soooooo screewed... */ its_send_single_command()
461 sync_col = builder(cmd, desc); its_send_single_command()
462 its_flush_cmd(its, cmd); its_send_single_command()
480 its_wait_for_range_completion(its, cmd, next_cmd); its_send_single_command()
1515 pr_info("ITS: using cache flushing for cmd queue\n"); its_probe()
/linux-4.1.27/drivers/scsi/esas2r/
H A Desas2r_vda.c102 if (vi->cmd.flash.sub_func != VDA_FLASH_FREAD esas2r_process_vda_ioctl()
103 && vi->cmd.flash.sub_func != VDA_FLASH_FWRITE esas2r_process_vda_ioctl()
104 && vi->cmd.flash.sub_func != VDA_FLASH_FINFO) { esas2r_process_vda_ioctl()
109 if (vi->cmd.flash.sub_func != VDA_FLASH_FINFO) esas2r_process_vda_ioctl()
113 rq->vrq->flash.sub_func = vi->cmd.flash.sub_func; esas2r_process_vda_ioctl()
116 vi->cmd.flash.data.file.file_name, esas2r_process_vda_ioctl()
117 sizeof(vi->cmd.flash.data.file.file_name)); esas2r_process_vda_ioctl()
127 cpu_to_le32(vi->cmd.cli.cmd_rsp_len); esas2r_process_vda_ioctl()
137 + offsetof(struct atto_ioctl_vda, cmd) esas2r_process_vda_ioctl()
150 if (vi->cmd.mgt.mgt_func == VDAMGT_DEV_HEALTH_REQ esas2r_process_vda_ioctl()
151 || vi->cmd.mgt.mgt_func == VDAMGT_DEV_METRICS) { esas2r_process_vda_ioctl()
157 datalen = vi->cmd.mgt.data_length; esas2r_process_vda_ioctl()
158 } else if (vi->cmd.mgt.mgt_func == VDAMGT_DEV_INFO2 esas2r_process_vda_ioctl()
159 || vi->cmd.mgt.mgt_func == esas2r_process_vda_ioctl()
185 datalen = vi->cmd.mgt.data_length; esas2r_process_vda_ioctl()
198 rq->vrq->mgt.mgt_func = vi->cmd.mgt.mgt_func; esas2r_process_vda_ioctl()
199 rq->vrq->mgt.scan_generation = vi->cmd.mgt.scan_generation; esas2r_process_vda_ioctl()
201 cpu_to_le32(vi->cmd.mgt.dev_index); esas2r_process_vda_ioctl()
203 esas2r_nuxi_mgt_data(rq->vrq->mgt.mgt_func, &vi->cmd.mgt.data); esas2r_process_vda_ioctl()
210 || vi->cmd.cfg.data_length == 0) { esas2r_process_vda_ioctl()
215 if (vi->cmd.cfg.cfg_func == VDA_CFG_INIT) { esas2r_process_vda_ioctl()
220 rq->vrq->cfg.sub_func = vi->cmd.cfg.cfg_func; esas2r_process_vda_ioctl()
221 rq->vrq->cfg.length = cpu_to_le32(vi->cmd.cfg.data_length); esas2r_process_vda_ioctl()
223 if (vi->cmd.cfg.cfg_func == VDA_CFG_GET_INIT) { esas2r_process_vda_ioctl()
225 &vi->cmd.cfg.data, esas2r_process_vda_ioctl()
226 vi->cmd.cfg.data_length); esas2r_process_vda_ioctl()
240 vi->cmd.gsv.rsp_len = vercnt; esas2r_process_vda_ioctl()
242 memcpy(vi->cmd.gsv.version_info, esas2r_vdaioctl_versions, esas2r_process_vda_ioctl()
279 if (vi->cmd.flash.sub_func == VDA_FLASH_FINFO esas2r_complete_vda_ioctl()
280 || vi->cmd.flash.sub_func == VDA_FLASH_FREAD) esas2r_complete_vda_ioctl()
281 vi->cmd.flash.data.file.file_size = esas2r_complete_vda_ioctl()
288 vi->cmd.mgt.scan_generation = esas2r_complete_vda_ioctl()
290 vi->cmd.mgt.dev_index = le16_to_cpu( esas2r_complete_vda_ioctl()
294 vi->cmd.mgt.data_length = esas2r_complete_vda_ioctl()
297 esas2r_nuxi_mgt_data(rq->vrq->mgt.mgt_func, &vi->cmd.mgt.data); esas2r_complete_vda_ioctl()
302 if (vi->cmd.cfg.cfg_func == VDA_CFG_GET_INIT) { esas2r_complete_vda_ioctl()
303 struct atto_ioctl_vda_cfg_cmd *cfg = &vi->cmd.cfg; esas2r_complete_vda_ioctl()
328 &vi->cmd.cfg.data); esas2r_complete_vda_ioctl()
335 vi->cmd.cli.cmd_rsp_len = esas2r_complete_vda_ioctl()
/linux-4.1.27/drivers/media/pci/ngene/
H A Dngene-i2c.c53 com.cmd.hdr.Opcode = CMD_I2C_READ; ngene_command_i2c_read()
54 com.cmd.hdr.Length = outlen + 3; ngene_command_i2c_read()
55 com.cmd.I2CRead.Device = adr << 1; ngene_command_i2c_read()
56 memcpy(com.cmd.I2CRead.Data, out, outlen); ngene_command_i2c_read()
57 com.cmd.I2CRead.Data[outlen] = inlen; ngene_command_i2c_read()
58 com.cmd.I2CRead.Data[outlen + 1] = 0; ngene_command_i2c_read()
65 if ((com.cmd.raw8[0] >> 1) != adr) ngene_command_i2c_read()
69 memcpy(in, com.cmd.raw8, inlen + 1); ngene_command_i2c_read()
71 memcpy(in, com.cmd.raw8 + 1, inlen); ngene_command_i2c_read()
81 com.cmd.hdr.Opcode = CMD_I2C_WRITE; ngene_command_i2c_write()
82 com.cmd.hdr.Length = outlen + 1; ngene_command_i2c_write()
83 com.cmd.I2CRead.Device = adr << 1; ngene_command_i2c_write()
84 memcpy(com.cmd.I2CRead.Data, out, outlen); ngene_command_i2c_write()
91 if (com.cmd.raw8[0] == 1) ngene_command_i2c_write()
/linux-4.1.27/tools/usb/usbip/src/
H A Dusbip.c107 const struct command *cmd; usbip_help() local
122 for (cmd = cmds; cmd->name != NULL; cmd++) usbip_help()
123 if (cmd->help != NULL) usbip_help()
124 printf(" %-10s %s\n", cmd->name, cmd->help); usbip_help()
139 static int run_command(const struct command *cmd, int argc, char *argv[]) run_command() argument
141 dbg("running command: `%s'", cmd->name); run_command()
142 return cmd->fn(argc, argv); run_command()
154 char *cmd; main() local
185 cmd = argv[optind]; main()
186 if (cmd) { main()
188 if (!strcmp(cmds[i].name, cmd)) { main()
/linux-4.1.27/sound/soc/intel/atom/
H A Dsst-atom-controls.c115 struct sst_param_sba_ssp_slot_map cmd; sst_send_slot_map() local
117 SST_FILL_DEFAULT_DESTINATION(cmd.header.dst); sst_send_slot_map()
118 cmd.header.command_id = SBA_SET_SSP_SLOT_MAP; sst_send_slot_map()
119 cmd.header.length = sizeof(struct sst_param_sba_ssp_slot_map) sst_send_slot_map()
122 cmd.param_id = SBA_SET_SSP_SLOT_MAP; sst_send_slot_map()
123 cmd.param_len = sizeof(cmd.rx_slot_map) + sizeof(cmd.tx_slot_map) sst_send_slot_map()
124 + sizeof(cmd.ssp_index); sst_send_slot_map()
125 cmd.ssp_index = SSP_CODEC; sst_send_slot_map()
127 memcpy(cmd.rx_slot_map, &sst_ssp_tx_map[0], sizeof(cmd.rx_slot_map)); sst_send_slot_map()
128 memcpy(cmd.tx_slot_map, &sst_ssp_rx_map[0], sizeof(cmd.tx_slot_map)); sst_send_slot_map()
131 SST_FLAG_BLOCKED, SST_TASK_SBA, 0, &cmd, sst_send_slot_map()
132 sizeof(cmd.header) + cmd.header.length); sst_send_slot_map()
187 * slot map cmd
268 struct sst_cmd_set_params *cmd; sst_send_algo_cmd() local
271 len = sizeof(cmd->dst) + sizeof(cmd->command_id) + bc->max; sst_send_algo_cmd()
273 cmd = kzalloc(len, GFP_KERNEL); sst_send_algo_cmd()
274 if (cmd == NULL) sst_send_algo_cmd()
277 SST_FILL_DESTINATION(2, cmd->dst, bc->pipe_id, bc->module_id); sst_send_algo_cmd()
278 cmd->command_id = bc->cmd_id; sst_send_algo_cmd()
279 memcpy(cmd->params, bc->params, bc->max); sst_send_algo_cmd()
282 SST_FLAG_BLOCKED, bc->task_id, 0, cmd, len); sst_send_algo_cmd()
283 kfree(cmd); sst_send_algo_cmd()
403 struct sst_cmd_set_gain_dual cmd; sst_send_gain_cmd() local
407 cmd.header.command_id = MMX_SET_GAIN; sst_send_gain_cmd()
408 SST_FILL_DEFAULT_DESTINATION(cmd.header.dst); sst_send_gain_cmd()
409 cmd.gain_cell_num = 1; sst_send_gain_cmd()
412 cmd.cell_gains[0].cell_gain_left = SST_GAIN_MIN_VALUE; sst_send_gain_cmd()
413 cmd.cell_gains[0].cell_gain_right = SST_GAIN_MIN_VALUE; sst_send_gain_cmd()
415 cmd.cell_gains[0].cell_gain_left = gv->l_gain; sst_send_gain_cmd()
416 cmd.cell_gains[0].cell_gain_right = gv->r_gain; sst_send_gain_cmd()
419 SST_FILL_DESTINATION(2, cmd.cell_gains[0].dest, sst_send_gain_cmd()
421 cmd.cell_gains[0].gain_time_constant = gv->ramp_duration; sst_send_gain_cmd()
423 cmd.header.length = sizeof(struct sst_cmd_set_gain_dual) sst_send_gain_cmd()
428 SST_FLAG_BLOCKED, task_id, 0, &cmd, sst_send_gain_cmd()
429 sizeof(cmd.header) + cmd.header.length); sst_send_gain_cmd()
577 dev_warn(cmpnt->dev, "SET_SWM cmd max inputs reached"); fill_swm_input()
614 struct sst_cmd_set_swm cmd; sst_swm_mixer_event() local
654 cmd.switch_state = SST_SWM_ON; sst_swm_mixer_event()
656 cmd.switch_state = SST_SWM_OFF; sst_swm_mixer_event()
658 SST_FILL_DEFAULT_DESTINATION(cmd.header.dst); sst_swm_mixer_event()
660 cmd.header.command_id = SBA_SET_SWM; sst_swm_mixer_event()
662 SST_FILL_DESTINATION(2, cmd.output_id, sst_swm_mixer_event()
664 cmd.nb_inputs = fill_swm_input(cmpnt, &cmd.input[0], val); sst_swm_mixer_event()
665 cmd.header.length = offsetof(struct sst_cmd_set_swm, input) sst_swm_mixer_event()
667 + (cmd.nb_inputs * sizeof(cmd.input[0])); sst_swm_mixer_event()
670 ids->task_id, 0, &cmd, sst_swm_mixer_event()
671 sizeof(cmd.header) + cmd.header.length); sst_swm_mixer_event()
720 * The DSP expects first cmd to be SBA_VB_START, so at first startup send
722 * DSP expects last cmd to be SBA_VB_IDLE, so at last shutdown send that.
731 struct sst_cmd_generic cmd; sst_handle_vb_timer() local
736 cmd.header.command_id = SBA_VB_START; sst_handle_vb_timer()
738 cmd.header.command_id = SBA_IDLE; sst_handle_vb_timer()
741 SST_FILL_DEFAULT_DESTINATION(cmd.header.dst); sst_handle_vb_timer()
742 cmd.header.length = 0; sst_handle_vb_timer()
763 SST_FLAG_BLOCKED, SST_TASK_SBA, 0, &cmd, sst_handle_vb_timer()
764 sizeof(cmd.header) + cmd.header.length); sst_handle_vb_timer()
796 struct sst_cmd_sba_hw_set_ssp cmd; send_ssp_cmd() local
802 SST_FILL_DEFAULT_DESTINATION(cmd.header.dst); send_ssp_cmd()
803 cmd.header.command_id = SBA_HW_SET_SSP; send_ssp_cmd()
804 cmd.header.length = sizeof(struct sst_cmd_sba_hw_set_ssp) send_ssp_cmd()
811 cmd.switch_state = SST_SWITCH_ON; send_ssp_cmd()
813 cmd.switch_state = SST_SWITCH_OFF; send_ssp_cmd()
815 cmd.selection = config->ssp_id; send_ssp_cmd()
816 cmd.nb_bits_per_slots = config->bits_per_slot; send_ssp_cmd()
817 cmd.nb_slots = config->slots; send_ssp_cmd()
818 cmd.mode = config->ssp_mode | (config->pcm_mode << 1); send_ssp_cmd()
819 cmd.duplex = config->duplex; send_ssp_cmd()
820 cmd.active_tx_slot_map = config->active_slot_map; send_ssp_cmd()
821 cmd.active_rx_slot_map = config->active_slot_map; send_ssp_cmd()
822 cmd.frame_sync_frequency = config->fs_frequency; send_ssp_cmd()
823 cmd.frame_sync_polarity = SSP_FS_ACTIVE_HIGH; send_ssp_cmd()
824 cmd.data_polarity = 1; send_ssp_cmd()
825 cmd.frame_sync_width = config->fs_width; send_ssp_cmd()
826 cmd.ssp_protocol = config->ssp_protocol; send_ssp_cmd()
827 cmd.start_delay = config->start_delay; send_ssp_cmd()
828 cmd.reserved1 = cmd.reserved2 = 0xFF; send_ssp_cmd()
831 SST_TASK_SBA, 0, &cmd, send_ssp_cmd()
832 sizeof(cmd.header) + cmd.header.length); send_ssp_cmd()
857 struct sst_cmd_set_media_path cmd; sst_set_media_path() local
867 cmd.switch_state = SST_PATH_ON; sst_set_media_path()
869 cmd.switch_state = SST_PATH_OFF; sst_set_media_path()
871 SST_FILL_DESTINATION(2, cmd.header.dst, sst_set_media_path()
875 cmd.header.command_id = MMX_SET_MEDIA_PATH; sst_set_media_path()
876 cmd.header.length = sizeof(struct sst_cmd_set_media_path) sst_set_media_path()
880 ids->task_id, 0, &cmd, sst_set_media_path()
881 sizeof(cmd.header) + cmd.header.length); sst_set_media_path()
894 struct sst_cmd_sba_set_media_loop_map cmd; sst_set_media_loop() local
901 cmd.switch_state = SST_SWITCH_ON; sst_set_media_loop()
903 cmd.switch_state = SST_SWITCH_OFF; sst_set_media_loop()
905 SST_FILL_DESTINATION(2, cmd.header.dst, sst_set_media_loop()
908 cmd.header.command_id = SBA_SET_MEDIA_LOOP_MAP; sst_set_media_loop()
909 cmd.header.length = sizeof(struct sst_cmd_sba_set_media_loop_map) sst_set_media_loop()
911 cmd.param.part.cfg.rate = 2; /* 48khz */ sst_set_media_loop()
913 cmd.param.part.cfg.format = ids->format; /* stereo/Mono */ sst_set_media_loop()
914 cmd.param.part.cfg.s_length = 1; /* 24bit left justified */ sst_set_media_loop()
915 cmd.map = 0; /* Algo sequence: Gain - DRP - FIR - IIR */ sst_set_media_loop()
918 SST_TASK_SBA, 0, &cmd, sst_set_media_loop()
919 sizeof(cmd.header) + cmd.header.length); sst_set_media_loop()
/linux-4.1.27/drivers/iio/pressure/
H A Dms5611_spi.c20 u8 cmd = MS5611_RESET; ms5611_spi_reset() local
23 return spi_write_then_read(st->client, &cmd, 1, NULL, 0); ms5611_spi_reset()
58 u8 cmd; ms5611_spi_read_adc_temp_and_pressure() local
62 cmd = MS5611_START_TEMP_CONV; ms5611_spi_read_adc_temp_and_pressure()
63 ret = spi_write_then_read(st->client, &cmd, 1, NULL, 0); ms5611_spi_read_adc_temp_and_pressure()
73 cmd = MS5611_START_PRESSURE_CONV; ms5611_spi_read_adc_temp_and_pressure()
74 ret = spi_write_then_read(st->client, &cmd, 1, NULL, 0); ms5611_spi_read_adc_temp_and_pressure()
/linux-4.1.27/arch/s390/hypfs/
H A Dhypfs_sprp.c25 static unsigned long hypfs_sprp_diag304(void *data, unsigned long cmd) hypfs_sprp_diag304() argument
29 register unsigned long _cmd asm("4") = cmd; hypfs_sprp_diag304()
65 unsigned long cmd; __hypfs_sprp_ioctl() local
87 cmd = *(unsigned long *) &diag304.args[0]; __hypfs_sprp_ioctl()
88 diag304.rc = hypfs_sprp_diag304(data, cmd); __hypfs_sprp_ioctl()
102 static long hypfs_sprp_ioctl(struct file *file, unsigned int cmd, hypfs_sprp_ioctl() argument
113 switch (cmd) { hypfs_sprp_ioctl()
/linux-4.1.27/net/nfc/nci/
H A Dcore.c46 struct nci_core_conn_create_cmd *cmd; member in struct:core_conn_create_data
150 struct nci_core_reset_cmd cmd; nci_reset_req() local
152 cmd.reset_type = NCI_RESET_TYPE_RESET_CONFIG; nci_reset_req()
153 nci_send_cmd(ndev, NCI_OP_CORE_RESET_CMD, 1, &cmd); nci_reset_req()
163 struct nci_rf_disc_map_cmd cmd; nci_init_complete_req() local
164 struct disc_map_config *cfg = cmd.mapping_configs; nci_init_complete_req()
165 __u8 *num = &cmd.num_mapping_configs; nci_init_complete_req()
194 (1 + ((*num) * sizeof(struct disc_map_config))), &cmd); nci_init_complete_req()
206 struct nci_core_set_config_cmd cmd; nci_set_config_req() local
210 cmd.num_params = 1; nci_set_config_req()
211 cmd.param.id = param->id; nci_set_config_req()
212 cmd.param.len = param->len; nci_set_config_req()
213 memcpy(cmd.param.val, param->val, param->len); nci_set_config_req()
215 nci_send_cmd(ndev, NCI_OP_CORE_SET_CONFIG_CMD, (3 + param->len), &cmd); nci_set_config_req()
227 struct nci_rf_disc_cmd cmd; nci_rf_discover_req() local
229 cmd.num_disc_configs = 0; nci_rf_discover_req()
231 if ((cmd.num_disc_configs < NCI_MAX_NUM_RF_CONFIGS) && nci_rf_discover_req()
236 cmd.disc_configs[cmd.num_disc_configs].rf_tech_and_mode = nci_rf_discover_req()
238 cmd.disc_configs[cmd.num_disc_configs].frequency = 1; nci_rf_discover_req()
239 cmd.num_disc_configs++; nci_rf_discover_req()
242 if ((cmd.num_disc_configs < NCI_MAX_NUM_RF_CONFIGS) && nci_rf_discover_req()
244 cmd.disc_configs[cmd.num_disc_configs].rf_tech_and_mode = nci_rf_discover_req()
246 cmd.disc_configs[cmd.num_disc_configs].frequency = 1; nci_rf_discover_req()
247 cmd.num_disc_configs++; nci_rf_discover_req()
250 if ((cmd.num_disc_configs < NCI_MAX_NUM_RF_CONFIGS) && nci_rf_discover_req()
253 cmd.disc_configs[cmd.num_disc_configs].rf_tech_and_mode = nci_rf_discover_req()
255 cmd.disc_configs[cmd.num_disc_configs].frequency = 1; nci_rf_discover_req()
256 cmd.num_disc_configs++; nci_rf_discover_req()
259 if ((cmd.num_disc_configs < NCI_MAX_NUM_RF_CONFIGS) && nci_rf_discover_req()
261 cmd.disc_configs[cmd.num_disc_configs].rf_tech_and_mode = nci_rf_discover_req()
263 cmd.disc_configs[cmd.num_disc_configs].frequency = 1; nci_rf_discover_req()
264 cmd.num_disc_configs++; nci_rf_discover_req()
267 if ((cmd.num_disc_configs < NCI_MAX_NUM_RF_CONFIGS - 1) && nci_rf_discover_req()
269 cmd.disc_configs[cmd.num_disc_configs].rf_tech_and_mode = nci_rf_discover_req()
271 cmd.disc_configs[cmd.num_disc_configs].frequency = 1; nci_rf_discover_req()
272 cmd.num_disc_configs++; nci_rf_discover_req()
273 cmd.disc_configs[cmd.num_disc_configs].rf_tech_and_mode = nci_rf_discover_req()
275 cmd.disc_configs[cmd.num_disc_configs].frequency = 1; nci_rf_discover_req()
276 cmd.num_disc_configs++; nci_rf_discover_req()
280 (1 + (cmd.num_disc_configs * sizeof(struct disc_config))), nci_rf_discover_req()
281 &cmd); nci_rf_discover_req()
293 struct nci_rf_discover_select_cmd cmd; nci_rf_discover_select_req() local
295 cmd.rf_discovery_id = param->rf_discovery_id; nci_rf_discover_select_req()
296 cmd.rf_protocol = param->rf_protocol; nci_rf_discover_select_req()
298 switch (cmd.rf_protocol) { nci_rf_discover_select_req()
300 cmd.rf_interface = NCI_RF_INTERFACE_ISO_DEP; nci_rf_discover_select_req()
304 cmd.rf_interface = NCI_RF_INTERFACE_NFC_DEP; nci_rf_discover_select_req()
308 cmd.rf_interface = NCI_RF_INTERFACE_FRAME; nci_rf_discover_select_req()
313 sizeof(struct nci_rf_discover_select_cmd), &cmd); nci_rf_discover_select_req()
318 struct nci_rf_deactivate_cmd cmd; nci_rf_deactivate_req() local
320 cmd.type = opt; nci_rf_deactivate_req()
323 sizeof(struct nci_rf_deactivate_cmd), &cmd); nci_rf_deactivate_req()
414 /* Flush cmd wq */ nci_close_device()
479 struct nci_nfcee_discover_cmd cmd; nci_nfcee_discover_req() local
482 cmd.discovery_action = action; nci_nfcee_discover_req()
484 nci_send_cmd(ndev, NCI_OP_NFCEE_DISCOVER_CMD, 1, &cmd); nci_nfcee_discover_req()
496 struct nci_nfcee_mode_set_cmd *cmd = nci_nfcee_mode_set_req() local
500 sizeof(struct nci_nfcee_mode_set_cmd), cmd); nci_nfcee_mode_set_req()
505 struct nci_nfcee_mode_set_cmd cmd; nci_nfcee_mode_set() local
507 cmd.nfcee_id = nfcee_id; nci_nfcee_mode_set()
508 cmd.nfcee_mode = nfcee_mode; nci_nfcee_mode_set()
510 return nci_request(ndev, nci_nfcee_mode_set_req, (unsigned long)&cmd, nci_nfcee_mode_set()
520 nci_send_cmd(ndev, NCI_OP_CORE_CONN_CREATE_CMD, data->length, data->cmd); nci_core_conn_create_req()
529 struct nci_core_conn_create_cmd *cmd; nci_core_conn_create() local
533 cmd = kzalloc(data.length, GFP_KERNEL); nci_core_conn_create()
534 if (!cmd) nci_core_conn_create()
537 cmd->destination_type = destination_type; nci_core_conn_create()
538 cmd->number_destination_params = number_destination_params; nci_core_conn_create()
539 memcpy(cmd->params, params, params_len); nci_core_conn_create()
541 data.cmd = cmd; nci_core_conn_create()
547 kfree(cmd); nci_core_conn_create()
1268 pr_debug("NCI TX: MT=cmd, PBF=%d, GID=0x%x, OID=0x%x, plen=%d\n", nci_cmd_work()
/linux-4.1.27/drivers/staging/i2o/
H A Ddebug.c6 static void i2o_report_util_cmd(u8 cmd);
7 static void i2o_report_exec_cmd(u8 cmd);
20 u8 cmd = (msg[1] >> 24) & 0xFF; i2o_report_status() local
24 if (cmd == I2O_CMD_UTIL_EVT_REGISTER) i2o_report_status()
29 if (cmd < 0x1F) // Utility cmd i2o_report_status()
30 i2o_report_util_cmd(cmd); i2o_report_status()
32 else if (cmd >= 0xA0 && cmd <= 0xEF) // Executive cmd i2o_report_status()
33 i2o_report_exec_cmd(cmd); i2o_report_status()
35 printk("Cmd = %0#2x, ", cmd); // Other cmds i2o_report_status()
44 if (cmd < 0x1F || (cmd >= 0xA0 && cmd <= 0xEF)) i2o_report_status()
200 static void i2o_report_util_cmd(u8 cmd) i2o_report_util_cmd() argument
202 switch (cmd) { i2o_report_util_cmd()
246 printk("Cmd = %0#2x, ", cmd); i2o_report_util_cmd()
253 static void i2o_report_exec_cmd(u8 cmd) i2o_report_exec_cmd() argument
255 switch (cmd) { i2o_report_exec_cmd()
356 printk("Cmd = %#02x, ", cmd); i2o_report_exec_cmd()
/linux-4.1.27/drivers/scsi/megaraid/
H A Dmegaraid_sas_base.c158 megasas_complete_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd,
183 wait_and_poll(struct megasas_instance *instance, struct megasas_cmd *cmd,
194 megasas_issue_dcmd(struct megasas_instance *instance, struct megasas_cmd *cmd) megasas_issue_dcmd() argument
197 cmd->frame_phys_addr, 0, instance->reg_set); megasas_issue_dcmd()
210 struct megasas_cmd *cmd = NULL; megasas_get_cmd() local
215 cmd = list_entry((&instance->cmd_pool)->next, megasas_get_cmd()
217 list_del_init(&cmd->list); megasas_get_cmd()
218 atomic_set(&cmd->mfi_mpt_pthr, MFI_MPT_DETACHED); megasas_get_cmd()
224 return cmd; megasas_get_cmd()
228 * __megasas_return_cmd - Return a cmd to free command pool
230 * @cmd: Command packet to be returned to free command pool
233 __megasas_return_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd) __megasas_return_cmd() argument
239 * frame will have cmd->mfi_mpt_mpthr set to MFI_MPT_DETACHED __megasas_return_cmd()
241 if (atomic_read(&cmd->mfi_mpt_pthr) != MFI_MPT_DETACHED) __megasas_return_cmd()
244 cmd->scmd = NULL; __megasas_return_cmd()
245 cmd->frame_count = 0; __megasas_return_cmd()
246 cmd->is_wait_event = 0; __megasas_return_cmd()
247 cmd->mpt_pthr_cmd_blocked = NULL; __megasas_return_cmd()
253 cmd->frame->hdr.cmd = MFI_CMD_INVALID; __megasas_return_cmd()
255 atomic_set(&cmd->mfi_mpt_pthr, MFI_LIST_ADDED); __megasas_return_cmd()
256 list_add(&cmd->list, (&instance->cmd_pool)->next); __megasas_return_cmd()
260 * megasas_return_cmd - Return a cmd to free command pool
262 * @cmd: Command packet to be returned to free command pool
265 megasas_return_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd) megasas_return_cmd() argument
270 __megasas_return_cmd(instance, cmd); megasas_return_cmd()
352 * @frame_phys_addr : Physical address of cmd
526 * @frame_phys_addr : Physical address of cmd
658 * @frame_phys_addr : Physical address of cmd
790 * @frame_phys_addr : Physical address of cmd
911 * @cmd: Command packet to be issued
916 megasas_issue_polled(struct megasas_instance *instance, struct megasas_cmd *cmd) megasas_issue_polled() argument
920 struct megasas_header *frame_hdr = &cmd->frame->hdr; megasas_issue_polled()
928 instance->instancet->issue_dcmd(instance, cmd); megasas_issue_polled()
937 return wait_and_poll(instance, cmd, seconds); megasas_issue_polled()
943 * @cmd: Command to be issued
952 struct megasas_cmd *cmd, int timeout) megasas_issue_blocked_cmd()
955 cmd->cmd_status = ENODATA; megasas_issue_blocked_cmd()
957 cmd->is_wait_event = 1; megasas_issue_blocked_cmd()
958 instance->instancet->issue_dcmd(instance, cmd); megasas_issue_blocked_cmd()
961 cmd->cmd_status != ENODATA, timeout * HZ); megasas_issue_blocked_cmd()
966 cmd->cmd_status != ENODATA); megasas_issue_blocked_cmd()
972 * megasas_issue_blocked_abort_cmd - Aborts previously issued cmd
974 * @cmd_to_abort: Previously issued cmd to be aborted
979 * cmd and waits for return status.
986 struct megasas_cmd *cmd; megasas_issue_blocked_abort_cmd() local
990 cmd = megasas_get_cmd(instance); megasas_issue_blocked_abort_cmd()
992 if (!cmd) megasas_issue_blocked_abort_cmd()
995 abort_fr = &cmd->frame->abort; megasas_issue_blocked_abort_cmd()
1000 abort_fr->cmd = MFI_CMD_ABORT; megasas_issue_blocked_abort_cmd()
1009 cmd->sync_cmd = 1; megasas_issue_blocked_abort_cmd()
1010 cmd->cmd_status = ENODATA; megasas_issue_blocked_abort_cmd()
1012 instance->instancet->issue_dcmd(instance, cmd); megasas_issue_blocked_abort_cmd()
1016 cmd->cmd_status != ENODATA, timeout * HZ); megasas_issue_blocked_abort_cmd()
1024 cmd->cmd_status != ENODATA); megasas_issue_blocked_abort_cmd()
1026 cmd->sync_cmd = 0; megasas_issue_blocked_abort_cmd()
1028 megasas_return_cmd(instance, cmd); megasas_issue_blocked_abort_cmd()
1184 * @cmd: Command to be prepared in
1191 struct megasas_cmd *cmd) megasas_build_dcdb()
1200 pthru = (struct megasas_pthru_frame *)cmd->frame; megasas_build_dcdb()
1216 pthru->cmd = (is_logical) ? MFI_CMD_LD_SCSI_IO : MFI_CMD_PD_SCSI_IO; megasas_build_dcdb()
1266 cpu_to_le32(upper_32_bits(cmd->sense_phys_addr)); megasas_build_dcdb()
1268 cpu_to_le32(lower_32_bits(cmd->sense_phys_addr)); megasas_build_dcdb()
1274 cmd->frame_count = megasas_get_frame_count(instance, pthru->sge_count, megasas_build_dcdb()
1277 return cmd->frame_count; megasas_build_dcdb()
1284 * @cmd: Command to be prepared
1290 struct megasas_cmd *cmd) megasas_build_ldio()
1298 ldio = (struct megasas_io_frame *)cmd->frame; megasas_build_ldio()
1312 ldio->cmd = (sc & 0x02) ? MFI_CMD_LD_WRITE : MFI_CMD_LD_READ; megasas_build_ldio()
1407 ldio->sense_buf_phys_addr_lo = cpu_to_le32(cmd->sense_phys_addr); megasas_build_ldio()
1413 cmd->frame_count = megasas_get_frame_count(instance, megasas_build_ldio()
1416 return cmd->frame_count; megasas_build_ldio()
1420 * megasas_cmd_type - Checks if the cmd is for logical drive/sysPD
1425 inline int megasas_cmd_type(struct scsi_cmnd *cmd) megasas_cmd_type() argument
1429 switch (cmd->cmnd[0]) { megasas_cmd_type()
1438 ret = (MEGASAS_IS_LOGICAL(cmd)) ? megasas_cmd_type()
1442 ret = (MEGASAS_IS_LOGICAL(cmd)) ? megasas_cmd_type()
1456 struct megasas_cmd *cmd; megasas_dump_pending_frames() local
1473 cmd = instance->cmd_list[i]; megasas_dump_pending_frames()
1474 if(!cmd->scmd) megasas_dump_pending_frames()
1476 printk(KERN_ERR "megasas[%d]: Frame addr :0x%08lx : ",instance->host->host_no,(unsigned long)cmd->frame_phys_addr); megasas_dump_pending_frames()
1477 if (megasas_cmd_type(cmd->scmd) == READ_WRITE_LDIO) { megasas_dump_pending_frames()
1478 ldio = (struct megasas_io_frame *)cmd->frame; megasas_dump_pending_frames()
1483 instance->host->host_no, cmd->frame_count, ldio->cmd, ldio->target_id, megasas_dump_pending_frames()
1488 pthru = (struct megasas_pthru_frame *) cmd->frame; megasas_dump_pending_frames()
1493 instance->host->host_no, cmd->frame_count, pthru->cmd, pthru->target_id, megasas_dump_pending_frames()
1514 cmd = instance->cmd_list[i]; megasas_dump_pending_frames()
1516 if(cmd->sync_cmd == 1){ megasas_dump_pending_frames()
1517 printk(KERN_ERR "0x%08lx : ", (unsigned long)cmd->frame_phys_addr); megasas_dump_pending_frames()
1527 struct megasas_cmd *cmd; megasas_build_and_issue_cmd() local
1530 cmd = megasas_get_cmd(instance); megasas_build_and_issue_cmd()
1531 if (!cmd) megasas_build_and_issue_cmd()
1538 frame_count = megasas_build_ldio(instance, scmd, cmd); megasas_build_and_issue_cmd()
1540 frame_count = megasas_build_dcdb(instance, scmd, cmd); megasas_build_and_issue_cmd()
1545 cmd->scmd = scmd; megasas_build_and_issue_cmd()
1546 scmd->SCp.ptr = (char *)cmd; megasas_build_and_issue_cmd()
1553 instance->instancet->fire_cmd(instance, cmd->frame_phys_addr, megasas_build_and_issue_cmd()
1554 cmd->frame_count-1, instance->reg_set); megasas_build_and_issue_cmd()
1558 megasas_return_cmd(instance, cmd); megasas_build_and_issue_cmd()
1715 cmd_mfi->frame->hdr.cmd != MFI_CMD_ABORT) megasas_complete_outstanding_ioctls()
1723 if (cmd_mfi->sync_cmd && cmd_mfi->frame->hdr.cmd != megasas_complete_outstanding_ioctls()
1792 struct megasas_cmd *cmd; megasas_complete_cmd_dpc() local
1814 cmd = instance->cmd_list[context]; megasas_complete_cmd_dpc()
1816 megasas_complete_cmd(instance, cmd, DID_OK); megasas_complete_cmd_dpc()
1878 struct megasas_cmd *cmd; megasas_get_ld_vf_affiliation_111() local
1885 cmd = megasas_get_cmd(instance); megasas_get_ld_vf_affiliation_111()
1887 if (!cmd) { megasas_get_ld_vf_affiliation_111()
1889 "Failed to get cmd for scsi%d.\n", megasas_get_ld_vf_affiliation_111()
1894 dcmd = &cmd->frame->dcmd; megasas_get_ld_vf_affiliation_111()
1899 megasas_return_cmd(instance, cmd); megasas_get_ld_vf_affiliation_111()
1915 megasas_return_cmd(instance, cmd); megasas_get_ld_vf_affiliation_111()
1924 dcmd->cmd = MFI_CMD_DCMD; megasas_get_ld_vf_affiliation_111()
1945 megasas_issue_blocked_cmd(instance, cmd, 0); megasas_get_ld_vf_affiliation_111()
1979 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_get_ld_vf_affiliation_111()
1980 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_get_ld_vf_affiliation_111()
1981 cmd->mpt_pthr_cmd_blocked); megasas_get_ld_vf_affiliation_111()
1983 megasas_return_cmd(instance, cmd); megasas_get_ld_vf_affiliation_111()
1991 struct megasas_cmd *cmd; megasas_get_ld_vf_affiliation_12() local
1999 cmd = megasas_get_cmd(instance); megasas_get_ld_vf_affiliation_12()
2001 if (!cmd) { megasas_get_ld_vf_affiliation_12()
2003 "Failed to get cmd for scsi%d.\n", megasas_get_ld_vf_affiliation_12()
2008 dcmd = &cmd->frame->dcmd; megasas_get_ld_vf_affiliation_12()
2013 megasas_return_cmd(instance, cmd); megasas_get_ld_vf_affiliation_12()
2030 megasas_return_cmd(instance, cmd); megasas_get_ld_vf_affiliation_12()
2039 dcmd->cmd = MFI_CMD_DCMD; megasas_get_ld_vf_affiliation_12()
2060 megasas_issue_blocked_cmd(instance, cmd, 0); megasas_get_ld_vf_affiliation_12()
2150 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_get_ld_vf_affiliation_12()
2151 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_get_ld_vf_affiliation_12()
2152 cmd->mpt_pthr_cmd_blocked); megasas_get_ld_vf_affiliation_12()
2154 megasas_return_cmd(instance, cmd); megasas_get_ld_vf_affiliation_12()
2176 struct megasas_cmd *cmd; megasas_sriov_start_heartbeat() local
2180 cmd = megasas_get_cmd(instance); megasas_sriov_start_heartbeat()
2182 if (!cmd) { megasas_sriov_start_heartbeat()
2184 "Failed to get cmd for scsi%d.\n", megasas_sriov_start_heartbeat()
2189 dcmd = &cmd->frame->dcmd; megasas_sriov_start_heartbeat()
2208 dcmd->cmd = MFI_CMD_DCMD; megasas_sriov_start_heartbeat()
2222 if (!megasas_issue_polled(instance, cmd)) { megasas_sriov_start_heartbeat()
2243 megasas_return_cmd(instance, cmd); megasas_sriov_start_heartbeat()
2361 * Call cmd completion routine. Cmd to be megasas_wait_for_outstanding()
2451 scmd_printk(KERN_NOTICE, scmd, "megasas: RESET cmd=%x retries=%x\n", megasas_generic_reset()
2474 * cmd has not been completed within the timeout period.
2587 * @cmd: AEN command completed by the ISR
2597 megasas_service_aen(struct megasas_instance *instance, struct megasas_cmd *cmd) megasas_service_aen() argument
2603 if ((!cmd->abort_aen) && (instance->unload == 0)) { megasas_service_aen()
2611 cmd->abort_aen = 0; megasas_service_aen()
2615 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_service_aen()
2616 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_service_aen()
2617 cmd->mpt_pthr_cmd_blocked); megasas_service_aen()
2619 megasas_return_cmd(instance, cmd); megasas_service_aen()
2808 * @cmd: Command to be completed
2816 struct megasas_cmd *cmd) megasas_complete_int_cmd()
2818 cmd->cmd_status = cmd->frame->io.cmd_status; megasas_complete_int_cmd()
2820 if (cmd->cmd_status == ENODATA) { megasas_complete_int_cmd()
2821 cmd->cmd_status = 0; megasas_complete_int_cmd()
2829 * @cmd: Cmd that was issued to abort another cmd
2837 struct megasas_cmd *cmd) megasas_complete_abort()
2839 if (cmd->sync_cmd) { megasas_complete_abort()
2840 cmd->sync_cmd = 0; megasas_complete_abort()
2841 cmd->cmd_status = 0; megasas_complete_abort()
2851 * @cmd: Command to be completed
2859 megasas_complete_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd, megasas_complete_cmd() argument
2863 struct megasas_header *hdr = &cmd->frame->hdr; megasas_complete_cmd()
2869 cmd->retry_for_fw_reset = 0; megasas_complete_cmd()
2871 if (cmd->scmd) megasas_complete_cmd()
2872 cmd->scmd->SCp.ptr = NULL; megasas_complete_cmd()
2874 switch (hdr->cmd) { megasas_complete_cmd()
2893 if (cmd->sync_cmd) { megasas_complete_cmd()
2894 cmd->sync_cmd = 0; megasas_complete_cmd()
2895 megasas_complete_int_cmd(instance, cmd); megasas_complete_cmd()
2903 cmd->scmd->result = alt_status << 16; megasas_complete_cmd()
2911 scsi_dma_unmap(cmd->scmd); megasas_complete_cmd()
2912 cmd->scmd->scsi_done(cmd->scmd); megasas_complete_cmd()
2913 megasas_return_cmd(instance, cmd); megasas_complete_cmd()
2921 cmd->scmd->result = DID_OK << 16; megasas_complete_cmd()
2926 cmd->scmd->result = megasas_complete_cmd()
2932 cmd->scmd->result = (DID_OK << 16) | hdr->scsi_status; megasas_complete_cmd()
2935 memset(cmd->scmd->sense_buffer, 0, megasas_complete_cmd()
2937 memcpy(cmd->scmd->sense_buffer, cmd->sense, megasas_complete_cmd()
2940 cmd->scmd->result |= DRIVER_SENSE << 24; megasas_complete_cmd()
2947 cmd->scmd->result = DID_BAD_TARGET << 16; megasas_complete_cmd()
2953 cmd->scmd->result = DID_ERROR << 16; megasas_complete_cmd()
2959 scsi_dma_unmap(cmd->scmd); megasas_complete_cmd()
2960 cmd->scmd->scsi_done(cmd->scmd); megasas_complete_cmd()
2961 megasas_return_cmd(instance, cmd); megasas_complete_cmd()
2968 opcode = le32_to_cpu(cmd->frame->dcmd.opcode); megasas_complete_cmd()
2971 && (cmd->frame->dcmd.mbox.b[1] == 1)) { megasas_complete_cmd()
2974 if (cmd->frame->hdr.cmd_status != 0) { megasas_complete_cmd()
2975 if (cmd->frame->hdr.cmd_status != megasas_complete_cmd()
2979 cmd->frame->hdr.cmd_status); megasas_complete_cmd()
2982 cmd, cmd->mpt_pthr_cmd_blocked); megasas_complete_cmd()
2990 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_complete_cmd()
2991 cmd->mpt_pthr_cmd_blocked); megasas_complete_cmd()
3018 megasas_service_aen(instance, cmd); megasas_complete_cmd()
3020 megasas_complete_int_cmd(instance, cmd); megasas_complete_cmd()
3026 * Cmd issued to abort another cmd returned megasas_complete_cmd()
3028 megasas_complete_abort(instance, cmd); megasas_complete_cmd()
3033 hdr->cmd); megasas_complete_cmd()
3046 struct megasas_cmd *cmd; megasas_issue_pending_cmds_again() local
3058 cmd = list_entry((&clist_local)->next, megasas_issue_pending_cmds_again()
3060 list_del_init(&cmd->list); megasas_issue_pending_cmds_again()
3062 if (cmd->sync_cmd || cmd->scmd) { megasas_issue_pending_cmds_again()
3065 cmd, cmd->scmd, cmd->sync_cmd); megasas_issue_pending_cmds_again()
3067 cmd->retry_for_fw_reset++; megasas_issue_pending_cmds_again()
3069 if (cmd->retry_for_fw_reset == 3) { megasas_issue_pending_cmds_again()
3070 printk(KERN_NOTICE "megaraid_sas: cmd %p, %p:%d" megasas_issue_pending_cmds_again()
3073 cmd, cmd->scmd, cmd->sync_cmd); megasas_issue_pending_cmds_again()
3081 if (cmd->sync_cmd == 1) { megasas_issue_pending_cmds_again()
3082 if (cmd->scmd) { megasas_issue_pending_cmds_again()
3084 "cmd attached to internal command!\n"); megasas_issue_pending_cmds_again()
3086 printk(KERN_NOTICE "megasas: %p synchronous cmd" megasas_issue_pending_cmds_again()
3088 "issue it again.\n", cmd); megasas_issue_pending_cmds_again()
3089 cmd->cmd_status = ENODATA; megasas_issue_pending_cmds_again()
3091 cmd->frame_phys_addr , megasas_issue_pending_cmds_again()
3093 } else if (cmd->scmd) { megasas_issue_pending_cmds_again()
3094 printk(KERN_NOTICE "megasas: %p scsi cmd [%02x]" megasas_issue_pending_cmds_again()
3096 cmd, cmd->scmd->cmnd[0]); megasas_issue_pending_cmds_again()
3100 cmd->frame_phys_addr, megasas_issue_pending_cmds_again()
3101 cmd->frame_count-1, instance->reg_set); megasas_issue_pending_cmds_again()
3103 printk(KERN_NOTICE "megasas: %p unexpected cmd on the" megasas_issue_pending_cmds_again()
3105 cmd); megasas_issue_pending_cmds_again()
3139 struct megasas_cmd *cmd; megasas_internal_reset_defer_cmds() local
3148 cmd = instance->cmd_list[i]; megasas_internal_reset_defer_cmds()
3149 if (cmd->sync_cmd == 1 || cmd->scmd) { megasas_internal_reset_defer_cmds()
3150 printk(KERN_NOTICE "megasas: moving cmd[%d]:%p:%d:%p" megasas_internal_reset_defer_cmds()
3152 defer_index, cmd, cmd->sync_cmd, cmd->scmd); megasas_internal_reset_defer_cmds()
3154 if (!list_empty(&cmd->list)) { megasas_internal_reset_defer_cmds()
3156 " moving this cmd:%p, %d %p, it was" megasas_internal_reset_defer_cmds()
3158 cmd, cmd->sync_cmd, cmd->scmd); megasas_internal_reset_defer_cmds()
3160 list_del_init(&cmd->list); megasas_internal_reset_defer_cmds()
3163 list_add_tail(&cmd->list, megasas_internal_reset_defer_cmds()
3540 * megasas_teardown_frame_pool - Destroy the cmd frame DMA pool
3547 struct megasas_cmd *cmd; megasas_teardown_frame_pool() local
3557 cmd = instance->cmd_list[i]; megasas_teardown_frame_pool()
3559 if (cmd->frame) megasas_teardown_frame_pool()
3560 pci_pool_free(instance->frame_dma_pool, cmd->frame, megasas_teardown_frame_pool()
3561 cmd->frame_phys_addr); megasas_teardown_frame_pool()
3563 if (cmd->sense) megasas_teardown_frame_pool()
3564 pci_pool_free(instance->sense_dma_pool, cmd->sense, megasas_teardown_frame_pool()
3565 cmd->sense_phys_addr); megasas_teardown_frame_pool()
3579 * megasas_create_frame_pool - Creates DMA pool for cmd frames
3594 struct megasas_cmd *cmd; megasas_create_frame_pool() local
3647 * By making cmd->index as the context instead of the &cmd, we can megasas_create_frame_pool()
3652 cmd = instance->cmd_list[i]; megasas_create_frame_pool()
3654 cmd->frame = pci_pool_alloc(instance->frame_dma_pool, megasas_create_frame_pool()
3655 GFP_KERNEL, &cmd->frame_phys_addr); megasas_create_frame_pool()
3657 cmd->sense = pci_pool_alloc(instance->sense_dma_pool, megasas_create_frame_pool()
3658 GFP_KERNEL, &cmd->sense_phys_addr); megasas_create_frame_pool()
3664 if (!cmd->frame || !cmd->sense) { megasas_create_frame_pool()
3670 memset(cmd->frame, 0, total_sz); megasas_create_frame_pool()
3671 cmd->frame->io.context = cpu_to_le32(cmd->index); megasas_create_frame_pool()
3672 cmd->frame->io.pad_0 = 0; megasas_create_frame_pool()
3678 cmd->frame->hdr.cmd = MFI_CMD_INVALID; megasas_create_frame_pool()
3685 * megasas_free_cmds - Free all the cmds in the free cmd pool
3729 struct megasas_cmd *cmd; megasas_alloc_cmds() local
3766 cmd = instance->cmd_list[i]; megasas_alloc_cmds()
3767 memset(cmd, 0, sizeof(struct megasas_cmd)); megasas_alloc_cmds()
3768 cmd->index = i; megasas_alloc_cmds()
3769 atomic_set(&cmd->mfi_mpt_pthr, MFI_LIST_ADDED); megasas_alloc_cmds()
3770 cmd->scmd = NULL; megasas_alloc_cmds()
3771 cmd->instance = instance; megasas_alloc_cmds()
3773 list_add_tail(&cmd->list, &instance->cmd_pool); megasas_alloc_cmds()
3777 * Create a frame pool and assign one frame to each cmd megasas_alloc_cmds()
3800 struct megasas_cmd *cmd; megasas_get_pd_list() local
3806 cmd = megasas_get_cmd(instance); megasas_get_pd_list()
3808 if (!cmd) { megasas_get_pd_list()
3809 printk(KERN_DEBUG "megasas (get_pd_list): Failed to get cmd\n"); megasas_get_pd_list()
3813 dcmd = &cmd->frame->dcmd; megasas_get_pd_list()
3820 megasas_return_cmd(instance, cmd); megasas_get_pd_list()
3829 dcmd->cmd = MFI_CMD_DCMD; megasas_get_pd_list()
3841 ret = megasas_issue_blocked_cmd(instance, cmd, megasas_get_pd_list()
3844 ret = megasas_issue_polled(instance, cmd); megasas_get_pd_list()
3877 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_get_pd_list()
3878 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_get_pd_list()
3879 cmd->mpt_pthr_cmd_blocked); megasas_get_pd_list()
3881 megasas_return_cmd(instance, cmd); megasas_get_pd_list()
3899 struct megasas_cmd *cmd; megasas_get_ld_list() local
3905 cmd = megasas_get_cmd(instance); megasas_get_ld_list()
3907 if (!cmd) { megasas_get_ld_list()
3908 printk(KERN_DEBUG "megasas_get_ld_list: Failed to get cmd\n"); megasas_get_ld_list()
3912 dcmd = &cmd->frame->dcmd; megasas_get_ld_list()
3920 megasas_return_cmd(instance, cmd); megasas_get_ld_list()
3929 dcmd->cmd = MFI_CMD_DCMD; megasas_get_ld_list()
3941 ret = megasas_issue_blocked_cmd(instance, cmd, megasas_get_ld_list()
3944 ret = megasas_issue_polled(instance, cmd); megasas_get_ld_list()
3968 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_get_ld_list()
3969 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_get_ld_list()
3970 cmd->mpt_pthr_cmd_blocked); megasas_get_ld_list()
3972 megasas_return_cmd(instance, cmd); megasas_get_ld_list()
3989 struct megasas_cmd *cmd; megasas_ld_list_query() local
3995 cmd = megasas_get_cmd(instance); megasas_ld_list_query()
3997 if (!cmd) { megasas_ld_list_query()
3999 "megasas:(megasas_ld_list_query): Failed to get cmd\n"); megasas_ld_list_query()
4003 dcmd = &cmd->frame->dcmd; megasas_ld_list_query()
4011 megasas_return_cmd(instance, cmd); megasas_ld_list_query()
4022 dcmd->cmd = MFI_CMD_DCMD; megasas_ld_list_query()
4034 ret = megasas_issue_blocked_cmd(instance, cmd, megasas_ld_list_query()
4037 ret = megasas_issue_polled(instance, cmd); megasas_ld_list_query()
4053 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_ld_list_query()
4054 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_ld_list_query()
4055 cmd->mpt_pthr_cmd_blocked); megasas_ld_list_query()
4057 megasas_return_cmd(instance, cmd); megasas_ld_list_query()
4131 struct megasas_cmd *cmd; megasas_get_ctrl_info() local
4139 cmd = megasas_get_cmd(instance); megasas_get_ctrl_info()
4141 if (!cmd) { megasas_get_ctrl_info()
4142 printk(KERN_DEBUG "megasas: Failed to get a free cmd\n"); megasas_get_ctrl_info()
4146 dcmd = &cmd->frame->dcmd; megasas_get_ctrl_info()
4153 megasas_return_cmd(instance, cmd); megasas_get_ctrl_info()
4160 dcmd->cmd = MFI_CMD_DCMD; megasas_get_ctrl_info()
4173 ret = megasas_issue_blocked_cmd(instance, cmd, megasas_get_ctrl_info()
4176 ret = megasas_issue_polled(instance, cmd); megasas_get_ctrl_info()
4189 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_get_ctrl_info()
4190 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_get_ctrl_info()
4191 cmd->mpt_pthr_cmd_blocked); megasas_get_ctrl_info()
4193 megasas_return_cmd(instance, cmd); megasas_get_ctrl_info()
4216 struct megasas_cmd *cmd; megasas_set_crash_dump_params() local
4219 cmd = megasas_get_cmd(instance); megasas_set_crash_dump_params()
4221 if (!cmd) { megasas_set_crash_dump_params()
4222 dev_err(&instance->pdev->dev, "Failed to get a free cmd\n"); megasas_set_crash_dump_params()
4227 dcmd = &cmd->frame->dcmd; megasas_set_crash_dump_params()
4231 dcmd->cmd = MFI_CMD_DCMD; megasas_set_crash_dump_params()
4243 ret = megasas_issue_blocked_cmd(instance, cmd, megasas_set_crash_dump_params()
4246 ret = megasas_issue_polled(instance, cmd); megasas_set_crash_dump_params()
4248 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_set_crash_dump_params()
4249 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_set_crash_dump_params()
4250 cmd->mpt_pthr_cmd_blocked); megasas_set_crash_dump_params()
4252 megasas_return_cmd(instance, cmd); megasas_set_crash_dump_params()
4260 * Issues the INIT MFI cmd
4267 struct megasas_cmd *cmd; megasas_issue_init_mfi() local
4282 cmd = megasas_get_cmd(instance); megasas_issue_init_mfi()
4284 init_frame = (struct megasas_init_frame *)cmd->frame; megasas_issue_init_mfi()
4288 init_frame_h = cmd->frame_phys_addr; megasas_issue_init_mfi()
4302 init_frame->cmd = MFI_CMD_INIT; megasas_issue_init_mfi()
4320 if (megasas_issue_polled(instance, cmd)) { megasas_issue_init_mfi()
4322 megasas_return_cmd(instance, cmd); megasas_issue_init_mfi()
4326 megasas_return_cmd(instance, cmd); megasas_issue_init_mfi()
4349 * reply_q_sz (1 more than the max cmd that driver may send) megasas_init_adapter_mfi()
4573 /* Get operational params, sge flags, send init cmd to controller */ megasas_init_fw()
4717 * Setup tasklet for cmd completion megasas_init_fw()
4775 * by issuing a direct fw cmd (DCMD). For the future events (beyond latest seq
4783 struct megasas_cmd *cmd; megasas_get_seq_num() local
4788 cmd = megasas_get_cmd(instance); megasas_get_seq_num()
4790 if (!cmd) { megasas_get_seq_num()
4794 dcmd = &cmd->frame->dcmd; megasas_get_seq_num()
4800 megasas_return_cmd(instance, cmd); megasas_get_seq_num()
4807 dcmd->cmd = MFI_CMD_DCMD; megasas_get_seq_num()
4818 if (megasas_issue_blocked_cmd(instance, cmd, 30)) megasas_get_seq_num()
4835 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_get_seq_num()
4836 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_get_seq_num()
4837 cmd->mpt_pthr_cmd_blocked); megasas_get_seq_num()
4839 megasas_return_cmd(instance, cmd); megasas_get_seq_num()
4858 struct megasas_cmd *cmd; megasas_register_aen() local
4920 cmd = megasas_get_cmd(instance); megasas_register_aen()
4922 if (!cmd) megasas_register_aen()
4925 dcmd = &cmd->frame->dcmd; megasas_register_aen()
4934 dcmd->cmd = MFI_CMD_DCMD; megasas_register_aen()
4949 megasas_return_cmd(instance, cmd); megasas_register_aen()
4954 * Store reference to the cmd used to register for AEN. When an megasas_register_aen()
4956 * cmd and re-register with a new EVENT LOCALE supplied by that app megasas_register_aen()
4958 instance->aen_cmd = cmd; megasas_register_aen()
4963 instance->instancet->issue_dcmd(instance, cmd); megasas_register_aen()
5461 struct megasas_cmd *cmd; megasas_flush_cache() local
5467 cmd = megasas_get_cmd(instance); megasas_flush_cache()
5469 if (!cmd) megasas_flush_cache()
5472 dcmd = &cmd->frame->dcmd; megasas_flush_cache()
5476 dcmd->cmd = MFI_CMD_DCMD; megasas_flush_cache()
5486 if (megasas_issue_blocked_cmd(instance, cmd, 30)) megasas_flush_cache()
5490 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_flush_cache()
5491 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_flush_cache()
5492 cmd->mpt_pthr_cmd_blocked); megasas_flush_cache()
5494 megasas_return_cmd(instance, cmd); megasas_flush_cache()
5507 struct megasas_cmd *cmd; megasas_shutdown_controller() local
5513 cmd = megasas_get_cmd(instance); megasas_shutdown_controller()
5515 if (!cmd) megasas_shutdown_controller()
5524 dcmd = &cmd->frame->dcmd; megasas_shutdown_controller()
5528 dcmd->cmd = MFI_CMD_DCMD; megasas_shutdown_controller()
5537 if (megasas_issue_blocked_cmd(instance, cmd, 30)) megasas_shutdown_controller()
5541 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_shutdown_controller()
5542 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_shutdown_controller()
5543 cmd->mpt_pthr_cmd_blocked); megasas_shutdown_controller()
5545 megasas_return_cmd(instance, cmd); megasas_shutdown_controller()
5999 * @cmd: MFI command frame
6003 struct megasas_cmd *cmd) megasas_set_crash_dump_params_ioctl()
6009 crash_support = cmd->frame->dcmd.mbox.w[0]; megasas_set_crash_dump_params_ioctl()
6046 struct megasas_cmd *cmd; megasas_mgmt_fw_ioctl() local
6062 cmd = megasas_get_cmd(instance); megasas_mgmt_fw_ioctl()
6063 if (!cmd) { megasas_mgmt_fw_ioctl()
6064 printk(KERN_DEBUG "megasas: Failed to get a cmd packet\n"); megasas_mgmt_fw_ioctl()
6070 * frames into our cmd's frames. cmd->frame's context will get megasas_mgmt_fw_ioctl()
6074 memcpy(cmd->frame, ioc->frame.raw, 2 * MEGAMFI_FRAME_SIZE); megasas_mgmt_fw_ioctl()
6075 cmd->frame->hdr.context = cpu_to_le32(cmd->index); megasas_mgmt_fw_ioctl()
6076 cmd->frame->hdr.pad_0 = 0; megasas_mgmt_fw_ioctl()
6077 cmd->frame->hdr.flags &= cpu_to_le16(~(MFI_FRAME_IEEE | megasas_mgmt_fw_ioctl()
6081 if (cmd->frame->dcmd.opcode == MR_DRIVER_SET_APP_CRASHDUMP_MODE) { megasas_mgmt_fw_ioctl()
6082 error = megasas_set_crash_dump_params_ioctl(cmd); megasas_mgmt_fw_ioctl()
6083 megasas_return_cmd(instance, cmd); megasas_mgmt_fw_ioctl()
6096 ((unsigned long)cmd->frame + ioc->sgl_off); megasas_mgmt_fw_ioctl()
6142 (unsigned long *) ((unsigned long)cmd->frame + ioc->sense_off); megasas_mgmt_fw_ioctl()
6148 * cmd to the SCSI mid-layer megasas_mgmt_fw_ioctl()
6150 cmd->sync_cmd = 1; megasas_mgmt_fw_ioctl()
6151 megasas_issue_blocked_cmd(instance, cmd, 0); megasas_mgmt_fw_ioctl()
6152 cmd->sync_cmd = 0; megasas_mgmt_fw_ioctl()
6194 &cmd->frame->hdr.cmd_status, sizeof(u8))) { megasas_mgmt_fw_ioctl()
6214 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) megasas_mgmt_fw_ioctl()
6215 megasas_return_mfi_mpt_pthr(instance, cmd, megasas_mgmt_fw_ioctl()
6216 cmd->mpt_pthr_cmd_blocked); megasas_mgmt_fw_ioctl()
6218 megasas_return_cmd(instance, cmd); megasas_mgmt_fw_ioctl()
6381 megasas_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg) megasas_mgmt_ioctl() argument
6383 switch (cmd) { megasas_mgmt_ioctl()
6450 megasas_mgmt_compat_ioctl(struct file *file, unsigned int cmd, megasas_mgmt_compat_ioctl() argument
6453 switch (cmd) { megasas_mgmt_compat_ioctl()
951 megasas_issue_blocked_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd, int timeout) megasas_issue_blocked_cmd() argument
1190 megasas_build_dcdb(struct megasas_instance *instance, struct scsi_cmnd *scp, struct megasas_cmd *cmd) megasas_build_dcdb() argument
1289 megasas_build_ldio(struct megasas_instance *instance, struct scsi_cmnd *scp, struct megasas_cmd *cmd) megasas_build_ldio() argument
2815 megasas_complete_int_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd) megasas_complete_int_cmd() argument
2836 megasas_complete_abort(struct megasas_instance *instance, struct megasas_cmd *cmd) megasas_complete_abort() argument
6002 megasas_set_crash_dump_params_ioctl( struct megasas_cmd *cmd) megasas_set_crash_dump_params_ioctl() argument
/linux-4.1.27/net/core/
H A Ddev_ioctl.c121 static int dev_ifsioc_locked(struct net *net, struct ifreq *ifr, unsigned int cmd) dev_ifsioc_locked() argument
129 switch (cmd) { dev_ifsioc_locked()
241 static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd) dev_ifsioc() argument
252 switch (cmd) { dev_ifsioc()
319 if ((cmd >= SIOCDEVPRIVATE && dev_ifsioc()
320 cmd <= SIOCDEVPRIVATE + 15) || dev_ifsioc()
321 cmd == SIOCBONDENSLAVE || dev_ifsioc()
322 cmd == SIOCBONDRELEASE || dev_ifsioc()
323 cmd == SIOCBONDSETHWADDR || dev_ifsioc()
324 cmd == SIOCBONDSLAVEINFOQUERY || dev_ifsioc()
325 cmd == SIOCBONDINFOQUERY || dev_ifsioc()
326 cmd == SIOCBONDCHANGEACTIVE || dev_ifsioc()
327 cmd == SIOCGMIIPHY || dev_ifsioc()
328 cmd == SIOCGMIIREG || dev_ifsioc()
329 cmd == SIOCSMIIREG || dev_ifsioc()
330 cmd == SIOCBRADDIF || dev_ifsioc()
331 cmd == SIOCBRDELIF || dev_ifsioc()
332 cmd == SIOCSHWTSTAMP || dev_ifsioc()
333 cmd == SIOCGHWTSTAMP || dev_ifsioc()
334 cmd == SIOCWANDEV) { dev_ifsioc()
338 err = ops->ndo_do_ioctl(dev, ifr, cmd); dev_ifsioc()
384 * @cmd: command to issue
393 int dev_ioctl(struct net *net, unsigned int cmd, void __user *arg) dev_ioctl() argument
404 if (cmd == SIOCGIFCONF) { dev_ioctl()
410 if (cmd == SIOCGIFNAME) dev_ioctl()
426 switch (cmd) { dev_ioctl()
443 ret = dev_ifsioc_locked(net, &ifr, cmd); dev_ioctl()
481 ret = dev_ifsioc(net, &ifr, cmd); dev_ioctl()
532 ret = dev_ifsioc(net, &ifr, cmd); dev_ioctl()
549 if (cmd == SIOCWANDEV || dev_ioctl()
550 cmd == SIOCGHWTSTAMP || dev_ioctl()
551 (cmd >= SIOCDEVPRIVATE && dev_ioctl()
552 cmd <= SIOCDEVPRIVATE + 15)) { dev_ioctl()
555 ret = dev_ifsioc(net, &ifr, cmd); dev_ioctl()
563 if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) dev_ioctl()
564 return wext_handle_ioctl(net, &ifr, cmd, arg); dev_ioctl()

Completed in 5006 milliseconds

1234567891011>>