e1000_hash_mc_addr(struct e1000_hw *hw,                   uint8_t *mc_addr){    uint32_t hash_value = 0;    /* The portion of the address that is used for the hash table is     * determined by the mc_filter_type setting.     */    switch (hw->mc_filter_type) {    /* [0] [1] [2] [3] [4] [5]     * 01  AA  00  12  34  56     * LSB                 MSB     */    case 0:        /* [47:36] i.e. 0x563 for above example address */        hash_value = ((mc_addr[4] >> 4) | (((uint16_t) mc_addr[5]) << 4));        break;    case 1:        /* [46:35] i.e. 0xAC6 for above example address */        hash_value = ((mc_addr[4] >> 3) | (((uint16_t) mc_addr[5]) << 5));        break;    case 2:        /* [45:34] i.e. 0x5D8 for above example address */        hash_value = ((mc_addr[4] >> 2) | (((uint16_t) mc_addr[5]) << 6));        break;    case 3:        /* [43:32] i.e. 0x634 for above example address */        hash_value = ((mc_addr[4]) | (((uint16_t) mc_addr[5]) << 8));        break;    }    hash_value &= 0xFFF;    return hash_value;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/2d7edb923a823660b081bd4c660300ee19adca8d/e1000_hw.c/buggy/drivers/net/e1000/e1000_hw.c