162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci * 362306a36Sopenharmony_ci * Copyright (c) 2021, MediaTek Inc. 462306a36Sopenharmony_ci * Copyright (c) 2021-2022, Intel Corporation. 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Authors: 762306a36Sopenharmony_ci * Haijun Liu <haijun.liu@mediatek.com> 862306a36Sopenharmony_ci * Moises Veleta <moises.veleta@intel.com> 962306a36Sopenharmony_ci * 1062306a36Sopenharmony_ci * Contributors: 1162306a36Sopenharmony_ci * Amir Hanania <amir.hanania@intel.com> 1262306a36Sopenharmony_ci * Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com> 1362306a36Sopenharmony_ci * Ricardo Martinez <ricardo.martinez@linux.intel.com> 1462306a36Sopenharmony_ci */ 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#ifndef __T7XX_NETDEV_H__ 1762306a36Sopenharmony_ci#define __T7XX_NETDEV_H__ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#include <linux/bits.h> 2062306a36Sopenharmony_ci#include <linux/netdevice.h> 2162306a36Sopenharmony_ci#include <linux/types.h> 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci#include "t7xx_hif_dpmaif.h" 2462306a36Sopenharmony_ci#include "t7xx_pci.h" 2562306a36Sopenharmony_ci#include "t7xx_state_monitor.h" 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci#define RXQ_NUM DPMAIF_RXQ_NUM 2862306a36Sopenharmony_ci#define NIC_DEV_MAX 21 2962306a36Sopenharmony_ci#define NIC_DEV_DEFAULT 2 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci#define CCMNI_NETDEV_WDT_TO (1 * HZ) 3262306a36Sopenharmony_ci#define CCMNI_MTU_MAX 3000 3362306a36Sopenharmony_ci#define NIC_NAPI_POLL_BUDGET 128 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_cistruct t7xx_ccmni { 3662306a36Sopenharmony_ci u8 index; 3762306a36Sopenharmony_ci atomic_t usage; 3862306a36Sopenharmony_ci struct net_device *dev; 3962306a36Sopenharmony_ci struct t7xx_ccmni_ctrl *ctlb; 4062306a36Sopenharmony_ci}; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_cistruct t7xx_ccmni_ctrl { 4362306a36Sopenharmony_ci struct t7xx_pci_dev *t7xx_dev; 4462306a36Sopenharmony_ci struct dpmaif_ctrl *hif_ctrl; 4562306a36Sopenharmony_ci struct t7xx_ccmni *ccmni_inst[NIC_DEV_MAX]; 4662306a36Sopenharmony_ci struct dpmaif_callbacks callbacks; 4762306a36Sopenharmony_ci unsigned int nic_dev_num; 4862306a36Sopenharmony_ci unsigned int md_sta; 4962306a36Sopenharmony_ci struct t7xx_fsm_notifier md_status_notify; 5062306a36Sopenharmony_ci bool wwan_is_registered; 5162306a36Sopenharmony_ci struct net_device dummy_dev; 5262306a36Sopenharmony_ci struct napi_struct *napi[RXQ_NUM]; 5362306a36Sopenharmony_ci atomic_t napi_usr_refcnt; 5462306a36Sopenharmony_ci bool is_napi_en; 5562306a36Sopenharmony_ci}; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ciint t7xx_ccmni_init(struct t7xx_pci_dev *t7xx_dev); 5862306a36Sopenharmony_civoid t7xx_ccmni_exit(struct t7xx_pci_dev *t7xx_dev); 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci#endif /* __T7XX_NETDEV_H__ */ 61