Lines Matching refs:aq

19 	hw->aq.asq.tail = IAVF_VF_ATQT1;  in iavf_adminq_init_regs()
20 hw->aq.asq.head = IAVF_VF_ATQH1; in iavf_adminq_init_regs()
21 hw->aq.asq.len = IAVF_VF_ATQLEN1; in iavf_adminq_init_regs()
22 hw->aq.asq.bal = IAVF_VF_ATQBAL1; in iavf_adminq_init_regs()
23 hw->aq.asq.bah = IAVF_VF_ATQBAH1; in iavf_adminq_init_regs()
24 hw->aq.arq.tail = IAVF_VF_ARQT1; in iavf_adminq_init_regs()
25 hw->aq.arq.head = IAVF_VF_ARQH1; in iavf_adminq_init_regs()
26 hw->aq.arq.len = IAVF_VF_ARQLEN1; in iavf_adminq_init_regs()
27 hw->aq.arq.bal = IAVF_VF_ARQBAL1; in iavf_adminq_init_regs()
28 hw->aq.arq.bah = IAVF_VF_ARQBAH1; in iavf_adminq_init_regs()
39 ret_code = iavf_allocate_dma_mem(hw, &hw->aq.asq.desc_buf, in iavf_alloc_adminq_asq_ring()
41 (hw->aq.num_asq_entries * in iavf_alloc_adminq_asq_ring()
47 ret_code = iavf_allocate_virt_mem(hw, &hw->aq.asq.cmd_buf, in iavf_alloc_adminq_asq_ring()
48 (hw->aq.num_asq_entries * in iavf_alloc_adminq_asq_ring()
51 iavf_free_dma_mem(hw, &hw->aq.asq.desc_buf); in iavf_alloc_adminq_asq_ring()
66 ret_code = iavf_allocate_dma_mem(hw, &hw->aq.arq.desc_buf, in iavf_alloc_adminq_arq_ring()
68 (hw->aq.num_arq_entries * in iavf_alloc_adminq_arq_ring()
84 iavf_free_dma_mem(hw, &hw->aq.asq.desc_buf); in iavf_free_adminq_asq()
96 iavf_free_dma_mem(hw, &hw->aq.arq.desc_buf); in iavf_free_adminq_arq()
115 ret_code = iavf_allocate_virt_mem(hw, &hw->aq.arq.dma_head, in iavf_alloc_arq_bufs()
116 (hw->aq.num_arq_entries * in iavf_alloc_arq_bufs()
120 hw->aq.arq.r.arq_bi = (struct iavf_dma_mem *)hw->aq.arq.dma_head.va; in iavf_alloc_arq_bufs()
123 for (i = 0; i < hw->aq.num_arq_entries; i++) { in iavf_alloc_arq_bufs()
124 bi = &hw->aq.arq.r.arq_bi[i]; in iavf_alloc_arq_bufs()
127 hw->aq.arq_buf_size, in iavf_alloc_arq_bufs()
133 desc = IAVF_ADMINQ_DESC(hw->aq.arq, i); in iavf_alloc_arq_bufs()
136 if (hw->aq.arq_buf_size > IAVF_AQ_LARGE_BUF) in iavf_alloc_arq_bufs()
161 iavf_free_dma_mem(hw, &hw->aq.arq.r.arq_bi[i]); in iavf_alloc_arq_bufs()
162 iavf_free_virt_mem(hw, &hw->aq.arq.dma_head); in iavf_alloc_arq_bufs()
178 ret_code = iavf_allocate_virt_mem(hw, &hw->aq.asq.dma_head, in iavf_alloc_asq_bufs()
179 (hw->aq.num_asq_entries * in iavf_alloc_asq_bufs()
183 hw->aq.asq.r.asq_bi = (struct iavf_dma_mem *)hw->aq.asq.dma_head.va; in iavf_alloc_asq_bufs()
186 for (i = 0; i < hw->aq.num_asq_entries; i++) { in iavf_alloc_asq_bufs()
187 bi = &hw->aq.asq.r.asq_bi[i]; in iavf_alloc_asq_bufs()
190 hw->aq.asq_buf_size, in iavf_alloc_asq_bufs()
202 iavf_free_dma_mem(hw, &hw->aq.asq.r.asq_bi[i]); in iavf_alloc_asq_bufs()
203 iavf_free_virt_mem(hw, &hw->aq.asq.dma_head); in iavf_alloc_asq_bufs()
217 for (i = 0; i < hw->aq.num_arq_entries; i++) in iavf_free_arq_bufs()
218 iavf_free_dma_mem(hw, &hw->aq.arq.r.arq_bi[i]); in iavf_free_arq_bufs()
221 iavf_free_dma_mem(hw, &hw->aq.arq.desc_buf); in iavf_free_arq_bufs()
224 iavf_free_virt_mem(hw, &hw->aq.arq.dma_head); in iavf_free_arq_bufs()
236 for (i = 0; i < hw->aq.num_asq_entries; i++) in iavf_free_asq_bufs()
237 if (hw->aq.asq.r.asq_bi[i].pa) in iavf_free_asq_bufs()
238 iavf_free_dma_mem(hw, &hw->aq.asq.r.asq_bi[i]); in iavf_free_asq_bufs()
241 iavf_free_virt_mem(hw, &hw->aq.asq.cmd_buf); in iavf_free_asq_bufs()
244 iavf_free_dma_mem(hw, &hw->aq.asq.desc_buf); in iavf_free_asq_bufs()
247 iavf_free_virt_mem(hw, &hw->aq.asq.dma_head); in iavf_free_asq_bufs()
262 wr32(hw, hw->aq.asq.head, 0); in iavf_config_asq_regs()
263 wr32(hw, hw->aq.asq.tail, 0); in iavf_config_asq_regs()
266 wr32(hw, hw->aq.asq.len, (hw->aq.num_asq_entries | in iavf_config_asq_regs()
268 wr32(hw, hw->aq.asq.bal, lower_32_bits(hw->aq.asq.desc_buf.pa)); in iavf_config_asq_regs()
269 wr32(hw, hw->aq.asq.bah, upper_32_bits(hw->aq.asq.desc_buf.pa)); in iavf_config_asq_regs()
272 reg = rd32(hw, hw->aq.asq.bal); in iavf_config_asq_regs()
273 if (reg != lower_32_bits(hw->aq.asq.desc_buf.pa)) in iavf_config_asq_regs()
291 wr32(hw, hw->aq.arq.head, 0); in iavf_config_arq_regs()
292 wr32(hw, hw->aq.arq.tail, 0); in iavf_config_arq_regs()
295 wr32(hw, hw->aq.arq.len, (hw->aq.num_arq_entries | in iavf_config_arq_regs()
297 wr32(hw, hw->aq.arq.bal, lower_32_bits(hw->aq.arq.desc_buf.pa)); in iavf_config_arq_regs()
298 wr32(hw, hw->aq.arq.bah, upper_32_bits(hw->aq.arq.desc_buf.pa)); in iavf_config_arq_regs()
301 wr32(hw, hw->aq.arq.tail, hw->aq.num_arq_entries - 1); in iavf_config_arq_regs()
304 reg = rd32(hw, hw->aq.arq.bal); in iavf_config_arq_regs()
305 if (reg != lower_32_bits(hw->aq.arq.desc_buf.pa)) in iavf_config_arq_regs()
328 if (hw->aq.asq.count > 0) { in iavf_init_asq()
335 if ((hw->aq.num_asq_entries == 0) || in iavf_init_asq()
336 (hw->aq.asq_buf_size == 0)) { in iavf_init_asq()
341 hw->aq.asq.next_to_use = 0; in iavf_init_asq()
342 hw->aq.asq.next_to_clean = 0; in iavf_init_asq()
360 hw->aq.asq.count = hw->aq.num_asq_entries; in iavf_init_asq()
387 if (hw->aq.arq.count > 0) { in iavf_init_arq()
394 if ((hw->aq.num_arq_entries == 0) || in iavf_init_arq()
395 (hw->aq.arq_buf_size == 0)) { in iavf_init_arq()
400 hw->aq.arq.next_to_use = 0; in iavf_init_arq()
401 hw->aq.arq.next_to_clean = 0; in iavf_init_arq()
419 hw->aq.arq.count = hw->aq.num_arq_entries; in iavf_init_arq()
439 mutex_lock(&hw->aq.asq_mutex); in iavf_shutdown_asq()
441 if (hw->aq.asq.count == 0) { in iavf_shutdown_asq()
447 wr32(hw, hw->aq.asq.head, 0); in iavf_shutdown_asq()
448 wr32(hw, hw->aq.asq.tail, 0); in iavf_shutdown_asq()
449 wr32(hw, hw->aq.asq.len, 0); in iavf_shutdown_asq()
450 wr32(hw, hw->aq.asq.bal, 0); in iavf_shutdown_asq()
451 wr32(hw, hw->aq.asq.bah, 0); in iavf_shutdown_asq()
453 hw->aq.asq.count = 0; /* to indicate uninitialized queue */ in iavf_shutdown_asq()
459 mutex_unlock(&hw->aq.asq_mutex); in iavf_shutdown_asq()
473 mutex_lock(&hw->aq.arq_mutex); in iavf_shutdown_arq()
475 if (hw->aq.arq.count == 0) { in iavf_shutdown_arq()
481 wr32(hw, hw->aq.arq.head, 0); in iavf_shutdown_arq()
482 wr32(hw, hw->aq.arq.tail, 0); in iavf_shutdown_arq()
483 wr32(hw, hw->aq.arq.len, 0); in iavf_shutdown_arq()
484 wr32(hw, hw->aq.arq.bal, 0); in iavf_shutdown_arq()
485 wr32(hw, hw->aq.arq.bah, 0); in iavf_shutdown_arq()
487 hw->aq.arq.count = 0; /* to indicate uninitialized queue */ in iavf_shutdown_arq()
493 mutex_unlock(&hw->aq.arq_mutex); in iavf_shutdown_arq()
513 if ((hw->aq.num_arq_entries == 0) || in iavf_init_adminq()
514 (hw->aq.num_asq_entries == 0) || in iavf_init_adminq()
515 (hw->aq.arq_buf_size == 0) || in iavf_init_adminq()
516 (hw->aq.asq_buf_size == 0)) { in iavf_init_adminq()
525 hw->aq.asq_cmd_timeout = IAVF_ASQ_CMD_TIMEOUT; in iavf_init_adminq()
573 struct iavf_adminq_ring *asq = &hw->aq.asq; in iavf_clean_asq()
581 while (rd32(hw, hw->aq.asq.head) != ntc) { in iavf_clean_asq()
583 "ntc %d head %d.\n", ntc, rd32(hw, hw->aq.asq.head)); in iavf_clean_asq()
618 return rd32(hw, hw->aq.asq.head) == hw->aq.asq.next_to_use; in iavf_asq_done()
646 mutex_lock(&hw->aq.asq_mutex); in iavf_asq_send_command()
648 if (hw->aq.asq.count == 0) { in iavf_asq_send_command()
655 hw->aq.asq_last_status = IAVF_AQ_RC_OK; in iavf_asq_send_command()
657 val = rd32(hw, hw->aq.asq.head); in iavf_asq_send_command()
658 if (val >= hw->aq.num_asq_entries) { in iavf_asq_send_command()
665 details = IAVF_ADMINQ_DETAILS(hw->aq.asq, hw->aq.asq.next_to_use); in iavf_asq_send_command()
687 if (buff_size > hw->aq.asq_buf_size) { in iavf_asq_send_command()
720 desc_on_ring = IAVF_ADMINQ_DESC(hw->aq.asq, hw->aq.asq.next_to_use); in iavf_asq_send_command()
727 dma_buff = &hw->aq.asq.r.asq_bi[hw->aq.asq.next_to_use]; in iavf_asq_send_command()
745 (hw->aq.asq.next_to_use)++; in iavf_asq_send_command()
746 if (hw->aq.asq.next_to_use == hw->aq.asq.count) in iavf_asq_send_command()
747 hw->aq.asq.next_to_use = 0; in iavf_asq_send_command()
749 wr32(hw, hw->aq.asq.tail, hw->aq.asq.next_to_use); in iavf_asq_send_command()
765 } while (total_delay < hw->aq.asq_cmd_timeout); in iavf_asq_send_command()
790 hw->aq.asq_last_status = (enum iavf_admin_queue_err)retval; in iavf_asq_send_command()
804 if (rd32(hw, hw->aq.asq.len) & IAVF_VF_ATQLEN1_ATQCRIT_MASK) { in iavf_asq_send_command()
816 mutex_unlock(&hw->aq.asq_mutex); in iavf_asq_send_command()
849 u16 ntc = hw->aq.arq.next_to_clean; in iavf_clean_arq_element()
862 mutex_lock(&hw->aq.arq_mutex); in iavf_clean_arq_element()
864 if (hw->aq.arq.count == 0) { in iavf_clean_arq_element()
872 ntu = rd32(hw, hw->aq.arq.head) & IAVF_VF_ARQH1_ARQH_MASK; in iavf_clean_arq_element()
880 desc = IAVF_ADMINQ_DESC(hw->aq.arq, ntc); in iavf_clean_arq_element()
883 hw->aq.arq_last_status = in iavf_clean_arq_element()
891 hw->aq.arq_last_status); in iavf_clean_arq_element()
898 memcpy(e->msg_buf, hw->aq.arq.r.arq_bi[desc_idx].va, in iavf_clean_arq_element()
903 hw->aq.arq_buf_size); in iavf_clean_arq_element()
909 bi = &hw->aq.arq.r.arq_bi[ntc]; in iavf_clean_arq_element()
913 if (hw->aq.arq_buf_size > IAVF_AQ_LARGE_BUF) in iavf_clean_arq_element()
920 wr32(hw, hw->aq.arq.tail, ntc); in iavf_clean_arq_element()
923 if (ntc == hw->aq.num_arq_entries) in iavf_clean_arq_element()
925 hw->aq.arq.next_to_clean = ntc; in iavf_clean_arq_element()
926 hw->aq.arq.next_to_use = ntu; in iavf_clean_arq_element()
931 *pending = (ntc > ntu ? hw->aq.arq.count : 0) + (ntu - ntc); in iavf_clean_arq_element()
934 mutex_unlock(&hw->aq.arq_mutex); in iavf_clean_arq_element()