> -----Original Message----- > From: Intel-wired-lan <[email protected]> On Behalf Of Aaron > Esau > Sent: Sunday, March 29, 2026 9:52 PM > To: [email protected] > Cc: [email protected]; Nguyen, Anthony L <[email protected]>; > Kitszel, Przemyslaw <[email protected]>; Kubalewski, Arkadiusz > <[email protected]>; [email protected]; Aaron Esau > <[email protected]> > Subject: [Intel-wired-lan] [PATCH net] i40e: fix memcmp of pointer in > i40e_hw_set_dcb_config() > > 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]> > --- > > Found using Coccinelle/spatch with a semantic patch that matches > sizeof(ptr) and &ptr used together where ptr is a pointer type. > > drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) >
Tested-by: Arpana Arland <[email protected]> (A Contingent worker at Intel)
