• Home
  • Raw
  • Download

Lines Matching +full:test +full:- +full:rules

1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright(c) 1999 - 2018 Intel Corporation. */
61 (((struct ixgbevf_adapter *)netdev_priv(netdev))->num_tx_queues + \
62 ((struct ixgbevf_adapter *)netdev_priv(netdev))->num_xdp_queues + \
63 ((struct ixgbevf_adapter *)netdev_priv(netdev))->num_rx_queues) * \
69 "Register test (offline)",
70 "Link test (on/offline)"
77 "legacy-rx",
89 cmd->base.autoneg = AUTONEG_DISABLE; in ixgbevf_get_link_ksettings()
90 cmd->base.port = -1; in ixgbevf_get_link_ksettings()
92 if (adapter->link_up) { in ixgbevf_get_link_ksettings()
95 switch (adapter->link_speed) { in ixgbevf_get_link_ksettings()
107 cmd->base.speed = speed; in ixgbevf_get_link_ksettings()
108 cmd->base.duplex = DUPLEX_FULL; in ixgbevf_get_link_ksettings()
110 cmd->base.speed = SPEED_UNKNOWN; in ixgbevf_get_link_ksettings()
111 cmd->base.duplex = DUPLEX_UNKNOWN; in ixgbevf_get_link_ksettings()
121 return adapter->msg_enable; in ixgbevf_get_msglevel()
128 adapter->msg_enable = data; in ixgbevf_set_msglevel()
142 struct ixgbe_hw *hw = &adapter->hw; in ixgbevf_get_regs()
150 regs->version = (1u << 24) | (hw->revision_id << 16) | hw->device_id; in ixgbevf_get_regs()
216 strscpy(drvinfo->driver, ixgbevf_driver_name, sizeof(drvinfo->driver)); in ixgbevf_get_drvinfo()
217 strscpy(drvinfo->bus_info, pci_name(adapter->pdev), in ixgbevf_get_drvinfo()
218 sizeof(drvinfo->bus_info)); in ixgbevf_get_drvinfo()
220 drvinfo->n_priv_flags = IXGBEVF_PRIV_FLAGS_STR_LEN; in ixgbevf_get_drvinfo()
230 ring->rx_max_pending = IXGBEVF_MAX_RXD; in ixgbevf_get_ringparam()
231 ring->tx_max_pending = IXGBEVF_MAX_TXD; in ixgbevf_get_ringparam()
232 ring->rx_pending = adapter->rx_ring_count; in ixgbevf_get_ringparam()
233 ring->tx_pending = adapter->tx_ring_count; in ixgbevf_get_ringparam()
246 if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending)) in ixgbevf_set_ringparam()
247 return -EINVAL; in ixgbevf_set_ringparam()
249 new_tx_count = max_t(u32, ring->tx_pending, IXGBEVF_MIN_TXD); in ixgbevf_set_ringparam()
253 new_rx_count = max_t(u32, ring->rx_pending, IXGBEVF_MIN_RXD); in ixgbevf_set_ringparam()
258 if ((new_tx_count == adapter->tx_ring_count) && in ixgbevf_set_ringparam()
259 (new_rx_count == adapter->rx_ring_count)) in ixgbevf_set_ringparam()
262 while (test_and_set_bit(__IXGBEVF_RESETTING, &adapter->state)) in ixgbevf_set_ringparam()
265 if (!netif_running(adapter->netdev)) { in ixgbevf_set_ringparam()
266 for (i = 0; i < adapter->num_tx_queues; i++) in ixgbevf_set_ringparam()
267 adapter->tx_ring[i]->count = new_tx_count; in ixgbevf_set_ringparam()
268 for (i = 0; i < adapter->num_xdp_queues; i++) in ixgbevf_set_ringparam()
269 adapter->xdp_ring[i]->count = new_tx_count; in ixgbevf_set_ringparam()
270 for (i = 0; i < adapter->num_rx_queues; i++) in ixgbevf_set_ringparam()
271 adapter->rx_ring[i]->count = new_rx_count; in ixgbevf_set_ringparam()
272 adapter->tx_ring_count = new_tx_count; in ixgbevf_set_ringparam()
273 adapter->xdp_ring_count = new_tx_count; in ixgbevf_set_ringparam()
274 adapter->rx_ring_count = new_rx_count; in ixgbevf_set_ringparam()
278 if (new_tx_count != adapter->tx_ring_count) { in ixgbevf_set_ringparam()
280 adapter->num_tx_queues + in ixgbevf_set_ringparam()
281 adapter->num_xdp_queues)); in ixgbevf_set_ringparam()
283 err = -ENOMEM; in ixgbevf_set_ringparam()
287 for (i = 0; i < adapter->num_tx_queues; i++) { in ixgbevf_set_ringparam()
289 tx_ring[i] = *adapter->tx_ring[i]; in ixgbevf_set_ringparam()
294 i--; in ixgbevf_set_ringparam()
305 for (j = 0; j < adapter->num_xdp_queues; i++, j++) { in ixgbevf_set_ringparam()
307 tx_ring[i] = *adapter->xdp_ring[j]; in ixgbevf_set_ringparam()
312 i--; in ixgbevf_set_ringparam()
324 if (new_rx_count != adapter->rx_ring_count) { in ixgbevf_set_ringparam()
326 adapter->num_rx_queues)); in ixgbevf_set_ringparam()
328 err = -ENOMEM; in ixgbevf_set_ringparam()
332 for (i = 0; i < adapter->num_rx_queues; i++) { in ixgbevf_set_ringparam()
334 rx_ring[i] = *adapter->rx_ring[i]; in ixgbevf_set_ringparam()
336 /* Clear copied XDP RX-queue info */ in ixgbevf_set_ringparam()
344 i--; in ixgbevf_set_ringparam()
361 for (i = 0; i < adapter->num_tx_queues; i++) { in ixgbevf_set_ringparam()
362 ixgbevf_free_tx_resources(adapter->tx_ring[i]); in ixgbevf_set_ringparam()
363 *adapter->tx_ring[i] = tx_ring[i]; in ixgbevf_set_ringparam()
365 adapter->tx_ring_count = new_tx_count; in ixgbevf_set_ringparam()
367 for (j = 0; j < adapter->num_xdp_queues; i++, j++) { in ixgbevf_set_ringparam()
368 ixgbevf_free_tx_resources(adapter->xdp_ring[j]); in ixgbevf_set_ringparam()
369 *adapter->xdp_ring[j] = tx_ring[i]; in ixgbevf_set_ringparam()
371 adapter->xdp_ring_count = new_tx_count; in ixgbevf_set_ringparam()
379 for (i = 0; i < adapter->num_rx_queues; i++) { in ixgbevf_set_ringparam()
380 ixgbevf_free_rx_resources(adapter->rx_ring[i]); in ixgbevf_set_ringparam()
381 *adapter->rx_ring[i] = rx_ring[i]; in ixgbevf_set_ringparam()
383 adapter->rx_ring_count = new_rx_count; in ixgbevf_set_ringparam()
396 i < adapter->num_tx_queues + adapter->num_xdp_queues; i++) in ixgbevf_set_ringparam()
401 clear_bit(__IXGBEVF_RESETTING, &adapter->state); in ixgbevf_set_ringparam()
415 return -EINVAL; in ixgbevf_get_sset_count()
452 for (j = 0; j < adapter->num_tx_queues; j++) { in ixgbevf_get_ethtool_stats()
453 ring = adapter->tx_ring[j]; in ixgbevf_get_ethtool_stats()
461 start = u64_stats_fetch_begin(&ring->syncp); in ixgbevf_get_ethtool_stats()
462 data[i] = ring->stats.packets; in ixgbevf_get_ethtool_stats()
463 data[i + 1] = ring->stats.bytes; in ixgbevf_get_ethtool_stats()
464 } while (u64_stats_fetch_retry(&ring->syncp, start)); in ixgbevf_get_ethtool_stats()
469 for (j = 0; j < adapter->num_xdp_queues; j++) { in ixgbevf_get_ethtool_stats()
470 ring = adapter->xdp_ring[j]; in ixgbevf_get_ethtool_stats()
478 start = u64_stats_fetch_begin(&ring->syncp); in ixgbevf_get_ethtool_stats()
479 data[i] = ring->stats.packets; in ixgbevf_get_ethtool_stats()
480 data[i + 1] = ring->stats.bytes; in ixgbevf_get_ethtool_stats()
481 } while (u64_stats_fetch_retry(&ring->syncp, start)); in ixgbevf_get_ethtool_stats()
486 for (j = 0; j < adapter->num_rx_queues; j++) { in ixgbevf_get_ethtool_stats()
487 ring = adapter->rx_ring[j]; in ixgbevf_get_ethtool_stats()
495 start = u64_stats_fetch_begin(&ring->syncp); in ixgbevf_get_ethtool_stats()
496 data[i] = ring->stats.packets; in ixgbevf_get_ethtool_stats()
497 data[i + 1] = ring->stats.bytes; in ixgbevf_get_ethtool_stats()
498 } while (u64_stats_fetch_retry(&ring->syncp, start)); in ixgbevf_get_ethtool_stats()
522 for (i = 0; i < adapter->num_tx_queues; i++) { in ixgbevf_get_strings()
528 for (i = 0; i < adapter->num_xdp_queues; i++) { in ixgbevf_get_strings()
534 for (i = 0; i < adapter->num_rx_queues; i++) { in ixgbevf_get_strings()
550 struct ixgbe_hw *hw = &adapter->hw; in ixgbevf_link_test()
555 hw->mac.ops.check_link(hw, &link_speed, &link_up, true); in ixgbevf_link_test()
562 /* ethtool register test data */
574 * as a single-element array) and special-case the tables.
578 * registers to be written without any read-back testing.
588 /* default VF register test */
611 if (IXGBE_REMOVED(adapter->hw.hw_addr)) { in reg_pattern_test()
616 before = ixgbevf_read_reg(&adapter->hw, reg); in reg_pattern_test()
617 ixgbe_write_reg(&adapter->hw, reg, in reg_pattern_test()
619 val = ixgbevf_read_reg(&adapter->hw, reg); in reg_pattern_test()
621 hw_dbg(&adapter->hw, in reg_pattern_test()
622 "pattern test reg %04X failed: got 0x%08X expected 0x%08X\n", in reg_pattern_test()
626 ixgbe_write_reg(&adapter->hw, reg, before); in reg_pattern_test()
629 ixgbe_write_reg(&adapter->hw, reg, before); in reg_pattern_test()
639 if (IXGBE_REMOVED(adapter->hw.hw_addr)) { in reg_set_and_check()
643 before = ixgbevf_read_reg(&adapter->hw, reg); in reg_set_and_check()
644 ixgbe_write_reg(&adapter->hw, reg, write & mask); in reg_set_and_check()
645 val = ixgbevf_read_reg(&adapter->hw, reg); in reg_set_and_check()
647 pr_err("set/check reg %04X test failed: got 0x%08X expected 0x%08X\n", in reg_set_and_check()
650 ixgbe_write_reg(&adapter->hw, reg, before); in reg_set_and_check()
653 ixgbe_write_reg(&adapter->hw, reg, before); in reg_set_and_check()
659 const struct ixgbevf_reg_test *test; in ixgbevf_reg_test() local
662 if (IXGBE_REMOVED(adapter->hw.hw_addr)) { in ixgbevf_reg_test()
663 dev_err(&adapter->pdev->dev, in ixgbevf_reg_test()
664 "Adapter removed - register test blocked\n"); in ixgbevf_reg_test()
668 test = reg_test_vf; in ixgbevf_reg_test()
670 /* Perform the register test, looping through the test table in ixgbevf_reg_test()
673 while (test->reg) { in ixgbevf_reg_test()
674 for (i = 0; i < test->array_len; i++) { in ixgbevf_reg_test()
677 switch (test->test_type) { in ixgbevf_reg_test()
680 test->reg + (i * 0x40), in ixgbevf_reg_test()
681 test->mask, in ixgbevf_reg_test()
682 test->write); in ixgbevf_reg_test()
686 test->reg + (i * 0x40), in ixgbevf_reg_test()
687 test->mask, in ixgbevf_reg_test()
688 test->write); in ixgbevf_reg_test()
691 ixgbe_write_reg(&adapter->hw, in ixgbevf_reg_test()
692 test->reg + (i * 0x40), in ixgbevf_reg_test()
693 test->write); in ixgbevf_reg_test()
697 test->reg + (i * 4), in ixgbevf_reg_test()
698 test->mask, in ixgbevf_reg_test()
699 test->write); in ixgbevf_reg_test()
703 test->reg + (i * 8), in ixgbevf_reg_test()
704 test->mask, in ixgbevf_reg_test()
705 test->write); in ixgbevf_reg_test()
709 test->reg + 4 + (i * 8), in ixgbevf_reg_test()
710 test->mask, in ixgbevf_reg_test()
711 test->write); in ixgbevf_reg_test()
717 test++; in ixgbevf_reg_test()
730 if (IXGBE_REMOVED(adapter->hw.hw_addr)) { in ixgbevf_diag_test()
731 dev_err(&adapter->pdev->dev, in ixgbevf_diag_test()
732 "Adapter removed - test blocked\n"); in ixgbevf_diag_test()
735 eth_test->flags |= ETH_TEST_FL_FAILED; in ixgbevf_diag_test()
738 set_bit(__IXGBEVF_TESTING, &adapter->state); in ixgbevf_diag_test()
739 if (eth_test->flags == ETH_TEST_FL_OFFLINE) { in ixgbevf_diag_test()
742 hw_dbg(&adapter->hw, "offline testing starting\n"); in ixgbevf_diag_test()
744 /* Link test performed before hardware reset so autoneg doesn't in ixgbevf_diag_test()
745 * interfere with test result in ixgbevf_diag_test()
748 eth_test->flags |= ETH_TEST_FL_FAILED; in ixgbevf_diag_test()
751 /* indicate we're in test mode */ in ixgbevf_diag_test()
756 hw_dbg(&adapter->hw, "register testing starting\n"); in ixgbevf_diag_test()
758 eth_test->flags |= ETH_TEST_FL_FAILED; in ixgbevf_diag_test()
762 clear_bit(__IXGBEVF_TESTING, &adapter->state); in ixgbevf_diag_test()
766 hw_dbg(&adapter->hw, "online testing starting\n"); in ixgbevf_diag_test()
769 eth_test->flags |= ETH_TEST_FL_FAILED; in ixgbevf_diag_test()
774 clear_bit(__IXGBEVF_TESTING, &adapter->state); in ixgbevf_diag_test()
797 if (adapter->rx_itr_setting <= 1) in ixgbevf_get_coalesce()
798 ec->rx_coalesce_usecs = adapter->rx_itr_setting; in ixgbevf_get_coalesce()
800 ec->rx_coalesce_usecs = adapter->rx_itr_setting >> 2; in ixgbevf_get_coalesce()
803 if (adapter->q_vector[0]->tx.count && adapter->q_vector[0]->rx.count) in ixgbevf_get_coalesce()
807 if (adapter->tx_itr_setting <= 1) in ixgbevf_get_coalesce()
808 ec->tx_coalesce_usecs = adapter->tx_itr_setting; in ixgbevf_get_coalesce()
810 ec->tx_coalesce_usecs = adapter->tx_itr_setting >> 2; in ixgbevf_get_coalesce()
826 if (adapter->q_vector[0]->tx.count && in ixgbevf_set_coalesce()
827 adapter->q_vector[0]->rx.count && ec->tx_coalesce_usecs) in ixgbevf_set_coalesce()
828 return -EINVAL; in ixgbevf_set_coalesce()
830 if ((ec->rx_coalesce_usecs > (IXGBE_MAX_EITR >> 2)) || in ixgbevf_set_coalesce()
831 (ec->tx_coalesce_usecs > (IXGBE_MAX_EITR >> 2))) in ixgbevf_set_coalesce()
832 return -EINVAL; in ixgbevf_set_coalesce()
834 if (ec->rx_coalesce_usecs > 1) in ixgbevf_set_coalesce()
835 adapter->rx_itr_setting = ec->rx_coalesce_usecs << 2; in ixgbevf_set_coalesce()
837 adapter->rx_itr_setting = ec->rx_coalesce_usecs; in ixgbevf_set_coalesce()
839 if (adapter->rx_itr_setting == 1) in ixgbevf_set_coalesce()
842 rx_itr_param = adapter->rx_itr_setting; in ixgbevf_set_coalesce()
844 if (ec->tx_coalesce_usecs > 1) in ixgbevf_set_coalesce()
845 adapter->tx_itr_setting = ec->tx_coalesce_usecs << 2; in ixgbevf_set_coalesce()
847 adapter->tx_itr_setting = ec->tx_coalesce_usecs; in ixgbevf_set_coalesce()
849 if (adapter->tx_itr_setting == 1) in ixgbevf_set_coalesce()
852 tx_itr_param = adapter->tx_itr_setting; in ixgbevf_set_coalesce()
854 num_vectors = adapter->num_msix_vectors - NON_Q_VECTORS; in ixgbevf_set_coalesce()
857 q_vector = adapter->q_vector[i]; in ixgbevf_set_coalesce()
858 if (q_vector->tx.count && !q_vector->rx.count) in ixgbevf_set_coalesce()
860 q_vector->itr = tx_itr_param; in ixgbevf_set_coalesce()
863 q_vector->itr = rx_itr_param; in ixgbevf_set_coalesce()
871 u32 *rules __always_unused) in ixgbevf_get_rxnfc()
875 switch (info->cmd) { in ixgbevf_get_rxnfc()
877 info->data = adapter->num_rx_queues; in ixgbevf_get_rxnfc()
880 hw_dbg(&adapter->hw, "Command parameters not supported\n"); in ixgbevf_get_rxnfc()
881 return -EOPNOTSUPP; in ixgbevf_get_rxnfc()
889 if (adapter->hw.mac.type >= ixgbe_mac_X550_vf) in ixgbevf_get_rxfh_indir_size()
906 rxfh->hfunc = ETH_RSS_HASH_TOP; in ixgbevf_get_rxfh()
908 if (adapter->hw.mac.type >= ixgbe_mac_X550_vf) { in ixgbevf_get_rxfh()
909 if (rxfh->key) in ixgbevf_get_rxfh()
910 memcpy(rxfh->key, adapter->rss_key, in ixgbevf_get_rxfh()
913 if (rxfh->indir) { in ixgbevf_get_rxfh()
917 rxfh->indir[i] = adapter->rss_indir_tbl[i]; in ixgbevf_get_rxfh()
921 * - just return a success avoiding taking any locks. in ixgbevf_get_rxfh()
923 if (!rxfh->indir && !rxfh->key) in ixgbevf_get_rxfh()
926 spin_lock_bh(&adapter->mbx_lock); in ixgbevf_get_rxfh()
927 if (rxfh->indir) in ixgbevf_get_rxfh()
928 err = ixgbevf_get_reta_locked(&adapter->hw, in ixgbevf_get_rxfh()
929 rxfh->indir, in ixgbevf_get_rxfh()
930 adapter->num_rx_queues); in ixgbevf_get_rxfh()
932 if (!err && rxfh->key) in ixgbevf_get_rxfh()
933 err = ixgbevf_get_rss_key_locked(&adapter->hw, in ixgbevf_get_rxfh()
934 rxfh->key); in ixgbevf_get_rxfh()
936 spin_unlock_bh(&adapter->mbx_lock); in ixgbevf_get_rxfh()
947 if (adapter->flags & IXGBEVF_FLAGS_LEGACY_RX) in ixgbevf_get_priv_flags()
956 unsigned int flags = adapter->flags; in ixgbevf_set_priv_flags()
962 if (flags != adapter->flags) { in ixgbevf_set_priv_flags()
963 adapter->flags = flags; in ixgbevf_set_priv_flags()
1001 netdev->ethtool_ops = &ixgbevf_ethtool_ops; in ixgbevf_set_ethtool_ops()