Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

qed*: Don't reset statistics on inner reload

Several user APIs can cause driver to perform an inner-reload.
Currently, doing this would cause the HW/FW statistics of the
adapter to reset, which isn't the expected behavior [statistics
should only reset on explicit unloads].

Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Yuval Mintz and committed by
David S. Miller
a0d26d5a 32643988

+7 -4
+2 -1
drivers/net/ethernet/qlogic/qed/qed_l2.c
··· 1745 1745 start.vport_id, start.mtu); 1746 1746 } 1747 1747 1748 - qed_reset_vport_stats(cdev); 1748 + if (params->clear_stats) 1749 + qed_reset_vport_stats(cdev); 1749 1750 1750 1751 return 0; 1751 1752 }
+4 -3
drivers/net/ethernet/qlogic/qede/qede_main.c
··· 3231 3231 return rc; 3232 3232 } 3233 3233 3234 - static int qede_start_queues(struct qede_dev *edev) 3234 + static int qede_start_queues(struct qede_dev *edev, bool clear_stats) 3235 3235 { 3236 3236 int rc, tc, i; 3237 3237 int vlan_removal_en = 1; ··· 3462 3462 3463 3463 enum qede_load_mode { 3464 3464 QEDE_LOAD_NORMAL, 3465 + QEDE_LOAD_RELOAD, 3465 3466 }; 3466 3467 3467 3468 static int qede_load(struct qede_dev *edev, enum qede_load_mode mode) ··· 3501 3500 goto err3; 3502 3501 DP_INFO(edev, "Setup IRQs succeeded\n"); 3503 3502 3504 - rc = qede_start_queues(edev); 3503 + rc = qede_start_queues(edev, mode != QEDE_LOAD_RELOAD); 3505 3504 if (rc) 3506 3505 goto err4; 3507 3506 DP_INFO(edev, "Start VPORT, RXQ and TXQ succeeded\n"); ··· 3556 3555 if (func) 3557 3556 func(edev, args); 3558 3557 3559 - qede_load(edev, QEDE_LOAD_NORMAL); 3558 + qede_load(edev, QEDE_LOAD_RELOAD); 3560 3559 3561 3560 mutex_lock(&edev->qede_lock); 3562 3561 qede_config_rx_mode(edev->ndev);
+1
include/linux/qed/qed_eth_if.h
··· 49 49 bool drop_ttl0; 50 50 u8 vport_id; 51 51 u16 mtu; 52 + bool clear_stats; 52 53 }; 53 54 54 55 struct qed_stop_rxq_params {