https://bugs.dpdk.org/show_bug.cgi?id=1581

            Bug ID: 1581
           Summary: net/txgbe: duplicate legs of if statement
           Product: DPDK
           Version: 24.11
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: major
          Priority: Normal
         Component: ethdev
          Assignee: dev@dpdk.org
          Reporter: step...@networkplumber.org
  Target Milestone: ---

This bug is reported here:
https://pvs-studio.com/en/blog/posts/cpp/1183/

V523 The 'then' statement is equivalent to the 'else' statement. bnx2x.c 1633

static s32 txgbe_read_phy_if(struct txgbe_hw *hw)
{
  ....
  if (!hw->phy.phy_semaphore_mask) {
    if (hw->bus.lan_id)
      hw->phy.phy_semaphore_mask = TXGBE_MNGSEM_SWPHY;
    else
      hw->phy.phy_semaphore_mask = TXGBE_MNGSEM_SWPHY;
  }
  return 0;
}

Looking at the Linux kernel driver this mask looks messed up.
In Linux driver possible values are 

ethernet/wangxun/libwx/wx_type.h:#define WX_MNG_SWFW_SYNC_SW_MB       BIT(2)
ethernet/wangxun/libwx/wx_type.h:#define WX_MNG_SWFW_SYNC_SW_FLASH    BIT(3)

But in DPDK it is always using a different value.

#define   TXGBE_MNGSEM_SWPHY       MS(0, 0x1)

Looks like with wrong mask the SW/FW sync never works!

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to