CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2026/05/14 10:17:21
Modified files:
sys/dev/pci : if_qwz_pci.c
sys/dev/ic : qwz.c qwzreg.h qwzvar.h
Log message:
Get qwz(4) in to an initial working state (assoc/rx/tx).
Bug fixes (HAL/WMI drift vs. current ath12k):
1. RX_BE_PADDING0_BYTES 80 -> 8 -- fixes RX-descriptor misalignment
(dlpager crash, Hexagon 0x23).
2. Send WMI_VDEV_PARAM_SET_HEMU_MODE = 0 before peer_assoc_cmd --
clears stale HE-MU state.
3. volatile cast on dst-ring hp_addr read in
qwz_hal_srng_access_begin() -- matches SRC branch, fixes ARM64 hoist.
4. BUFFER_ADDR_INFO1: RET_BUF_MGR GENMASK(10,8) -> (11,8),
SW_COOKIE (31,11) -> (31,12).
5. wbm2sw_cc_enable = WBM2SW3_EN only -- keeps HW Cookie Convert off
the TX rings.
6. HTT_TX_WBM_COMP_INFO0_STATUS (12,9) -> (16,13); drop bogus
INFO2_SW_PEER_ID/VALID; add INFO1_REINJECT_REASON,
INFO1_EXCEPTION_FRAME, INFO2_ACK_RSSI.
7. REO/TX_RATE_STATS GENMASK shifts
(HAL_REO_UPD_RX_QUEUE_INFO2_*, HAL_RX_REO_QUEUE_INFO0/1_* +2 bits;
HAL_TX_RATE_STATS_INFO0_* +1 bit) + new
HTT_RX_RING_SELECTION_CFG_CMD_INFO0/1.
8. qwz_dp_tx_get_tid() returns HAL_DESC_REO_NON_QOS_TID for non-QoS
frames.
X1E80100 workaround:
- Multi-MSI ext vectors don't deliver: drive qwz_dp_service_srng() for
all ext_irq groups from qwz_ce_intr().
Supporting changes to reach the working state:
- MHI boot: wait for SBL EE + M0 before BHIE/AMSS in
qwz_mhi_fw_load_handler().
- Capture single_chip_mlo_support and qmi_phy_cap_num_phy from QMI
phy_cap.
- Send WMI_TAG_MLO_{PEER,VDEV}_CREATE_PARAMS TLVs on peer/vdev create.
- Peer assoc: trailing EHT TLVs; is_wme_set=1, qos_flag=1,
peer_listen_intval=1.
- RX TLV offset_valid=1 with packet/header/mpdu offsets for WCN7850.
- Propagate AST hash/index from peer_map into arvif.
- hal_desc_sz returns sizeof(struct hal_rx_desc_wcn7850).
- Per-frame encrypt_type (CCMP-128 / TKIP-MIC) in qwz_dp_tx().
- Silent drop filter for stray RX (addr1 not us, 84:e1 prefix).
Tested so far on the Samsung Galaxy Book4 Edge.
ok deraadt@