aboutsummaryrefslogtreecommitdiffstats
path: root/src/drivers/net/ena.c
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2024-09-05 14:01:19 +0100
committerMichael Brown <mcb30@ipxe.org>2024-09-05 14:13:16 +0100
commitf88761ef491c16a33078e46ad9d49ebd8f36fd47 (patch)
tree05e454129f0bffb76cde13efc66b4ab0182b09f1 /src/drivers/net/ena.c
parent2b82007571dbe02b85338dc9fa85251cd5d68028 (diff)
downloadipxe-f88761ef491c16a33078e46ad9d49ebd8f36fd47.tar.gz
[ena] Change reported operating system type to "iPXE"ena
As described in commit 3b81a4e ("[ena] Provide a host information page"), we currently report an operating system type of "Linux" in order to work around broken versions of the ENA firmware that will fail to create a completion queue if we report the correct operating system type. As of September 2024, the ENA team at AWS assures us that the entire AWS fleet has been upgraded to fix this bug, and that we are now safe to report the correct operating system type value in the "type" field of struct ena_host_info. The ENA team has also clarified that at least some deployed versions of the ENA firmware still have the defect that requires us to report an operating system version number of 2 (regardless of operating system type), and so we continue to report ENA_HOST_INFO_VERSION_WTF in the "version" field of struct ena_host_info. Add an explicit warning on the previous known failure path, in case some deployed versions of the ENA firmware turn out to not have been upgraded as expected. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net/ena.c')
-rw-r--r--src/drivers/net/ena.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/drivers/net/ena.c b/src/drivers/net/ena.c
index 7ce5b9eb9..89483eae1 100644
--- a/src/drivers/net/ena.c
+++ b/src/drivers/net/ena.c
@@ -560,8 +560,11 @@ static int ena_create_cq ( struct ena_nic *ena, struct ena_cq *cq ) {
req->create_cq.address = cpu_to_le64 ( virt_to_bus ( cq->cqe.raw ) );
/* Issue request */
- if ( ( rc = ena_admin ( ena, req, &rsp ) ) != 0 )
+ if ( ( rc = ena_admin ( ena, req, &rsp ) ) != 0 ) {
+ DBGC ( ena, "ENA %p CQ%d creation failed (broken firmware?)\n",
+ ena, cq->id );
goto err_admin;
+ }
/* Parse response */
cq->id = le16_to_cpu ( rsp->create_cq.id );
@@ -1163,7 +1166,7 @@ static int ena_probe ( struct pci_device *pci ) {
}
ena->info = info;
memset ( info, 0, PAGE_SIZE );
- info->type = cpu_to_le32 ( ENA_HOST_INFO_TYPE_LINUX );
+ info->type = cpu_to_le32 ( ENA_HOST_INFO_TYPE_IPXE );
snprintf ( info->dist_str, sizeof ( info->dist_str ), "%s",
( product_name[0] ? product_name : product_short_name ) );
snprintf ( info->kernel_str, sizeof ( info->kernel_str ), "%s",