1/* 2 * Huawei HiNIC PCI Express Linux driver 3 * Copyright(c) 2017 Huawei Technologies Co., Ltd 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms and conditions of the GNU General Public License, 7 * version 2, as published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * for more details. 13 * 14 */ 15 16#ifndef HINIC_DEV_H 17#define HINIC_DEV_H 18 19#include <linux/netdevice.h> 20#include <linux/types.h> 21#include <linux/semaphore.h> 22#include <linux/workqueue.h> 23#include <linux/bitops.h> 24 25#include "hinic_hw_dev.h" 26#include "hinic_tx.h" 27#include "hinic_rx.h" 28 29#define HINIC_DRV_NAME "hinic" 30 31enum hinic_flags { 32 HINIC_LINK_UP = BIT(0), 33 HINIC_INTF_UP = BIT(1), 34}; 35 36struct hinic_rx_mode_work { 37 struct work_struct work; 38 u32 rx_mode; 39}; 40 41struct hinic_dev { 42 struct net_device *netdev; 43 struct hinic_hwdev *hwdev; 44 45 u32 msg_enable; 46 unsigned int tx_weight; 47 unsigned int rx_weight; 48 49 unsigned int flags; 50 51 struct semaphore mgmt_lock; 52 unsigned long *vlan_bitmap; 53 54 struct hinic_rx_mode_work rx_mode_work; 55 struct workqueue_struct *workq; 56 57 struct hinic_txq *txqs; 58 struct hinic_rxq *rxqs; 59 60 struct hinic_txq_stats tx_stats; 61 struct hinic_rxq_stats rx_stats; 62}; 63 64#endif 65