]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: txgbe: fix firmware version check
authorJiawen Wu <jiawenwu@trustnetic.com>
Wed, 22 Apr 2026 07:18:37 +0000 (15:18 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 23 Apr 2026 19:02:59 +0000 (12:02 -0700)
For the device SP, the firmware version is a 32-bit value where the
lower 20 bits represent the base version number. And the customized
firmware version populates the upper 12 bits with a specific
identification number.

For other devices AML 25G and 40G, the upper 12 bits of the firmware
version is always non-zero, and they have other naming conventions.

Only SP devices need to check this to tell if XPCS will work properly.
So the judgement of MAC type is added here.

And the original logic compared the entire 32-bit value against 0x20010,
which caused the outdated base firmwares bypass the version check
without a warning. Apply a mask 0xfffff to isolate the lower 20 bits for
an accurate base version comparison.

Fixes: ab928c24e6cd ("net: txgbe: add FW version warning")
Cc: stable@vger.kernel.org
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/C787AA5C07598B13+20260422071837.372731-1-jiawenwu@trustnetic.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c

index ec32a5f422f2d83571445576e8f7ff81906a7b52..8b7c3753bb6accd6f60dd6db3677d6bbcc949f5b 100644 (file)
@@ -864,7 +864,8 @@ static int txgbe_probe(struct pci_dev *pdev,
                         "0x%08x", etrack_id);
        }
 
-       if (etrack_id < 0x20010)
+       if (wx->mac.type == wx_mac_sp &&
+           ((etrack_id & 0xfffff) < 0x20010))
                dev_warn(&pdev->dev, "Please upgrade the firmware to 0x20010 or above.\n");
 
        err = txgbe_test_hostif(wx);