Print this page
3492 some e1000g devices don't support 15 unicast addresses


2421                                 mac_link_update(Adapter->mh,
2422                                     Adapter->link_state);
2423                         if (Adapter->link_state == LINK_STATE_UP)
2424                                 Adapter->reset_flag = B_FALSE;
2425                 }
2426 
2427                 start_watchdog_timer(Adapter);
2428         }
2429 }
2430 
2431 static void
2432 e1000g_init_unicst(struct e1000g *Adapter)
2433 {
2434         struct e1000_hw *hw;
2435         int slot;
2436 
2437         hw = &Adapter->shared;
2438 
2439         if (Adapter->init_count == 0) {
2440                 /* Initialize the multiple unicast addresses */
2441                 Adapter->unicst_total = MAX_NUM_UNICAST_ADDRESSES;

2442 
2443                 /* Workaround for an erratum of 82571 chipst */
2444                 if ((hw->mac.type == e1000_82571) &&
2445                     (e1000_get_laa_state_82571(hw) == B_TRUE))
2446                         Adapter->unicst_total--;
2447 
2448                 /* VMware doesn't support multiple mac addresses properly */
2449                 if (hw->subsystem_vendor_id == 0x15ad)
2450                         Adapter->unicst_total = 1;
2451 
2452                 Adapter->unicst_avail = Adapter->unicst_total;
2453 
2454                 for (slot = 0; slot < Adapter->unicst_total; slot++) {
2455                         /* Clear both the flag and MAC address */
2456                         Adapter->unicst_addr[slot].reg.high = 0;
2457                         Adapter->unicst_addr[slot].reg.low = 0;
2458                 }
2459         } else {
2460                 /* Workaround for an erratum of 82571 chipst */
2461                 if ((hw->mac.type == e1000_82571) &&




2421                                 mac_link_update(Adapter->mh,
2422                                     Adapter->link_state);
2423                         if (Adapter->link_state == LINK_STATE_UP)
2424                                 Adapter->reset_flag = B_FALSE;
2425                 }
2426 
2427                 start_watchdog_timer(Adapter);
2428         }
2429 }
2430 
2431 static void
2432 e1000g_init_unicst(struct e1000g *Adapter)
2433 {
2434         struct e1000_hw *hw;
2435         int slot;
2436 
2437         hw = &Adapter->shared;
2438 
2439         if (Adapter->init_count == 0) {
2440                 /* Initialize the multiple unicast addresses */
2441                 Adapter->unicst_total = min(hw->mac.rar_entry_count,
2442                     MAX_NUM_UNICAST_ADDRESSES);
2443 
2444                 /* Workaround for an erratum of 82571 chipst */
2445                 if ((hw->mac.type == e1000_82571) &&
2446                     (e1000_get_laa_state_82571(hw) == B_TRUE))
2447                         Adapter->unicst_total--;
2448 
2449                 /* VMware doesn't support multiple mac addresses properly */
2450                 if (hw->subsystem_vendor_id == 0x15ad)
2451                         Adapter->unicst_total = 1;
2452 
2453                 Adapter->unicst_avail = Adapter->unicst_total;
2454 
2455                 for (slot = 0; slot < Adapter->unicst_total; slot++) {
2456                         /* Clear both the flag and MAC address */
2457                         Adapter->unicst_addr[slot].reg.high = 0;
2458                         Adapter->unicst_addr[slot].reg.low = 0;
2459                 }
2460         } else {
2461                 /* Workaround for an erratum of 82571 chipst */
2462                 if ((hw->mac.type == e1000_82571) &&