| 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 | |