When determining NIC's WOL and NCSI capability via sub-system ID, flag matching must be exact, not inclusive. Misidentifying WOL/NCSI capability will skip PHY configuration, causing link-up failure.
Fixes: 5f1ab0d529fc ("net/ngbe: add WOL and NCSI capability") Cc: sta...@dpdk.org Signed-off-by: Zaiyu Wang <zaiyuw...@trustnetic.com> --- drivers/net/ngbe/base/ngbe_hw.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/ngbe/base/ngbe_hw.c b/drivers/net/ngbe/base/ngbe_hw.c index e29a1946e5..6688ae6a31 100644 --- a/drivers/net/ngbe/base/ngbe_hw.c +++ b/drivers/net/ngbe/base/ngbe_hw.c @@ -1922,6 +1922,8 @@ void ngbe_read_efuse(struct ngbe_hw *hw) void ngbe_map_device_id(struct ngbe_hw *hw) { u16 oem = hw->sub_system_id & NGBE_OEM_MASK; + u16 ncsi = hw->sub_system_id & NGBE_NCSI_SUP_MASK; + u16 wol = hw->sub_system_id & NGBE_WOL_SUP_MASK; hw->is_pf = true; @@ -1982,9 +1984,9 @@ void ngbe_map_device_id(struct ngbe_hw *hw) oem == NGBE_LY_YT8521S_SFP) hw->gpio_ctl = true; - hw->wol_enabled = (hw->sub_system_id & NGBE_WOL_SUP_MASK) ? true : false; - hw->ncsi_enabled = (hw->sub_system_id & NGBE_NCSI_SUP_MASK || - hw->sub_system_id & NGBE_OCP_CARD) ? true : false; + hw->wol_enabled = (wol == NGBE_WOL_SUP_MASK) ? true : false; + hw->ncsi_enabled = (ncsi == NGBE_NCSI_SUP_MASK || + oem == NGBE_OCP_CARD) ? true : false; } /** -- 2.21.0.windows.1