/* * Copyright (c) 2015-2016 Quantenna Communications, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #ifndef _QTN_FMAC_PCIE_H_ #define _QTN_FMAC_PCIE_H_ #include #include #include "pcie_regs_pearl.h" #include "pcie_ipc.h" #include "shm_ipc.h" struct bus; struct qtnf_pcie_bus_priv { struct pci_dev *pdev; /* lock for irq configuration changes */ spinlock_t irq_lock; /* lock for tx reclaim operations */ spinlock_t tx_reclaim_lock; /* lock for tx0 operations */ spinlock_t tx0_lock; u8 msi_enabled; u8 tx_stopped; int mps; struct workqueue_struct *workqueue; struct tasklet_struct reclaim_tq; void __iomem *sysctl_bar; void __iomem *epmem_bar; void __iomem *dmareg_bar; struct qtnf_shm_ipc shm_ipc_ep_in; struct qtnf_shm_ipc shm_ipc_ep_out; struct qtnf_pcie_bda __iomem *bda; void __iomem *pcie_reg_base; u16 tx_bd_num; u16 rx_bd_num; struct sk_buff **tx_skb; struct sk_buff **rx_skb; struct qtnf_tx_bd *tx_bd_vbase; dma_addr_t tx_bd_pbase; struct qtnf_rx_bd *rx_bd_vbase; dma_addr_t rx_bd_pbase; dma_addr_t bd_table_paddr; void *bd_table_vaddr; u32 bd_table_len; u32 rx_bd_w_index; u32 rx_bd_r_index; u32 tx_bd_w_index; u32 tx_bd_r_index; u32 pcie_irq_mask; /* diagnostics stats */ u32 pcie_irq_count; u32 pcie_irq_rx_count; u32 pcie_irq_tx_count; u32 pcie_irq_uf_count; u32 tx_full_count; u32 tx_done_count; u32 tx_reclaim_done; u32 tx_reclaim_req; }; #endif /* _QTN_FMAC_PCIE_H_ */