> -----Original Message----- > From: Intel-wired-lan <[email protected]> On Behalf Of Jacob > Keller > Sent: Wednesday, August 7, 2024 2:16 AM > To: Nguyen, Anthony L <[email protected]>; Intel Wired LAN > <[email protected]>; "netdev netdev"@vger.kernel.org > Cc: Temerkhanov, Sergey <[email protected]>; Kitszel, Przemyslaw > <[email protected]>; Kolacinski, Karol > <[email protected]>; Wierzbicki, Jacek <[email protected]> > Subject: [Intel-wired-lan] [PATCH iwl-next 4/7] ice: stop intermixing AQ > commands/responses debug dumps > > From: Przemek Kitszel <[email protected]> > > The ice_debug_cq() function is called to generate a debug log of control > queue messages both sent and received. It currently does this over a > potential total of 6 different printk invocations. > > The main logic prints over 4 calls to ice_debug(): > > 1. The metadata including opcode, flags, datalength and return value. > 2. The cookie in the descriptor. > 3. The parameter values. > 4. The address for the databuffer. > > In addition, if the descriptor has a data buffer, it can be logged with two > additional prints: > > 5. A message indicating the start of the data buffer. > 6. The actual data buffer, printed using print_hex_dump_debug. > > This can lead to trouble in the event that two different PFs are logging > messages. The messages become intermixed and it may not be possible to > determine which part of the output belongs to which control queue message. > > To fix this, it needs to be possible to unambiguously determine which > messages belong together. This is trivial for the messages that comprise the > main printing. Combine them together into a single invocation of ice_debug(). > > The message containing a hex-dump of the data buffer is a bit more > complicated. This is printed separately as part of print_hex_dump_debug. > This function takes a prefix, which is currently always set to > KBUILD_MODNAME. Extend this prefix to include the buffer address for the > databuffer, which is printed as part of the main print, and which is > guaranteed to be unique for each buffer. > > Refactor the ice_debug_array(), introducing an ice_debug_array_w_prefix(). > Build the prefix by combining KBUILD_MODNAME with the databuffer address > using snprintf(). > > These changes make it possible to unambiguously determine what data belongs > to what control queue message. > > Reported-by: Jacek Wierzbicki <[email protected]> > Signed-off-by: Przemek Kitszel <[email protected]> > Signed-off-by: Jacob Keller <[email protected]> > --- > drivers/net/ethernet/intel/ice/ice_osdep.h | 24 ++++++++++++++---------- > drivers/net/ethernet/intel/ice/ice_controlq.c | 21 +++++++++++---------- > 2 files changed, 25 insertions(+), 20 deletions(-) >
Tested-by: Pucha Himasekhar Reddy <[email protected]> (A Contingent worker at Intel)
