Carolyn Wyborny | e52c0f9 | 2014-04-11 01:46:06 +0000 | [diff] [blame] | 1 | /* Intel(R) Gigabit Ethernet Linux driver |
| 2 | * Copyright(c) 2007-2014 Intel Corporation. |
| 3 | * |
| 4 | * This program is free software; you can redistribute it and/or modify it |
| 5 | * under the terms and conditions of the GNU General Public License, |
| 6 | * version 2, as published by the Free Software Foundation. |
| 7 | * |
| 8 | * This program is distributed in the hope it will be useful, but WITHOUT |
| 9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| 10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 11 | * more details. |
| 12 | * |
| 13 | * You should have received a copy of the GNU General Public License along with |
| 14 | * this program; if not, see <http://www.gnu.org/licenses/>. |
| 15 | * |
| 16 | * The full GNU General Public License is included in this distribution in |
| 17 | * the file called "COPYING". |
| 18 | * |
| 19 | * Contact Information: |
| 20 | * e1000-devel Mailing List <e1000-devel@lists.sourceforge.net> |
| 21 | * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 |
| 22 | */ |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 23 | |
| 24 | #ifndef _E1000_MAC_H_ |
| 25 | #define _E1000_MAC_H_ |
| 26 | |
| 27 | #include "e1000_hw.h" |
| 28 | |
| 29 | #include "e1000_phy.h" |
| 30 | #include "e1000_nvm.h" |
| 31 | #include "e1000_defines.h" |
Carolyn Wyborny | 09e7728 | 2012-10-23 13:04:37 +0000 | [diff] [blame] | 32 | #include "e1000_i210.h" |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 33 | |
Jeff Kirsher | b980ac1 | 2013-02-23 07:29:56 +0000 | [diff] [blame] | 34 | /* Functions that should not be called directly from drivers but can be used |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 35 | * by other files in this 'shared code' |
| 36 | */ |
| 37 | s32 igb_blink_led(struct e1000_hw *hw); |
| 38 | s32 igb_check_for_copper_link(struct e1000_hw *hw); |
| 39 | s32 igb_cleanup_led(struct e1000_hw *hw); |
| 40 | s32 igb_config_fc_after_link_up(struct e1000_hw *hw); |
| 41 | s32 igb_disable_pcie_master(struct e1000_hw *hw); |
| 42 | s32 igb_force_mac_fc(struct e1000_hw *hw); |
| 43 | s32 igb_get_auto_rd_done(struct e1000_hw *hw); |
| 44 | s32 igb_get_bus_info_pcie(struct e1000_hw *hw); |
| 45 | s32 igb_get_hw_semaphore(struct e1000_hw *hw); |
| 46 | s32 igb_get_speed_and_duplex_copper(struct e1000_hw *hw, u16 *speed, |
Jeff Kirsher | b980ac1 | 2013-02-23 07:29:56 +0000 | [diff] [blame] | 47 | u16 *duplex); |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 48 | s32 igb_id_led_init(struct e1000_hw *hw); |
| 49 | s32 igb_led_off(struct e1000_hw *hw); |
Alexander Duyck | 28fc06f | 2009-07-23 18:08:54 +0000 | [diff] [blame] | 50 | void igb_update_mc_addr_list(struct e1000_hw *hw, |
Jeff Kirsher | b980ac1 | 2013-02-23 07:29:56 +0000 | [diff] [blame] | 51 | u8 *mc_addr_list, u32 mc_addr_count); |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 52 | s32 igb_setup_link(struct e1000_hw *hw); |
| 53 | s32 igb_validate_mdi_setting(struct e1000_hw *hw); |
| 54 | s32 igb_write_8bit_ctrl_reg(struct e1000_hw *hw, u32 reg, |
Jeff Kirsher | b980ac1 | 2013-02-23 07:29:56 +0000 | [diff] [blame] | 55 | u32 offset, u8 data); |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 56 | |
| 57 | void igb_clear_hw_cntrs_base(struct e1000_hw *hw); |
| 58 | void igb_clear_vfta(struct e1000_hw *hw); |
Alexander Duyck | 832e821 | 2016-01-06 23:10:30 -0800 | [diff] [blame] | 59 | void igb_write_vfta(struct e1000_hw *hw, u32 offset, u32 value); |
Alexander Duyck | 8b77c6b | 2016-01-06 23:11:04 -0800 | [diff] [blame] | 60 | s32 igb_vfta_set(struct e1000_hw *hw, u32 vid, u32 vind, |
| 61 | bool vlan_on, bool vlvf_bypass); |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 62 | void igb_config_collision_dist(struct e1000_hw *hw); |
Alexander Duyck | 5ac1665 | 2009-07-23 18:09:12 +0000 | [diff] [blame] | 63 | void igb_init_rx_addrs(struct e1000_hw *hw, u16 rar_count); |
Alexander Duyck | 549bdd8 | 2008-08-04 15:00:06 -0700 | [diff] [blame] | 64 | void igb_mta_set(struct e1000_hw *hw, u32 hash_value); |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 65 | void igb_put_hw_semaphore(struct e1000_hw *hw); |
| 66 | void igb_rar_set(struct e1000_hw *hw, u8 *addr, u32 index); |
| 67 | s32 igb_check_alt_mac_addr(struct e1000_hw *hw); |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 68 | |
| 69 | bool igb_enable_mng_pass_thru(struct e1000_hw *hw); |
| 70 | |
| 71 | enum e1000_mng_mode { |
| 72 | e1000_mng_mode_none = 0, |
| 73 | e1000_mng_mode_asf, |
| 74 | e1000_mng_mode_pt, |
| 75 | e1000_mng_mode_ipmi, |
| 76 | e1000_mng_mode_host_if_only |
| 77 | }; |
| 78 | |
Jeff Kirsher | b980ac1 | 2013-02-23 07:29:56 +0000 | [diff] [blame] | 79 | #define E1000_FACTPS_MNGCG 0x20000000 |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 80 | |
Jeff Kirsher | b980ac1 | 2013-02-23 07:29:56 +0000 | [diff] [blame] | 81 | #define E1000_FWSM_MODE_MASK 0xE |
| 82 | #define E1000_FWSM_MODE_SHIFT 1 |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 83 | |
Jeff Kirsher | b980ac1 | 2013-02-23 07:29:56 +0000 | [diff] [blame] | 84 | #define E1000_MNG_DHCP_COOKIE_STATUS_VLAN 0x2 |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 85 | |
Joe Perches | 5ccc921 | 2013-09-23 11:37:59 -0700 | [diff] [blame] | 86 | void e1000_init_function_pointers_82575(struct e1000_hw *hw); |
Auke Kok | 9d5c824 | 2008-01-24 02:22:38 -0800 | [diff] [blame] | 87 | |
| 88 | #endif |