]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
eth: fbnic: Revert "eth: fbnic: Add hardware monitoring support via HWMON interface"
authorSu Hui <suhui@nfschina.com>
Mon, 6 Jan 2025 02:36:48 +0000 (10:36 +0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 7 Jan 2025 20:13:04 +0000 (12:13 -0800)
There is a garbage value problem in fbnic_mac_get_sensor_asic(). 'fw_cmpl'
is uninitialized which makes 'sensor' and '*val' to be stored garbage
value. Revert commit d85ebade02e8 ("eth: fbnic: Add hardware monitoring
support via HWMON interface") to avoid this problem.

Fixes: d85ebade02e8 ("eth: fbnic: Add hardware monitoring support via HWMON interface")
Signed-off-by: Su Hui <suhui@nfschina.com>
Suggested-by: Jakub Kicinski <kuba@kernel.org>
Suggested-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Link: https://patch.msgid.link/20250106023647.47756-1-suhui@nfschina.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/meta/fbnic/Makefile
drivers/net/ethernet/meta/fbnic/fbnic.h
drivers/net/ethernet/meta/fbnic/fbnic_fw.h
drivers/net/ethernet/meta/fbnic/fbnic_hwmon.c [deleted file]
drivers/net/ethernet/meta/fbnic/fbnic_mac.c
drivers/net/ethernet/meta/fbnic/fbnic_mac.h
drivers/net/ethernet/meta/fbnic/fbnic_pci.c

index 239b2258ec6586552884007ff8ba0cdbfc9e03f9..ea6214ca48e70fa51189b82c414a224dee065628 100644 (file)
@@ -13,7 +13,6 @@ fbnic-y := fbnic_csr.o \
           fbnic_ethtool.o \
           fbnic_fw.o \
           fbnic_hw_stats.o \
-          fbnic_hwmon.o \
           fbnic_irq.o \
           fbnic_mac.o \
           fbnic_netdev.o \
index 706ae6104c8e2d3d0f2ce9f61effee5bd0fdf500..744eb0d954495c2737f5bc59be22aa8a7c9c895b 100644 (file)
@@ -20,7 +20,6 @@ struct fbnic_dev {
        struct device *dev;
        struct net_device *netdev;
        struct dentry *dbg_fbd;
-       struct device *hwmon;
 
        u32 __iomem *uc_addr0;
        u32 __iomem *uc_addr4;
@@ -33,7 +32,6 @@ struct fbnic_dev {
 
        struct fbnic_fw_mbx mbx[FBNIC_IPC_MBX_INDICES];
        struct fbnic_fw_cap fw_cap;
-       struct fbnic_fw_completion *cmpl_data;
        /* Lock protecting Tx Mailbox queue to prevent possible races */
        spinlock_t fw_tx_lock;
 
@@ -142,9 +140,6 @@ void fbnic_devlink_unregister(struct fbnic_dev *fbd);
 int fbnic_fw_enable_mbx(struct fbnic_dev *fbd);
 void fbnic_fw_disable_mbx(struct fbnic_dev *fbd);
 
-void fbnic_hwmon_register(struct fbnic_dev *fbd);
-void fbnic_hwmon_unregister(struct fbnic_dev *fbd);
-
 int fbnic_pcs_irq_enable(struct fbnic_dev *fbd);
 void fbnic_pcs_irq_disable(struct fbnic_dev *fbd);
 
index 7cd8841920e40e3674504816b9e7e6421c88be00..221faf8c67566c083ab250d73ef6a5151838842a 100644 (file)
@@ -44,13 +44,6 @@ struct fbnic_fw_cap {
        u8      link_fec;
 };
 
-struct fbnic_fw_completion {
-       struct {
-               s32 millivolts;
-               s32 millidegrees;
-       } tsene;
-};
-
 void fbnic_mbx_init(struct fbnic_dev *fbd);
 void fbnic_mbx_clean(struct fbnic_dev *fbd);
 void fbnic_mbx_poll(struct fbnic_dev *fbd);
diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_hwmon.c b/drivers/net/ethernet/meta/fbnic/fbnic_hwmon.c
deleted file mode 100644 (file)
index bcd1086..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/* Copyright (c) Meta Platforms, Inc. and affiliates. */
-
-#include <linux/hwmon.h>
-
-#include "fbnic.h"
-#include "fbnic_mac.h"
-
-static int fbnic_hwmon_sensor_id(enum hwmon_sensor_types type)
-{
-       if (type == hwmon_temp)
-               return FBNIC_SENSOR_TEMP;
-       if (type == hwmon_in)
-               return FBNIC_SENSOR_VOLTAGE;
-
-       return -EOPNOTSUPP;
-}
-
-static umode_t fbnic_hwmon_is_visible(const void *drvdata,
-                                     enum hwmon_sensor_types type,
-                                     u32 attr, int channel)
-{
-       if (type == hwmon_temp && attr == hwmon_temp_input)
-               return 0444;
-       if (type == hwmon_in && attr == hwmon_in_input)
-               return 0444;
-
-       return 0;
-}
-
-static int fbnic_hwmon_read(struct device *dev, enum hwmon_sensor_types type,
-                           u32 attr, int channel, long *val)
-{
-       struct fbnic_dev *fbd = dev_get_drvdata(dev);
-       const struct fbnic_mac *mac = fbd->mac;
-       int id;
-
-       id = fbnic_hwmon_sensor_id(type);
-       return id < 0 ? id : mac->get_sensor(fbd, id, val);
-}
-
-static const struct hwmon_ops fbnic_hwmon_ops = {
-       .is_visible = fbnic_hwmon_is_visible,
-       .read = fbnic_hwmon_read,
-};
-
-static const struct hwmon_channel_info *fbnic_hwmon_info[] = {
-       HWMON_CHANNEL_INFO(temp, HWMON_T_INPUT),
-       HWMON_CHANNEL_INFO(in, HWMON_I_INPUT),
-       NULL
-};
-
-static const struct hwmon_chip_info fbnic_chip_info = {
-       .ops = &fbnic_hwmon_ops,
-       .info = fbnic_hwmon_info,
-};
-
-void fbnic_hwmon_register(struct fbnic_dev *fbd)
-{
-       if (!IS_REACHABLE(CONFIG_HWMON))
-               return;
-
-       fbd->hwmon = hwmon_device_register_with_info(fbd->dev, "fbnic",
-                                                    fbd, &fbnic_chip_info,
-                                                    NULL);
-       if (IS_ERR(fbd->hwmon)) {
-               dev_notice(fbd->dev,
-                          "Failed to register hwmon device %pe\n",
-                       fbd->hwmon);
-               fbd->hwmon = NULL;
-       }
-}
-
-void fbnic_hwmon_unregister(struct fbnic_dev *fbd)
-{
-       if (!IS_REACHABLE(CONFIG_HWMON) || !fbd->hwmon)
-               return;
-
-       hwmon_device_unregister(fbd->hwmon);
-       fbd->hwmon = NULL;
-}
index 80b82ff12c4d4f721e8a11d6162caec08f42683f..7b654d0a6dac664758e08b15407bd83287ba79d0 100644 (file)
@@ -686,27 +686,6 @@ fbnic_mac_get_eth_mac_stats(struct fbnic_dev *fbd, bool reset,
                            MAC_STAT_TX_BROADCAST);
 }
 
-static int fbnic_mac_get_sensor_asic(struct fbnic_dev *fbd, int id, long *val)
-{
-       struct fbnic_fw_completion fw_cmpl;
-       s32 *sensor;
-
-       switch (id) {
-       case FBNIC_SENSOR_TEMP:
-               sensor = &fw_cmpl.tsene.millidegrees;
-               break;
-       case FBNIC_SENSOR_VOLTAGE:
-               sensor = &fw_cmpl.tsene.millivolts;
-               break;
-       default:
-               return -EINVAL;
-       }
-
-       *val = *sensor;
-
-       return 0;
-}
-
 static const struct fbnic_mac fbnic_mac_asic = {
        .init_regs = fbnic_mac_init_regs,
        .pcs_enable = fbnic_pcs_enable_asic,
@@ -716,7 +695,6 @@ static const struct fbnic_mac fbnic_mac_asic = {
        .get_eth_mac_stats = fbnic_mac_get_eth_mac_stats,
        .link_down = fbnic_mac_link_down_asic,
        .link_up = fbnic_mac_link_up_asic,
-       .get_sensor = fbnic_mac_get_sensor_asic,
 };
 
 /**
index 05a591653e09165dc59f1b6e3857f7e5e5bd92cc..476239a9d381e1db36f01dd16e2ddbf854261235 100644 (file)
@@ -47,11 +47,6 @@ enum {
 #define FBNIC_LINK_MODE_PAM4   (FBNIC_LINK_50R1)
 #define FBNIC_LINK_MODE_MASK   (FBNIC_LINK_AUTO - 1)
 
-enum fbnic_sensor_id {
-       FBNIC_SENSOR_TEMP,              /* Temp in millidegrees Centigrade */
-       FBNIC_SENSOR_VOLTAGE,           /* Voltage in millivolts */
-};
-
 /* This structure defines the interface hooks for the MAC. The MAC hooks
  * will be configured as a const struct provided with a set of function
  * pointers.
@@ -88,8 +83,6 @@ struct fbnic_mac {
 
        void (*link_down)(struct fbnic_dev *fbd);
        void (*link_up)(struct fbnic_dev *fbd, bool tx_pause, bool rx_pause);
-
-       int (*get_sensor)(struct fbnic_dev *fbd, int id, long *val);
 };
 
 int fbnic_mac_init(struct fbnic_dev *fbd);
index 32702dc4a06674e0c3daa8ef1c658def174bce84..7ccf192f13d52d92ecfae724758da40ba33cf0fd 100644 (file)
@@ -296,8 +296,6 @@ static int fbnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        /* Capture snapshot of hardware stats so netdev can calculate delta */
        fbnic_reset_hw_stats(fbd);
 
-       fbnic_hwmon_register(fbd);
-
        if (!fbd->dsn) {
                dev_warn(&pdev->dev, "Reading serial number failed\n");
                goto init_failure_mode;
@@ -360,7 +358,6 @@ static void fbnic_remove(struct pci_dev *pdev)
                fbnic_netdev_free(fbd);
        }
 
-       fbnic_hwmon_unregister(fbd);
        fbnic_dbg_fbd_exit(fbd);
        fbnic_devlink_unregister(fbd);
        fbnic_fw_disable_mbx(fbd);