2018-10-11 10:17:08 +03:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
/* Copyright (c) 2018 Intel Corporation */
|
|
|
|
|
|
|
|
#ifndef _IGC_H_
|
|
|
|
#define _IGC_H_
|
|
|
|
|
|
|
|
#include <linux/kobject.h>
|
|
|
|
|
|
|
|
#include <linux/pci.h>
|
|
|
|
#include <linux/netdevice.h>
|
|
|
|
#include <linux/vmalloc.h>
|
|
|
|
|
|
|
|
#include <linux/ethtool.h>
|
|
|
|
|
|
|
|
#include <linux/sctp.h>
|
|
|
|
|
|
|
|
#define IGC_ERR(args...) pr_err("igc: " args)
|
|
|
|
|
|
|
|
#define PFX "igc: "
|
|
|
|
|
|
|
|
#include <linux/timecounter.h>
|
|
|
|
#include <linux/net_tstamp.h>
|
|
|
|
#include <linux/ptp_clock_kernel.h>
|
|
|
|
|
2018-10-11 10:17:10 +03:00
|
|
|
#include "igc_hw.h"
|
|
|
|
|
2018-10-11 10:17:08 +03:00
|
|
|
/* main */
|
|
|
|
extern char igc_driver_name[];
|
|
|
|
extern char igc_driver_version[];
|
|
|
|
|
2018-10-11 10:17:13 +03:00
|
|
|
/* Transmit and receive queues */
|
|
|
|
#define IGC_MAX_RX_QUEUES 4
|
|
|
|
#define IGC_MAX_TX_QUEUES 4
|
|
|
|
|
|
|
|
#define MAX_Q_VECTORS 8
|
|
|
|
#define MAX_STD_JUMBO_FRAME_SIZE 9216
|
|
|
|
|
|
|
|
enum igc_state_t {
|
|
|
|
__IGC_TESTING,
|
|
|
|
__IGC_RESETTING,
|
|
|
|
__IGC_DOWN,
|
|
|
|
__IGC_PTP_TX_IN_PROGRESS,
|
|
|
|
};
|
|
|
|
|
|
|
|
struct igc_q_vector {
|
|
|
|
struct igc_adapter *adapter; /* backlink */
|
|
|
|
|
|
|
|
struct napi_struct napi;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct igc_mac_addr {
|
|
|
|
u8 addr[ETH_ALEN];
|
|
|
|
u8 queue;
|
|
|
|
u8 state; /* bitmask */
|
|
|
|
};
|
|
|
|
|
|
|
|
#define IGC_MAC_STATE_DEFAULT 0x1
|
|
|
|
#define IGC_MAC_STATE_MODIFIED 0x2
|
|
|
|
#define IGC_MAC_STATE_IN_USE 0x4
|
|
|
|
|
2018-10-11 10:17:10 +03:00
|
|
|
/* Board specific private data structure */
|
|
|
|
struct igc_adapter {
|
2018-10-11 10:17:13 +03:00
|
|
|
struct net_device *netdev;
|
|
|
|
|
|
|
|
unsigned long state;
|
|
|
|
unsigned int flags;
|
|
|
|
unsigned int num_q_vectors;
|
|
|
|
u16 link_speed;
|
|
|
|
u16 link_duplex;
|
|
|
|
|
|
|
|
u8 port_num;
|
|
|
|
|
2018-10-11 10:17:10 +03:00
|
|
|
u8 __iomem *io_addr;
|
2018-10-11 10:17:13 +03:00
|
|
|
struct work_struct watchdog_task;
|
|
|
|
|
|
|
|
int msg_enable;
|
|
|
|
u32 max_frame_size;
|
2018-10-11 10:17:10 +03:00
|
|
|
|
|
|
|
/* OS defined structs */
|
|
|
|
struct pci_dev *pdev;
|
|
|
|
|
|
|
|
/* structs defined in igc_hw.h */
|
|
|
|
struct igc_hw hw;
|
2018-10-11 10:17:13 +03:00
|
|
|
|
|
|
|
struct igc_q_vector *q_vector[MAX_Q_VECTORS];
|
|
|
|
|
|
|
|
struct igc_mac_addr *mac_table;
|
2018-10-11 10:17:10 +03:00
|
|
|
};
|
|
|
|
|
2018-10-11 10:17:08 +03:00
|
|
|
#endif /* _IGC_H_ */
|