fbnic supports updating firmware using signed PLDM images. PLDM images are written into the flash. Flashing does not interrupt the operation of the device. Changes: V4: * Tested flashing in a 50x loop * Add devl_lock() in shutdown / quiescene paths like suspend to prevent interrupting the FW flashing process. * Add support for multiple completion messages. * Removed BSD function notation from fbnic_fw_xmit_fw_start_upgrade() * Mailbox functions no longer return cmpl_data->result * Add missing error check in fbnic_fw_xmit_fw_write * Drop setting cmpl->u.fw_update.* to 0 * Set offset and length before validation * Drop !fw check * Firmware upgrades are now process driven * Fix potential memory leak when an error is received in the mailbox when updating. * Include anti-rollback support * Drop retries when updating but increase timeout to 10s * Use NL_SET_ERR_MSG_FMT_MOD in fbnic_devlink_flash_update() * Updated cover letter, commit messages, and docs as suggested * Dropped kdocs * Patched libpldmfw to not require send_package_data or send_component_table which allowed stub functions to be dropped. * Dropped all dev_*() printks * Fixed Xmas tree variable declarations V3 - https://lore.kernel.org/lkml/20241111043058.1251632-1-lee@xxxxxxxxx/T/ * Fix comments V2 - https://lore.kernel.org/all/20241022013941.3764567-1-lee@xxxxxxxxx/ * Fixed reversed Xmas tree variable declarations * Replaced memcpy with strscpy Lee Trager (5): pldmfw: Don't require send_package_data or send_component_table to be defined eth: fbnic: Accept minimum anti-rollback version from firmware eth: fbnic: Add support for multiple concurrent completion messages eth: fbnic: Add mailbox support for PLDM updates eth: fbnic: Add devlink dev flash support .../device_drivers/ethernet/meta/fbnic.rst | 11 + drivers/net/ethernet/meta/Kconfig | 1 + drivers/net/ethernet/meta/fbnic/fbnic.h | 3 +- .../net/ethernet/meta/fbnic/fbnic_devlink.c | 260 +++++++++++++++- drivers/net/ethernet/meta/fbnic/fbnic_fw.c | 294 ++++++++++++++++-- drivers/net/ethernet/meta/fbnic/fbnic_fw.h | 53 +++- drivers/net/ethernet/meta/fbnic/fbnic_mac.c | 2 +- drivers/net/ethernet/meta/fbnic/fbnic_pci.c | 9 + lib/pldmfw/pldmfw.c | 6 + 9 files changed, 616 insertions(+), 23 deletions(-) -- 2.47.1