Skip to content

Commit e329a8b

Browse files
Ivan Vecerakuba-moo
authored andcommitted
i40e: Use helpers to check running FW and AQ API versions
Use new helpers to check versions of running FW and provided AQ API to make the code more readable. Signed-off-by: Ivan Vecera <[email protected]> Tested-by: Pucha Himasekhar Reddy <[email protected]> (A Contingent worker at Intel) Signed-off-by: Tony Nguyen <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent cf488e1 commit e329a8b

File tree

4 files changed

+36
-58
lines changed

4 files changed

+36
-58
lines changed

drivers/net/ethernet/intel/i40e/i40e_adminq.c

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -508,42 +508,35 @@ static int i40e_shutdown_arq(struct i40e_hw *hw)
508508
**/
509509
static void i40e_set_hw_caps(struct i40e_hw *hw)
510510
{
511-
struct i40e_adminq_info *aq = &hw->aq;
512-
513511
bitmap_zero(hw->caps, I40E_HW_CAPS_NBITS);
514512

515513
switch (hw->mac.type) {
516514
case I40E_MAC_XL710:
517-
if (aq->api_maj_ver > 1 ||
518-
(aq->api_maj_ver == 1 &&
519-
aq->api_min_ver >= I40E_MINOR_VER_GET_LINK_INFO_XL710)) {
515+
if (i40e_is_aq_api_ver_ge(hw, 1,
516+
I40E_MINOR_VER_GET_LINK_INFO_XL710)) {
520517
set_bit(I40E_HW_CAP_AQ_PHY_ACCESS, hw->caps);
521518
set_bit(I40E_HW_CAP_FW_LLDP_STOPPABLE, hw->caps);
522519
/* The ability to RX (not drop) 802.1ad frames */
523520
set_bit(I40E_HW_CAP_802_1AD, hw->caps);
524521
}
525-
if ((aq->api_maj_ver == 1 && aq->api_min_ver > 4) ||
526-
aq->api_maj_ver > 1) {
522+
if (i40e_is_aq_api_ver_ge(hw, 1, 5)) {
527523
/* Supported in FW API version higher than 1.4 */
528524
set_bit(I40E_HW_CAP_GENEVE_OFFLOAD, hw->caps);
529525
}
530-
if ((aq->fw_maj_ver == 4 && aq->fw_min_ver < 33) ||
531-
aq->fw_maj_ver < 4) {
526+
if (i40e_is_fw_ver_lt(hw, 4, 33)) {
532527
set_bit(I40E_HW_CAP_RESTART_AUTONEG, hw->caps);
533528
/* No DCB support for FW < v4.33 */
534529
set_bit(I40E_HW_CAP_NO_DCB_SUPPORT, hw->caps);
535530
}
536-
if ((aq->fw_maj_ver == 4 && aq->fw_min_ver < 3) ||
537-
aq->fw_maj_ver < 4) {
531+
if (i40e_is_fw_ver_lt(hw, 4, 3)) {
538532
/* Disable FW LLDP if FW < v4.3 */
539533
set_bit(I40E_HW_CAP_STOP_FW_LLDP, hw->caps);
540534
}
541-
if ((aq->fw_maj_ver == 4 && aq->fw_min_ver >= 40) ||
542-
aq->fw_maj_ver >= 5) {
543-
/* Use the FW Set LLDP MIB API if FW > v4.40 */
535+
if (i40e_is_fw_ver_ge(hw, 4, 40)) {
536+
/* Use the FW Set LLDP MIB API if FW >= v4.40 */
544537
set_bit(I40E_HW_CAP_USE_SET_LLDP_MIB, hw->caps);
545538
}
546-
if (aq->fw_maj_ver >= 6) {
539+
if (i40e_is_fw_ver_ge(hw, 6, 0)) {
547540
/* Enable PTP L4 if FW > v6.0 */
548541
set_bit(I40E_HW_CAP_PTP_L4, hw->caps);
549542
}
@@ -569,19 +562,16 @@ static void i40e_set_hw_caps(struct i40e_hw *hw)
569562
clear_bit(I40E_HW_CAP_ATR_EVICT, hw->caps);
570563
}
571564

572-
if (aq->api_maj_ver > 1 ||
573-
(aq->api_maj_ver == 1 &&
574-
aq->api_min_ver >= I40E_MINOR_VER_FW_LLDP_STOPPABLE_X722))
565+
if (i40e_is_aq_api_ver_ge(hw, 1,
566+
I40E_MINOR_VER_FW_LLDP_STOPPABLE_X722))
575567
set_bit(I40E_HW_CAP_FW_LLDP_STOPPABLE, hw->caps);
576568

577-
if (aq->api_maj_ver > 1 ||
578-
(aq->api_maj_ver == 1 &&
579-
aq->api_min_ver >= I40E_MINOR_VER_GET_LINK_INFO_X722))
569+
if (i40e_is_aq_api_ver_ge(hw, 1,
570+
I40E_MINOR_VER_GET_LINK_INFO_X722))
580571
set_bit(I40E_HW_CAP_AQ_PHY_ACCESS, hw->caps);
581572

582-
if (aq->api_maj_ver > 1 ||
583-
(aq->api_maj_ver == 1 &&
584-
aq->api_min_ver >= I40E_MINOR_VER_FW_REQUEST_FEC_X722))
573+
if (i40e_is_aq_api_ver_ge(hw, 1,
574+
I40E_MINOR_VER_FW_REQUEST_FEC_X722))
585575
set_bit(I40E_HW_CAP_X722_FEC_REQUEST, hw->caps);
586576

587577
fallthrough;
@@ -590,25 +580,17 @@ static void i40e_set_hw_caps(struct i40e_hw *hw)
590580
}
591581

592582
/* Newer versions of firmware require lock when reading the NVM */
593-
if (aq->api_maj_ver > 1 ||
594-
(aq->api_maj_ver == 1 &&
595-
aq->api_min_ver >= 5))
583+
if (i40e_is_aq_api_ver_ge(hw, 1, 5))
596584
set_bit(I40E_HW_CAP_NVM_READ_REQUIRES_LOCK, hw->caps);
597585

598586
/* The ability to RX (not drop) 802.1ad frames was added in API 1.7 */
599-
if (aq->api_maj_ver > 1 ||
600-
(aq->api_maj_ver == 1 &&
601-
aq->api_min_ver >= 7))
587+
if (i40e_is_aq_api_ver_ge(hw, 1, 7))
602588
set_bit(I40E_HW_CAP_802_1AD, hw->caps);
603589

604-
if (aq->api_maj_ver > 1 ||
605-
(aq->api_maj_ver == 1 &&
606-
aq->api_min_ver >= 8))
590+
if (i40e_is_aq_api_ver_ge(hw, 1, 8))
607591
set_bit(I40E_HW_CAP_FW_LLDP_PERSISTENT, hw->caps);
608592

609-
if (aq->api_maj_ver > 1 ||
610-
(aq->api_maj_ver == 1 &&
611-
aq->api_min_ver >= 9))
593+
if (i40e_is_aq_api_ver_ge(hw, 1, 9))
612594
set_bit(I40E_HW_CAP_AQ_PHY_ACCESS_EXTENDED, hw->caps);
613595
}
614596

@@ -694,7 +676,7 @@ int i40e_init_adminq(struct i40e_hw *hw)
694676
&oem_lo);
695677
hw->nvm.oem_ver = ((u32)oem_hi << 16) | oem_lo;
696678

697-
if (hw->aq.api_maj_ver > I40E_FW_API_VERSION_MAJOR) {
679+
if (i40e_is_aq_api_ver_ge(hw, I40E_FW_API_VERSION_MAJOR + 1, 0)) {
698680
ret_code = -EIO;
699681
goto init_adminq_free_arq;
700682
}

drivers/net/ethernet/intel/i40e/i40e_common.c

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1374,8 +1374,8 @@ i40e_aq_get_phy_capabilities(struct i40e_hw *hw,
13741374

13751375
if (report_init) {
13761376
if (hw->mac.type == I40E_MAC_XL710 &&
1377-
hw->aq.api_maj_ver == I40E_FW_API_VERSION_MAJOR &&
1378-
hw->aq.api_min_ver >= I40E_MINOR_VER_GET_LINK_INFO_XL710) {
1377+
i40e_is_aq_api_ver_ge(hw, I40E_FW_API_VERSION_MAJOR,
1378+
I40E_MINOR_VER_GET_LINK_INFO_XL710)) {
13791379
status = i40e_aq_get_link_info(hw, true, NULL, NULL);
13801380
} else {
13811381
hw->phy.phy_types = le32_to_cpu(abilities->phy_type);
@@ -1645,9 +1645,8 @@ int i40e_aq_get_link_info(struct i40e_hw *hw,
16451645
else
16461646
hw_link_info->lse_enable = false;
16471647

1648-
if ((hw->mac.type == I40E_MAC_XL710) &&
1649-
(hw->aq.fw_maj_ver < 4 || (hw->aq.fw_maj_ver == 4 &&
1650-
hw->aq.fw_min_ver < 40)) && hw_link_info->phy_type == 0xE)
1648+
if (hw->mac.type == I40E_MAC_XL710 && i40e_is_fw_ver_lt(hw, 4, 40) &&
1649+
hw_link_info->phy_type == 0xE)
16511650
hw_link_info->phy_type = I40E_PHY_TYPE_10GBASE_SFPP_CU;
16521651

16531652
if (test_bit(I40E_HW_CAP_AQ_PHY_ACCESS, hw->caps) &&
@@ -5223,14 +5222,14 @@ int i40e_aq_rx_ctl_read_register(struct i40e_hw *hw,
52235222
**/
52245223
u32 i40e_read_rx_ctl(struct i40e_hw *hw, u32 reg_addr)
52255224
{
5226-
bool use_register;
5225+
bool use_register = false;
52275226
int status = 0;
52285227
int retry = 5;
52295228
u32 val = 0;
52305229

5231-
use_register = (((hw->aq.api_maj_ver == 1) &&
5232-
(hw->aq.api_min_ver < 5)) ||
5233-
(hw->mac.type == I40E_MAC_X722));
5230+
if (i40e_is_aq_api_ver_lt(hw, 1, 5) || hw->mac.type == I40E_MAC_X722)
5231+
use_register = true;
5232+
52345233
if (!use_register) {
52355234
do_retry:
52365235
status = i40e_aq_rx_ctl_read_register(hw, reg_addr, &val, NULL);
@@ -5285,13 +5284,13 @@ int i40e_aq_rx_ctl_write_register(struct i40e_hw *hw,
52855284
**/
52865285
void i40e_write_rx_ctl(struct i40e_hw *hw, u32 reg_addr, u32 reg_val)
52875286
{
5288-
bool use_register;
5287+
bool use_register = false;
52895288
int status = 0;
52905289
int retry = 5;
52915290

5292-
use_register = (((hw->aq.api_maj_ver == 1) &&
5293-
(hw->aq.api_min_ver < 5)) ||
5294-
(hw->mac.type == I40E_MAC_X722));
5291+
if (i40e_is_aq_api_ver_lt(hw, 1, 5) || hw->mac.type == I40E_MAC_X722)
5292+
use_register = true;
5293+
52955294
if (!use_register) {
52965295
do_retry:
52975296
status = i40e_aq_rx_ctl_write_register(hw, reg_addr,

drivers/net/ethernet/intel/i40e/i40e_dcb.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -804,14 +804,11 @@ int i40e_get_dcb_config(struct i40e_hw *hw)
804804
int ret = 0;
805805

806806
/* If Firmware version < v4.33 on X710/XL710, IEEE only */
807-
if ((hw->mac.type == I40E_MAC_XL710) &&
808-
(((hw->aq.fw_maj_ver == 4) && (hw->aq.fw_min_ver < 33)) ||
809-
(hw->aq.fw_maj_ver < 4)))
807+
if (hw->mac.type == I40E_MAC_XL710 && i40e_is_fw_ver_lt(hw, 4, 33))
810808
return i40e_get_ieee_dcb_config(hw);
811809

812810
/* If Firmware version == v4.33 on X710/XL710, use old CEE struct */
813-
if ((hw->mac.type == I40E_MAC_XL710) &&
814-
((hw->aq.fw_maj_ver == 4) && (hw->aq.fw_min_ver == 33))) {
811+
if (hw->mac.type == I40E_MAC_XL710 && i40e_is_fw_ver_eq(hw, 4, 33)) {
815812
ret = i40e_aq_get_cee_dcb_config(hw, &cee_v1_cfg,
816813
sizeof(cee_v1_cfg), NULL);
817814
if (!ret) {

drivers/net/ethernet/intel/i40e/i40e_main.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15819,15 +15819,15 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1581915819
hw->vendor_id, hw->device_id, hw->subsystem_vendor_id,
1582015820
hw->subsystem_device_id);
1582115821

15822-
if (hw->aq.api_maj_ver == I40E_FW_API_VERSION_MAJOR &&
15823-
hw->aq.api_min_ver > I40E_FW_MINOR_VERSION(hw))
15822+
if (i40e_is_aq_api_ver_ge(hw, I40E_FW_API_VERSION_MAJOR,
15823+
I40E_FW_MINOR_VERSION(hw) + 1))
1582415824
dev_dbg(&pdev->dev,
1582515825
"The driver for the device detected a newer version of the NVM image v%u.%u than v%u.%u.\n",
1582615826
hw->aq.api_maj_ver,
1582715827
hw->aq.api_min_ver,
1582815828
I40E_FW_API_VERSION_MAJOR,
1582915829
I40E_FW_MINOR_VERSION(hw));
15830-
else if (hw->aq.api_maj_ver == 1 && hw->aq.api_min_ver < 4)
15830+
else if (i40e_is_aq_api_ver_lt(hw, 1, 4))
1583115831
dev_info(&pdev->dev,
1583215832
"The driver for the device detected an older version of the NVM image v%u.%u than expected v%u.%u. Please update the NVM image.\n",
1583315833
hw->aq.api_maj_ver,

0 commit comments

Comments
 (0)