1 | /****************************************************************************** |
2 | |
3 | Copyright (c) 2001-2013, Intel Corporation |
4 | All rights reserved. |
5 | |
6 | Redistribution and use in source and binary forms, with or without |
7 | modification, are permitted provided that the following conditions are met: |
8 | |
9 | 1. Redistributions of source code must retain the above copyright notice, |
10 | this list of conditions and the following disclaimer. |
11 | |
12 | 2. Redistributions in binary form must reproduce the above copyright |
13 | notice, this list of conditions and the following disclaimer in the |
14 | documentation and/or other materials provided with the distribution. |
15 | |
16 | 3. Neither the name of the Intel Corporation nor the names of its |
17 | contributors may be used to endorse or promote products derived from |
18 | this software without specific prior written permission. |
19 | |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
23 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
24 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
25 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
26 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
27 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
28 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
29 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
30 | POSSIBILITY OF SUCH DAMAGE. |
31 | |
32 | ******************************************************************************/ |
33 | /*$FreeBSD: head/sys/dev/ixgbe/ixgbe_vf.h 247822 2013-03-04 23:07:40Z jfv $*/ |
34 | /*$NetBSD: ixgbe_vf.h,v 1.5 2015/04/24 07:00:51 msaitoh Exp $*/ |
35 | |
36 | #ifndef __IXGBE_VF_H__ |
37 | #define __IXGBE_VF_H__ |
38 | |
39 | #define IXGBE_VF_IRQ_CLEAR_MASK 7 |
40 | #define IXGBE_VF_MAX_TX_QUEUES 8 |
41 | #define IXGBE_VF_MAX_RX_QUEUES 8 |
42 | |
43 | /* DCB define */ |
44 | #define IXGBE_VF_MAX_TRAFFIC_CLASS 8 |
45 | |
46 | #define IXGBE_VFCTRL 0x00000 |
47 | #define IXGBE_VFSTATUS 0x00008 |
48 | #define IXGBE_VFLINKS 0x00010 |
49 | #define IXGBE_VFFRTIMER 0x00048 |
50 | #define IXGBE_VFRXMEMWRAP 0x03190 |
51 | #define IXGBE_VTEICR 0x00100 |
52 | #define IXGBE_VTEICS 0x00104 |
53 | #define IXGBE_VTEIMS 0x00108 |
54 | #define IXGBE_VTEIMC 0x0010C |
55 | #define IXGBE_VTEIAC 0x00110 |
56 | #define IXGBE_VTEIAM 0x00114 |
57 | #define IXGBE_VTEITR(x) (0x00820 + (4 * (x))) |
58 | #define IXGBE_VTIVAR(x) (0x00120 + (4 * (x))) |
59 | #define IXGBE_VTIVAR_MISC 0x00140 |
60 | #define IXGBE_VTRSCINT(x) (0x00180 + (4 * (x))) |
61 | /* define IXGBE_VFPBACL still says TBD in EAS */ |
62 | #define IXGBE_VFRDBAL(x) (0x01000 + (0x40 * (x))) |
63 | #define IXGBE_VFRDBAH(x) (0x01004 + (0x40 * (x))) |
64 | #define IXGBE_VFRDLEN(x) (0x01008 + (0x40 * (x))) |
65 | #define IXGBE_VFRDH(x) (0x01010 + (0x40 * (x))) |
66 | #define IXGBE_VFRDT(x) (0x01018 + (0x40 * (x))) |
67 | #define IXGBE_VFRXDCTL(x) (0x01028 + (0x40 * (x))) |
68 | #define IXGBE_VFSRRCTL(x) (0x01014 + (0x40 * (x))) |
69 | #define IXGBE_VFRSCCTL(x) (0x0102C + (0x40 * (x))) |
70 | #define IXGBE_VFPSRTYPE 0x00300 |
71 | #define IXGBE_VFTDBAL(x) (0x02000 + (0x40 * (x))) |
72 | #define IXGBE_VFTDBAH(x) (0x02004 + (0x40 * (x))) |
73 | #define IXGBE_VFTDLEN(x) (0x02008 + (0x40 * (x))) |
74 | #define IXGBE_VFTDH(x) (0x02010 + (0x40 * (x))) |
75 | #define IXGBE_VFTDT(x) (0x02018 + (0x40 * (x))) |
76 | #define IXGBE_VFTXDCTL(x) (0x02028 + (0x40 * (x))) |
77 | #define IXGBE_VFTDWBAL(x) (0x02038 + (0x40 * (x))) |
78 | #define IXGBE_VFTDWBAH(x) (0x0203C + (0x40 * (x))) |
79 | #define IXGBE_VFDCA_RXCTRL(x) (0x0100C + (0x40 * (x))) |
80 | #define IXGBE_VFDCA_TXCTRL(x) (0x0200c + (0x40 * (x))) |
81 | #define IXGBE_VFGPRC 0x0101C |
82 | #define IXGBE_VFGPTC 0x0201C |
83 | #define IXGBE_VFGORC_LSB 0x01020 |
84 | #define IXGBE_VFGORC_MSB 0x01024 |
85 | #define IXGBE_VFGOTC_LSB 0x02020 |
86 | #define IXGBE_VFGOTC_MSB 0x02024 |
87 | #define IXGBE_VFMPRC 0x01034 |
88 | |
89 | |
90 | struct ixgbevf_hw_stats { |
91 | u64 base_vfgprc; |
92 | u64 base_vfgptc; |
93 | u64 base_vfgorc; |
94 | u64 base_vfgotc; |
95 | u64 base_vfmprc; |
96 | |
97 | u64 last_vfgprc; |
98 | u64 last_vfgptc; |
99 | u64 last_vfgorc; |
100 | u64 last_vfgotc; |
101 | u64 last_vfmprc; |
102 | |
103 | u64 vfgprc; |
104 | u64 vfgptc; |
105 | u64 vfgorc; |
106 | u64 vfgotc; |
107 | u64 vfmprc; |
108 | |
109 | u64 saved_reset_vfgprc; |
110 | u64 saved_reset_vfgptc; |
111 | u64 saved_reset_vfgorc; |
112 | u64 saved_reset_vfgotc; |
113 | u64 saved_reset_vfmprc; |
114 | |
115 | struct evcnt ipcs; |
116 | struct evcnt ipcs_bad; |
117 | struct evcnt l4cs; |
118 | struct evcnt l4cs_bad; |
119 | }; |
120 | |
121 | s32 ixgbe_init_hw_vf(struct ixgbe_hw *hw); |
122 | s32 ixgbe_start_hw_vf(struct ixgbe_hw *hw); |
123 | s32 ixgbe_reset_hw_vf(struct ixgbe_hw *hw); |
124 | s32 ixgbe_stop_adapter_vf(struct ixgbe_hw *hw); |
125 | u32 ixgbe_get_num_of_tx_queues_vf(struct ixgbe_hw *hw); |
126 | u32 ixgbe_get_num_of_rx_queues_vf(struct ixgbe_hw *hw); |
127 | s32 ixgbe_get_mac_addr_vf(struct ixgbe_hw *hw, u8 *mac_addr); |
128 | s32 ixgbe_setup_mac_link_vf(struct ixgbe_hw *hw, ixgbe_link_speed speed, |
129 | bool autoneg_wait_to_complete); |
130 | s32 ixgbe_check_mac_link_vf(struct ixgbe_hw *hw, ixgbe_link_speed *speed, |
131 | bool *link_up, bool autoneg_wait_to_complete); |
132 | s32 ixgbe_set_rar_vf(struct ixgbe_hw *hw, u32 index, u8 *addr, u32 vmdq, |
133 | u32 enable_addr); |
134 | s32 ixgbevf_set_uc_addr_vf(struct ixgbe_hw *hw, u32 index, u8 *addr); |
135 | s32 ixgbe_update_mc_addr_list_vf(struct ixgbe_hw *hw, u8 *mc_addr_list, |
136 | u32 mc_addr_count, ixgbe_mc_addr_itr, |
137 | bool clear); |
138 | s32 ixgbe_set_vfta_vf(struct ixgbe_hw *hw, u32 vlan, u32 vind, bool vlan_on); |
139 | void ixgbevf_rlpml_set_vf(struct ixgbe_hw *hw, u16 max_size); |
140 | int ixgbevf_negotiate_api_version(struct ixgbe_hw *hw, int api); |
141 | int ixgbevf_get_queues(struct ixgbe_hw *hw, unsigned int *num_tcs, |
142 | unsigned int *default_tc); |
143 | |
144 | #endif /* __IXGBE_VF_H__ */ |
145 | |