diff options
Diffstat (limited to 'drivers/net/e1000/e1000_hw.c')
-rw-r--r-- | drivers/net/e1000/e1000_hw.c | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c index 1e5ae112d57a..cda6b397550d 100644 --- a/drivers/net/e1000/e1000_hw.c +++ b/drivers/net/e1000/e1000_hw.c | |||
@@ -5759,52 +5759,6 @@ u32 e1000_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr) | |||
5759 | } | 5759 | } |
5760 | 5760 | ||
5761 | /****************************************************************************** | 5761 | /****************************************************************************** |
5762 | * Sets the bit in the multicast table corresponding to the hash value. | ||
5763 | * | ||
5764 | * hw - Struct containing variables accessed by shared code | ||
5765 | * hash_value - Multicast address hash value | ||
5766 | *****************************************************************************/ | ||
5767 | void e1000_mta_set(struct e1000_hw *hw, u32 hash_value) | ||
5768 | { | ||
5769 | u32 hash_bit, hash_reg; | ||
5770 | u32 mta; | ||
5771 | u32 temp; | ||
5772 | |||
5773 | /* The MTA is a register array of 128 32-bit registers. | ||
5774 | * It is treated like an array of 4096 bits. We want to set | ||
5775 | * bit BitArray[hash_value]. So we figure out what register | ||
5776 | * the bit is in, read it, OR in the new bit, then write | ||
5777 | * back the new value. The register is determined by the | ||
5778 | * upper 7 bits of the hash value and the bit within that | ||
5779 | * register are determined by the lower 5 bits of the value. | ||
5780 | */ | ||
5781 | hash_reg = (hash_value >> 5) & 0x7F; | ||
5782 | if (hw->mac_type == e1000_ich8lan) | ||
5783 | hash_reg &= 0x1F; | ||
5784 | |||
5785 | hash_bit = hash_value & 0x1F; | ||
5786 | |||
5787 | mta = E1000_READ_REG_ARRAY(hw, MTA, hash_reg); | ||
5788 | |||
5789 | mta |= (1 << hash_bit); | ||
5790 | |||
5791 | /* If we are on an 82544 and we are trying to write an odd offset | ||
5792 | * in the MTA, save off the previous entry before writing and | ||
5793 | * restore the old value after writing. | ||
5794 | */ | ||
5795 | if ((hw->mac_type == e1000_82544) && ((hash_reg & 0x1) == 1)) { | ||
5796 | temp = E1000_READ_REG_ARRAY(hw, MTA, (hash_reg - 1)); | ||
5797 | E1000_WRITE_REG_ARRAY(hw, MTA, hash_reg, mta); | ||
5798 | E1000_WRITE_FLUSH(); | ||
5799 | E1000_WRITE_REG_ARRAY(hw, MTA, (hash_reg - 1), temp); | ||
5800 | E1000_WRITE_FLUSH(); | ||
5801 | } else { | ||
5802 | E1000_WRITE_REG_ARRAY(hw, MTA, hash_reg, mta); | ||
5803 | E1000_WRITE_FLUSH(); | ||
5804 | } | ||
5805 | } | ||
5806 | |||
5807 | /****************************************************************************** | ||
5808 | * Puts an ethernet address into a receive address register. | 5762 | * Puts an ethernet address into a receive address register. |
5809 | * | 5763 | * |
5810 | * hw - Struct containing variables accessed by shared code | 5764 | * hw - Struct containing variables accessed by shared code |