1: ce5d358e2d9c < -: ------------ wifi: ath12k: report no AFC memory region to firmware -: ------------ > 1: dfd281eeb00f wifi: ath12k: report size 0 for unsupported target memory types 2: 6389719dee9c ! 2: d8ba77e32641 wifi: ath12k: skip unknown direct buffer ring module IDs @@ Commit message wifi: ath12k: skip unknown direct buffer ring module IDs  QCN9274 firmware WLAN.WBE.1.6-01243 advertises direct buffer rings for - module IDs 2 (CV upload) and 3 (Wi-Fi radar), one entry per radio. - ath12k_wmi_dma_ring_caps() treats any ID at or above - WMI_DIRECT_BUF_MAX as fatal: + module IDs 2 (CV upload) and 3 (Wi-Fi radar). ath12k_wmi_dma_ring_caps() + treats any ID at or above WMI_DIRECT_BUF_MAX as fatal:  ath12k_wifi7_pci 0000:06:00.0: Invalid module id 2 ath12k_wifi7_pci 0000:06:00.0: failed to parse tlv -22  It frees the capabilities stored so far and aborts the parse of the - rest of the service ready ext event. Initialisation continues only - because the service ready ext2 event completes it. + service ready ext event; initialisation continues only because the + service ready ext2 event completes it.  - An unknown ID is not an error. The firmware uses a direct buffer ring - only after the host configures it with WMI_PDEV_DMA_RING_CFG_REQ_CMDID, - and the host does that only for a feature it implements. Skip unknown - module IDs with a debug message instead. + An unknown ID is not an error: the firmware uses a ring only after the + host configures it, and the host does that only for a feature it + implements. Skip such entries with a warning, as for an unsupported + memory type in ath12k_qmi_alloc_target_mem_chunk(). Store the accepted + entries contiguously and set num_db_cap to the stored count, so that a + skipped entry cannot read as a zero-sized spectral ring.  - Store the accepted entries contiguously and set num_db_cap to the - number actually stored. ath12k_wmi_alloc_dbring_caps() zero-fills the - array, so a skipped entry left in place would read as a spectral ring - with zero sizes. No code reads db_caps today, but a future spectral - user would. - - This follows Nazar Mokrynskyi's earlier version, with the separate - count of stored entries that Jeff Johnson suggested in its review. + Based on Nazar Mokrynskyi's version, with the separate count that Jeff + Johnson suggested in its review.  Link: https://lore.kernel.org/linux-wireless/20260505172415.566328-3-nazar@mokrynskyi.com/ Suggested-by: Jeff Johnson  @@ drivers/net/wireless/ath/ath12k/wmi.c: static int ath12k_wmi_dma_ring_caps(struc  +  + /* Firmware may advertise rings for modules this driver  + * does not implement. It uses a ring only after the host -+ * configures it, so skipping the entry is safe. ++ * configures it, so skipping the entry is safe. Warn, as ++ * for an unsupported memory type, so the gap is visible.  + */  + if (module_id >= WMI_DIRECT_BUF_MAX) { -+ ath12k_dbg(ab, ATH12K_DBG_WMI, -+ "skipping dma ring caps of unknown module id %u\n", -+ module_id); ++ ath12k_warn(ab, "dma ring caps for module id %u not supported, skipping\n", ++ module_id);  + continue; }