| /* |
| * Huawei HiNIC PCI Express Linux driver |
| * Copyright(c) 2017 Huawei Technologies Co., Ltd |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms and conditions of the GNU General Public License, |
| * version 2, as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope 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 HINIC_DEV_H |
| #define HINIC_DEV_H |
| |
| #include <linux/netdevice.h> |
| #include <linux/types.h> |
| #include <linux/semaphore.h> |
| #include <linux/workqueue.h> |
| #include <linux/bitops.h> |
| |
| #include "hinic_hw_dev.h" |
| #include "hinic_tx.h" |
| #include "hinic_rx.h" |
| |
| #define HINIC_DRV_NAME "hinic" |
| |
| enum hinic_flags { |
| HINIC_LINK_UP = BIT(0), |
| HINIC_INTF_UP = BIT(1), |
| }; |
| |
| struct hinic_rx_mode_work { |
| struct work_struct work; |
| u32 rx_mode; |
| }; |
| |
| struct hinic_dev { |
| struct net_device *netdev; |
| struct hinic_hwdev *hwdev; |
| |
| u32 msg_enable; |
| unsigned int tx_weight; |
| unsigned int rx_weight; |
| |
| unsigned int flags; |
| |
| struct semaphore mgmt_lock; |
| unsigned long *vlan_bitmap; |
| |
| struct hinic_rx_mode_work rx_mode_work; |
| struct workqueue_struct *workq; |
| |
| struct hinic_txq *txqs; |
| struct hinic_rxq *rxqs; |
| |
| struct hinic_txq_stats tx_stats; |
| struct hinic_rxq_stats rx_stats; |
| }; |
| |
| #endif |