qmem
struct mem_desc qmem;
if (!queue->qmem.kva)
queue->qhdr->start_addr = queue->qmem.da;
wr_ptr = (u32 *)(queue->qmem.kva + (wr_idx << 2));
if (wr_ptr < (u32 *)queue->qmem.kva ||
wr_ptr > (u32 *)(queue->qmem.kva + queue->qmem.size - sizeof(*wr_ptr)))
memcpy(queue->qmem.kva, packet + len, new_wr_idx << 2);
if (!queue->qmem.kva)
rd_ptr = (u32 *)(queue->qmem.kva + (rd_idx << 2));
if (rd_ptr < (u32 *)queue->qmem.kva ||
rd_ptr > (u32 *)(queue->qmem.kva + queue->qmem.size - sizeof(*rd_ptr)))
memcpy(pkt + len, queue->qmem.kva, new_rd_idx << 2);
queue->qmem.da = desc.da + offset;
queue->qmem.kva = desc.kva + offset;
queue->qmem.size = IFACEQ_QUEUE_SIZE;
offset += queue->qmem.size;
queue->qhdr->start_addr = queue->qmem.da;
void *qmem, int idx)
clone = qmem;
static void bnxt_queue_mem_free(struct net_device *dev, void *qmem)
struct bnxt_rx_ring_info *rxr = qmem;
void *qmem, int idx)
clone = qmem;
static int bnxt_queue_stop(struct net_device *dev, void *qmem, int idx)
memcpy(qmem, rxr, sizeof(*rxr));
bnxt_init_rx_ring_struct(bp, qmem);
struct qmem *pf_mbox_addr;
struct qmem *vf_mbox_addr;
struct qmem *mbox_addr;
static inline int qmem_alloc(struct device *dev, struct qmem **q,
struct qmem *qmem;
*q = devm_kzalloc(dev, sizeof(*qmem), GFP_KERNEL);
qmem = *q;
qmem->entry_sz = entry_sz;
qmem->alloc_sz = (qsize * entry_sz) + OTX2_ALIGN;
qmem->base = dma_alloc_attrs(dev, qmem->alloc_sz, &qmem->iova,
if (!qmem->base)
qmem->qsize = qsize;
aligned_addr = ALIGN((u64)qmem->iova, OTX2_ALIGN);
qmem->align = (aligned_addr - qmem->iova);
qmem->base += qmem->align;
qmem->iova += qmem->align;
static inline void qmem_free(struct device *dev, struct qmem *qmem)
if (!qmem)
if (qmem->base)
dma_free_attrs(dev, qmem->alloc_sz,
qmem->base - qmem->align,
qmem->iova - qmem->align,
devm_kfree(dev, qmem);
struct qmem *inst;
struct qmem *res;
struct qmem *mce_ctx;
struct qmem *mcast_buf;
struct qmem *aura_ctx;
struct qmem *pool_ctx;
struct qmem *npa_qints_ctx;
struct qmem *rq_ctx;
struct qmem *sq_ctx;
struct qmem *cq_ctx;
struct qmem *rss_ctx;
struct qmem *cq_ints_ctx;
struct qmem *nix_qints_ctx;
static int cn10k_outb_write_sa(struct otx2_nic *pf, struct qmem *sa_info)
struct qmem *sa_info;
struct qmem *sa_info;
sa_info = (struct qmem *)x->xso.offload_handle;
struct qmem *sa_info;
sa_info = (struct qmem *)x->xso.offload_handle;
struct qmem *pfvf_mbox_addr;
struct qmem *dync_lmt;
struct qmem *mbox_addr;
struct qmem *tso_hdrs;
struct qmem *timestamps;
struct qmem *sqe_ring;
struct qmem *cpt_resp;
struct qmem *stack;
struct qmem *fc_addr;
struct qmem *cqe;
struct qmem *sqe;
void *qmem, int idx)
struct fbnic_q_triad *qt = qmem;
static void fbnic_queue_mem_free(struct net_device *dev, void *qmem)
struct fbnic_q_triad *qt = qmem;
void *qmem, int idx)
memcpy(real, qmem, sizeof(*real));
static int fbnic_queue_stop(struct net_device *dev, void *qmem, int idx)
memcpy(qmem, real, sizeof(*real));
struct nsim_queue_mem *qmem = per_queue_mem;
return nsim_create_page_pool(&qmem->pp, &ns->rq[idx]->napi);
qmem->rq = nsim_queue_alloc();
if (!qmem->rq)
err = nsim_create_page_pool(&qmem->rq->page_pool, &qmem->rq->napi);
netif_napi_add_config_locked(dev, &qmem->rq->napi, nsim_poll,
nsim_queue_free(dev, qmem->rq);
struct nsim_queue_mem *qmem = per_queue_mem;
page_pool_destroy(qmem->pp);
if (qmem->rq) {
netif_napi_del_locked(&qmem->rq->napi);
page_pool_destroy(qmem->rq->page_pool);
nsim_queue_free(dev, qmem->rq);
struct nsim_queue_mem *qmem = per_queue_mem;
ns->rq[idx]->page_pool = qmem->pp;
netif_napi_add_config_locked(dev, &qmem->rq->napi, nsim_poll,
netif_napi_add_config_locked(dev, &qmem->rq->napi, nsim_poll,
ns->rq[idx] = qmem->rq;
struct nsim_queue_mem *qmem = per_queue_mem;
qmem->pp = ns->rq[idx]->page_pool;
page_pool_disable_direct_recycling(qmem->pp);
qmem->rq = ns->rq[idx];
n_cqe = qmem->size / SLI4_CQE_BYTES;
num_pages = sli_page_count(qmem->size, page_size);
for (p = 0, addr = qmem->phys; p < num_pages; p++, addr += page_size) {
sli_cmd_common_create_eq(struct sli4 *sli4, void *buf, struct efc_dma *qmem)
num_pages = qmem->size / SLI_PAGE_SIZE;
for (p = 0, addr = qmem->phys; p < num_pages;
sli_cmd_common_create_mq_ext(struct sli4 *sli4, void *buf, struct efc_dma *qmem,
num_pages = qmem->size / SLI_PAGE_SIZE;
for (p = 0, addr = qmem->phys; p < num_pages;
sli_cmd_wq_create(struct sli4 *sli4, void *buf, struct efc_dma *qmem, u16 cq_id)
n_wqe = qmem->size / sli4->wqe_size;
switch (qmem->size) {
num_pages = sli_page_count(qmem->size, page_size);
for (p = 0, addr = qmem->phys; p < num_pages; p++, addr += page_size) {
sli_cmd_rq_create_v1(struct sli4 *sli4, void *buf, struct efc_dma *qmem,
num_pages = sli_page_count(qmem->size, SLI_PAGE_SIZE);
rq->rqe_count = cpu_to_le16(qmem->size / SLI4_RQE_SIZE);
for (p = 0, addr = qmem->phys;
sli_cmd_common_create_cq(struct sli4 *sli4, void *buf, struct efc_dma *qmem,
struct efc_dma *qmem, u16 cq_id);