Create a new macro based on FIELD_PREP to generate easily readable minimum
firmware version ints. This macro will prevent the mistake from the
previous patch from happening again.

Signed-off-by: Lee Trager <l...@trager.us>
Signed-off-by: Jakub Kicinski <k...@kernel.org>
---
 drivers/net/ethernet/meta/fbnic/fbnic_csr.h | 13 +++++++------
 drivers/net/ethernet/meta/fbnic/fbnic_fw.c  | 13 ++++++-------
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_csr.h 
b/drivers/net/ethernet/meta/fbnic/fbnic_csr.h
index e2b251eddbb3..06b9c49e51a2 100644
--- a/drivers/net/ethernet/meta/fbnic/fbnic_csr.h
+++ b/drivers/net/ethernet/meta/fbnic/fbnic_csr.h
@@ -12,13 +12,14 @@
 #define DESC_BIT(nr)           BIT_ULL(nr)
 #define DESC_GENMASK(h, l)     GENMASK_ULL(h, l)

+#define FW_VER_CODE(_major, _minor, _patch, _build) (                \
+               FIELD_PREP(FBNIC_FW_CAP_RESP_VERSION_MAJOR, _major) | \
+               FIELD_PREP(FBNIC_FW_CAP_RESP_VERSION_MINOR, _minor) | \
+               FIELD_PREP(FBNIC_FW_CAP_RESP_VERSION_PATCH, _patch) | \
+               FIELD_PREP(FBNIC_FW_CAP_RESP_VERSION_BUILD, _build))
+
 /* Defines the minimum firmware version required by the driver */
-#define MIN_FW_MAJOR_VERSION    0
-#define MIN_FW_MINOR_VERSION    10
-#define MIN_FW_PATCH_VERSION    6
-#define MIN_FW_VERSION_CODE     (MIN_FW_MAJOR_VERSION * (1u << 24) + \
-                                MIN_FW_MINOR_VERSION * (1u << 16) + \
-                                MIN_FW_PATCH_VERSION * (1u << 8))
+#define MIN_FW_VER_CODE                                FW_VER_CODE(0, 10, 6, 0)

 #define PCI_DEVICE_ID_META_FBNIC_ASIC          0x0013

diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_fw.c 
b/drivers/net/ethernet/meta/fbnic/fbnic_fw.c
index cdc1e2938a64..ac7804a8a22c 100644
--- a/drivers/net/ethernet/meta/fbnic/fbnic_fw.c
+++ b/drivers/net/ethernet/meta/fbnic/fbnic_fw.c
@@ -573,16 +573,15 @@ static int fbnic_fw_parse_cap_resp(void *opaque, struct 
fbnic_tlv_msg **results)
        if (!fbd->fw_cap.running.mgmt.version)
                return -EINVAL;

-       if (fbd->fw_cap.running.mgmt.version < MIN_FW_VERSION_CODE) {
+       if (fbd->fw_cap.running.mgmt.version < MIN_FW_VER_CODE) {
+               char required_ver[FBNIC_FW_VER_MAX_SIZE];
                char running_ver[FBNIC_FW_VER_MAX_SIZE];

                fbnic_mk_fw_ver_str(fbd->fw_cap.running.mgmt.version,
                                    running_ver);
-               dev_err(fbd->dev, "Device firmware version(%s) is older than 
minimum required version(%02d.%02d.%02d)\n",
-                       running_ver,
-                       MIN_FW_MAJOR_VERSION,
-                       MIN_FW_MINOR_VERSION,
-                       MIN_FW_PATCH_VERSION);
+               fbnic_mk_fw_ver_str(MIN_FW_VER_CODE, required_ver);
+               dev_err(fbd->dev, "Device firmware version(%s) is older than 
minimum required version(%s)\n",
+                       running_ver, required_ver);
                /* Disable TX mailbox to prevent card use until firmware is
                 * updated.
                 */
@@ -1167,7 +1166,7 @@ int fbnic_mbx_poll_tx_ready(struct fbnic_dev *fbd)
         * to indicate we entered the polling state waiting for a response
         */
        for (fbd->fw_cap.running.mgmt.version = 1;
-            fbd->fw_cap.running.mgmt.version < MIN_FW_VERSION_CODE;) {
+            fbd->fw_cap.running.mgmt.version < MIN_FW_VER_CODE;) {
                if (!tx_mbx->ready)
                        err = -ENODEV;
                if (err)
--
2.47.1

Reply via email to