Lines Matching refs:reply
240 * _base_clone_reply_to_sys_mem - copies reply to reply free iomem
244 * @reply: reply message frame(lower 32bit addr)
248 _base_clone_reply_to_sys_mem(struct MPT3SAS_ADAPTER *ioc, u32 reply,
254 * 32 * 128 = 4K. From here, Clone of reply free for mcpu starts
261 writel(reply, reply_free_iomem);
674 mpi_reply = ioc->scsih_cmds.reply;
983 * @mpi_reply: reply mf payload returned from firmware
1220 * @mpi_reply: reply mf payload returned from firmware
1388 * _base_display_reply_info - handle reply descriptors depending on IOC Status
1392 * @reply: reply message frame (lower 32bit addr)
1396 u32 reply)
1402 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply);
1432 * @reply: reply message frame(lower 32bit addr)
1440 u32 reply)
1444 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply);
1454 memcpy(ioc->base_cmds.reply, mpi_reply, mpi_reply->MsgLength*4);
1466 * @reply: reply message frame(lower 32bit addr)
1473 _base_async_event(struct MPT3SAS_ADAPTER *ioc, u8 msix_index, u32 reply)
1480 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply);
1519 mpt3sas_scsih_event_callback(ioc, msix_index, reply);
1522 mpt3sas_ctl_event_callback(ioc, msix_index, reply);
1679 * _base_process_reply_queue - Process reply descriptors from reply
1681 * @reply_q: per IRQ's reply queue object.
1683 * Return: number of reply descriptors processed from reply
1694 u32 reply;
1717 reply = 0;
1735 reply = le32_to_cpu(
1737 if (reply > ioc->reply_dma_max_address ||
1738 reply < ioc->reply_dma_min_address)
1739 reply = 0;
1745 msix_index, reply);
1746 if (reply)
1748 smid, msix_index, reply);
1754 _base_async_event(ioc, msix_index, reply);
1757 /* reply free queue handling */
1758 if (reply) {
1764 cpu_to_le32(reply);
1767 reply,
1783 /* Update the reply post host index after continuously
1786 * Descriptors in the reply descriptor post queue.
1831 * For those HBA's which support combined reply queue feature
1835 * 2. Then update this register with new reply host index value
1842 * new reply host index value in ReplyPostIndex Field and msix_index
1910 * Return: number of reply descriptors processed
1932 * reply descriptor post queue in case the HBA
1933 * Firmware has posted some reply descriptors
1969 * _base_is_controller_msix_enabled - is controller support muli-reply queues
1984 * @poll: poll over reply descriptor pools incase interrupt for
3350 * msix_vectors is always within a range of FW supported reply queue.
3410 * Enable msix_load_balance only if combined reply queue mode is
3448 * Add high iops queues count to reply queue count if high iops queues
3456 * Adjust the reply queue count incase reply queue count
3463 * Add io uring poll queues count to reply queues count
3475 * Starting index of io uring poll queues in reply queue list.
3487 * Adjust the reply queue count if the allocated
3692 /* Use the Combined reply queue feature only for SAS3 C0 & higher
3693 * revision HBAs and also only when reply queue count is greater than 8
3826 * mpt3sas_base_get_reply_virt_addr - obtain reply frames virt address
3828 * @phys_addr: lower 32 physical addr of the reply
3837 return ioc->reply + (phys_addr - (u32)ioc->reply_dma);
3845 * Return: msix index of general reply queues,
3846 * i.e. reply queue on which IO request's reply
3875 * Return: msix index of high iops reply queues.
3876 * i.e. high iops reply queue on which IO request's
3877 * reply should be posted by the HBA firmware.
3885 * reply queues in terms of batch count 16 when outstanding
4720 memcpy(&mpi_reply, ioc->base_cmds.reply,
4985 "%d reply queues\n",
4989 * enabled for all reply descriptor post queues.
4991 * enable/disable interrupt coalescing on per reply
4993 * interrupt coalescing only on first reply descriptor
5007 * Enable interrupt coalescing on all reply queues
5020 * Enable interrupt coalescing on all reply queues.
5798 if (ioc->reply) {
5799 dma_pool_free(ioc->reply_dma_pool, ioc->reply, ioc->reply_dma);
5803 ioc->reply));
5804 ioc->reply = NULL;
5895 * mpt3sas_check_same_4gb_region - checks whether all reply queues in a set are
5897 * @start_address: Base address of a reply queue set
5900 * Return: 1 if reply queues in a set have a same upper 32bits in their base
6079 * for reply pool.
6087 /* reply pool, 4 byte align */
6088 ioc->reply_dma_pool = dma_pool_create("reply pool",
6092 ioc->reply = dma_pool_alloc(ioc->reply_dma_pool, GFP_KERNEL,
6094 if (!ioc->reply)
6099 ioc->reply, (unsigned long long) ioc->reply_dma));
6106 "reply pool(0x%p) - dma(0x%llx): depth(%d), frame_size(%d), pool_size(%d kB)\n",
6107 ioc->reply, (unsigned long long)ioc->reply_dma,
6114 * for reply free dma pool.
6122 /* reply free queue, 16 byte align */
6150 * for reply post free array.
6183 * for reply queues.
6202 * For INVADER_SERIES each set of 8 reply queues(0-7, 8-15, ..) and
6203 * VENTURA_SERIES each set of 16 reply queues(0-15, 16-31, ..) should
6204 * be within 4GB boundary i.e reply queues in a set must have same
6206 * the DMA'able memory for reply queues according.
6351 /* reply frame size */
6395 /* reply free queue sizing - taking into account for 64 FW events */
6402 /* calculate reply descriptor post queue depth */
6405 /* align the reply post queue on the next 16 count boundary */
6429 /* reply post queue, 16 byte align */
6625 /* reply pool, 4 byte align */
6634 /* reply free queue, 16 byte align */
7023 * @reply_bytes: reply length
7024 * @reply: pointer to reply payload
7031 u32 *request, int reply_bytes, u16 *reply, int timeout)
7033 MPI2DefaultReply_t *default_reply = (MPI2DefaultReply_t *)reply;
7080 /* now wait for the reply */
7087 /* read the first two 16-bits, it gives the total length of the reply */
7088 reply[0] = le16_to_cpu(ioc->base_readl_ext_retry(&ioc->chip->Doorbell)
7096 reply[1] = le16_to_cpu(ioc->base_readl_ext_retry(&ioc->chip->Doorbell)
7109 reply[i] = le16_to_cpu(
7124 mfp = (__le32 *)reply;
7136 * @mpi_reply: the reply payload from FW
7201 memcpy(mpi_reply, ioc->base_cmds.reply,
7221 * @mpi_reply: the reply payload from FW
7276 memcpy(mpi_reply, ioc->base_cmds.reply,
7294 * _base_get_port_facts - obtain port facts reply and save in ioc
7398 * _base_get_ioc_facts - obtain ioc facts reply and save in ioc
7494 ioc_info(ioc, "request frame size(%d), reply frame size(%d)\n",
7609 * @reply: reply message frame(lower 32bit addr)
7616 u32 reply)
7624 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply);
7634 memcpy(ioc->port_enable_cmds.reply, mpi_reply, mpi_reply->MsgLength*4);
7702 mpi_reply = ioc->port_enable_cmds.reply;
7718 * mpt3sas_port_enable - initiate firmware discovery (don't wait for reply)
8211 /* initialize reply queues */
8255 /* initialize reply free host index */
8259 /* initialize reply post host index */
8525 ioc->base_cmds.reply = kzalloc(ioc->reply_sz, GFP_KERNEL);
8529 ioc->port_enable_cmds.reply = kzalloc(ioc->reply_sz, GFP_KERNEL);
8533 ioc->transport_cmds.reply = kzalloc(ioc->reply_sz, GFP_KERNEL);
8538 ioc->scsih_cmds.reply = kzalloc(ioc->reply_sz, GFP_KERNEL);
8543 ioc->tm_cmds.reply = kzalloc(ioc->reply_sz, GFP_KERNEL);
8548 ioc->config_cmds.reply = kzalloc(ioc->reply_sz, GFP_KERNEL);
8553 ioc->ctl_cmds.reply = kzalloc(ioc->reply_sz, GFP_KERNEL);
8558 if (!ioc->base_cmds.reply || !ioc->port_enable_cmds.reply ||
8559 !ioc->transport_cmds.reply || !ioc->scsih_cmds.reply ||
8560 !ioc->tm_cmds.reply || !ioc->config_cmds.reply ||
8561 !ioc->ctl_cmds.reply || !ioc->ctl_cmds.sense) {
8625 kfree(ioc->tm_cmds.reply);
8626 kfree(ioc->transport_cmds.reply);
8627 kfree(ioc->scsih_cmds.reply);
8628 kfree(ioc->config_cmds.reply);
8629 kfree(ioc->base_cmds.reply);
8630 kfree(ioc->port_enable_cmds.reply);
8631 kfree(ioc->ctl_cmds.reply);
8634 ioc->ctl_cmds.reply = NULL;
8635 ioc->base_cmds.reply = NULL;
8636 ioc->tm_cmds.reply = NULL;
8637 ioc->scsih_cmds.reply = NULL;
8638 ioc->transport_cmds.reply = NULL;
8639 ioc->config_cmds.reply = NULL;
8667 kfree(ioc->ctl_cmds.reply);
8669 kfree(ioc->base_cmds.reply);
8670 kfree(ioc->port_enable_cmds.reply);
8671 kfree(ioc->tm_cmds.reply);
8672 kfree(ioc->transport_cmds.reply);
8673 kfree(ioc->scsih_cmds.reply);
8674 kfree(ioc->config_cmds.reply);