qcq 113 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c void ionic_debugfs_add_qcq(struct ionic_lif *lif, struct ionic_qcq *qcq) qcq 118 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c struct ionic_intr_info *intr = &qcq->intr; qcq 121 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c struct ionic_queue *q = &qcq->q; qcq 122 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c struct ionic_cq *cq = &qcq->cq; qcq 124 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c qcq->dentry = debugfs_create_dir(q->name, lif->dentry); qcq 126 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c debugfs_create_x32("total_size", 0400, qcq->dentry, &qcq->total_size); qcq 127 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c debugfs_create_x64("base_pa", 0400, qcq->dentry, &qcq->base_pa); qcq 129 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c q_dentry = debugfs_create_dir("q", qcq->dentry); qcq 133 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c if (qcq->flags & IONIC_QCQ_F_SG) { qcq 158 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c if (qcq->flags & IONIC_QCQ_F_SG) { qcq 168 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c cq_dentry = debugfs_create_dir("cq", qcq->dentry); qcq 185 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c if (qcq->flags & IONIC_QCQ_F_INTR) { qcq 186 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c intr_dentry = debugfs_create_dir("intr", qcq->dentry); qcq 205 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c if (qcq->flags & IONIC_QCQ_F_NOTIFYQ) { qcq 206 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c stats_dentry = debugfs_create_dir("notifyblock", qcq->dentry); qcq 242 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c void ionic_debugfs_del_qcq(struct ionic_qcq *qcq) qcq 244 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c debugfs_remove_recursive(qcq->dentry); qcq 245 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c qcq->dentry = NULL; qcq 18 drivers/net/ethernet/pensando/ionic/ionic_debugfs.h void ionic_debugfs_add_qcq(struct ionic_lif *lif, struct ionic_qcq *qcq); qcq 20 drivers/net/ethernet/pensando/ionic/ionic_debugfs.h void ionic_debugfs_del_qcq(struct ionic_qcq *qcq); qcq 29 drivers/net/ethernet/pensando/ionic/ionic_debugfs.h static inline void ionic_debugfs_add_qcq(struct ionic_lif *lif, struct ionic_qcq *qcq) { } qcq 31 drivers/net/ethernet/pensando/ionic/ionic_debugfs.h static inline void ionic_debugfs_del_qcq(struct ionic_qcq *qcq) { } qcq 265 drivers/net/ethernet/pensando/ionic/ionic_dev.c void ionic_dev_cmd_adminq_init(struct ionic_dev *idev, struct ionic_qcq *qcq, qcq 268 drivers/net/ethernet/pensando/ionic/ionic_dev.c struct ionic_queue *q = &qcq->q; qcq 269 drivers/net/ethernet/pensando/ionic/ionic_dev.c struct ionic_cq *cq = &qcq->cq; qcq 271 drivers/net/ethernet/pensando/ionic/ionic_dev.h void ionic_dev_cmd_adminq_init(struct ionic_dev *idev, struct ionic_qcq *qcq, qcq 373 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c struct ionic_qcq *qcq; qcq 430 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c qcq = lif->rxqcqs[i].qcq; qcq 432 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c qcq->intr.index, coal); qcq 133 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_request_irq(struct ionic_lif *lif, struct ionic_qcq *qcq) qcq 135 drivers/net/ethernet/pensando/ionic/ionic_lif.c struct ionic_intr_info *intr = &qcq->intr; qcq 137 drivers/net/ethernet/pensando/ionic/ionic_lif.c struct ionic_queue *q = &qcq->q; qcq 149 drivers/net/ethernet/pensando/ionic/ionic_lif.c 0, intr->name, &qcq->napi); qcq 176 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_qcq_enable(struct ionic_qcq *qcq) qcq 178 drivers/net/ethernet/pensando/ionic/ionic_lif.c struct ionic_queue *q = &qcq->q; qcq 200 drivers/net/ethernet/pensando/ionic/ionic_lif.c if (qcq->flags & IONIC_QCQ_F_INTR) { qcq 201 drivers/net/ethernet/pensando/ionic/ionic_lif.c irq_set_affinity_hint(qcq->intr.vector, qcq 202 drivers/net/ethernet/pensando/ionic/ionic_lif.c &qcq->intr.affinity_mask); qcq 203 drivers/net/ethernet/pensando/ionic/ionic_lif.c napi_enable(&qcq->napi); qcq 204 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_intr_clean(idev->intr_ctrl, qcq->intr.index); qcq 205 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_intr_mask(idev->intr_ctrl, qcq->intr.index, qcq 212 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_qcq_disable(struct ionic_qcq *qcq) qcq 214 drivers/net/ethernet/pensando/ionic/ionic_lif.c struct ionic_queue *q = &qcq->q; qcq 236 drivers/net/ethernet/pensando/ionic/ionic_lif.c if (qcq->flags & IONIC_QCQ_F_INTR) { qcq 237 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_intr_mask(idev->intr_ctrl, qcq->intr.index, qcq 239 drivers/net/ethernet/pensando/ionic/ionic_lif.c synchronize_irq(qcq->intr.vector); qcq 240 drivers/net/ethernet/pensando/ionic/ionic_lif.c irq_set_affinity_hint(qcq->intr.vector, NULL); qcq 241 drivers/net/ethernet/pensando/ionic/ionic_lif.c napi_disable(&qcq->napi); qcq 247 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_lif_qcq_deinit(struct ionic_lif *lif, struct ionic_qcq *qcq) qcq 252 drivers/net/ethernet/pensando/ionic/ionic_lif.c if (!qcq) qcq 255 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_debugfs_del_qcq(qcq); qcq 257 drivers/net/ethernet/pensando/ionic/ionic_lif.c if (!(qcq->flags & IONIC_QCQ_F_INITED)) qcq 260 drivers/net/ethernet/pensando/ionic/ionic_lif.c if (qcq->flags & IONIC_QCQ_F_INTR) { qcq 261 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_intr_mask(idev->intr_ctrl, qcq->intr.index, qcq 263 drivers/net/ethernet/pensando/ionic/ionic_lif.c devm_free_irq(dev, qcq->intr.vector, &qcq->napi); qcq 264 drivers/net/ethernet/pensando/ionic/ionic_lif.c netif_napi_del(&qcq->napi); qcq 267 drivers/net/ethernet/pensando/ionic/ionic_lif.c qcq->flags &= ~IONIC_QCQ_F_INITED; qcq 270 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_qcq_free(struct ionic_lif *lif, struct ionic_qcq *qcq) qcq 274 drivers/net/ethernet/pensando/ionic/ionic_lif.c if (!qcq) qcq 277 drivers/net/ethernet/pensando/ionic/ionic_lif.c dma_free_coherent(dev, qcq->total_size, qcq->base, qcq->base_pa); qcq 278 drivers/net/ethernet/pensando/ionic/ionic_lif.c qcq->base = NULL; qcq 279 drivers/net/ethernet/pensando/ionic/ionic_lif.c qcq->base_pa = 0; qcq 281 drivers/net/ethernet/pensando/ionic/ionic_lif.c if (qcq->flags & IONIC_QCQ_F_INTR) qcq 282 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_intr_free(lif, qcq->intr.index); qcq 284 drivers/net/ethernet/pensando/ionic/ionic_lif.c devm_kfree(dev, qcq->cq.info); qcq 285 drivers/net/ethernet/pensando/ionic/ionic_lif.c qcq->cq.info = NULL; qcq 286 drivers/net/ethernet/pensando/ionic/ionic_lif.c devm_kfree(dev, qcq->q.info); qcq 287 drivers/net/ethernet/pensando/ionic/ionic_lif.c qcq->q.info = NULL; qcq 288 drivers/net/ethernet/pensando/ionic/ionic_lif.c devm_kfree(dev, qcq); qcq 339 drivers/net/ethernet/pensando/ionic/ionic_lif.c unsigned int pid, struct ionic_qcq **qcq) qcq 351 drivers/net/ethernet/pensando/ionic/ionic_lif.c *qcq = NULL; qcq 461 drivers/net/ethernet/pensando/ionic/ionic_lif.c *qcq = new; qcq 553 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_txq_init(struct ionic_lif *lif, struct ionic_qcq *qcq) qcq 556 drivers/net/ethernet/pensando/ionic/ionic_lif.c struct ionic_queue *q = &qcq->q; qcq 557 drivers/net/ethernet/pensando/ionic/ionic_lif.c struct ionic_cq *cq = &qcq->cq; qcq 567 drivers/net/ethernet/pensando/ionic/ionic_lif.c .intr_index = cpu_to_le16(lif->rxqcqs[q->index].qcq->intr.index), qcq 593 drivers/net/ethernet/pensando/ionic/ionic_lif.c qcq->flags |= IONIC_QCQ_F_INITED; qcq 595 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_debugfs_add_qcq(lif, qcq); qcq 600 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_rxq_init(struct ionic_lif *lif, struct ionic_qcq *qcq) qcq 603 drivers/net/ethernet/pensando/ionic/ionic_lif.c struct ionic_queue *q = &qcq->q; qcq 604 drivers/net/ethernet/pensando/ionic/ionic_lif.c struct ionic_cq *cq = &qcq->cq; qcq 638 drivers/net/ethernet/pensando/ionic/ionic_lif.c netif_napi_add(lif->netdev, &qcq->napi, ionic_rx_napi, qcq 641 drivers/net/ethernet/pensando/ionic/ionic_lif.c err = ionic_request_irq(lif, qcq); qcq 643 drivers/net/ethernet/pensando/ionic/ionic_lif.c netif_napi_del(&qcq->napi); qcq 647 drivers/net/ethernet/pensando/ionic/ionic_lif.c qcq->flags |= IONIC_QCQ_F_INITED; qcq 649 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_debugfs_add_qcq(lif, qcq); qcq 1401 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_qcq_disable(lif->txqcqs[i].qcq); qcq 1402 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_qcq_disable(lif->rxqcqs[i].qcq); qcq 1411 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_lif_qcq_deinit(lif, lif->txqcqs[i].qcq); qcq 1412 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_tx_flush(&lif->txqcqs[i].qcq->cq); qcq 1414 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_lif_qcq_deinit(lif, lif->rxqcqs[i].qcq); qcq 1415 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_rx_flush(&lif->rxqcqs[i].qcq->cq); qcq 1416 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_rx_empty(&lif->rxqcqs[i].qcq->q); qcq 1425 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_qcq_free(lif, lif->txqcqs[i].qcq); qcq 1426 drivers/net/ethernet/pensando/ionic/ionic_lif.c lif->txqcqs[i].qcq = NULL; qcq 1428 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_qcq_free(lif, lif->rxqcqs[i].qcq); qcq 1429 drivers/net/ethernet/pensando/ionic/ionic_lif.c lif->rxqcqs[i].qcq = NULL; qcq 1447 drivers/net/ethernet/pensando/ionic/ionic_lif.c lif->kern_pid, &lif->txqcqs[i].qcq); qcq 1451 drivers/net/ethernet/pensando/ionic/ionic_lif.c lif->txqcqs[i].qcq->stats = lif->txqcqs[i].stats; qcq 1461 drivers/net/ethernet/pensando/ionic/ionic_lif.c 0, lif->kern_pid, &lif->rxqcqs[i].qcq); qcq 1465 drivers/net/ethernet/pensando/ionic/ionic_lif.c lif->rxqcqs[i].qcq->stats = lif->rxqcqs[i].stats; qcq 1468 drivers/net/ethernet/pensando/ionic/ionic_lif.c lif->rxqcqs[i].qcq->intr.index, coal); qcq 1469 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_link_qcq_interrupts(lif->rxqcqs[i].qcq, qcq 1470 drivers/net/ethernet/pensando/ionic/ionic_lif.c lif->txqcqs[i].qcq); qcq 1487 drivers/net/ethernet/pensando/ionic/ionic_lif.c err = ionic_lif_txq_init(lif, lif->txqcqs[i].qcq); qcq 1491 drivers/net/ethernet/pensando/ionic/ionic_lif.c err = ionic_lif_rxq_init(lif, lif->rxqcqs[i].qcq); qcq 1493 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_lif_qcq_deinit(lif, lif->txqcqs[i].qcq); qcq 1507 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_lif_qcq_deinit(lif, lif->txqcqs[i].qcq); qcq 1508 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_lif_qcq_deinit(lif, lif->rxqcqs[i].qcq); qcq 1519 drivers/net/ethernet/pensando/ionic/ionic_lif.c err = ionic_qcq_enable(lif->txqcqs[i].qcq); qcq 1523 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_rx_fill(&lif->rxqcqs[i].qcq->q); qcq 1524 drivers/net/ethernet/pensando/ionic/ionic_lif.c err = ionic_qcq_enable(lif->rxqcqs[i].qcq); qcq 1526 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_qcq_disable(lif->txqcqs[i].qcq); qcq 1535 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_qcq_disable(lif->rxqcqs[i].qcq); qcq 1536 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_qcq_disable(lif->txqcqs[i].qcq); qcq 1834 drivers/net/ethernet/pensando/ionic/ionic_lif.c struct ionic_qcq *qcq; qcq 1839 drivers/net/ethernet/pensando/ionic/ionic_lif.c qcq = lif->adminqcq; qcq 1840 drivers/net/ethernet/pensando/ionic/ionic_lif.c q = &qcq->q; qcq 1843 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_dev_cmd_adminq_init(idev, qcq, lif->index, qcq->intr.index); qcq 1859 drivers/net/ethernet/pensando/ionic/ionic_lif.c netif_napi_add(lif->netdev, &qcq->napi, ionic_adminq_napi, qcq 1862 drivers/net/ethernet/pensando/ionic/ionic_lif.c err = ionic_request_irq(lif, qcq); qcq 1865 drivers/net/ethernet/pensando/ionic/ionic_lif.c netif_napi_del(&qcq->napi); qcq 1869 drivers/net/ethernet/pensando/ionic/ionic_lif.c napi_enable(&qcq->napi); qcq 1871 drivers/net/ethernet/pensando/ionic/ionic_lif.c if (qcq->flags & IONIC_QCQ_F_INTR) qcq 1872 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_intr_mask(idev->intr_ctrl, qcq->intr.index, qcq 1875 drivers/net/ethernet/pensando/ionic/ionic_lif.c qcq->flags |= IONIC_QCQ_F_INITED; qcq 1877 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_debugfs_add_qcq(lif, qcq); qcq 1884 drivers/net/ethernet/pensando/ionic/ionic_lif.c struct ionic_qcq *qcq = lif->notifyqcq; qcq 1886 drivers/net/ethernet/pensando/ionic/ionic_lif.c struct ionic_queue *q = &qcq->q; qcq 1924 drivers/net/ethernet/pensando/ionic/ionic_lif.c qcq->flags |= IONIC_QCQ_F_INITED; qcq 1926 drivers/net/ethernet/pensando/ionic/ionic_lif.c ionic_debugfs_add_qcq(lif, qcq); qcq 76 drivers/net/ethernet/pensando/ionic/ionic_lif.h struct ionic_qcq *qcq; qcq 183 drivers/net/ethernet/pensando/ionic/ionic_lif.h #define lif_to_txqcq(lif, i) ((lif)->txqcqs[i].qcq) qcq 184 drivers/net/ethernet/pensando/ionic/ionic_lif.h #define lif_to_rxqcq(lif, i) ((lif)->rxqcqs[i].qcq) qcq 246 drivers/net/ethernet/pensando/ionic/ionic_lif.h static inline void debug_stats_txq_post(struct ionic_qcq *qcq, qcq 252 drivers/net/ethernet/pensando/ionic/ionic_lif.h qcq->q.dbell_count += dbell; qcq 257 drivers/net/ethernet/pensando/ionic/ionic_lif.h qcq->stats->tx.sg_cntr[num_sg_elems]++; qcq 260 drivers/net/ethernet/pensando/ionic/ionic_lif.h static inline void debug_stats_napi_poll(struct ionic_qcq *qcq, qcq 263 drivers/net/ethernet/pensando/ionic/ionic_lif.h qcq->napi_stats.poll_count++; qcq 268 drivers/net/ethernet/pensando/ionic/ionic_lif.h qcq->napi_stats.work_done_cntr[work_done]++; qcq 272 drivers/net/ethernet/pensando/ionic/ionic_lif.h #define DEBUG_STATS_RX_BUFF_CNT(qcq) ((qcq)->stats->rx.buffers_posted++) qcq 274 drivers/net/ethernet/pensando/ionic/ionic_lif.h #define DEBUG_STATS_TXQ_POST(qcq, txdesc, dbell) \ qcq 275 drivers/net/ethernet/pensando/ionic/ionic_lif.h debug_stats_txq_post(qcq, txdesc, dbell) qcq 276 drivers/net/ethernet/pensando/ionic/ionic_lif.h #define DEBUG_STATS_NAPI_POLL(qcq, work_done) \ qcq 277 drivers/net/ethernet/pensando/ionic/ionic_lif.h debug_stats_napi_poll(qcq, work_done) qcq 287 drivers/net/ethernet/pensando/ionic/ionic_main.c struct ionic_qcq *qcq = napi_to_qcq(napi); qcq 288 drivers/net/ethernet/pensando/ionic/ionic_main.c struct ionic_cq *cq = &qcq->cq; qcq 305 drivers/net/ethernet/pensando/ionic/ionic_main.c DEBUG_STATS_NAPI_POLL(qcq, work_done); qcq 89 drivers/net/ethernet/pensando/ionic/ionic_txrx.c struct ionic_qcq *qcq = q_to_qcq(q); qcq 156 drivers/net/ethernet/pensando/ionic/ionic_txrx.c napi_gro_receive(&qcq->napi, skb); qcq 301 drivers/net/ethernet/pensando/ionic/ionic_txrx.c struct ionic_qcq *qcq = napi_to_qcq(napi); qcq 312 drivers/net/ethernet/pensando/ionic/ionic_txrx.c txcq = &lif->txqcqs[qi].qcq->cq; qcq 332 drivers/net/ethernet/pensando/ionic/ionic_txrx.c DEBUG_STATS_NAPI_POLL(qcq, work_done);