2 * QEMU igb emulation - shared definitions
4 * Copyright (c) 2020-2023 Red Hat, Inc.
5 * Copyright (c) 2008 Qumranet
7 * Based on work done by:
8 * Nir Peleg, Tutis Systems Ltd. for Qumranet Inc.
9 * Copyright (c) 2007 Dan Aloni
10 * Copyright (c) 2004 Antony T Curtis
12 * This library is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU Lesser General Public
14 * License as published by the Free Software Foundation; either
15 * version 2.1 of the License, or (at your option) any later version.
17 * This library is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * Lesser General Public License for more details.
22 * You should have received a copy of the GNU Lesser General Public
23 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
26 #ifndef HW_NET_IGB_COMMON_H
27 #define HW_NET_IGB_COMMON_H
31 #define TYPE_IGBVF "igbvf"
33 #define IGBVF_MMIO_BAR_IDX (0)
34 #define IGBVF_MSIX_BAR_IDX (3)
36 #define IGBVF_MMIO_SIZE (16 * 1024)
37 #define IGBVF_MSIX_SIZE (16 * 1024)
39 #define defreg(x) x = (E1000_##x >> 2)
40 #define defreg_indexed(x, i) x##i = (E1000_##x(i) >> 2)
41 #define defreg_indexeda(x, i) x##i##_A = (E1000_##x##_A(i) >> 2)
43 #define defregd(x) defreg_indexed(x, 0), defreg_indexed(x, 1), \
44 defreg_indexed(x, 2), defreg_indexed(x, 3), \
45 defreg_indexed(x, 4), defreg_indexed(x, 5), \
46 defreg_indexed(x, 6), defreg_indexed(x, 7), \
47 defreg_indexed(x, 8), defreg_indexed(x, 9), \
48 defreg_indexed(x, 10), defreg_indexed(x, 11), \
49 defreg_indexed(x, 12), defreg_indexed(x, 13), \
50 defreg_indexed(x, 14), defreg_indexed(x, 15), \
51 defreg_indexeda(x, 0), defreg_indexeda(x, 1), \
52 defreg_indexeda(x, 2), defreg_indexeda(x, 3)
54 #define defreg8(x) defreg_indexed(x, 0), defreg_indexed(x, 1), \
55 defreg_indexed(x, 2), defreg_indexed(x, 3), \
56 defreg_indexed(x, 4), defreg_indexed(x, 5), \
57 defreg_indexed(x, 6), defreg_indexed(x, 7)
60 defreg(CTRL
), defreg(EECD
), defreg(EERD
), defreg(GPRC
),
61 defreg(GPTC
), defreg(ICR
), defreg(ICS
), defreg(IMC
),
62 defreg(IMS
), defreg(LEDCTL
), defreg(MANC
), defreg(MDIC
),
63 defreg(MPC
), defreg(RCTL
),
64 defreg(STATUS
), defreg(SWSM
), defreg(TCTL
),
65 defreg(TORH
), defreg(TORL
), defreg(TOTH
),
66 defreg(TOTL
), defreg(TPR
), defreg(TPT
),
67 defreg(WUFC
), defreg(RA
), defreg(MTA
), defreg(CRCERRS
),
68 defreg(VFTA
), defreg(VET
),
69 defreg(SCC
), defreg(ECOL
),
70 defreg(MCC
), defreg(LATECOL
), defreg(COLC
), defreg(DC
),
71 defreg(TNCRS
), defreg(RLEC
),
72 defreg(XONRXC
), defreg(XONTXC
), defreg(XOFFRXC
), defreg(XOFFTXC
),
73 defreg(FCRUC
), defreg(TDFH
), defreg(TDFT
),
74 defreg(TDFHS
), defreg(TDFTS
), defreg(TDFPC
), defreg(WUC
),
75 defreg(WUS
), defreg(RDFH
),
76 defreg(RDFT
), defreg(RDFHS
), defreg(RDFTS
), defreg(RDFPC
),
77 defreg(IPAV
), defreg(IP4AT
), defreg(IP6AT
),
78 defreg(WUPM
), defreg(FFMT
),
80 defreg(GCR
), defreg(TIMINCA
), defreg(EIAC
), defreg(CTRL_EXT
),
81 defreg(IVAR0
), defreg(MANC2H
),
82 defreg(MFVAL
), defreg(MDEF
), defreg(FACTPS
), defreg(FTFT
),
83 defreg(RUC
), defreg(ROC
), defreg(RFC
), defreg(RJC
),
84 defreg(PRC64
), defreg(PRC127
), defreg(PRC255
), defreg(PRC511
),
85 defreg(PRC1023
), defreg(PRC1522
), defreg(PTC64
), defreg(PTC127
),
86 defreg(PTC255
), defreg(PTC511
), defreg(PTC1023
), defreg(PTC1522
),
87 defreg(GORCL
), defreg(GORCH
), defreg(GOTCL
), defreg(GOTCH
),
88 defreg(RNBC
), defreg(BPRC
), defreg(MPRC
), defreg(RFCTL
),
89 defreg(MPTC
), defreg(BPTC
),
90 defreg(IAC
), defreg(MGTPRC
), defreg(MGTPDC
), defreg(MGTPTC
),
91 defreg(TSCTC
), defreg(RXCSUM
), defreg(FUNCTAG
), defreg(GSCL_1
),
92 defreg(GSCL_2
), defreg(GSCL_3
), defreg(GSCL_4
), defreg(GSCN_0
),
93 defreg(GSCN_1
), defreg(GSCN_2
), defreg(GSCN_3
),
94 defreg_indexed(EITR
, 0),
95 defreg(MRQC
), defreg(RETA
), defreg(RSSRK
),
96 defreg(PBACLR
), defreg(FCAL
), defreg(FCAH
), defreg(FCT
),
97 defreg(FCRTH
), defreg(FCRTL
), defreg(FCTTV
), defreg(FCRTV
),
98 defreg(FLA
), defreg(FLOP
),
99 defreg(MAVTV0
), defreg(MAVTV1
), defreg(MAVTV2
), defreg(MAVTV3
),
100 defreg(TXSTMPL
), defreg(TXSTMPH
), defreg(SYSTIML
), defreg(SYSTIMH
),
101 defreg(TIMADJL
), defreg(TIMADJH
),
102 defreg(RXSTMPH
), defreg(RXSTMPL
), defreg(RXSATRL
), defreg(RXSATRH
),
116 defreg(RDFH_A
), defreg(RDFT_A
), defreg(TDFH_A
), defreg(TDFT_A
),
117 defreg(RA_A
), defreg(VFTA_A
), defreg(FCRTL_A
),
119 /* Additional regs used by IGB */
120 defreg(FWSM
), defreg(SW_FW_SYNC
),
122 defreg(EICS
), defreg(EIMS
), defreg(EIMC
), defreg(EIAM
),
123 defreg(EICR
), defreg(IVAR_MISC
), defreg(GPIE
),
125 defreg(TSYNCRXCFG
), defreg8(ETQF
),
127 defreg(RXPBS
), defregd(RDBAL
), defregd(RDBAH
), defregd(RDLEN
),
128 defregd(SRRCTL
), defregd(RDH
), defregd(RDT
),
129 defregd(RXDCTL
), defregd(RXCTL
), defregd(RQDPC
), defreg(RA2
),
131 defreg(TXPBS
), defreg(TCTL_EXT
), defreg(DTXCTL
), defreg(HTCBDPC
),
132 defregd(TDBAL
), defregd(TDBAH
), defregd(TDLEN
), defregd(TDH
),
133 defregd(TDT
), defregd(TXDCTL
), defregd(TXCTL
),
134 defregd(TDWBAL
), defregd(TDWBAH
),
138 defreg8(P2VMAILBOX
), defreg8(V2PMAILBOX
), defreg(MBVFICR
), defreg(MBVFIMR
),
139 defreg(VFLRE
), defreg(VFRE
), defreg(VFTE
), defreg(WVBR
),
140 defreg(QDE
), defreg(DTXSWC
), defreg_indexed(VLVF
, 0),
141 defreg8(VMOLR
), defreg(RPLOLR
), defreg8(VMBMEM
), defreg8(VMVIR
),
143 defreg8(PVTCTRL
), defreg8(PVTEICS
), defreg8(PVTEIMS
), defreg8(PVTEIMC
),
144 defreg8(PVTEIAC
), defreg8(PVTEIAM
), defreg8(PVTEICR
), defreg8(PVFGPRC
),
145 defreg8(PVFGPTC
), defreg8(PVFGORC
), defreg8(PVFGOTC
), defreg8(PVFMPRC
),
146 defreg8(PVFGPRLBC
), defreg8(PVFGPTLBC
), defreg8(PVFGORLBC
), defreg8(PVFGOTLBC
),
150 defreg(VTIVAR
), defreg(VTIVAR_MISC
),
153 uint64_t igb_mmio_read(void *opaque
, hwaddr addr
, unsigned size
);
154 void igb_mmio_write(void *opaque
, hwaddr addr
, uint64_t val
, unsigned size
);
155 void igb_vf_reset(void *opaque
, uint16_t vfn
);