cxgb4: allow reading unrecognized port module eeprom
authorRahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Tue, 23 Nov 2021 15:47:17 +0000 (21:17 +0530)
committerJakub Kicinski <kuba@kernel.org>
Thu, 25 Nov 2021 01:27:07 +0000 (17:27 -0800)
Even if firmware fails to recognize the plugged-in port module type,
allow reading port module EEPROM anyway. This helps in obtaining
necessary diagnostics information for debugging and analysis.

Signed-off-by: Manoj Malviya <manojmalviya@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Link: https://lore.kernel.org/r/1637682437-31407-1-git-send-email-rahul.lakkireddy@chelsio.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c

index 0e4ec40..6c790af 100644 (file)
@@ -1993,6 +1993,15 @@ static int get_dump_data(struct net_device *dev, struct ethtool_dump *eth_dump,
        return 0;
 }
 
+static bool cxgb4_fw_mod_type_info_available(unsigned int fw_mod_type)
+{
+       /* Read port module EEPROM as long as it is plugged-in and
+        * safe to read.
+        */
+       return (fw_mod_type != FW_PORT_MOD_TYPE_NONE &&
+               fw_mod_type != FW_PORT_MOD_TYPE_ERROR);
+}
+
 static int cxgb4_get_module_info(struct net_device *dev,
                                 struct ethtool_modinfo *modinfo)
 {
@@ -2001,7 +2010,7 @@ static int cxgb4_get_module_info(struct net_device *dev,
        struct adapter *adapter = pi->adapter;
        int ret;
 
-       if (!t4_is_inserted_mod_type(pi->mod_type))
+       if (!cxgb4_fw_mod_type_info_available(pi->mod_type))
                return -EINVAL;
 
        switch (pi->port_type) {