1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /****************************************************************************
3 * Driver for Solarflare network controllers and boards
4 * Copyright 2018 Solarflare Communications Inc.
5 * Copyright 2019-2020 Xilinx Inc.
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License version 2 as published
9 * by the Free Software Foundation, incorporated herein by reference.
11 #ifndef EFX_EF100_NIC_H
12 #define EFX_EF100_NIC_H
14 #include "net_driver.h"
15 #include "nic_common.h"
17 extern const struct efx_nic_type ef100_pf_nic_type
;
18 extern const struct efx_nic_type ef100_vf_nic_type
;
20 int ef100_probe_netdev_pf(struct efx_nic
*efx
);
21 int ef100_probe_vf(struct efx_nic
*efx
);
22 void ef100_remove(struct efx_nic
*efx
);
25 EF100_STAT_port_tx_bytes
= GENERIC_STAT_COUNT
,
26 EF100_STAT_port_tx_packets
,
27 EF100_STAT_port_tx_pause
,
28 EF100_STAT_port_tx_unicast
,
29 EF100_STAT_port_tx_multicast
,
30 EF100_STAT_port_tx_broadcast
,
31 EF100_STAT_port_tx_lt64
,
32 EF100_STAT_port_tx_64
,
33 EF100_STAT_port_tx_65_to_127
,
34 EF100_STAT_port_tx_128_to_255
,
35 EF100_STAT_port_tx_256_to_511
,
36 EF100_STAT_port_tx_512_to_1023
,
37 EF100_STAT_port_tx_1024_to_15xx
,
38 EF100_STAT_port_tx_15xx_to_jumbo
,
39 EF100_STAT_port_rx_bytes
,
40 EF100_STAT_port_rx_packets
,
41 EF100_STAT_port_rx_good
,
42 EF100_STAT_port_rx_bad
,
43 EF100_STAT_port_rx_pause
,
44 EF100_STAT_port_rx_unicast
,
45 EF100_STAT_port_rx_multicast
,
46 EF100_STAT_port_rx_broadcast
,
47 EF100_STAT_port_rx_lt64
,
48 EF100_STAT_port_rx_64
,
49 EF100_STAT_port_rx_65_to_127
,
50 EF100_STAT_port_rx_128_to_255
,
51 EF100_STAT_port_rx_256_to_511
,
52 EF100_STAT_port_rx_512_to_1023
,
53 EF100_STAT_port_rx_1024_to_15xx
,
54 EF100_STAT_port_rx_15xx_to_jumbo
,
55 EF100_STAT_port_rx_gtjumbo
,
56 EF100_STAT_port_rx_bad_gtjumbo
,
57 EF100_STAT_port_rx_align_error
,
58 EF100_STAT_port_rx_length_error
,
59 EF100_STAT_port_rx_overflow
,
60 EF100_STAT_port_rx_nodesc_drops
,
64 struct ef100_nic_data
{
66 struct efx_buffer mcdi_buf
;
70 unsigned int pf_index
;
73 DECLARE_BITMAP(evq_phases
, EFX_MAX_CHANNELS
);
74 u64 stats
[EF100_STAT_COUNT
];
76 bool have_mport
; /* base_mport was populated successfully */
78 u32 local_mae_intf
; /* interface_idx that corresponds to us, in mport enumerate */
79 bool have_own_mport
; /* own_mport was populated successfully */
80 bool have_local_intf
; /* local_mae_intf was populated successfully */
81 bool grp_mae
; /* MAE Privilege */
83 u16 tso_max_payload_num_segs
;
85 unsigned int tso_max_payload_len
;
88 #define efx_ef100_has_cap(caps, flag) \
89 (!!((caps) & BIT_ULL(MC_CMD_GET_CAPABILITIES_V4_OUT_ ## flag ## _LBN)))
91 int efx_ef100_init_datapath_caps(struct efx_nic
*efx
);
92 int ef100_phy_probe(struct efx_nic
*efx
);
93 int ef100_filter_table_probe(struct efx_nic
*efx
);
95 int ef100_get_mac_address(struct efx_nic
*efx
, u8
*mac_address
,
96 int client_handle
, bool empty_ok
);
97 int efx_ef100_lookup_client_id(struct efx_nic
*efx
, efx_qword_t pciefn
, u32
*id
);
98 #endif /* EFX_EF100_NIC_H */