| From f16fc8bdea97d8de8fcff22cc6c111d426650b3a Mon Sep 17 00:00:00 2001 |
| From: Igor Russkikh <Igor.Russkikh@aquantia.com> |
| Date: Fri, 11 Oct 2019 13:45:19 +0000 |
| Subject: [PATCH] net: aquantia: temperature retrieval fix |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit 06b0d7fe7e5ff3ba4c7e265ef41135e8bcc232bb upstream. |
| |
| Chip temperature is a two byte word, colocated internally with cable |
| length data. We do all readouts from HW memory by dwords, thus |
| we should clear extra high bytes, otherwise temperature output |
| gets weird as soon as we attach a cable to the NIC. |
| |
| Fixes: 8f8940118654 ("net: aquantia: add infrastructure to readout chip temperature") |
| Tested-by: Holger Hoffstรคtte <holger@applied-asynchrony.com> |
| Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils_fw2x.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils_fw2x.c |
| index da726489e3c8..7bc51f8d6f2f 100644 |
| --- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils_fw2x.c |
| +++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils_fw2x.c |
| @@ -337,7 +337,7 @@ static int aq_fw2x_get_phy_temp(struct aq_hw_s *self, int *temp) |
| /* Convert PHY temperature from 1/256 degree Celsius |
| * to 1/1000 degree Celsius. |
| */ |
| - *temp = temp_res * 1000 / 256; |
| + *temp = (temp_res & 0xFFFF) * 1000 / 256; |
| |
| return 0; |
| } |
| -- |
| 2.7.4 |
| |