Lines Matching refs:adapter

157 	struct ixgbe_adapter *adapter = netdev_priv(netdev);  in ixgbe_get_settings()  local
158 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_get_settings()
211 switch (adapter->hw.phy.type) { in ixgbe_get_settings()
233 switch (adapter->hw.phy.sfp_type) { in ixgbe_get_settings()
317 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_settings() local
318 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_set_settings()
353 while (test_and_set_bit(__IXGBE_IN_SFP_INIT, &adapter->state)) in ixgbe_set_settings()
362 clear_bit(__IXGBE_IN_SFP_INIT, &adapter->state); in ixgbe_set_settings()
378 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_pauseparam() local
379 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_get_pauseparam()
400 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_pauseparam() local
401 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_set_pauseparam()
406 (adapter->flags & IXGBE_FLAG_DCB_ENABLED)) in ixgbe_set_pauseparam()
429 ixgbe_reinit_locked(adapter); in ixgbe_set_pauseparam()
431 ixgbe_reset(adapter); in ixgbe_set_pauseparam()
439 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_msglevel() local
440 return adapter->msg_enable; in ixgbe_get_msglevel()
445 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_msglevel() local
446 adapter->msg_enable = data; in ixgbe_set_msglevel()
460 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_regs() local
461 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_get_regs()
664 regs_buff[881] = IXGBE_GET_STAT(adapter, crcerrs); in ixgbe_get_regs()
665 regs_buff[882] = IXGBE_GET_STAT(adapter, illerrc); in ixgbe_get_regs()
666 regs_buff[883] = IXGBE_GET_STAT(adapter, errbc); in ixgbe_get_regs()
667 regs_buff[884] = IXGBE_GET_STAT(adapter, mspdc); in ixgbe_get_regs()
669 regs_buff[885 + i] = IXGBE_GET_STAT(adapter, mpc[i]); in ixgbe_get_regs()
670 regs_buff[893] = IXGBE_GET_STAT(adapter, mlfc); in ixgbe_get_regs()
671 regs_buff[894] = IXGBE_GET_STAT(adapter, mrfc); in ixgbe_get_regs()
672 regs_buff[895] = IXGBE_GET_STAT(adapter, rlec); in ixgbe_get_regs()
673 regs_buff[896] = IXGBE_GET_STAT(adapter, lxontxc); in ixgbe_get_regs()
674 regs_buff[897] = IXGBE_GET_STAT(adapter, lxonrxc); in ixgbe_get_regs()
675 regs_buff[898] = IXGBE_GET_STAT(adapter, lxofftxc); in ixgbe_get_regs()
676 regs_buff[899] = IXGBE_GET_STAT(adapter, lxoffrxc); in ixgbe_get_regs()
678 regs_buff[900 + i] = IXGBE_GET_STAT(adapter, pxontxc[i]); in ixgbe_get_regs()
680 regs_buff[908 + i] = IXGBE_GET_STAT(adapter, pxonrxc[i]); in ixgbe_get_regs()
682 regs_buff[916 + i] = IXGBE_GET_STAT(adapter, pxofftxc[i]); in ixgbe_get_regs()
684 regs_buff[924 + i] = IXGBE_GET_STAT(adapter, pxoffrxc[i]); in ixgbe_get_regs()
685 regs_buff[932] = IXGBE_GET_STAT(adapter, prc64); in ixgbe_get_regs()
686 regs_buff[933] = IXGBE_GET_STAT(adapter, prc127); in ixgbe_get_regs()
687 regs_buff[934] = IXGBE_GET_STAT(adapter, prc255); in ixgbe_get_regs()
688 regs_buff[935] = IXGBE_GET_STAT(adapter, prc511); in ixgbe_get_regs()
689 regs_buff[936] = IXGBE_GET_STAT(adapter, prc1023); in ixgbe_get_regs()
690 regs_buff[937] = IXGBE_GET_STAT(adapter, prc1522); in ixgbe_get_regs()
691 regs_buff[938] = IXGBE_GET_STAT(adapter, gprc); in ixgbe_get_regs()
692 regs_buff[939] = IXGBE_GET_STAT(adapter, bprc); in ixgbe_get_regs()
693 regs_buff[940] = IXGBE_GET_STAT(adapter, mprc); in ixgbe_get_regs()
694 regs_buff[941] = IXGBE_GET_STAT(adapter, gptc); in ixgbe_get_regs()
695 regs_buff[942] = IXGBE_GET_STAT(adapter, gorc); in ixgbe_get_regs()
696 regs_buff[944] = IXGBE_GET_STAT(adapter, gotc); in ixgbe_get_regs()
698 regs_buff[946 + i] = IXGBE_GET_STAT(adapter, rnbc[i]); in ixgbe_get_regs()
699 regs_buff[954] = IXGBE_GET_STAT(adapter, ruc); in ixgbe_get_regs()
700 regs_buff[955] = IXGBE_GET_STAT(adapter, rfc); in ixgbe_get_regs()
701 regs_buff[956] = IXGBE_GET_STAT(adapter, roc); in ixgbe_get_regs()
702 regs_buff[957] = IXGBE_GET_STAT(adapter, rjc); in ixgbe_get_regs()
703 regs_buff[958] = IXGBE_GET_STAT(adapter, mngprc); in ixgbe_get_regs()
704 regs_buff[959] = IXGBE_GET_STAT(adapter, mngpdc); in ixgbe_get_regs()
705 regs_buff[960] = IXGBE_GET_STAT(adapter, mngptc); in ixgbe_get_regs()
706 regs_buff[961] = IXGBE_GET_STAT(adapter, tor); in ixgbe_get_regs()
707 regs_buff[963] = IXGBE_GET_STAT(adapter, tpr); in ixgbe_get_regs()
708 regs_buff[964] = IXGBE_GET_STAT(adapter, tpt); in ixgbe_get_regs()
709 regs_buff[965] = IXGBE_GET_STAT(adapter, ptc64); in ixgbe_get_regs()
710 regs_buff[966] = IXGBE_GET_STAT(adapter, ptc127); in ixgbe_get_regs()
711 regs_buff[967] = IXGBE_GET_STAT(adapter, ptc255); in ixgbe_get_regs()
712 regs_buff[968] = IXGBE_GET_STAT(adapter, ptc511); in ixgbe_get_regs()
713 regs_buff[969] = IXGBE_GET_STAT(adapter, ptc1023); in ixgbe_get_regs()
714 regs_buff[970] = IXGBE_GET_STAT(adapter, ptc1522); in ixgbe_get_regs()
715 regs_buff[971] = IXGBE_GET_STAT(adapter, mptc); in ixgbe_get_regs()
716 regs_buff[972] = IXGBE_GET_STAT(adapter, bptc); in ixgbe_get_regs()
717 regs_buff[973] = IXGBE_GET_STAT(adapter, xec); in ixgbe_get_regs()
719 regs_buff[974 + i] = IXGBE_GET_STAT(adapter, qprc[i]); in ixgbe_get_regs()
721 regs_buff[990 + i] = IXGBE_GET_STAT(adapter, qptc[i]); in ixgbe_get_regs()
723 regs_buff[1006 + i] = IXGBE_GET_STAT(adapter, qbrc[i]); in ixgbe_get_regs()
725 regs_buff[1022 + i] = IXGBE_GET_STAT(adapter, qbtc[i]); in ixgbe_get_regs()
819 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_eeprom_len() local
820 return adapter->hw.eeprom.word_size * 2; in ixgbe_get_eeprom_len()
826 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_eeprom() local
827 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_get_eeprom()
862 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_eeprom() local
863 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_set_eeprom()
932 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_drvinfo() local
939 nvm_track_id = (adapter->eeprom_verh << 16) | in ixgbe_get_drvinfo()
940 adapter->eeprom_verl; in ixgbe_get_drvinfo()
944 strlcpy(drvinfo->bus_info, pci_name(adapter->pdev), in ixgbe_get_drvinfo()
951 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_ringparam() local
952 struct ixgbe_ring *tx_ring = adapter->tx_ring[0]; in ixgbe_get_ringparam()
953 struct ixgbe_ring *rx_ring = adapter->rx_ring[0]; in ixgbe_get_ringparam()
964 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_ringparam() local
980 if ((new_tx_count == adapter->tx_ring_count) && in ixgbe_set_ringparam()
981 (new_rx_count == adapter->rx_ring_count)) { in ixgbe_set_ringparam()
986 while (test_and_set_bit(__IXGBE_RESETTING, &adapter->state)) in ixgbe_set_ringparam()
989 if (!netif_running(adapter->netdev)) { in ixgbe_set_ringparam()
990 for (i = 0; i < adapter->num_tx_queues; i++) in ixgbe_set_ringparam()
991 adapter->tx_ring[i]->count = new_tx_count; in ixgbe_set_ringparam()
992 for (i = 0; i < adapter->num_rx_queues; i++) in ixgbe_set_ringparam()
993 adapter->rx_ring[i]->count = new_rx_count; in ixgbe_set_ringparam()
994 adapter->tx_ring_count = new_tx_count; in ixgbe_set_ringparam()
995 adapter->rx_ring_count = new_rx_count; in ixgbe_set_ringparam()
1000 i = max_t(int, adapter->num_tx_queues, adapter->num_rx_queues); in ixgbe_set_ringparam()
1008 ixgbe_down(adapter); in ixgbe_set_ringparam()
1016 if (new_tx_count != adapter->tx_ring_count) { in ixgbe_set_ringparam()
1017 for (i = 0; i < adapter->num_tx_queues; i++) { in ixgbe_set_ringparam()
1018 memcpy(&temp_ring[i], adapter->tx_ring[i], in ixgbe_set_ringparam()
1032 for (i = 0; i < adapter->num_tx_queues; i++) { in ixgbe_set_ringparam()
1033 ixgbe_free_tx_resources(adapter->tx_ring[i]); in ixgbe_set_ringparam()
1035 memcpy(adapter->tx_ring[i], &temp_ring[i], in ixgbe_set_ringparam()
1039 adapter->tx_ring_count = new_tx_count; in ixgbe_set_ringparam()
1043 if (new_rx_count != adapter->rx_ring_count) { in ixgbe_set_ringparam()
1044 for (i = 0; i < adapter->num_rx_queues; i++) { in ixgbe_set_ringparam()
1045 memcpy(&temp_ring[i], adapter->rx_ring[i], in ixgbe_set_ringparam()
1060 for (i = 0; i < adapter->num_rx_queues; i++) { in ixgbe_set_ringparam()
1061 ixgbe_free_rx_resources(adapter->rx_ring[i]); in ixgbe_set_ringparam()
1063 memcpy(adapter->rx_ring[i], &temp_ring[i], in ixgbe_set_ringparam()
1067 adapter->rx_ring_count = new_rx_count; in ixgbe_set_ringparam()
1071 ixgbe_up(adapter); in ixgbe_set_ringparam()
1074 clear_bit(__IXGBE_RESETTING, &adapter->state); in ixgbe_set_ringparam()
1093 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_ethtool_stats() local
1101 ixgbe_update_stats(adapter); in ixgbe_get_ethtool_stats()
1110 p = (char *) adapter + in ixgbe_get_ethtool_stats()
1122 ring = adapter->tx_ring[j]; in ixgbe_get_ethtool_stats()
1150 ring = adapter->rx_ring[j]; in ixgbe_get_ethtool_stats()
1179 data[i++] = adapter->stats.pxontxc[j]; in ixgbe_get_ethtool_stats()
1180 data[i++] = adapter->stats.pxofftxc[j]; in ixgbe_get_ethtool_stats()
1183 data[i++] = adapter->stats.pxonrxc[j]; in ixgbe_get_ethtool_stats()
1184 data[i++] = adapter->stats.pxoffrxc[j]; in ixgbe_get_ethtool_stats()
1252 static int ixgbe_link_test(struct ixgbe_adapter *adapter, u64 *data) in ixgbe_link_test() argument
1254 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_link_test()
1350 static bool reg_pattern_test(struct ixgbe_adapter *adapter, u64 *data, int reg, in reg_pattern_test() argument
1357 if (ixgbe_removed(adapter->hw.hw_addr)) { in reg_pattern_test()
1362 before = ixgbe_read_reg(&adapter->hw, reg); in reg_pattern_test()
1363 ixgbe_write_reg(&adapter->hw, reg, test_pattern[pat] & write); in reg_pattern_test()
1364 val = ixgbe_read_reg(&adapter->hw, reg); in reg_pattern_test()
1369 ixgbe_write_reg(&adapter->hw, reg, before); in reg_pattern_test()
1372 ixgbe_write_reg(&adapter->hw, reg, before); in reg_pattern_test()
1377 static bool reg_set_and_check(struct ixgbe_adapter *adapter, u64 *data, int reg, in reg_set_and_check() argument
1382 if (ixgbe_removed(adapter->hw.hw_addr)) { in reg_set_and_check()
1386 before = ixgbe_read_reg(&adapter->hw, reg); in reg_set_and_check()
1387 ixgbe_write_reg(&adapter->hw, reg, write & mask); in reg_set_and_check()
1388 val = ixgbe_read_reg(&adapter->hw, reg); in reg_set_and_check()
1393 ixgbe_write_reg(&adapter->hw, reg, before); in reg_set_and_check()
1396 ixgbe_write_reg(&adapter->hw, reg, before); in reg_set_and_check()
1400 static int ixgbe_reg_test(struct ixgbe_adapter *adapter, u64 *data) in ixgbe_reg_test() argument
1406 if (ixgbe_removed(adapter->hw.hw_addr)) { in ixgbe_reg_test()
1411 switch (adapter->hw.mac.type) { in ixgbe_reg_test()
1434 before = ixgbe_read_reg(&adapter->hw, IXGBE_STATUS); in ixgbe_reg_test()
1435 value = (ixgbe_read_reg(&adapter->hw, IXGBE_STATUS) & toggle); in ixgbe_reg_test()
1436 ixgbe_write_reg(&adapter->hw, IXGBE_STATUS, toggle); in ixgbe_reg_test()
1437 after = ixgbe_read_reg(&adapter->hw, IXGBE_STATUS) & toggle; in ixgbe_reg_test()
1445 ixgbe_write_reg(&adapter->hw, IXGBE_STATUS, before); in ixgbe_reg_test()
1457 b = reg_pattern_test(adapter, data, in ixgbe_reg_test()
1463 b = reg_set_and_check(adapter, data, in ixgbe_reg_test()
1469 ixgbe_write_reg(&adapter->hw, in ixgbe_reg_test()
1474 b = reg_pattern_test(adapter, data, in ixgbe_reg_test()
1480 b = reg_pattern_test(adapter, data, in ixgbe_reg_test()
1486 b = reg_pattern_test(adapter, data, in ixgbe_reg_test()
1502 static int ixgbe_eeprom_test(struct ixgbe_adapter *adapter, u64 *data) in ixgbe_eeprom_test() argument
1504 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_eeprom_test()
1515 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_test_intr() local
1517 adapter->test_icr |= IXGBE_READ_REG(&adapter->hw, IXGBE_EICR); in ixgbe_test_intr()
1522 static int ixgbe_intr_test(struct ixgbe_adapter *adapter, u64 *data) in ixgbe_intr_test() argument
1524 struct net_device *netdev = adapter->netdev; in ixgbe_intr_test()
1526 u32 irq = adapter->pdev->irq; in ixgbe_intr_test()
1531 if (adapter->msix_entries) { in ixgbe_intr_test()
1534 } else if (adapter->flags & IXGBE_FLAG_MSI_ENABLED) { in ixgbe_intr_test()
1553 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, 0xFFFFFFFF); in ixgbe_intr_test()
1554 IXGBE_WRITE_FLUSH(&adapter->hw); in ixgbe_intr_test()
1570 adapter->test_icr = 0; in ixgbe_intr_test()
1571 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, in ixgbe_intr_test()
1573 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS, in ixgbe_intr_test()
1575 IXGBE_WRITE_FLUSH(&adapter->hw); in ixgbe_intr_test()
1578 if (adapter->test_icr & mask) { in ixgbe_intr_test()
1590 adapter->test_icr = 0; in ixgbe_intr_test()
1591 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMS, mask); in ixgbe_intr_test()
1592 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS, mask); in ixgbe_intr_test()
1593 IXGBE_WRITE_FLUSH(&adapter->hw); in ixgbe_intr_test()
1596 if (!(adapter->test_icr & mask)) { in ixgbe_intr_test()
1609 adapter->test_icr = 0; in ixgbe_intr_test()
1610 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, in ixgbe_intr_test()
1612 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS, in ixgbe_intr_test()
1614 IXGBE_WRITE_FLUSH(&adapter->hw); in ixgbe_intr_test()
1617 if (adapter->test_icr) { in ixgbe_intr_test()
1625 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, 0xFFFFFFFF); in ixgbe_intr_test()
1626 IXGBE_WRITE_FLUSH(&adapter->hw); in ixgbe_intr_test()
1635 static void ixgbe_free_desc_rings(struct ixgbe_adapter *adapter) in ixgbe_free_desc_rings() argument
1637 struct ixgbe_ring *tx_ring = &adapter->test_tx_ring; in ixgbe_free_desc_rings()
1638 struct ixgbe_ring *rx_ring = &adapter->test_rx_ring; in ixgbe_free_desc_rings()
1639 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_free_desc_rings()
1646 ixgbe_disable_rx_queue(adapter, rx_ring); in ixgbe_free_desc_rings()
1666 ixgbe_reset(adapter); in ixgbe_free_desc_rings()
1668 ixgbe_free_tx_resources(&adapter->test_tx_ring); in ixgbe_free_desc_rings()
1669 ixgbe_free_rx_resources(&adapter->test_rx_ring); in ixgbe_free_desc_rings()
1672 static int ixgbe_setup_desc_rings(struct ixgbe_adapter *adapter) in ixgbe_setup_desc_rings() argument
1674 struct ixgbe_ring *tx_ring = &adapter->test_tx_ring; in ixgbe_setup_desc_rings()
1675 struct ixgbe_ring *rx_ring = &adapter->test_rx_ring; in ixgbe_setup_desc_rings()
1676 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_setup_desc_rings()
1684 tx_ring->dev = &adapter->pdev->dev; in ixgbe_setup_desc_rings()
1685 tx_ring->netdev = adapter->netdev; in ixgbe_setup_desc_rings()
1686 tx_ring->reg_idx = adapter->tx_ring[0]->reg_idx; in ixgbe_setup_desc_rings()
1692 switch (adapter->hw.mac.type) { in ixgbe_setup_desc_rings()
1697 reg_data = IXGBE_READ_REG(&adapter->hw, IXGBE_DMATXCTL); in ixgbe_setup_desc_rings()
1699 IXGBE_WRITE_REG(&adapter->hw, IXGBE_DMATXCTL, reg_data); in ixgbe_setup_desc_rings()
1705 ixgbe_configure_tx_ring(adapter, tx_ring); in ixgbe_setup_desc_rings()
1710 rx_ring->dev = &adapter->pdev->dev; in ixgbe_setup_desc_rings()
1711 rx_ring->netdev = adapter->netdev; in ixgbe_setup_desc_rings()
1712 rx_ring->reg_idx = adapter->rx_ring[0]->reg_idx; in ixgbe_setup_desc_rings()
1722 ixgbe_configure_rx_ring(adapter, rx_ring); in ixgbe_setup_desc_rings()
1724 rctl = IXGBE_READ_REG(&adapter->hw, IXGBE_RXCTRL); in ixgbe_setup_desc_rings()
1726 IXGBE_WRITE_REG(&adapter->hw, IXGBE_RXCTRL, rctl); in ixgbe_setup_desc_rings()
1733 ixgbe_free_desc_rings(adapter); in ixgbe_setup_desc_rings()
1737 static int ixgbe_setup_loopback_test(struct ixgbe_adapter *adapter) in ixgbe_setup_loopback_test() argument
1739 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_setup_loopback_test()
1753 switch (adapter->hw.mac.type) { in ixgbe_setup_loopback_test()
1796 static void ixgbe_loopback_cleanup(struct ixgbe_adapter *adapter) in ixgbe_loopback_cleanup() argument
1800 reg_data = IXGBE_READ_REG(&adapter->hw, IXGBE_HLREG0); in ixgbe_loopback_cleanup()
1802 IXGBE_WRITE_REG(&adapter->hw, IXGBE_HLREG0, reg_data); in ixgbe_loopback_cleanup()
1895 static int ixgbe_run_loopback_test(struct ixgbe_adapter *adapter) in ixgbe_run_loopback_test() argument
1897 struct ixgbe_ring *tx_ring = &adapter->test_tx_ring; in ixgbe_run_loopback_test()
1898 struct ixgbe_ring *rx_ring = &adapter->test_rx_ring; in ixgbe_run_loopback_test()
1903 u32 flags_orig = adapter->flags; in ixgbe_run_loopback_test()
1906 adapter->flags &= ~IXGBE_FLAG_DCB_ENABLED; in ixgbe_run_loopback_test()
1936 adapter, in ixgbe_run_loopback_test()
1959 adapter->flags = flags_orig; in ixgbe_run_loopback_test()
1964 static int ixgbe_loopback_test(struct ixgbe_adapter *adapter, u64 *data) in ixgbe_loopback_test() argument
1966 *data = ixgbe_setup_desc_rings(adapter); in ixgbe_loopback_test()
1969 *data = ixgbe_setup_loopback_test(adapter); in ixgbe_loopback_test()
1972 *data = ixgbe_run_loopback_test(adapter); in ixgbe_loopback_test()
1973 ixgbe_loopback_cleanup(adapter); in ixgbe_loopback_test()
1976 ixgbe_free_desc_rings(adapter); in ixgbe_loopback_test()
1984 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_diag_test() local
1987 if (ixgbe_removed(adapter->hw.hw_addr)) { in ixgbe_diag_test()
1997 set_bit(__IXGBE_TESTING, &adapter->state); in ixgbe_diag_test()
1999 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_diag_test()
2001 if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { in ixgbe_diag_test()
2003 for (i = 0; i < adapter->num_vfs; i++) { in ixgbe_diag_test()
2004 if (adapter->vfinfo[i].clear_to_send) { in ixgbe_diag_test()
2013 &adapter->state); in ixgbe_diag_test()
2025 if (ixgbe_link_test(adapter, &data[4])) in ixgbe_diag_test()
2032 ixgbe_reset(adapter); in ixgbe_diag_test()
2035 if (ixgbe_reg_test(adapter, &data[0])) in ixgbe_diag_test()
2038 ixgbe_reset(adapter); in ixgbe_diag_test()
2040 if (ixgbe_eeprom_test(adapter, &data[1])) in ixgbe_diag_test()
2043 ixgbe_reset(adapter); in ixgbe_diag_test()
2045 if (ixgbe_intr_test(adapter, &data[2])) in ixgbe_diag_test()
2050 if (adapter->flags & (IXGBE_FLAG_SRIOV_ENABLED | in ixgbe_diag_test()
2057 ixgbe_reset(adapter); in ixgbe_diag_test()
2059 if (ixgbe_loopback_test(adapter, &data[3])) in ixgbe_diag_test()
2063 ixgbe_reset(adapter); in ixgbe_diag_test()
2066 clear_bit(__IXGBE_TESTING, &adapter->state); in ixgbe_diag_test()
2075 if (ixgbe_link_test(adapter, &data[4])) in ixgbe_diag_test()
2084 clear_bit(__IXGBE_TESTING, &adapter->state); in ixgbe_diag_test()
2091 static int ixgbe_wol_exclusion(struct ixgbe_adapter *adapter, in ixgbe_wol_exclusion() argument
2094 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_wol_exclusion()
2098 if (!ixgbe_wol_supported(adapter, hw->device_id, in ixgbe_wol_exclusion()
2110 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_wol() local
2116 if (ixgbe_wol_exclusion(adapter, wol) || in ixgbe_get_wol()
2117 !device_can_wakeup(&adapter->pdev->dev)) in ixgbe_get_wol()
2120 if (adapter->wol & IXGBE_WUFC_EX) in ixgbe_get_wol()
2122 if (adapter->wol & IXGBE_WUFC_MC) in ixgbe_get_wol()
2124 if (adapter->wol & IXGBE_WUFC_BC) in ixgbe_get_wol()
2126 if (adapter->wol & IXGBE_WUFC_MAG) in ixgbe_get_wol()
2132 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_wol() local
2137 if (ixgbe_wol_exclusion(adapter, wol)) in ixgbe_set_wol()
2140 adapter->wol = 0; in ixgbe_set_wol()
2143 adapter->wol |= IXGBE_WUFC_EX; in ixgbe_set_wol()
2145 adapter->wol |= IXGBE_WUFC_MC; in ixgbe_set_wol()
2147 adapter->wol |= IXGBE_WUFC_BC; in ixgbe_set_wol()
2149 adapter->wol |= IXGBE_WUFC_MAG; in ixgbe_set_wol()
2151 device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol); in ixgbe_set_wol()
2158 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_nway_reset() local
2161 ixgbe_reinit_locked(adapter); in ixgbe_nway_reset()
2169 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_phys_id() local
2170 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_set_phys_id()
2174 adapter->led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL); in ixgbe_set_phys_id()
2187 IXGBE_WRITE_REG(&adapter->hw, IXGBE_LEDCTL, adapter->led_reg); in ixgbe_set_phys_id()
2197 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_coalesce() local
2200 if (adapter->rx_itr_setting <= 1) in ixgbe_get_coalesce()
2201 ec->rx_coalesce_usecs = adapter->rx_itr_setting; in ixgbe_get_coalesce()
2203 ec->rx_coalesce_usecs = adapter->rx_itr_setting >> 2; in ixgbe_get_coalesce()
2206 if (adapter->q_vector[0]->tx.count && adapter->q_vector[0]->rx.count) in ixgbe_get_coalesce()
2210 if (adapter->tx_itr_setting <= 1) in ixgbe_get_coalesce()
2211 ec->tx_coalesce_usecs = adapter->tx_itr_setting; in ixgbe_get_coalesce()
2213 ec->tx_coalesce_usecs = adapter->tx_itr_setting >> 2; in ixgbe_get_coalesce()
2222 static bool ixgbe_update_rsc(struct ixgbe_adapter *adapter) in ixgbe_update_rsc() argument
2224 struct net_device *netdev = adapter->netdev; in ixgbe_update_rsc()
2227 if (!(adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE) || in ixgbe_update_rsc()
2232 if (adapter->rx_itr_setting == 1 || in ixgbe_update_rsc()
2233 adapter->rx_itr_setting > IXGBE_MIN_RSC_ITR) { in ixgbe_update_rsc()
2234 if (!(adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED)) { in ixgbe_update_rsc()
2235 adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED; in ixgbe_update_rsc()
2240 } else if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) { in ixgbe_update_rsc()
2241 adapter->flags2 &= ~IXGBE_FLAG2_RSC_ENABLED; in ixgbe_update_rsc()
2251 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_coalesce() local
2257 if (adapter->q_vector[0]->tx.count && adapter->q_vector[0]->rx.count) { in ixgbe_set_coalesce()
2261 tx_itr_prev = adapter->rx_itr_setting; in ixgbe_set_coalesce()
2263 tx_itr_prev = adapter->tx_itr_setting; in ixgbe_set_coalesce()
2271 adapter->rx_itr_setting = ec->rx_coalesce_usecs << 2; in ixgbe_set_coalesce()
2273 adapter->rx_itr_setting = ec->rx_coalesce_usecs; in ixgbe_set_coalesce()
2275 if (adapter->rx_itr_setting == 1) in ixgbe_set_coalesce()
2278 rx_itr_param = adapter->rx_itr_setting; in ixgbe_set_coalesce()
2281 adapter->tx_itr_setting = ec->tx_coalesce_usecs << 2; in ixgbe_set_coalesce()
2283 adapter->tx_itr_setting = ec->tx_coalesce_usecs; in ixgbe_set_coalesce()
2285 if (adapter->tx_itr_setting == 1) in ixgbe_set_coalesce()
2288 tx_itr_param = adapter->tx_itr_setting; in ixgbe_set_coalesce()
2291 if (adapter->q_vector[0]->tx.count && adapter->q_vector[0]->rx.count) in ixgbe_set_coalesce()
2292 adapter->tx_itr_setting = adapter->rx_itr_setting; in ixgbe_set_coalesce()
2295 if ((adapter->tx_itr_setting != 1) && in ixgbe_set_coalesce()
2296 (adapter->tx_itr_setting < IXGBE_100K_ITR)) { in ixgbe_set_coalesce()
2307 need_reset |= ixgbe_update_rsc(adapter); in ixgbe_set_coalesce()
2309 for (i = 0; i < adapter->num_q_vectors; i++) { in ixgbe_set_coalesce()
2310 q_vector = adapter->q_vector[i]; in ixgbe_set_coalesce()
2331 static int ixgbe_get_ethtool_fdir_entry(struct ixgbe_adapter *adapter, in ixgbe_get_ethtool_fdir_entry() argument
2334 union ixgbe_atr_input *mask = &adapter->fdir_mask; in ixgbe_get_ethtool_fdir_entry()
2341 cmd->data = (1024 << adapter->fdir_pballoc) - 2; in ixgbe_get_ethtool_fdir_entry()
2344 &adapter->fdir_filter_list, fdir_node) { in ixgbe_get_ethtool_fdir_entry()
2400 static int ixgbe_get_ethtool_fdir_all(struct ixgbe_adapter *adapter, in ixgbe_get_ethtool_fdir_all() argument
2409 cmd->data = (1024 << adapter->fdir_pballoc) - 2; in ixgbe_get_ethtool_fdir_all()
2412 &adapter->fdir_filter_list, fdir_node) { in ixgbe_get_ethtool_fdir_all()
2424 static int ixgbe_get_rss_hash_opts(struct ixgbe_adapter *adapter, in ixgbe_get_rss_hash_opts() argument
2435 if (adapter->flags2 & IXGBE_FLAG2_RSS_FIELD_IPV4_UDP) in ixgbe_get_rss_hash_opts()
2449 if (adapter->flags2 & IXGBE_FLAG2_RSS_FIELD_IPV6_UDP) in ixgbe_get_rss_hash_opts()
2469 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_get_rxnfc() local
2474 cmd->data = adapter->num_rx_queues; in ixgbe_get_rxnfc()
2478 cmd->rule_cnt = adapter->fdir_filter_count; in ixgbe_get_rxnfc()
2482 ret = ixgbe_get_ethtool_fdir_entry(adapter, cmd); in ixgbe_get_rxnfc()
2485 ret = ixgbe_get_ethtool_fdir_all(adapter, cmd, rule_locs); in ixgbe_get_rxnfc()
2488 ret = ixgbe_get_rss_hash_opts(adapter, cmd); in ixgbe_get_rxnfc()
2497 static int ixgbe_update_ethtool_fdir_entry(struct ixgbe_adapter *adapter, in ixgbe_update_ethtool_fdir_entry() argument
2501 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_update_ethtool_fdir_entry()
2510 &adapter->fdir_filter_list, fdir_node) { in ixgbe_update_ethtool_fdir_entry()
2528 adapter->fdir_filter_count--; in ixgbe_update_ethtool_fdir_entry()
2546 &adapter->fdir_filter_list); in ixgbe_update_ethtool_fdir_entry()
2549 adapter->fdir_filter_count++; in ixgbe_update_ethtool_fdir_entry()
2594 static int ixgbe_add_ethtool_fdir_entry(struct ixgbe_adapter *adapter, in ixgbe_add_ethtool_fdir_entry() argument
2599 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_add_ethtool_fdir_entry()
2605 if (!(adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE)) in ixgbe_add_ethtool_fdir_entry()
2617 if (!vf && (ring >= adapter->num_rx_queues)) in ixgbe_add_ethtool_fdir_entry()
2620 ((vf > adapter->num_vfs) || in ixgbe_add_ethtool_fdir_entry()
2621 ring >= adapter->num_rx_queues_per_pool)) in ixgbe_add_ethtool_fdir_entry()
2626 queue = adapter->rx_ring[ring]->reg_idx; in ixgbe_add_ethtool_fdir_entry()
2629 adapter->num_rx_queues_per_pool) + ring; in ixgbe_add_ethtool_fdir_entry()
2633 if (fsp->location >= ((1024 << adapter->fdir_pballoc) - 2)) { in ixgbe_add_ethtool_fdir_entry()
2688 spin_lock(&adapter->fdir_perfect_lock); in ixgbe_add_ethtool_fdir_entry()
2690 if (hlist_empty(&adapter->fdir_filter_list)) { in ixgbe_add_ethtool_fdir_entry()
2692 memcpy(&adapter->fdir_mask, &mask, sizeof(mask)); in ixgbe_add_ethtool_fdir_entry()
2698 } else if (memcmp(&adapter->fdir_mask, &mask, sizeof(mask))) { in ixgbe_add_ethtool_fdir_entry()
2712 ixgbe_update_ethtool_fdir_entry(adapter, input, input->sw_idx); in ixgbe_add_ethtool_fdir_entry()
2714 spin_unlock(&adapter->fdir_perfect_lock); in ixgbe_add_ethtool_fdir_entry()
2718 spin_unlock(&adapter->fdir_perfect_lock); in ixgbe_add_ethtool_fdir_entry()
2724 static int ixgbe_del_ethtool_fdir_entry(struct ixgbe_adapter *adapter, in ixgbe_del_ethtool_fdir_entry() argument
2731 spin_lock(&adapter->fdir_perfect_lock); in ixgbe_del_ethtool_fdir_entry()
2732 err = ixgbe_update_ethtool_fdir_entry(adapter, NULL, fsp->location); in ixgbe_del_ethtool_fdir_entry()
2733 spin_unlock(&adapter->fdir_perfect_lock); in ixgbe_del_ethtool_fdir_entry()
2740 static int ixgbe_set_rss_hash_opt(struct ixgbe_adapter *adapter, in ixgbe_set_rss_hash_opt() argument
2743 u32 flags2 = adapter->flags2; in ixgbe_set_rss_hash_opt()
2811 if (flags2 != adapter->flags2) { in ixgbe_set_rss_hash_opt()
2812 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_set_rss_hash_opt()
2814 unsigned int pf_pool = adapter->num_vfs; in ixgbe_set_rss_hash_opt()
2817 (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)) in ixgbe_set_rss_hash_opt()
2823 !(adapter->flags2 & UDP_RSS_FLAGS)) in ixgbe_set_rss_hash_opt()
2826 adapter->flags2 = flags2; in ixgbe_set_rss_hash_opt()
2844 (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)) in ixgbe_set_rss_hash_opt()
2855 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_set_rxnfc() local
2860 ret = ixgbe_add_ethtool_fdir_entry(adapter, cmd); in ixgbe_set_rxnfc()
2863 ret = ixgbe_del_ethtool_fdir_entry(adapter, cmd); in ixgbe_set_rxnfc()
2866 ret = ixgbe_set_rss_hash_opt(adapter, cmd); in ixgbe_set_rxnfc()
2875 static int ixgbe_rss_indir_tbl_max(struct ixgbe_adapter *adapter) in ixgbe_rss_indir_tbl_max() argument
2877 if (adapter->hw.mac.type < ixgbe_mac_X550) in ixgbe_rss_indir_tbl_max()
2885 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_rxfh_key_size() local
2887 return sizeof(adapter->rss_key); in ixgbe_get_rxfh_key_size()
2892 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_rss_indir_size() local
2894 return ixgbe_rss_indir_tbl_entries(adapter); in ixgbe_rss_indir_size()
2897 static void ixgbe_get_reta(struct ixgbe_adapter *adapter, u32 *indir) in ixgbe_get_reta() argument
2899 int i, reta_size = ixgbe_rss_indir_tbl_entries(adapter); in ixgbe_get_reta()
2902 indir[i] = adapter->rss_indir_tbl[i]; in ixgbe_get_reta()
2908 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_rxfh() local
2914 ixgbe_get_reta(adapter, indir); in ixgbe_get_rxfh()
2917 memcpy(key, adapter->rss_key, ixgbe_get_rxfh_key_size(netdev)); in ixgbe_get_rxfh()
2925 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_rxfh() local
2927 u32 reta_entries = ixgbe_rss_indir_tbl_entries(adapter); in ixgbe_set_rxfh()
2934 int max_queues = min_t(int, adapter->num_rx_queues, in ixgbe_set_rxfh()
2935 ixgbe_rss_indir_tbl_max(adapter)); in ixgbe_set_rxfh()
2938 if ((adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) && in ixgbe_set_rxfh()
2948 adapter->rss_indir_tbl[i] = indir[i]; in ixgbe_set_rxfh()
2953 memcpy(adapter->rss_key, key, ixgbe_get_rxfh_key_size(netdev)); in ixgbe_set_rxfh()
2955 ixgbe_store_reta(adapter); in ixgbe_set_rxfh()
2963 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_get_ts_info() local
2965 switch (adapter->hw.mac.type) { in ixgbe_get_ts_info()
2978 if (adapter->ptp_clock) in ixgbe_get_ts_info()
2979 info->phc_index = ptp_clock_index(adapter->ptp_clock); in ixgbe_get_ts_info()
2999 static unsigned int ixgbe_max_channels(struct ixgbe_adapter *adapter) in ixgbe_max_channels() argument
3002 u8 tcs = netdev_get_num_tc(adapter->netdev); in ixgbe_max_channels()
3004 if (!(adapter->flags & IXGBE_FLAG_MSIX_ENABLED)) { in ixgbe_max_channels()
3007 } else if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { in ixgbe_max_channels()
3012 if (adapter->hw.mac.type == ixgbe_mac_82598EB) { in ixgbe_max_channels()
3022 } else if (adapter->atr_sample_rate) { in ixgbe_max_channels()
3027 max_combined = ixgbe_max_rss_indices(adapter); in ixgbe_max_channels()
3036 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_get_channels() local
3039 ch->max_combined = ixgbe_max_channels(adapter); in ixgbe_get_channels()
3042 if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) { in ixgbe_get_channels()
3048 ch->combined_count = adapter->ring_feature[RING_F_RSS].indices; in ixgbe_get_channels()
3055 if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) in ixgbe_get_channels()
3063 if (!adapter->atr_sample_rate) in ixgbe_get_channels()
3067 ch->combined_count = adapter->ring_feature[RING_F_FDIR].indices; in ixgbe_get_channels()
3073 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_set_channels() local
3075 u8 max_rss_indices = ixgbe_max_rss_indices(adapter); in ixgbe_set_channels()
3086 if (count > ixgbe_max_channels(adapter)) in ixgbe_set_channels()
3090 adapter->ring_feature[RING_F_FDIR].limit = count; in ixgbe_set_channels()
3095 adapter->ring_feature[RING_F_RSS].limit = count; in ixgbe_set_channels()
3101 adapter->ring_feature[RING_F_FCOE].limit = count; in ixgbe_set_channels()
3111 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_get_module_info() local
3112 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_get_module_info()
3153 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_get_module_eeprom() local
3154 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_get_module_eeprom()
3164 if (test_bit(__IXGBE_IN_SFP_INIT, &adapter->state)) in ixgbe_get_module_eeprom()