Lines Matching +full:eee +full:- +full:pcs
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright(c) 1999 - 2018 Intel Corporation. */
28 "s0ix-enabled",
36 .sizeof_stat = sizeof(((struct e1000_adapter *)0)->m), \
41 .sizeof_stat = sizeof(((struct rtnl_link_stats64 *)0)->m), \
115 struct e1000_hw *hw = &adapter->hw; in e1000_get_link_ksettings()
117 if (hw->phy.media_type == e1000_media_type_copper) { in e1000_get_link_ksettings()
127 if (hw->phy.type == e1000_phy_ife) in e1000_get_link_ksettings()
131 if (hw->mac.autoneg == 1) { in e1000_get_link_ksettings()
134 advertising |= hw->phy.autoneg_advertised; in e1000_get_link_ksettings()
137 cmd->base.port = PORT_TP; in e1000_get_link_ksettings()
138 cmd->base.phy_address = hw->phy.addr; in e1000_get_link_ksettings()
148 cmd->base.port = PORT_FIBRE; in e1000_get_link_ksettings()
152 cmd->base.duplex = DUPLEX_UNKNOWN; in e1000_get_link_ksettings()
156 speed = adapter->link_speed; in e1000_get_link_ksettings()
157 cmd->base.duplex = adapter->link_duplex - 1; in e1000_get_link_ksettings()
171 cmd->base.duplex = DUPLEX_FULL; in e1000_get_link_ksettings()
173 cmd->base.duplex = DUPLEX_HALF; in e1000_get_link_ksettings()
177 cmd->base.speed = speed; in e1000_get_link_ksettings()
178 cmd->base.autoneg = ((hw->phy.media_type == e1000_media_type_fiber) || in e1000_get_link_ksettings()
179 hw->mac.autoneg) ? AUTONEG_ENABLE : AUTONEG_DISABLE; in e1000_get_link_ksettings()
181 /* MDI-X => 2; MDI =>1; Invalid =>0 */ in e1000_get_link_ksettings()
182 if ((hw->phy.media_type == e1000_media_type_copper) && in e1000_get_link_ksettings()
184 cmd->base.eth_tp_mdix = hw->phy.is_mdix ? in e1000_get_link_ksettings()
187 cmd->base.eth_tp_mdix = ETH_TP_MDI_INVALID; in e1000_get_link_ksettings()
189 if (hw->phy.mdix == AUTO_ALL_MODES) in e1000_get_link_ksettings()
190 cmd->base.eth_tp_mdix_ctrl = ETH_TP_MDI_AUTO; in e1000_get_link_ksettings()
192 cmd->base.eth_tp_mdix_ctrl = hw->phy.mdix; in e1000_get_link_ksettings()
194 if (hw->phy.media_type != e1000_media_type_copper) in e1000_get_link_ksettings()
195 cmd->base.eth_tp_mdix_ctrl = ETH_TP_MDI_INVALID; in e1000_get_link_ksettings()
197 lpa_t = mii_stat1000_to_ethtool_lpa_t(adapter->phy_regs.stat1000); in e1000_get_link_ksettings()
199 mii_lpa_to_ethtool_lpa_t(adapter->phy_regs.lpa); in e1000_get_link_ksettings()
201 ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported, in e1000_get_link_ksettings()
203 ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising, in e1000_get_link_ksettings()
205 ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.lp_advertising, in e1000_get_link_ksettings()
213 struct e1000_mac_info *mac = &adapter->hw.mac; in e1000_set_spd_dplx()
215 mac->autoneg = 0; in e1000_set_spd_dplx()
224 if ((adapter->hw.phy.media_type == e1000_media_type_fiber) && in e1000_set_spd_dplx()
231 mac->forced_speed_duplex = ADVERTISE_10_HALF; in e1000_set_spd_dplx()
234 mac->forced_speed_duplex = ADVERTISE_10_FULL; in e1000_set_spd_dplx()
237 mac->forced_speed_duplex = ADVERTISE_100_HALF; in e1000_set_spd_dplx()
240 mac->forced_speed_duplex = ADVERTISE_100_FULL; in e1000_set_spd_dplx()
243 if (adapter->hw.phy.media_type == e1000_media_type_copper) { in e1000_set_spd_dplx()
244 mac->autoneg = 1; in e1000_set_spd_dplx()
245 adapter->hw.phy.autoneg_advertised = in e1000_set_spd_dplx()
248 mac->forced_speed_duplex = ADVERTISE_1000_FULL; in e1000_set_spd_dplx()
256 /* clear MDI, MDI(-X) override is only allowed when autoneg enabled */ in e1000_set_spd_dplx()
257 adapter->hw.phy.mdix = AUTO_ALL_MODES; in e1000_set_spd_dplx()
263 return -EINVAL; in e1000_set_spd_dplx()
270 struct e1000_hw *hw = &adapter->hw; in e1000_set_link_ksettings()
275 cmd->link_modes.advertising); in e1000_set_link_ksettings()
280 if (hw->phy.ops.check_reset_block && in e1000_set_link_ksettings()
281 hw->phy.ops.check_reset_block(hw)) { in e1000_set_link_ksettings()
283 return -EINVAL; in e1000_set_link_ksettings()
290 if (cmd->base.eth_tp_mdix_ctrl) { in e1000_set_link_ksettings()
291 if (hw->phy.media_type != e1000_media_type_copper) in e1000_set_link_ksettings()
292 return -EOPNOTSUPP; in e1000_set_link_ksettings()
294 if ((cmd->base.eth_tp_mdix_ctrl != ETH_TP_MDI_AUTO) && in e1000_set_link_ksettings()
295 (cmd->base.autoneg != AUTONEG_ENABLE)) { in e1000_set_link_ksettings()
296 e_err("forcing MDI/MDI-X state is not supported when link speed and/or duplex are forced\n"); in e1000_set_link_ksettings()
297 return -EINVAL; in e1000_set_link_ksettings()
301 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) in e1000_set_link_ksettings()
304 if (cmd->base.autoneg == AUTONEG_ENABLE) { in e1000_set_link_ksettings()
305 hw->mac.autoneg = 1; in e1000_set_link_ksettings()
306 if (hw->phy.media_type == e1000_media_type_fiber) in e1000_set_link_ksettings()
307 hw->phy.autoneg_advertised = ADVERTISED_1000baseT_Full | in e1000_set_link_ksettings()
310 hw->phy.autoneg_advertised = advertising | in e1000_set_link_ksettings()
312 advertising = hw->phy.autoneg_advertised; in e1000_set_link_ksettings()
313 if (adapter->fc_autoneg) in e1000_set_link_ksettings()
314 hw->fc.requested_mode = e1000_fc_default; in e1000_set_link_ksettings()
316 u32 speed = cmd->base.speed; in e1000_set_link_ksettings()
318 if (e1000_set_spd_dplx(adapter, speed, cmd->base.duplex)) { in e1000_set_link_ksettings()
319 ret_val = -EINVAL; in e1000_set_link_ksettings()
324 /* MDI-X => 2; MDI => 1; Auto => 3 */ in e1000_set_link_ksettings()
325 if (cmd->base.eth_tp_mdix_ctrl) { in e1000_set_link_ksettings()
329 if (cmd->base.eth_tp_mdix_ctrl == ETH_TP_MDI_AUTO) in e1000_set_link_ksettings()
330 hw->phy.mdix = AUTO_ALL_MODES; in e1000_set_link_ksettings()
332 hw->phy.mdix = cmd->base.eth_tp_mdix_ctrl; in e1000_set_link_ksettings()
336 if (netif_running(adapter->netdev)) { in e1000_set_link_ksettings()
344 clear_bit(__E1000_RESETTING, &adapter->state); in e1000_set_link_ksettings()
352 struct e1000_hw *hw = &adapter->hw; in e1000_get_pauseparam()
354 pause->autoneg = in e1000_get_pauseparam()
355 (adapter->fc_autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE); in e1000_get_pauseparam()
357 if (hw->fc.current_mode == e1000_fc_rx_pause) { in e1000_get_pauseparam()
358 pause->rx_pause = 1; in e1000_get_pauseparam()
359 } else if (hw->fc.current_mode == e1000_fc_tx_pause) { in e1000_get_pauseparam()
360 pause->tx_pause = 1; in e1000_get_pauseparam()
361 } else if (hw->fc.current_mode == e1000_fc_full) { in e1000_get_pauseparam()
362 pause->rx_pause = 1; in e1000_get_pauseparam()
363 pause->tx_pause = 1; in e1000_get_pauseparam()
371 struct e1000_hw *hw = &adapter->hw; in e1000_set_pauseparam()
374 adapter->fc_autoneg = pause->autoneg; in e1000_set_pauseparam()
376 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) in e1000_set_pauseparam()
379 if (adapter->fc_autoneg == AUTONEG_ENABLE) { in e1000_set_pauseparam()
380 hw->fc.requested_mode = e1000_fc_default; in e1000_set_pauseparam()
381 if (netif_running(adapter->netdev)) { in e1000_set_pauseparam()
388 if (pause->rx_pause && pause->tx_pause) in e1000_set_pauseparam()
389 hw->fc.requested_mode = e1000_fc_full; in e1000_set_pauseparam()
390 else if (pause->rx_pause && !pause->tx_pause) in e1000_set_pauseparam()
391 hw->fc.requested_mode = e1000_fc_rx_pause; in e1000_set_pauseparam()
392 else if (!pause->rx_pause && pause->tx_pause) in e1000_set_pauseparam()
393 hw->fc.requested_mode = e1000_fc_tx_pause; in e1000_set_pauseparam()
394 else if (!pause->rx_pause && !pause->tx_pause) in e1000_set_pauseparam()
395 hw->fc.requested_mode = e1000_fc_none; in e1000_set_pauseparam()
397 hw->fc.current_mode = hw->fc.requested_mode; in e1000_set_pauseparam()
399 if (hw->phy.media_type == e1000_media_type_fiber) { in e1000_set_pauseparam()
400 retval = hw->mac.ops.setup_link(hw); in e1000_set_pauseparam()
411 clear_bit(__E1000_RESETTING, &adapter->state); in e1000_set_pauseparam()
418 return adapter->msg_enable; in e1000_get_msglevel()
424 adapter->msg_enable = data; in e1000_set_msglevel()
437 struct e1000_hw *hw = &adapter->hw; in e1000_get_regs()
443 regs->version = (1u << 24) | in e1000_get_regs()
444 (adapter->pdev->revision << 16) | in e1000_get_regs()
445 adapter->pdev->device; in e1000_get_regs()
462 regs_buff[12] = adapter->hw.phy.type; /* PHY type (IGP=1, M88=0) */ in e1000_get_regs()
467 if (hw->phy.type == e1000_phy_m88) { in e1000_get_regs()
479 regs_buff[22] = adapter->phy_stats.receive_errors; in e1000_get_regs()
491 return adapter->hw.nvm.word_size * 2; in e1000_get_eeprom_len()
498 struct e1000_hw *hw = &adapter->hw; in e1000_get_eeprom()
505 if (eeprom->len == 0) in e1000_get_eeprom()
506 return -EINVAL; in e1000_get_eeprom()
508 eeprom->magic = adapter->pdev->vendor | (adapter->pdev->device << 16); in e1000_get_eeprom()
510 first_word = eeprom->offset >> 1; in e1000_get_eeprom()
511 last_word = (eeprom->offset + eeprom->len - 1) >> 1; in e1000_get_eeprom()
513 eeprom_buff = kmalloc_array(last_word - first_word + 1, sizeof(u16), in e1000_get_eeprom()
516 return -ENOMEM; in e1000_get_eeprom()
518 if (hw->nvm.type == e1000_nvm_eeprom_spi) { in e1000_get_eeprom()
520 last_word - first_word + 1, in e1000_get_eeprom()
523 for (i = 0; i < last_word - first_word + 1; i++) { in e1000_get_eeprom()
534 (last_word - first_word + 1)); in e1000_get_eeprom()
536 /* Device's eeprom is always little-endian, word addressable */ in e1000_get_eeprom()
537 for (i = 0; i < last_word - first_word + 1; i++) in e1000_get_eeprom()
541 memcpy(bytes, (u8 *)eeprom_buff + (eeprom->offset & 1), eeprom->len); in e1000_get_eeprom()
551 struct e1000_hw *hw = &adapter->hw; in e1000_set_eeprom()
560 if (eeprom->len == 0) in e1000_set_eeprom()
561 return -EOPNOTSUPP; in e1000_set_eeprom()
563 if (eeprom->magic != in e1000_set_eeprom()
564 (adapter->pdev->vendor | (adapter->pdev->device << 16))) in e1000_set_eeprom()
565 return -EFAULT; in e1000_set_eeprom()
567 if (adapter->flags & FLAG_READ_ONLY_NVM) in e1000_set_eeprom()
568 return -EINVAL; in e1000_set_eeprom()
570 max_len = hw->nvm.word_size * 2; in e1000_set_eeprom()
572 if (check_add_overflow(eeprom->offset, eeprom->len, &total_len) || in e1000_set_eeprom()
574 return -EFBIG; in e1000_set_eeprom()
576 first_word = eeprom->offset >> 1; in e1000_set_eeprom()
577 last_word = (eeprom->offset + eeprom->len - 1) >> 1; in e1000_set_eeprom()
580 return -ENOMEM; in e1000_set_eeprom()
584 if (eeprom->offset & 1) { in e1000_set_eeprom()
590 if (((eeprom->offset + eeprom->len) & 1) && (!ret_val)) in e1000_set_eeprom()
594 &eeprom_buff[last_word - first_word]); in e1000_set_eeprom()
599 /* Device's eeprom is always little-endian, word addressable */ in e1000_set_eeprom()
600 for (i = 0; i < last_word - first_word + 1; i++) in e1000_set_eeprom()
603 memcpy(ptr, bytes, eeprom->len); in e1000_set_eeprom()
605 for (i = 0; i < last_word - first_word + 1; i++) in e1000_set_eeprom()
609 last_word - first_word + 1, eeprom_buff); in e1000_set_eeprom()
618 (hw->mac.type == e1000_82583) || in e1000_set_eeprom()
619 (hw->mac.type == e1000_82574) || in e1000_set_eeprom()
620 (hw->mac.type == e1000_82573)) in e1000_set_eeprom()
633 strscpy(drvinfo->driver, e1000e_driver_name, sizeof(drvinfo->driver)); in e1000_get_drvinfo()
636 * PCI-E controllers in e1000_get_drvinfo()
638 snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version), in e1000_get_drvinfo()
639 "%d.%d-%d", in e1000_get_drvinfo()
640 FIELD_GET(0xF000, adapter->eeprom_vers), in e1000_get_drvinfo()
641 FIELD_GET(0x0FF0, adapter->eeprom_vers), in e1000_get_drvinfo()
642 (adapter->eeprom_vers & 0x000F)); in e1000_get_drvinfo()
644 strscpy(drvinfo->bus_info, pci_name(adapter->pdev), in e1000_get_drvinfo()
645 sizeof(drvinfo->bus_info)); in e1000_get_drvinfo()
655 ring->rx_max_pending = E1000_MAX_RXD; in e1000_get_ringparam()
656 ring->tx_max_pending = E1000_MAX_TXD; in e1000_get_ringparam()
657 ring->rx_pending = adapter->rx_ring_count; in e1000_get_ringparam()
658 ring->tx_pending = adapter->tx_ring_count; in e1000_get_ringparam()
672 if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending)) in e1000_set_ringparam()
673 return -EINVAL; in e1000_set_ringparam()
675 new_rx_count = clamp_t(u32, ring->rx_pending, E1000_MIN_RXD, in e1000_set_ringparam()
679 new_tx_count = clamp_t(u32, ring->tx_pending, E1000_MIN_TXD, in e1000_set_ringparam()
683 if ((new_tx_count == adapter->tx_ring_count) && in e1000_set_ringparam()
684 (new_rx_count == adapter->rx_ring_count)) in e1000_set_ringparam()
688 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) in e1000_set_ringparam()
691 if (!netif_running(adapter->netdev)) { in e1000_set_ringparam()
693 adapter->tx_ring->count = new_tx_count; in e1000_set_ringparam()
694 adapter->rx_ring->count = new_rx_count; in e1000_set_ringparam()
695 adapter->tx_ring_count = new_tx_count; in e1000_set_ringparam()
696 adapter->rx_ring_count = new_rx_count; in e1000_set_ringparam()
700 set_tx = (new_tx_count != adapter->tx_ring_count); in e1000_set_ringparam()
701 set_rx = (new_rx_count != adapter->rx_ring_count); in e1000_set_ringparam()
707 err = -ENOMEM; in e1000_set_ringparam()
714 err = -ENOMEM; in e1000_set_ringparam()
722 * ISRs in MSI-X mode get passed pointers to the Tx and Rx ring in e1000_set_ringparam()
726 memcpy(temp_tx, adapter->tx_ring, size); in e1000_set_ringparam()
727 temp_tx->count = new_tx_count; in e1000_set_ringparam()
733 memcpy(temp_rx, adapter->rx_ring, size); in e1000_set_ringparam()
734 temp_rx->count = new_rx_count; in e1000_set_ringparam()
742 e1000e_free_tx_resources(adapter->tx_ring); in e1000_set_ringparam()
743 memcpy(adapter->tx_ring, temp_tx, size); in e1000_set_ringparam()
744 adapter->tx_ring_count = new_tx_count; in e1000_set_ringparam()
747 e1000e_free_rx_resources(adapter->rx_ring); in e1000_set_ringparam()
748 memcpy(adapter->rx_ring, temp_rx, size); in e1000_set_ringparam()
749 adapter->rx_ring_count = new_rx_count; in e1000_set_ringparam()
761 clear_bit(__E1000_RESETTING, &adapter->state); in e1000_set_ringparam()
773 E1000_WRITE_REG_ARRAY(&adapter->hw, reg, offset, in reg_pattern_test()
775 val = E1000_READ_REG_ARRAY(&adapter->hw, reg, offset); in reg_pattern_test()
792 __ew32(&adapter->hw, reg, write & mask); in reg_set_and_check()
793 val = __er32(&adapter->hw, reg); in reg_set_and_check()
819 struct e1000_hw *hw = &adapter->hw; in e1000_reg_test()
820 struct e1000_mac_info *mac = &adapter->hw.mac; in e1000_reg_test()
833 switch (mac->type) { in e1000_reg_test()
857 if (!(adapter->flags & FLAG_IS_ICH)) { in e1000_reg_test()
877 before = ((adapter->flags & FLAG_IS_ICH) ? 0x06C3B33E : 0x06DFB3FE); in e1000_reg_test()
883 if (!(adapter->flags & FLAG_IS_ICH)) in e1000_reg_test()
888 switch (mac->type) { in e1000_reg_test()
907 if (mac->type >= e1000_pch_lpt) in e1000_reg_test()
910 for (i = 0; i < mac->rar_entry_count; i++) { in e1000_reg_test()
911 if (mac->type >= e1000_pch_lpt) { in e1000_reg_test()
912 /* Cannot test write-protected SHRAL[n] registers */ in e1000_reg_test()
922 if (mac->type == e1000_pch2lan) { in e1000_reg_test()
929 /* RAR[1-6] owned by management engine - skipping */ in e1000_reg_test()
937 if ((mac->type == e1000_pch2lan) && (i > 6)) in e1000_reg_test()
938 i -= 6; in e1000_reg_test()
941 for (i = 0; i < mac->mta_reg_count; i++) in e1000_reg_test()
958 if ((e1000_read_nvm(&adapter->hw, i, 1, &temp)) < 0) { in e1000_eeprom_test()
976 struct e1000_hw *hw = &adapter->hw; in e1000_test_intr()
978 adapter->test_icr |= er32(ICR); in e1000_test_intr()
985 struct net_device *netdev = adapter->netdev; in e1000_intr_test()
986 struct e1000_hw *hw = &adapter->hw; in e1000_intr_test()
989 u32 irq = adapter->pdev->irq; in e1000_intr_test()
996 /* NOTE: we don't test MSI/MSI-X interrupts here, yet */ in e1000_intr_test()
997 if (adapter->int_mode == E1000E_INT_MODE_MSIX) { in e1000_intr_test()
998 int_mode = adapter->int_mode; in e1000_intr_test()
1000 adapter->int_mode = E1000E_INT_MODE_LEGACY; in e1000_intr_test()
1004 if (!request_irq(irq, e1000_test_intr, IRQF_PROBE_SHARED, netdev->name, in e1000_intr_test()
1007 } else if (request_irq(irq, e1000_test_intr, IRQF_SHARED, netdev->name, in e1000_intr_test()
1010 ret_val = -1; in e1000_intr_test()
1025 if (adapter->flags & FLAG_IS_ICH) { in e1000_intr_test()
1030 if (adapter->hw.mac.type == e1000_ich8lan || in e1000_intr_test()
1031 adapter->hw.mac.type == e1000_ich9lan) in e1000_intr_test()
1046 adapter->test_icr = 0; in e1000_intr_test()
1052 if (adapter->test_icr & mask) { in e1000_intr_test()
1064 adapter->test_icr = 0; in e1000_intr_test()
1070 if (!(adapter->test_icr & mask)) { in e1000_intr_test()
1082 adapter->test_icr = 0; in e1000_intr_test()
1088 if (adapter->test_icr) { in e1000_intr_test()
1106 adapter->int_mode = int_mode; in e1000_intr_test()
1115 struct e1000_ring *tx_ring = &adapter->test_tx_ring; in e1000_free_desc_rings()
1116 struct e1000_ring *rx_ring = &adapter->test_rx_ring; in e1000_free_desc_rings()
1117 struct pci_dev *pdev = adapter->pdev; in e1000_free_desc_rings()
1121 if (tx_ring->desc && tx_ring->buffer_info) { in e1000_free_desc_rings()
1122 for (i = 0; i < tx_ring->count; i++) { in e1000_free_desc_rings()
1123 buffer_info = &tx_ring->buffer_info[i]; in e1000_free_desc_rings()
1125 if (buffer_info->dma) in e1000_free_desc_rings()
1126 dma_unmap_single(&pdev->dev, in e1000_free_desc_rings()
1127 buffer_info->dma, in e1000_free_desc_rings()
1128 buffer_info->length, in e1000_free_desc_rings()
1130 dev_kfree_skb(buffer_info->skb); in e1000_free_desc_rings()
1134 if (rx_ring->desc && rx_ring->buffer_info) { in e1000_free_desc_rings()
1135 for (i = 0; i < rx_ring->count; i++) { in e1000_free_desc_rings()
1136 buffer_info = &rx_ring->buffer_info[i]; in e1000_free_desc_rings()
1138 if (buffer_info->dma) in e1000_free_desc_rings()
1139 dma_unmap_single(&pdev->dev, in e1000_free_desc_rings()
1140 buffer_info->dma, in e1000_free_desc_rings()
1142 dev_kfree_skb(buffer_info->skb); in e1000_free_desc_rings()
1146 if (tx_ring->desc) { in e1000_free_desc_rings()
1147 dma_free_coherent(&pdev->dev, tx_ring->size, tx_ring->desc, in e1000_free_desc_rings()
1148 tx_ring->dma); in e1000_free_desc_rings()
1149 tx_ring->desc = NULL; in e1000_free_desc_rings()
1151 if (rx_ring->desc) { in e1000_free_desc_rings()
1152 dma_free_coherent(&pdev->dev, rx_ring->size, rx_ring->desc, in e1000_free_desc_rings()
1153 rx_ring->dma); in e1000_free_desc_rings()
1154 rx_ring->desc = NULL; in e1000_free_desc_rings()
1157 kfree(tx_ring->buffer_info); in e1000_free_desc_rings()
1158 tx_ring->buffer_info = NULL; in e1000_free_desc_rings()
1159 kfree(rx_ring->buffer_info); in e1000_free_desc_rings()
1160 rx_ring->buffer_info = NULL; in e1000_free_desc_rings()
1165 struct e1000_ring *tx_ring = &adapter->test_tx_ring; in e1000_setup_desc_rings()
1166 struct e1000_ring *rx_ring = &adapter->test_rx_ring; in e1000_setup_desc_rings()
1167 struct pci_dev *pdev = adapter->pdev; in e1000_setup_desc_rings()
1168 struct e1000_hw *hw = &adapter->hw; in e1000_setup_desc_rings()
1175 if (!tx_ring->count) in e1000_setup_desc_rings()
1176 tx_ring->count = E1000_DEFAULT_TXD; in e1000_setup_desc_rings()
1178 tx_ring->buffer_info = kcalloc(tx_ring->count, in e1000_setup_desc_rings()
1180 if (!tx_ring->buffer_info) { in e1000_setup_desc_rings()
1185 tx_ring->size = tx_ring->count * sizeof(struct e1000_tx_desc); in e1000_setup_desc_rings()
1186 tx_ring->size = ALIGN(tx_ring->size, 4096); in e1000_setup_desc_rings()
1187 tx_ring->desc = dma_alloc_coherent(&pdev->dev, tx_ring->size, in e1000_setup_desc_rings()
1188 &tx_ring->dma, GFP_KERNEL); in e1000_setup_desc_rings()
1189 if (!tx_ring->desc) { in e1000_setup_desc_rings()
1193 tx_ring->next_to_use = 0; in e1000_setup_desc_rings()
1194 tx_ring->next_to_clean = 0; in e1000_setup_desc_rings()
1196 ew32(TDBAL(0), ((u64)tx_ring->dma & 0x00000000FFFFFFFF)); in e1000_setup_desc_rings()
1197 ew32(TDBAH(0), ((u64)tx_ring->dma >> 32)); in e1000_setup_desc_rings()
1198 ew32(TDLEN(0), tx_ring->count * sizeof(struct e1000_tx_desc)); in e1000_setup_desc_rings()
1205 for (i = 0; i < tx_ring->count; i++) { in e1000_setup_desc_rings()
1216 tx_ring->buffer_info[i].skb = skb; in e1000_setup_desc_rings()
1217 tx_ring->buffer_info[i].length = skb->len; in e1000_setup_desc_rings()
1218 tx_ring->buffer_info[i].dma = in e1000_setup_desc_rings()
1219 dma_map_single(&pdev->dev, skb->data, skb->len, in e1000_setup_desc_rings()
1221 if (dma_mapping_error(&pdev->dev, in e1000_setup_desc_rings()
1222 tx_ring->buffer_info[i].dma)) { in e1000_setup_desc_rings()
1226 tx_desc->buffer_addr = cpu_to_le64(tx_ring->buffer_info[i].dma); in e1000_setup_desc_rings()
1227 tx_desc->lower.data = cpu_to_le32(skb->len); in e1000_setup_desc_rings()
1228 tx_desc->lower.data |= cpu_to_le32(E1000_TXD_CMD_EOP | in e1000_setup_desc_rings()
1231 tx_desc->upper.data = 0; in e1000_setup_desc_rings()
1236 if (!rx_ring->count) in e1000_setup_desc_rings()
1237 rx_ring->count = E1000_DEFAULT_RXD; in e1000_setup_desc_rings()
1239 rx_ring->buffer_info = kcalloc(rx_ring->count, in e1000_setup_desc_rings()
1241 if (!rx_ring->buffer_info) { in e1000_setup_desc_rings()
1246 rx_ring->size = rx_ring->count * sizeof(union e1000_rx_desc_extended); in e1000_setup_desc_rings()
1247 rx_ring->desc = dma_alloc_coherent(&pdev->dev, rx_ring->size, in e1000_setup_desc_rings()
1248 &rx_ring->dma, GFP_KERNEL); in e1000_setup_desc_rings()
1249 if (!rx_ring->desc) { in e1000_setup_desc_rings()
1253 rx_ring->next_to_use = 0; in e1000_setup_desc_rings()
1254 rx_ring->next_to_clean = 0; in e1000_setup_desc_rings()
1257 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) in e1000_setup_desc_rings()
1259 ew32(RDBAL(0), ((u64)rx_ring->dma & 0xFFFFFFFF)); in e1000_setup_desc_rings()
1260 ew32(RDBAH(0), ((u64)rx_ring->dma >> 32)); in e1000_setup_desc_rings()
1261 ew32(RDLEN(0), rx_ring->size); in e1000_setup_desc_rings()
1268 (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); in e1000_setup_desc_rings()
1271 for (i = 0; i < rx_ring->count; i++) { in e1000_setup_desc_rings()
1281 rx_ring->buffer_info[i].skb = skb; in e1000_setup_desc_rings()
1282 rx_ring->buffer_info[i].dma = in e1000_setup_desc_rings()
1283 dma_map_single(&pdev->dev, skb->data, 2048, in e1000_setup_desc_rings()
1285 if (dma_mapping_error(&pdev->dev, in e1000_setup_desc_rings()
1286 rx_ring->buffer_info[i].dma)) { in e1000_setup_desc_rings()
1291 rx_desc->read.buffer_addr = in e1000_setup_desc_rings()
1292 cpu_to_le64(rx_ring->buffer_info[i].dma); in e1000_setup_desc_rings()
1293 memset(skb->data, 0x00, skb->len); in e1000_setup_desc_rings()
1306 e1e_wphy(&adapter->hw, 29, 0x001F); in e1000_phy_disable_receiver()
1307 e1e_wphy(&adapter->hw, 30, 0x8FFC); in e1000_phy_disable_receiver()
1308 e1e_wphy(&adapter->hw, 29, 0x001A); in e1000_phy_disable_receiver()
1309 e1e_wphy(&adapter->hw, 30, 0x8FF0); in e1000_phy_disable_receiver()
1314 struct e1000_hw *hw = &adapter->hw; in e1000_integrated_phy_loopback()
1319 hw->mac.autoneg = 0; in e1000_integrated_phy_loopback()
1321 if (hw->phy.type == e1000_phy_ife) { in e1000_integrated_phy_loopback()
1341 switch (hw->phy.type) { in e1000_integrated_phy_loopback()
1343 /* Auto-MDI/MDIX Off */ in e1000_integrated_phy_loopback()
1345 /* reset to update Auto-MDI/MDIX */ in e1000_integrated_phy_loopback()
1360 hw->phy.ops.commit(hw); in e1000_integrated_phy_loopback()
1378 ret_val = hw->phy.ops.acquire(hw); in e1000_integrated_phy_loopback()
1384 hw->phy.ops.release(hw); in e1000_integrated_phy_loopback()
1412 if (adapter->flags & FLAG_IS_ICH) in e1000_integrated_phy_loopback()
1415 if (hw->phy.media_type == e1000_media_type_copper && in e1000_integrated_phy_loopback()
1416 hw->phy.type == e1000_phy_m88) { in e1000_integrated_phy_loopback()
1431 if (hw->phy.type == e1000_phy_m88) in e1000_integrated_phy_loopback()
1441 struct e1000_hw *hw = &adapter->hw; in e1000_set_82571_fiber_loopback()
1480 struct e1000_hw *hw = &adapter->hw; in e1000_set_es2lan_mac_loopback()
1487 adapter->tx_fifo_head = ctrlext; in e1000_set_es2lan_mac_loopback()
1515 struct e1000_hw *hw = &adapter->hw; in e1000_setup_loopback_test()
1518 if (hw->mac.type >= e1000_pch_spt) { in e1000_setup_loopback_test()
1529 if (hw->phy.media_type == e1000_media_type_fiber || in e1000_setup_loopback_test()
1530 hw->phy.media_type == e1000_media_type_internal_serdes) { in e1000_setup_loopback_test()
1531 switch (hw->mac.type) { in e1000_setup_loopback_test()
1543 } else if (hw->phy.media_type == e1000_media_type_copper) { in e1000_setup_loopback_test()
1552 struct e1000_hw *hw = &adapter->hw; in e1000_loopback_cleanup()
1560 switch (hw->mac.type) { in e1000_loopback_cleanup()
1579 if (hw->phy.media_type == e1000_media_type_fiber || in e1000_loopback_cleanup()
1580 hw->phy.media_type == e1000_media_type_internal_serdes) { in e1000_loopback_cleanup()
1582 ew32(CTRL_EXT, adapter->tx_fifo_head); in e1000_loopback_cleanup()
1583 adapter->tx_fifo_head = 0; in e1000_loopback_cleanup()
1588 if (hw->phy.media_type == e1000_media_type_fiber || in e1000_loopback_cleanup()
1589 hw->phy.media_type == e1000_media_type_internal_serdes) { in e1000_loopback_cleanup()
1597 hw->mac.autoneg = 1; in e1000_loopback_cleanup()
1598 if (hw->phy.type == e1000_phy_gg82563) in e1000_loopback_cleanup()
1604 if (hw->phy.ops.commit) in e1000_loopback_cleanup()
1605 hw->phy.ops.commit(hw); in e1000_loopback_cleanup()
1614 memset(skb->data, 0xFF, frame_size); in e1000_create_lbtest_frame()
1616 memset(&skb->data[frame_size / 2], 0xAA, frame_size / 2 - 1); in e1000_create_lbtest_frame()
1617 skb->data[frame_size / 2 + 10] = 0xBE; in e1000_create_lbtest_frame()
1618 skb->data[frame_size / 2 + 12] = 0xAF; in e1000_create_lbtest_frame()
1625 if (*(skb->data + 3) == 0xFF) in e1000_check_lbtest_frame()
1626 if ((*(skb->data + frame_size / 2 + 10) == 0xBE) && in e1000_check_lbtest_frame()
1627 (*(skb->data + frame_size / 2 + 12) == 0xAF)) in e1000_check_lbtest_frame()
1634 struct e1000_ring *tx_ring = &adapter->test_tx_ring; in e1000_run_loopback_test()
1635 struct e1000_ring *rx_ring = &adapter->test_rx_ring; in e1000_run_loopback_test()
1636 struct pci_dev *pdev = adapter->pdev; in e1000_run_loopback_test()
1637 struct e1000_hw *hw = &adapter->hw; in e1000_run_loopback_test()
1645 ew32(RDT(0), rx_ring->count - 1); in e1000_run_loopback_test()
1652 if (rx_ring->count <= tx_ring->count) in e1000_run_loopback_test()
1653 lc = ((tx_ring->count / 64) * 2) + 1; in e1000_run_loopback_test()
1655 lc = ((rx_ring->count / 64) * 2) + 1; in e1000_run_loopback_test()
1663 buffer_info = &tx_ring->buffer_info[k]; in e1000_run_loopback_test()
1665 e1000_create_lbtest_frame(buffer_info->skb, 1024); in e1000_run_loopback_test()
1666 dma_sync_single_for_device(&pdev->dev, in e1000_run_loopback_test()
1667 buffer_info->dma, in e1000_run_loopback_test()
1668 buffer_info->length, in e1000_run_loopback_test()
1671 if (k == tx_ring->count) in e1000_run_loopback_test()
1681 buffer_info = &rx_ring->buffer_info[l]; in e1000_run_loopback_test()
1683 dma_sync_single_for_cpu(&pdev->dev, in e1000_run_loopback_test()
1684 buffer_info->dma, 2048, in e1000_run_loopback_test()
1687 ret_val = e1000_check_lbtest_frame(buffer_info->skb, in e1000_run_loopback_test()
1692 if (l == rx_ring->count) in e1000_run_loopback_test()
1700 ret_val = 13; /* ret_val is the same as mis-compare */ in e1000_run_loopback_test()
1713 struct e1000_hw *hw = &adapter->hw; in e1000_loopback_test()
1716 if (hw->phy.ops.check_reset_block && in e1000_loopback_test()
1717 hw->phy.ops.check_reset_block(hw)) { in e1000_loopback_test()
1742 struct e1000_hw *hw = &adapter->hw; in e1000_link_test()
1745 if (hw->phy.media_type == e1000_media_type_internal_serdes) { in e1000_link_test()
1748 hw->mac.serdes_has_link = false; in e1000_link_test()
1751 * could take as long as 2-3 minutes in e1000_link_test()
1754 hw->mac.ops.check_for_link(hw); in e1000_link_test()
1755 if (hw->mac.serdes_has_link) in e1000_link_test()
1762 hw->mac.ops.check_for_link(hw); in e1000_link_test()
1763 if (hw->mac.autoneg) in e1000_link_test()
1786 return -EOPNOTSUPP; in e1000e_get_sset_count()
1799 set_bit(__E1000_TESTING, &adapter->state); in e1000_diag_test()
1803 if (adapter->flags & FLAG_HAS_AMT) in e1000_diag_test()
1808 adapter->hw.phy.autoneg_wait_to_complete = 1; in e1000_diag_test()
1810 adapter->hw.phy.autoneg_wait_to_complete = 0; in e1000_diag_test()
1813 if (eth_test->flags == ETH_TEST_FL_OFFLINE) { in e1000_diag_test()
1817 autoneg_advertised = adapter->hw.phy.autoneg_advertised; in e1000_diag_test()
1818 forced_speed_duplex = adapter->hw.mac.forced_speed_duplex; in e1000_diag_test()
1819 autoneg = adapter->hw.mac.autoneg; in e1000_diag_test()
1828 eth_test->flags |= ETH_TEST_FL_FAILED; in e1000_diag_test()
1832 eth_test->flags |= ETH_TEST_FL_FAILED; in e1000_diag_test()
1836 eth_test->flags |= ETH_TEST_FL_FAILED; in e1000_diag_test()
1840 eth_test->flags |= ETH_TEST_FL_FAILED; in e1000_diag_test()
1843 adapter->hw.phy.autoneg_wait_to_complete = 1; in e1000_diag_test()
1845 adapter->hw.phy.autoneg_wait_to_complete = 0; in e1000_diag_test()
1848 eth_test->flags |= ETH_TEST_FL_FAILED; in e1000_diag_test()
1851 adapter->hw.phy.autoneg_advertised = autoneg_advertised; in e1000_diag_test()
1852 adapter->hw.mac.forced_speed_duplex = forced_speed_duplex; in e1000_diag_test()
1853 adapter->hw.mac.autoneg = autoneg; in e1000_diag_test()
1856 clear_bit(__E1000_TESTING, &adapter->state); in e1000_diag_test()
1871 eth_test->flags |= ETH_TEST_FL_FAILED; in e1000_diag_test()
1873 clear_bit(__E1000_TESTING, &adapter->state); in e1000_diag_test()
1879 if (adapter->flags & FLAG_HAS_AMT) in e1000_diag_test()
1891 wol->supported = 0; in e1000_get_wol()
1892 wol->wolopts = 0; in e1000_get_wol()
1894 if (!(adapter->flags & FLAG_HAS_WOL) || in e1000_get_wol()
1895 !device_can_wakeup(&adapter->pdev->dev)) in e1000_get_wol()
1898 wol->supported = WAKE_UCAST | WAKE_MCAST | in e1000_get_wol()
1902 if (adapter->flags & FLAG_NO_WAKE_UCAST) { in e1000_get_wol()
1903 wol->supported &= ~WAKE_UCAST; in e1000_get_wol()
1905 if (adapter->wol & E1000_WUFC_EX) in e1000_get_wol()
1906 e_err("Interface does not support directed (unicast) frame wake-up packets\n"); in e1000_get_wol()
1909 if (adapter->wol & E1000_WUFC_EX) in e1000_get_wol()
1910 wol->wolopts |= WAKE_UCAST; in e1000_get_wol()
1911 if (adapter->wol & E1000_WUFC_MC) in e1000_get_wol()
1912 wol->wolopts |= WAKE_MCAST; in e1000_get_wol()
1913 if (adapter->wol & E1000_WUFC_BC) in e1000_get_wol()
1914 wol->wolopts |= WAKE_BCAST; in e1000_get_wol()
1915 if (adapter->wol & E1000_WUFC_MAG) in e1000_get_wol()
1916 wol->wolopts |= WAKE_MAGIC; in e1000_get_wol()
1917 if (adapter->wol & E1000_WUFC_LNKC) in e1000_get_wol()
1918 wol->wolopts |= WAKE_PHY; in e1000_get_wol()
1925 if (!(adapter->flags & FLAG_HAS_WOL) || in e1000_set_wol()
1926 !device_can_wakeup(&adapter->pdev->dev) || in e1000_set_wol()
1927 (wol->wolopts & ~(WAKE_UCAST | WAKE_MCAST | WAKE_BCAST | in e1000_set_wol()
1929 return -EOPNOTSUPP; in e1000_set_wol()
1932 adapter->wol = 0; in e1000_set_wol()
1934 if (wol->wolopts & WAKE_UCAST) in e1000_set_wol()
1935 adapter->wol |= E1000_WUFC_EX; in e1000_set_wol()
1936 if (wol->wolopts & WAKE_MCAST) in e1000_set_wol()
1937 adapter->wol |= E1000_WUFC_MC; in e1000_set_wol()
1938 if (wol->wolopts & WAKE_BCAST) in e1000_set_wol()
1939 adapter->wol |= E1000_WUFC_BC; in e1000_set_wol()
1940 if (wol->wolopts & WAKE_MAGIC) in e1000_set_wol()
1941 adapter->wol |= E1000_WUFC_MAG; in e1000_set_wol()
1942 if (wol->wolopts & WAKE_PHY) in e1000_set_wol()
1943 adapter->wol |= E1000_WUFC_LNKC; in e1000_set_wol()
1945 device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol); in e1000_set_wol()
1954 struct e1000_hw *hw = &adapter->hw; in e1000_set_phys_id()
1958 pm_runtime_get_sync(netdev->dev.parent); in e1000_set_phys_id()
1960 if (!hw->mac.ops.blink_led) in e1000_set_phys_id()
1963 hw->mac.ops.blink_led(hw); in e1000_set_phys_id()
1967 if (hw->phy.type == e1000_phy_ife) in e1000_set_phys_id()
1969 hw->mac.ops.led_off(hw); in e1000_set_phys_id()
1970 hw->mac.ops.cleanup_led(hw); in e1000_set_phys_id()
1971 pm_runtime_put_sync(netdev->dev.parent); in e1000_set_phys_id()
1975 hw->mac.ops.led_on(hw); in e1000_set_phys_id()
1979 hw->mac.ops.led_off(hw); in e1000_set_phys_id()
1993 if (adapter->itr_setting <= 4) in e1000_get_coalesce()
1994 ec->rx_coalesce_usecs = adapter->itr_setting; in e1000_get_coalesce()
1996 ec->rx_coalesce_usecs = 1000000 / adapter->itr_setting; in e1000_get_coalesce()
2008 if ((ec->rx_coalesce_usecs > E1000_MAX_ITR_USECS) || in e1000_set_coalesce()
2009 ((ec->rx_coalesce_usecs > 4) && in e1000_set_coalesce()
2010 (ec->rx_coalesce_usecs < E1000_MIN_ITR_USECS)) || in e1000_set_coalesce()
2011 (ec->rx_coalesce_usecs == 2)) in e1000_set_coalesce()
2012 return -EINVAL; in e1000_set_coalesce()
2014 if (ec->rx_coalesce_usecs == 4) { in e1000_set_coalesce()
2015 adapter->itr_setting = 4; in e1000_set_coalesce()
2016 adapter->itr = adapter->itr_setting; in e1000_set_coalesce()
2017 } else if (ec->rx_coalesce_usecs <= 3) { in e1000_set_coalesce()
2018 adapter->itr = 20000; in e1000_set_coalesce()
2019 adapter->itr_setting = ec->rx_coalesce_usecs; in e1000_set_coalesce()
2021 adapter->itr = (1000000 / ec->rx_coalesce_usecs); in e1000_set_coalesce()
2022 adapter->itr_setting = adapter->itr & ~3; in e1000_set_coalesce()
2025 if (adapter->itr_setting != 0) in e1000_set_coalesce()
2026 e1000e_write_itr(adapter, adapter->itr); in e1000_set_coalesce()
2038 return -EAGAIN; in e1000_nway_reset()
2040 if (!adapter->hw.mac.autoneg) in e1000_nway_reset()
2041 return -EINVAL; in e1000_nway_reset()
2107 struct e1000_hw *hw = &adapter->hw; in e1000_get_rxfh_fields()
2110 info->data = 0; in e1000_get_rxfh_fields()
2117 switch (info->flow_type) { in e1000_get_rxfh_fields()
2120 info->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3; in e1000_get_rxfh_fields()
2127 info->data |= RXH_IP_SRC | RXH_IP_DST; in e1000_get_rxfh_fields()
2131 info->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3; in e1000_get_rxfh_fields()
2138 info->data |= RXH_IP_SRC | RXH_IP_DST; in e1000_get_rxfh_fields()
2149 struct e1000_hw *hw = &adapter->hw; in e1000e_get_eee()
2153 if (!(adapter->flags2 & FLAG2_HAS_EEE)) in e1000e_get_eee()
2154 return -EOPNOTSUPP; in e1000e_get_eee()
2156 switch (hw->phy.type) { in e1000e_get_eee()
2168 return -EOPNOTSUPP; in e1000e_get_eee()
2171 ret_val = hw->phy.ops.acquire(hw); in e1000e_get_eee()
2173 return -EBUSY; in e1000e_get_eee()
2175 /* EEE Capability */ in e1000e_get_eee()
2179 mii_eee_cap1_mod_linkmode_t(edata->supported, phy_data); in e1000e_get_eee()
2181 /* EEE Advertised */ in e1000e_get_eee()
2182 mii_eee_cap1_mod_linkmode_t(edata->advertised, adapter->eee_advert); in e1000e_get_eee()
2184 /* EEE Link Partner Advertised */ in e1000e_get_eee()
2188 mii_eee_cap1_mod_linkmode_t(edata->lp_advertised, phy_data); in e1000e_get_eee()
2190 /* EEE PCS Status */ in e1000e_get_eee()
2194 if (hw->phy.type == e1000_phy_82579) in e1000e_get_eee()
2197 /* Result of the EEE auto negotiation - there is no register that in e1000e_get_eee()
2198 * has the status of the EEE negotiation so do a best-guess based in e1000e_get_eee()
2202 edata->eee_active = true; in e1000e_get_eee()
2204 edata->eee_enabled = !hw->dev_spec.ich8lan.eee_disable; in e1000e_get_eee()
2205 edata->tx_lpi_enabled = true; in e1000e_get_eee()
2206 edata->tx_lpi_timer = er32(LPIC) >> E1000_LPIC_LPIET_SHIFT; in e1000e_get_eee()
2209 hw->phy.ops.release(hw); in e1000e_get_eee()
2211 ret_val = -ENODATA; in e1000e_get_eee()
2221 struct e1000_hw *hw = &adapter->hw; in e1000e_set_eee()
2229 if (eee_curr.tx_lpi_enabled != edata->tx_lpi_enabled) { in e1000e_set_eee()
2230 e_err("Setting EEE tx-lpi is not supported\n"); in e1000e_set_eee()
2231 return -EINVAL; in e1000e_set_eee()
2234 if (eee_curr.tx_lpi_timer != edata->tx_lpi_timer) { in e1000e_set_eee()
2235 e_err("Setting EEE Tx LPI timer is not supported\n"); in e1000e_set_eee()
2236 return -EINVAL; in e1000e_set_eee()
2244 if (linkmode_andnot(tmp, edata->advertised, supported)) { in e1000e_set_eee()
2245 e_err("EEE advertisement supports only 100TX and/or 1000T full-duplex\n"); in e1000e_set_eee()
2246 return -EINVAL; in e1000e_set_eee()
2249 adapter->eee_advert = linkmode_to_mii_eee_cap1_t(edata->advertised); in e1000e_set_eee()
2251 hw->dev_spec.ich8lan.eee_disable = !edata->eee_enabled; in e1000e_set_eee()
2269 if (!(adapter->flags & FLAG_HAS_HW_TIMESTAMP)) in e1000e_get_ts_info()
2272 info->so_timestamping |= (SOF_TIMESTAMPING_TX_HARDWARE | in e1000e_get_ts_info()
2276 info->tx_types = BIT(HWTSTAMP_TX_OFF) | BIT(HWTSTAMP_TX_ON); in e1000e_get_ts_info()
2278 info->rx_filters = (BIT(HWTSTAMP_FILTER_NONE) | in e1000e_get_ts_info()
2290 if (adapter->ptp_clock) in e1000e_get_ts_info()
2291 info->phc_index = ptp_clock_index(adapter->ptp_clock); in e1000e_get_ts_info()
2301 if (adapter->flags2 & FLAG2_ENABLE_S0IX_FLOWS) in e1000e_get_priv_flags()
2310 unsigned int flags2 = adapter->flags2; in e1000e_set_priv_flags()
2314 struct e1000_hw *hw = &adapter->hw; in e1000e_set_priv_flags()
2316 if (hw->mac.type < e1000_pch_cnp) in e1000e_set_priv_flags()
2317 return -EINVAL; in e1000e_set_priv_flags()
2321 if (flags2 != adapter->flags2) in e1000e_set_priv_flags()
2322 adapter->flags2 = flags2; in e1000e_set_priv_flags()
2364 netdev->ethtool_ops = &e1000_ethtool_ops; in e1000e_set_ethtool_ops()