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()
207 switch (adapter->hw.phy.type) { in ixgbe_get_settings()
228 switch (adapter->hw.phy.sfp_type) { in ixgbe_get_settings()
309 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_settings() local
310 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_set_settings()
345 while (test_and_set_bit(__IXGBE_IN_SFP_INIT, &adapter->state)) in ixgbe_set_settings()
354 clear_bit(__IXGBE_IN_SFP_INIT, &adapter->state); in ixgbe_set_settings()
370 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_pauseparam() local
371 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_get_pauseparam()
392 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_pauseparam() local
393 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_set_pauseparam()
398 (adapter->flags & IXGBE_FLAG_DCB_ENABLED)) in ixgbe_set_pauseparam()
421 ixgbe_reinit_locked(adapter); in ixgbe_set_pauseparam()
423 ixgbe_reset(adapter); in ixgbe_set_pauseparam()
431 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_msglevel() local
432 return adapter->msg_enable; in ixgbe_get_msglevel()
437 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_msglevel() local
438 adapter->msg_enable = data; in ixgbe_set_msglevel()
452 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_regs() local
453 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_get_regs()
656 regs_buff[881] = IXGBE_GET_STAT(adapter, crcerrs); in ixgbe_get_regs()
657 regs_buff[882] = IXGBE_GET_STAT(adapter, illerrc); in ixgbe_get_regs()
658 regs_buff[883] = IXGBE_GET_STAT(adapter, errbc); in ixgbe_get_regs()
659 regs_buff[884] = IXGBE_GET_STAT(adapter, mspdc); in ixgbe_get_regs()
661 regs_buff[885 + i] = IXGBE_GET_STAT(adapter, mpc[i]); in ixgbe_get_regs()
662 regs_buff[893] = IXGBE_GET_STAT(adapter, mlfc); in ixgbe_get_regs()
663 regs_buff[894] = IXGBE_GET_STAT(adapter, mrfc); in ixgbe_get_regs()
664 regs_buff[895] = IXGBE_GET_STAT(adapter, rlec); in ixgbe_get_regs()
665 regs_buff[896] = IXGBE_GET_STAT(adapter, lxontxc); in ixgbe_get_regs()
666 regs_buff[897] = IXGBE_GET_STAT(adapter, lxonrxc); in ixgbe_get_regs()
667 regs_buff[898] = IXGBE_GET_STAT(adapter, lxofftxc); in ixgbe_get_regs()
668 regs_buff[899] = IXGBE_GET_STAT(adapter, lxoffrxc); in ixgbe_get_regs()
670 regs_buff[900 + i] = IXGBE_GET_STAT(adapter, pxontxc[i]); in ixgbe_get_regs()
672 regs_buff[908 + i] = IXGBE_GET_STAT(adapter, pxonrxc[i]); in ixgbe_get_regs()
674 regs_buff[916 + i] = IXGBE_GET_STAT(adapter, pxofftxc[i]); in ixgbe_get_regs()
676 regs_buff[924 + i] = IXGBE_GET_STAT(adapter, pxoffrxc[i]); in ixgbe_get_regs()
677 regs_buff[932] = IXGBE_GET_STAT(adapter, prc64); in ixgbe_get_regs()
678 regs_buff[933] = IXGBE_GET_STAT(adapter, prc127); in ixgbe_get_regs()
679 regs_buff[934] = IXGBE_GET_STAT(adapter, prc255); in ixgbe_get_regs()
680 regs_buff[935] = IXGBE_GET_STAT(adapter, prc511); in ixgbe_get_regs()
681 regs_buff[936] = IXGBE_GET_STAT(adapter, prc1023); in ixgbe_get_regs()
682 regs_buff[937] = IXGBE_GET_STAT(adapter, prc1522); in ixgbe_get_regs()
683 regs_buff[938] = IXGBE_GET_STAT(adapter, gprc); in ixgbe_get_regs()
684 regs_buff[939] = IXGBE_GET_STAT(adapter, bprc); in ixgbe_get_regs()
685 regs_buff[940] = IXGBE_GET_STAT(adapter, mprc); in ixgbe_get_regs()
686 regs_buff[941] = IXGBE_GET_STAT(adapter, gptc); in ixgbe_get_regs()
687 regs_buff[942] = IXGBE_GET_STAT(adapter, gorc); in ixgbe_get_regs()
688 regs_buff[944] = IXGBE_GET_STAT(adapter, gotc); in ixgbe_get_regs()
690 regs_buff[946 + i] = IXGBE_GET_STAT(adapter, rnbc[i]); in ixgbe_get_regs()
691 regs_buff[954] = IXGBE_GET_STAT(adapter, ruc); in ixgbe_get_regs()
692 regs_buff[955] = IXGBE_GET_STAT(adapter, rfc); in ixgbe_get_regs()
693 regs_buff[956] = IXGBE_GET_STAT(adapter, roc); in ixgbe_get_regs()
694 regs_buff[957] = IXGBE_GET_STAT(adapter, rjc); in ixgbe_get_regs()
695 regs_buff[958] = IXGBE_GET_STAT(adapter, mngprc); in ixgbe_get_regs()
696 regs_buff[959] = IXGBE_GET_STAT(adapter, mngpdc); in ixgbe_get_regs()
697 regs_buff[960] = IXGBE_GET_STAT(adapter, mngptc); in ixgbe_get_regs()
698 regs_buff[961] = IXGBE_GET_STAT(adapter, tor); in ixgbe_get_regs()
699 regs_buff[963] = IXGBE_GET_STAT(adapter, tpr); in ixgbe_get_regs()
700 regs_buff[964] = IXGBE_GET_STAT(adapter, tpt); in ixgbe_get_regs()
701 regs_buff[965] = IXGBE_GET_STAT(adapter, ptc64); in ixgbe_get_regs()
702 regs_buff[966] = IXGBE_GET_STAT(adapter, ptc127); in ixgbe_get_regs()
703 regs_buff[967] = IXGBE_GET_STAT(adapter, ptc255); in ixgbe_get_regs()
704 regs_buff[968] = IXGBE_GET_STAT(adapter, ptc511); in ixgbe_get_regs()
705 regs_buff[969] = IXGBE_GET_STAT(adapter, ptc1023); in ixgbe_get_regs()
706 regs_buff[970] = IXGBE_GET_STAT(adapter, ptc1522); in ixgbe_get_regs()
707 regs_buff[971] = IXGBE_GET_STAT(adapter, mptc); in ixgbe_get_regs()
708 regs_buff[972] = IXGBE_GET_STAT(adapter, bptc); in ixgbe_get_regs()
709 regs_buff[973] = IXGBE_GET_STAT(adapter, xec); in ixgbe_get_regs()
711 regs_buff[974 + i] = IXGBE_GET_STAT(adapter, qprc[i]); in ixgbe_get_regs()
713 regs_buff[990 + i] = IXGBE_GET_STAT(adapter, qptc[i]); in ixgbe_get_regs()
715 regs_buff[1006 + i] = IXGBE_GET_STAT(adapter, qbrc[i]); in ixgbe_get_regs()
717 regs_buff[1022 + i] = IXGBE_GET_STAT(adapter, qbtc[i]); in ixgbe_get_regs()
811 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_eeprom_len() local
812 return adapter->hw.eeprom.word_size * 2; in ixgbe_get_eeprom_len()
818 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_eeprom() local
819 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_get_eeprom()
854 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_eeprom() local
855 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_set_eeprom()
924 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_drvinfo() local
931 nvm_track_id = (adapter->eeprom_verh << 16) | in ixgbe_get_drvinfo()
932 adapter->eeprom_verl; in ixgbe_get_drvinfo()
936 strlcpy(drvinfo->bus_info, pci_name(adapter->pdev), in ixgbe_get_drvinfo()
946 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_ringparam() local
947 struct ixgbe_ring *tx_ring = adapter->tx_ring[0]; in ixgbe_get_ringparam()
948 struct ixgbe_ring *rx_ring = adapter->rx_ring[0]; in ixgbe_get_ringparam()
959 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_ringparam() local
975 if ((new_tx_count == adapter->tx_ring_count) && in ixgbe_set_ringparam()
976 (new_rx_count == adapter->rx_ring_count)) { in ixgbe_set_ringparam()
981 while (test_and_set_bit(__IXGBE_RESETTING, &adapter->state)) in ixgbe_set_ringparam()
984 if (!netif_running(adapter->netdev)) { in ixgbe_set_ringparam()
985 for (i = 0; i < adapter->num_tx_queues; i++) in ixgbe_set_ringparam()
986 adapter->tx_ring[i]->count = new_tx_count; in ixgbe_set_ringparam()
987 for (i = 0; i < adapter->num_rx_queues; i++) in ixgbe_set_ringparam()
988 adapter->rx_ring[i]->count = new_rx_count; in ixgbe_set_ringparam()
989 adapter->tx_ring_count = new_tx_count; in ixgbe_set_ringparam()
990 adapter->rx_ring_count = new_rx_count; in ixgbe_set_ringparam()
995 i = max_t(int, adapter->num_tx_queues, adapter->num_rx_queues); in ixgbe_set_ringparam()
1003 ixgbe_down(adapter); in ixgbe_set_ringparam()
1011 if (new_tx_count != adapter->tx_ring_count) { in ixgbe_set_ringparam()
1012 for (i = 0; i < adapter->num_tx_queues; i++) { in ixgbe_set_ringparam()
1013 memcpy(&temp_ring[i], adapter->tx_ring[i], in ixgbe_set_ringparam()
1027 for (i = 0; i < adapter->num_tx_queues; i++) { in ixgbe_set_ringparam()
1028 ixgbe_free_tx_resources(adapter->tx_ring[i]); in ixgbe_set_ringparam()
1030 memcpy(adapter->tx_ring[i], &temp_ring[i], in ixgbe_set_ringparam()
1034 adapter->tx_ring_count = new_tx_count; in ixgbe_set_ringparam()
1038 if (new_rx_count != adapter->rx_ring_count) { in ixgbe_set_ringparam()
1039 for (i = 0; i < adapter->num_rx_queues; i++) { in ixgbe_set_ringparam()
1040 memcpy(&temp_ring[i], adapter->rx_ring[i], in ixgbe_set_ringparam()
1055 for (i = 0; i < adapter->num_rx_queues; i++) { in ixgbe_set_ringparam()
1056 ixgbe_free_rx_resources(adapter->rx_ring[i]); in ixgbe_set_ringparam()
1058 memcpy(adapter->rx_ring[i], &temp_ring[i], in ixgbe_set_ringparam()
1062 adapter->rx_ring_count = new_rx_count; in ixgbe_set_ringparam()
1066 ixgbe_up(adapter); in ixgbe_set_ringparam()
1069 clear_bit(__IXGBE_RESETTING, &adapter->state); in ixgbe_set_ringparam()
1088 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_ethtool_stats() local
1096 ixgbe_update_stats(adapter); in ixgbe_get_ethtool_stats()
1105 p = (char *) adapter + in ixgbe_get_ethtool_stats()
1117 ring = adapter->tx_ring[j]; in ixgbe_get_ethtool_stats()
1145 ring = adapter->rx_ring[j]; in ixgbe_get_ethtool_stats()
1174 data[i++] = adapter->stats.pxontxc[j]; in ixgbe_get_ethtool_stats()
1175 data[i++] = adapter->stats.pxofftxc[j]; in ixgbe_get_ethtool_stats()
1178 data[i++] = adapter->stats.pxonrxc[j]; in ixgbe_get_ethtool_stats()
1179 data[i++] = adapter->stats.pxoffrxc[j]; in ixgbe_get_ethtool_stats()
1247 static int ixgbe_link_test(struct ixgbe_adapter *adapter, u64 *data) in ixgbe_link_test() argument
1249 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_link_test()
1345 static bool reg_pattern_test(struct ixgbe_adapter *adapter, u64 *data, int reg, in reg_pattern_test() argument
1352 if (ixgbe_removed(adapter->hw.hw_addr)) { in reg_pattern_test()
1357 before = ixgbe_read_reg(&adapter->hw, reg); in reg_pattern_test()
1358 ixgbe_write_reg(&adapter->hw, reg, test_pattern[pat] & write); in reg_pattern_test()
1359 val = ixgbe_read_reg(&adapter->hw, reg); in reg_pattern_test()
1364 ixgbe_write_reg(&adapter->hw, reg, before); in reg_pattern_test()
1367 ixgbe_write_reg(&adapter->hw, reg, before); in reg_pattern_test()
1372 static bool reg_set_and_check(struct ixgbe_adapter *adapter, u64 *data, int reg, in reg_set_and_check() argument
1377 if (ixgbe_removed(adapter->hw.hw_addr)) { in reg_set_and_check()
1381 before = ixgbe_read_reg(&adapter->hw, reg); in reg_set_and_check()
1382 ixgbe_write_reg(&adapter->hw, reg, write & mask); in reg_set_and_check()
1383 val = ixgbe_read_reg(&adapter->hw, reg); in reg_set_and_check()
1388 ixgbe_write_reg(&adapter->hw, reg, before); in reg_set_and_check()
1391 ixgbe_write_reg(&adapter->hw, reg, before); in reg_set_and_check()
1395 static int ixgbe_reg_test(struct ixgbe_adapter *adapter, u64 *data) in ixgbe_reg_test() argument
1401 if (ixgbe_removed(adapter->hw.hw_addr)) { in ixgbe_reg_test()
1406 switch (adapter->hw.mac.type) { in ixgbe_reg_test()
1429 before = ixgbe_read_reg(&adapter->hw, IXGBE_STATUS); in ixgbe_reg_test()
1430 value = (ixgbe_read_reg(&adapter->hw, IXGBE_STATUS) & toggle); in ixgbe_reg_test()
1431 ixgbe_write_reg(&adapter->hw, IXGBE_STATUS, toggle); in ixgbe_reg_test()
1432 after = ixgbe_read_reg(&adapter->hw, IXGBE_STATUS) & toggle; in ixgbe_reg_test()
1440 ixgbe_write_reg(&adapter->hw, IXGBE_STATUS, before); in ixgbe_reg_test()
1452 b = reg_pattern_test(adapter, data, in ixgbe_reg_test()
1458 b = reg_set_and_check(adapter, data, in ixgbe_reg_test()
1464 ixgbe_write_reg(&adapter->hw, in ixgbe_reg_test()
1469 b = reg_pattern_test(adapter, data, in ixgbe_reg_test()
1475 b = reg_pattern_test(adapter, data, in ixgbe_reg_test()
1481 b = reg_pattern_test(adapter, data, in ixgbe_reg_test()
1497 static int ixgbe_eeprom_test(struct ixgbe_adapter *adapter, u64 *data) in ixgbe_eeprom_test() argument
1499 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_eeprom_test()
1510 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_test_intr() local
1512 adapter->test_icr |= IXGBE_READ_REG(&adapter->hw, IXGBE_EICR); in ixgbe_test_intr()
1517 static int ixgbe_intr_test(struct ixgbe_adapter *adapter, u64 *data) in ixgbe_intr_test() argument
1519 struct net_device *netdev = adapter->netdev; in ixgbe_intr_test()
1521 u32 irq = adapter->pdev->irq; in ixgbe_intr_test()
1526 if (adapter->msix_entries) { in ixgbe_intr_test()
1529 } else if (adapter->flags & IXGBE_FLAG_MSI_ENABLED) { in ixgbe_intr_test()
1548 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, 0xFFFFFFFF); in ixgbe_intr_test()
1549 IXGBE_WRITE_FLUSH(&adapter->hw); in ixgbe_intr_test()
1565 adapter->test_icr = 0; in ixgbe_intr_test()
1566 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, in ixgbe_intr_test()
1568 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS, in ixgbe_intr_test()
1570 IXGBE_WRITE_FLUSH(&adapter->hw); in ixgbe_intr_test()
1573 if (adapter->test_icr & mask) { in ixgbe_intr_test()
1585 adapter->test_icr = 0; in ixgbe_intr_test()
1586 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMS, mask); in ixgbe_intr_test()
1587 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS, mask); in ixgbe_intr_test()
1588 IXGBE_WRITE_FLUSH(&adapter->hw); in ixgbe_intr_test()
1591 if (!(adapter->test_icr & mask)) { in ixgbe_intr_test()
1604 adapter->test_icr = 0; in ixgbe_intr_test()
1605 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, in ixgbe_intr_test()
1607 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS, in ixgbe_intr_test()
1609 IXGBE_WRITE_FLUSH(&adapter->hw); in ixgbe_intr_test()
1612 if (adapter->test_icr) { in ixgbe_intr_test()
1620 IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, 0xFFFFFFFF); in ixgbe_intr_test()
1621 IXGBE_WRITE_FLUSH(&adapter->hw); in ixgbe_intr_test()
1630 static void ixgbe_free_desc_rings(struct ixgbe_adapter *adapter) in ixgbe_free_desc_rings() argument
1632 struct ixgbe_ring *tx_ring = &adapter->test_tx_ring; in ixgbe_free_desc_rings()
1633 struct ixgbe_ring *rx_ring = &adapter->test_rx_ring; in ixgbe_free_desc_rings()
1634 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_free_desc_rings()
1641 ixgbe_disable_rx_queue(adapter, rx_ring); in ixgbe_free_desc_rings()
1661 ixgbe_reset(adapter); in ixgbe_free_desc_rings()
1663 ixgbe_free_tx_resources(&adapter->test_tx_ring); in ixgbe_free_desc_rings()
1664 ixgbe_free_rx_resources(&adapter->test_rx_ring); in ixgbe_free_desc_rings()
1667 static int ixgbe_setup_desc_rings(struct ixgbe_adapter *adapter) in ixgbe_setup_desc_rings() argument
1669 struct ixgbe_ring *tx_ring = &adapter->test_tx_ring; in ixgbe_setup_desc_rings()
1670 struct ixgbe_ring *rx_ring = &adapter->test_rx_ring; in ixgbe_setup_desc_rings()
1671 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_setup_desc_rings()
1679 tx_ring->dev = &adapter->pdev->dev; in ixgbe_setup_desc_rings()
1680 tx_ring->netdev = adapter->netdev; in ixgbe_setup_desc_rings()
1681 tx_ring->reg_idx = adapter->tx_ring[0]->reg_idx; in ixgbe_setup_desc_rings()
1687 switch (adapter->hw.mac.type) { in ixgbe_setup_desc_rings()
1692 reg_data = IXGBE_READ_REG(&adapter->hw, IXGBE_DMATXCTL); in ixgbe_setup_desc_rings()
1694 IXGBE_WRITE_REG(&adapter->hw, IXGBE_DMATXCTL, reg_data); in ixgbe_setup_desc_rings()
1700 ixgbe_configure_tx_ring(adapter, tx_ring); in ixgbe_setup_desc_rings()
1705 rx_ring->dev = &adapter->pdev->dev; in ixgbe_setup_desc_rings()
1706 rx_ring->netdev = adapter->netdev; in ixgbe_setup_desc_rings()
1707 rx_ring->reg_idx = adapter->rx_ring[0]->reg_idx; in ixgbe_setup_desc_rings()
1717 ixgbe_configure_rx_ring(adapter, rx_ring); in ixgbe_setup_desc_rings()
1719 rctl = IXGBE_READ_REG(&adapter->hw, IXGBE_RXCTRL); in ixgbe_setup_desc_rings()
1721 IXGBE_WRITE_REG(&adapter->hw, IXGBE_RXCTRL, rctl); in ixgbe_setup_desc_rings()
1728 ixgbe_free_desc_rings(adapter); in ixgbe_setup_desc_rings()
1732 static int ixgbe_setup_loopback_test(struct ixgbe_adapter *adapter) in ixgbe_setup_loopback_test() argument
1734 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_setup_loopback_test()
1748 switch (adapter->hw.mac.type) { in ixgbe_setup_loopback_test()
1791 static void ixgbe_loopback_cleanup(struct ixgbe_adapter *adapter) in ixgbe_loopback_cleanup() argument
1795 reg_data = IXGBE_READ_REG(&adapter->hw, IXGBE_HLREG0); in ixgbe_loopback_cleanup()
1797 IXGBE_WRITE_REG(&adapter->hw, IXGBE_HLREG0, reg_data); in ixgbe_loopback_cleanup()
1890 static int ixgbe_run_loopback_test(struct ixgbe_adapter *adapter) in ixgbe_run_loopback_test() argument
1892 struct ixgbe_ring *tx_ring = &adapter->test_tx_ring; in ixgbe_run_loopback_test()
1893 struct ixgbe_ring *rx_ring = &adapter->test_rx_ring; in ixgbe_run_loopback_test()
1898 u32 flags_orig = adapter->flags; in ixgbe_run_loopback_test()
1901 adapter->flags &= ~IXGBE_FLAG_DCB_ENABLED; in ixgbe_run_loopback_test()
1931 adapter, in ixgbe_run_loopback_test()
1954 adapter->flags = flags_orig; in ixgbe_run_loopback_test()
1959 static int ixgbe_loopback_test(struct ixgbe_adapter *adapter, u64 *data) in ixgbe_loopback_test() argument
1961 *data = ixgbe_setup_desc_rings(adapter); in ixgbe_loopback_test()
1964 *data = ixgbe_setup_loopback_test(adapter); in ixgbe_loopback_test()
1967 *data = ixgbe_run_loopback_test(adapter); in ixgbe_loopback_test()
1968 ixgbe_loopback_cleanup(adapter); in ixgbe_loopback_test()
1971 ixgbe_free_desc_rings(adapter); in ixgbe_loopback_test()
1979 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_diag_test() local
1982 if (ixgbe_removed(adapter->hw.hw_addr)) { in ixgbe_diag_test()
1992 set_bit(__IXGBE_TESTING, &adapter->state); in ixgbe_diag_test()
1994 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_diag_test()
1996 if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { in ixgbe_diag_test()
1998 for (i = 0; i < adapter->num_vfs; i++) { in ixgbe_diag_test()
1999 if (adapter->vfinfo[i].clear_to_send) { in ixgbe_diag_test()
2008 &adapter->state); in ixgbe_diag_test()
2020 if (ixgbe_link_test(adapter, &data[4])) in ixgbe_diag_test()
2027 ixgbe_reset(adapter); in ixgbe_diag_test()
2030 if (ixgbe_reg_test(adapter, &data[0])) in ixgbe_diag_test()
2033 ixgbe_reset(adapter); in ixgbe_diag_test()
2035 if (ixgbe_eeprom_test(adapter, &data[1])) in ixgbe_diag_test()
2038 ixgbe_reset(adapter); in ixgbe_diag_test()
2040 if (ixgbe_intr_test(adapter, &data[2])) in ixgbe_diag_test()
2045 if (adapter->flags & (IXGBE_FLAG_SRIOV_ENABLED | in ixgbe_diag_test()
2052 ixgbe_reset(adapter); in ixgbe_diag_test()
2054 if (ixgbe_loopback_test(adapter, &data[3])) in ixgbe_diag_test()
2058 ixgbe_reset(adapter); in ixgbe_diag_test()
2061 clear_bit(__IXGBE_TESTING, &adapter->state); in ixgbe_diag_test()
2070 if (ixgbe_link_test(adapter, &data[4])) in ixgbe_diag_test()
2079 clear_bit(__IXGBE_TESTING, &adapter->state); in ixgbe_diag_test()
2086 static int ixgbe_wol_exclusion(struct ixgbe_adapter *adapter, in ixgbe_wol_exclusion() argument
2089 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_wol_exclusion()
2093 if (!ixgbe_wol_supported(adapter, hw->device_id, in ixgbe_wol_exclusion()
2105 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_wol() local
2111 if (ixgbe_wol_exclusion(adapter, wol) || in ixgbe_get_wol()
2112 !device_can_wakeup(&adapter->pdev->dev)) in ixgbe_get_wol()
2115 if (adapter->wol & IXGBE_WUFC_EX) in ixgbe_get_wol()
2117 if (adapter->wol & IXGBE_WUFC_MC) in ixgbe_get_wol()
2119 if (adapter->wol & IXGBE_WUFC_BC) in ixgbe_get_wol()
2121 if (adapter->wol & IXGBE_WUFC_MAG) in ixgbe_get_wol()
2127 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_wol() local
2132 if (ixgbe_wol_exclusion(adapter, wol)) in ixgbe_set_wol()
2135 adapter->wol = 0; in ixgbe_set_wol()
2138 adapter->wol |= IXGBE_WUFC_EX; in ixgbe_set_wol()
2140 adapter->wol |= IXGBE_WUFC_MC; in ixgbe_set_wol()
2142 adapter->wol |= IXGBE_WUFC_BC; in ixgbe_set_wol()
2144 adapter->wol |= IXGBE_WUFC_MAG; in ixgbe_set_wol()
2146 device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol); in ixgbe_set_wol()
2153 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_nway_reset() local
2156 ixgbe_reinit_locked(adapter); in ixgbe_nway_reset()
2164 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_phys_id() local
2165 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_set_phys_id()
2169 adapter->led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL); in ixgbe_set_phys_id()
2182 IXGBE_WRITE_REG(&adapter->hw, IXGBE_LEDCTL, adapter->led_reg); in ixgbe_set_phys_id()
2192 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_coalesce() local
2195 if (adapter->rx_itr_setting <= 1) in ixgbe_get_coalesce()
2196 ec->rx_coalesce_usecs = adapter->rx_itr_setting; in ixgbe_get_coalesce()
2198 ec->rx_coalesce_usecs = adapter->rx_itr_setting >> 2; in ixgbe_get_coalesce()
2201 if (adapter->q_vector[0]->tx.count && adapter->q_vector[0]->rx.count) in ixgbe_get_coalesce()
2205 if (adapter->tx_itr_setting <= 1) in ixgbe_get_coalesce()
2206 ec->tx_coalesce_usecs = adapter->tx_itr_setting; in ixgbe_get_coalesce()
2208 ec->tx_coalesce_usecs = adapter->tx_itr_setting >> 2; in ixgbe_get_coalesce()
2217 static bool ixgbe_update_rsc(struct ixgbe_adapter *adapter) in ixgbe_update_rsc() argument
2219 struct net_device *netdev = adapter->netdev; in ixgbe_update_rsc()
2222 if (!(adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE) || in ixgbe_update_rsc()
2227 if (adapter->rx_itr_setting == 1 || in ixgbe_update_rsc()
2228 adapter->rx_itr_setting > IXGBE_MIN_RSC_ITR) { in ixgbe_update_rsc()
2229 if (!(adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED)) { in ixgbe_update_rsc()
2230 adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED; in ixgbe_update_rsc()
2235 } else if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) { in ixgbe_update_rsc()
2236 adapter->flags2 &= ~IXGBE_FLAG2_RSC_ENABLED; in ixgbe_update_rsc()
2246 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_set_coalesce() local
2252 if (adapter->q_vector[0]->tx.count && adapter->q_vector[0]->rx.count) { in ixgbe_set_coalesce()
2256 tx_itr_prev = adapter->rx_itr_setting; in ixgbe_set_coalesce()
2258 tx_itr_prev = adapter->tx_itr_setting; in ixgbe_set_coalesce()
2266 adapter->rx_itr_setting = ec->rx_coalesce_usecs << 2; in ixgbe_set_coalesce()
2268 adapter->rx_itr_setting = ec->rx_coalesce_usecs; in ixgbe_set_coalesce()
2270 if (adapter->rx_itr_setting == 1) in ixgbe_set_coalesce()
2273 rx_itr_param = adapter->rx_itr_setting; in ixgbe_set_coalesce()
2276 adapter->tx_itr_setting = ec->tx_coalesce_usecs << 2; in ixgbe_set_coalesce()
2278 adapter->tx_itr_setting = ec->tx_coalesce_usecs; in ixgbe_set_coalesce()
2280 if (adapter->tx_itr_setting == 1) in ixgbe_set_coalesce()
2283 tx_itr_param = adapter->tx_itr_setting; in ixgbe_set_coalesce()
2286 if (adapter->q_vector[0]->tx.count && adapter->q_vector[0]->rx.count) in ixgbe_set_coalesce()
2287 adapter->tx_itr_setting = adapter->rx_itr_setting; in ixgbe_set_coalesce()
2290 if ((adapter->tx_itr_setting != 1) && in ixgbe_set_coalesce()
2291 (adapter->tx_itr_setting < IXGBE_100K_ITR)) { in ixgbe_set_coalesce()
2302 need_reset |= ixgbe_update_rsc(adapter); in ixgbe_set_coalesce()
2304 for (i = 0; i < adapter->num_q_vectors; i++) { in ixgbe_set_coalesce()
2305 q_vector = adapter->q_vector[i]; in ixgbe_set_coalesce()
2326 static int ixgbe_get_ethtool_fdir_entry(struct ixgbe_adapter *adapter, in ixgbe_get_ethtool_fdir_entry() argument
2329 union ixgbe_atr_input *mask = &adapter->fdir_mask; in ixgbe_get_ethtool_fdir_entry()
2336 cmd->data = (1024 << adapter->fdir_pballoc) - 2; in ixgbe_get_ethtool_fdir_entry()
2339 &adapter->fdir_filter_list, fdir_node) { in ixgbe_get_ethtool_fdir_entry()
2395 static int ixgbe_get_ethtool_fdir_all(struct ixgbe_adapter *adapter, in ixgbe_get_ethtool_fdir_all() argument
2404 cmd->data = (1024 << adapter->fdir_pballoc) - 2; in ixgbe_get_ethtool_fdir_all()
2407 &adapter->fdir_filter_list, fdir_node) { in ixgbe_get_ethtool_fdir_all()
2419 static int ixgbe_get_rss_hash_opts(struct ixgbe_adapter *adapter, in ixgbe_get_rss_hash_opts() argument
2430 if (adapter->flags2 & IXGBE_FLAG2_RSS_FIELD_IPV4_UDP) in ixgbe_get_rss_hash_opts()
2444 if (adapter->flags2 & IXGBE_FLAG2_RSS_FIELD_IPV6_UDP) in ixgbe_get_rss_hash_opts()
2464 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_get_rxnfc() local
2469 cmd->data = adapter->num_rx_queues; in ixgbe_get_rxnfc()
2473 cmd->rule_cnt = adapter->fdir_filter_count; in ixgbe_get_rxnfc()
2477 ret = ixgbe_get_ethtool_fdir_entry(adapter, cmd); in ixgbe_get_rxnfc()
2480 ret = ixgbe_get_ethtool_fdir_all(adapter, cmd, rule_locs); in ixgbe_get_rxnfc()
2483 ret = ixgbe_get_rss_hash_opts(adapter, cmd); in ixgbe_get_rxnfc()
2492 static int ixgbe_update_ethtool_fdir_entry(struct ixgbe_adapter *adapter, in ixgbe_update_ethtool_fdir_entry() argument
2496 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_update_ethtool_fdir_entry()
2505 &adapter->fdir_filter_list, fdir_node) { in ixgbe_update_ethtool_fdir_entry()
2523 adapter->fdir_filter_count--; in ixgbe_update_ethtool_fdir_entry()
2541 &adapter->fdir_filter_list); in ixgbe_update_ethtool_fdir_entry()
2544 adapter->fdir_filter_count++; in ixgbe_update_ethtool_fdir_entry()
2589 static int ixgbe_add_ethtool_fdir_entry(struct ixgbe_adapter *adapter, in ixgbe_add_ethtool_fdir_entry() argument
2594 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_add_ethtool_fdir_entry()
2599 if (!(adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE)) in ixgbe_add_ethtool_fdir_entry()
2607 (fsp->ring_cookie >= adapter->num_rx_queues)) in ixgbe_add_ethtool_fdir_entry()
2611 if (fsp->location >= ((1024 << adapter->fdir_pballoc) - 2)) { in ixgbe_add_ethtool_fdir_entry()
2666 spin_lock(&adapter->fdir_perfect_lock); in ixgbe_add_ethtool_fdir_entry()
2668 if (hlist_empty(&adapter->fdir_filter_list)) { in ixgbe_add_ethtool_fdir_entry()
2670 memcpy(&adapter->fdir_mask, &mask, sizeof(mask)); in ixgbe_add_ethtool_fdir_entry()
2676 } else if (memcmp(&adapter->fdir_mask, &mask, sizeof(mask))) { in ixgbe_add_ethtool_fdir_entry()
2689 adapter->rx_ring[input->action]->reg_idx); in ixgbe_add_ethtool_fdir_entry()
2693 ixgbe_update_ethtool_fdir_entry(adapter, input, input->sw_idx); in ixgbe_add_ethtool_fdir_entry()
2695 spin_unlock(&adapter->fdir_perfect_lock); in ixgbe_add_ethtool_fdir_entry()
2699 spin_unlock(&adapter->fdir_perfect_lock); in ixgbe_add_ethtool_fdir_entry()
2705 static int ixgbe_del_ethtool_fdir_entry(struct ixgbe_adapter *adapter, in ixgbe_del_ethtool_fdir_entry() argument
2712 spin_lock(&adapter->fdir_perfect_lock); in ixgbe_del_ethtool_fdir_entry()
2713 err = ixgbe_update_ethtool_fdir_entry(adapter, NULL, fsp->location); in ixgbe_del_ethtool_fdir_entry()
2714 spin_unlock(&adapter->fdir_perfect_lock); in ixgbe_del_ethtool_fdir_entry()
2721 static int ixgbe_set_rss_hash_opt(struct ixgbe_adapter *adapter, in ixgbe_set_rss_hash_opt() argument
2724 u32 flags2 = adapter->flags2; in ixgbe_set_rss_hash_opt()
2792 if (flags2 != adapter->flags2) { in ixgbe_set_rss_hash_opt()
2793 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_set_rss_hash_opt()
2795 unsigned int pf_pool = adapter->num_vfs; in ixgbe_set_rss_hash_opt()
2798 (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)) in ixgbe_set_rss_hash_opt()
2804 !(adapter->flags2 & UDP_RSS_FLAGS)) in ixgbe_set_rss_hash_opt()
2807 adapter->flags2 = flags2; in ixgbe_set_rss_hash_opt()
2825 (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)) in ixgbe_set_rss_hash_opt()
2836 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_set_rxnfc() local
2841 ret = ixgbe_add_ethtool_fdir_entry(adapter, cmd); in ixgbe_set_rxnfc()
2844 ret = ixgbe_del_ethtool_fdir_entry(adapter, cmd); in ixgbe_set_rxnfc()
2847 ret = ixgbe_set_rss_hash_opt(adapter, cmd); in ixgbe_set_rxnfc()
2858 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_rxfh_key_size() local
2860 return sizeof(adapter->rss_key); in ixgbe_get_rxfh_key_size()
2865 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_rss_indir_size() local
2867 return ixgbe_rss_indir_tbl_entries(adapter); in ixgbe_rss_indir_size()
2870 static void ixgbe_get_reta(struct ixgbe_adapter *adapter, u32 *indir) in ixgbe_get_reta() argument
2872 int i, reta_size = ixgbe_rss_indir_tbl_entries(adapter); in ixgbe_get_reta()
2875 indir[i] = adapter->rss_indir_tbl[i]; in ixgbe_get_reta()
2881 struct ixgbe_adapter *adapter = netdev_priv(netdev); in ixgbe_get_rxfh() local
2887 ixgbe_get_reta(adapter, indir); in ixgbe_get_rxfh()
2890 memcpy(key, adapter->rss_key, ixgbe_get_rxfh_key_size(netdev)); in ixgbe_get_rxfh()
2898 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_get_ts_info() local
2900 switch (adapter->hw.mac.type) { in ixgbe_get_ts_info()
2913 if (adapter->ptp_clock) in ixgbe_get_ts_info()
2914 info->phc_index = ptp_clock_index(adapter->ptp_clock); in ixgbe_get_ts_info()
2942 static unsigned int ixgbe_max_channels(struct ixgbe_adapter *adapter) in ixgbe_max_channels() argument
2945 u8 tcs = netdev_get_num_tc(adapter->netdev); in ixgbe_max_channels()
2947 if (!(adapter->flags & IXGBE_FLAG_MSIX_ENABLED)) { in ixgbe_max_channels()
2950 } else if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { in ixgbe_max_channels()
2955 if (adapter->hw.mac.type == ixgbe_mac_82598EB) { in ixgbe_max_channels()
2965 } else if (adapter->atr_sample_rate) { in ixgbe_max_channels()
2970 max_combined = ixgbe_max_rss_indices(adapter); in ixgbe_max_channels()
2979 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_get_channels() local
2982 ch->max_combined = ixgbe_max_channels(adapter); in ixgbe_get_channels()
2985 if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) { in ixgbe_get_channels()
2991 ch->combined_count = adapter->ring_feature[RING_F_RSS].indices; in ixgbe_get_channels()
2998 if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) in ixgbe_get_channels()
3006 if (!adapter->atr_sample_rate) in ixgbe_get_channels()
3010 ch->combined_count = adapter->ring_feature[RING_F_FDIR].indices; in ixgbe_get_channels()
3016 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_set_channels() local
3018 u8 max_rss_indices = ixgbe_max_rss_indices(adapter); in ixgbe_set_channels()
3029 if (count > ixgbe_max_channels(adapter)) in ixgbe_set_channels()
3033 adapter->ring_feature[RING_F_FDIR].limit = count; in ixgbe_set_channels()
3038 adapter->ring_feature[RING_F_RSS].limit = count; in ixgbe_set_channels()
3044 adapter->ring_feature[RING_F_FCOE].limit = count; in ixgbe_set_channels()
3054 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_get_module_info() local
3055 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_get_module_info()
3096 struct ixgbe_adapter *adapter = netdev_priv(dev); in ixgbe_get_module_eeprom() local
3097 struct ixgbe_hw *hw = &adapter->hw; in ixgbe_get_module_eeprom()
3107 if (test_bit(__IXGBE_IN_SFP_INIT, &adapter->state)) in ixgbe_get_module_eeprom()