[PATCH net 08/10] i40e: fix memcmp of pointer in i40e_hw_set_dcb_config()
Tony Nguyen <[email protected]> Tue, 4 Aug 2026 15:22:01 -0700
| Newsgroups | org.kernel.vger.stable,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
From: Aaron Esau <[email protected]> In i40e_hw_set_dcb_config(), both new_cfg and old_cfg are pointers to struct i40e_dcbx_config, so sizeof(new_cfg) evaluates to the size of a pointer (8 bytes on 64-bit) rather than the size of the struct. Likewise, &new_cfg and &old_cfg are the addresses of the pointer variables on the stack, not the addresses of the actual config structs. As a result, the memcmp never compares the actual configuration data, meaning the "no change needed" early return never fires. Every call to this function performs a full DCB reconfiguration (quiescing all VSIs, reprogramming via "Set LLDP MIB" AQC, and reconfiguring VEB/VSIs) even when the configuration has not changed. Fix this by comparing the structs themselves rather than the pointers. Fixes: 4b208eaa8078 ("i40e: Add init and default config of software based DCB") Cc: [email protected] Signed-off-by: Aaron Esau <[email protected]> Reviewed-by: Aleksandr Loktionov <[email protected]> Tested-by: Arpana Arland <[email protected]> (A Contingent worker at Intel) Signed-off-by: Tony Nguyen <[email protected]> --- drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index a04683004a56..0ac1be6289f6 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -6907,7 +6907,7 @@ static int i40e_hw_set_dcb_config(struct i40e_pf *pf, int ret; /* Check if need reconfiguration */ - if (!memcmp(&new_cfg, &old_cfg, sizeof(new_cfg))) { + if (!memcmp(new_cfg, old_cfg, sizeof(*new_cfg))) { dev_dbg(&pf->pdev->dev, "No Change in DCB Config required.\n"); return 0; } -- 2.47.1