lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1469237395-11501-2-git-send-email-gpiccoli@linux.vnet.ibm.com>
Date:	Fri, 22 Jul 2016 22:29:55 -0300
From:	"Guilherme G. Piccoli" <gpiccoli@...ux.vnet.ibm.com>
To:	sathya.perla@...adcom.com, ajit.khaparde@...adcom.com,
	padmanabh.ratnakar@...adcom.com,
	sriharsha.basavapatna@...adcom.com, somnath.kotur@...adcom.com
Cc:	netdev@...r.kernel.org
Subject: [PATCH net-next 2/2] be2net: query temperature on probe and decrease its frequency on be_worker()

Currently the be2net driver queries the temperature from fw in regular
intervals on be_worker(), which is a delayed work procedure that
reschedules itself to run in next second. The interval for temperature
query is currently set to 64, meaning at each 64 seconds the query will
happen on be_worker().

This patch adds a temperature fw query on be_probe() and increase the
current query timeout of 64 to 128, lowering the frequency of the
temperature fw queries in be_worker() by half. In our experiments, the
probing time got increased by 8.7% (from 11.62s to 12.63s) for a
4-function Lancer adapter (PCI Vid:Did == 10df:e220).

This aims to solve the problem of userspace temperature request right after
be2net probing shows inconsistent values because be_worker() didn't perform
the first temperature query yet. Besides, this patch aims to reduce the
overhead of querying fw each minute for temperature information.

Signed-off-by: Guilherme G. Piccoli <gpiccoli@...ux.vnet.ibm.com>
---
 drivers/net/ethernet/emulex/benet/be_main.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 9f44a00..0e23ab2 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -5232,7 +5232,7 @@ static int be_drv_init(struct be_adapter *adapter)
 	adapter->tx_fc = true;
 
 	/* Must be a power of 2 or else MODULO will BUG_ON */
-	adapter->be_get_temp_freq = 64;
+	adapter->be_get_temp_freq = 128;
 
 	return 0;
 
@@ -5445,6 +5445,7 @@ static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
 							       adapter,
 							       be_hwmon_groups);
 		adapter->hwmon_info.be_on_die_temp = BE_INVALID_DIE_TEMP;
+		be_cmd_get_die_temperature(adapter);
 	}
 
 	dev_info(&pdev->dev, "%s: %s %s port %c\n", nic_name(pdev),
-- 
2.1.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ