From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DEF2D37C903 for ; Thu, 30 Apr 2026 04:58:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.174 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777525139; cv=none; b=DqIywF39ZkMe79e9CfrIB3/orh6VBELmOnSwEXoZAG0qTCaAoSjuMugcLALRWD8YVeKjOB2FyTMoV0Dfz2AADZsM5q3ZSRMk/g7q2L+/PxsaZ6wCbI9HYvKDcIxv6opNI385BE2AmfrrpnJoazjZcJ1nJ/vcomFVHprD4PbBOgk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777525139; c=relaxed/simple; bh=j+GoVCuaLvqU4SwwdqaBic2hIr4Z2cYuhqEBA53VU80=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Vlqt4tMs8nHRoAxELoaNhvekc8oxrq8vdHVxLqBbPvcDwYVEp3KeGIqO92EHSU0xSnHhBD0A6/X+RaYvIQk3k8srfVJCB475rvLYJ6qcfOlwnnbmDmu/bKm7UK9n9gtFjgmnGolULr7t/g/hP9ORMz+ECFUhRb8dfI7+6RqKstk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=morsemicro.com; spf=pass smtp.mailfrom=morsemicro.com; dkim=pass (2048-bit key) header.d=morsemicro-com.20251104.gappssmtp.com header.i=@morsemicro-com.20251104.gappssmtp.com header.b=rcs/wRNt; arc=none smtp.client-ip=209.85.210.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=morsemicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=morsemicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=morsemicro-com.20251104.gappssmtp.com header.i=@morsemicro-com.20251104.gappssmtp.com header.b="rcs/wRNt" Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-82fbdd60b64so382829b3a.3 for ; Wed, 29 Apr 2026 21:58:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=morsemicro-com.20251104.gappssmtp.com; s=20251104; t=1777525137; x=1778129937; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=m3NewaIlQ3hKAP5pHFgT6EvIGsSEB7Kg1StwcRvY5eE=; b=rcs/wRNtBogqrM3k9AmJji+wCY7lxipJP5Z4ee0vE/34IV7/nh3UAaobUdRFU2oJFw 3WmtY1mJIHQJZ5cOn4nB05+LeKxTtnDEGocutT/FKx3qqFreqwbNoWU525e1c4lQgicK T3Ka5KSGnBKwR/zGIMT7No1gT9m7IR7SFDLxeCdjpcNISjCR2xqOCMrcYwESe5INQ2af G861ACENDcc8d+7HfmFTfEBLVHL0KqzGmWBccCEToWp3nYjwBw7byFdR8dN9s1RlcImG LdUIL0ZakkEqOQLFjqMX+0YAuSRSIhCsA5K0HDdip6069X8sPDgrw0u5Vy8dlTeWALy8 486Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777525137; x=1778129937; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=m3NewaIlQ3hKAP5pHFgT6EvIGsSEB7Kg1StwcRvY5eE=; b=jBUXos1g8Rq6Dv9a6TGfaGXKkdaPtjyhgrXUUJAcanzDzQzO49wKkVJQUMfV6fEtb/ 52lv3ibE8FoMWAfo263KbyXs0ooan1Y4VBlCbbPWEJOxa7UC7IG5ijI57aYZcDq+WeIm IjCB0OkkujQinhThMFzBc3roGnxUeWAMrASRgNa8TJaarmos0KkiNiVt0+H9EQO849xB OVlflQyVIJVccAku9JqpnzQJKJ0oD4FbDY2PGkpSk60IBONgdGQW1jpcPtvjM/M308bz bKPkrJp8j9uEWcBHqptlG4QGtMdpcSFfI57XMcgvW3ryZNadZqEWKMRftkgTEVGybmof LQoQ== X-Forwarded-Encrypted: i=1; AFNElJ8X20g1vniWZfQ3DTMYz5qvGWRBgUwEXDJNWlfZCkZh9ZcQJE5AnGabrH9iWoS048Br01OE+X0MtcF9k2g22A==@vger.kernel.org X-Gm-Message-State: AOJu0Yz42Q8hMJPhQNPFqOzL9rQROZCQF0zqyue/gke8q4TP/xnI+lQu dmsZemAtRMRPJsAbyBnXiO9NCX8zqbCkYjRj6vavLBcDwwjn2lQiNmxb1HLpNvxi3sQ= X-Gm-Gg: AeBDiev9TDiawkdCAsV1epw48tBXdbn2Y42oqbX+L7BEfdWtmu4dKW0nXahlE44gLKz 3lLCdMzATg1Tdu7tELwWVPh+GbCiQ7fznpGrBr5MafmFmILee1U9Ne0qN6493mdRRqYYaHUw0yM kKMMq8PxC/5majOiiqsYQmkxtWgQtPK3EU70S1wizwqCCtGA6zVuwBAQnHVJh6l2hTlrSSSeFGz NFVQ37JfAB+EWIUJlOrLJp0mpJ46ipEfqGVNwsNCtBExNAAnz4oYk6DSesVu5sz82sCHL06vGaP Xg8svjPT5N1OOneVho4V2kN1fbDFeRm9mS+XEEo7o9/TeJAOpN4AufrtulpQ6YYdHXxxVqTGfym pyZe79o1ECP0PJRv9JJG0uOLOhZykg43GE+8wlDWRPhiKqSstYHNKnHU7G7nxuOOL0pQ09hI1ct x7h3b5Em9zGRT5tUmfg2l5ItHIRHLent1JFlMiFZNhv1Iz76RHi0QBG/Xfmw9o+k5p3wLtPWkUB +xjEqq238BvEQ8pZ77RkEkV9gC/a2ZhteNEONyokw== X-Received: by 2002:a05:6a00:1397:b0:82f:9e98:1356 with SMTP id d2e1a72fcca58-834fdb37eedmr1699878b3a.20.1777525137298; Wed, 29 Apr 2026 21:58:57 -0700 (PDT) Received: from mma-H9MHD44.lan (60-242-93-14.static.tpgi.com.au. [60.242.93.14]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed80df96sm3595073b3a.54.2026.04.29.21.58.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 21:58:57 -0700 (PDT) From: Lachlan Hodges To: johannes@sipsolutions.net, Lachlan Hodges , Dan Callaghan , Arien Judge Cc: ayman.grais@morsemicro.com, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH wireless-next v2 27/31] wifi: mm81x: add yaps.h Date: Thu, 30 Apr 2026 14:55:53 +1000 Message-ID: <20260430045615.334669-28-lachlan.hodges@morsemicro.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430045615.334669-1-lachlan.hodges@morsemicro.com> References: <20260430045615.334669-1-lachlan.hodges@morsemicro.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit (Patches split per file for review, will be a single commit alongside SDIO ids once review is complete. See cover letter for more information) Signed-off-by: Lachlan Hodges --- drivers/net/wireless/morsemicro/mm81x/yaps.h | 77 ++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 drivers/net/wireless/morsemicro/mm81x/yaps.h diff --git a/drivers/net/wireless/morsemicro/mm81x/yaps.h b/drivers/net/wireless/morsemicro/mm81x/yaps.h new file mode 100644 index 000000000000..2b2bb5f6e399 --- /dev/null +++ b/drivers/net/wireless/morsemicro/mm81x/yaps.h @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2017-2026 Morse Micro + */ + +#ifndef _MM81X_YAPS_H_ +#define _MM81X_YAPS_H_ + +#include +#include +#include "skbq.h" + +#define YAPS_TX_SKBQ_MAX 4 + +struct mm81x_hif_ops; +extern const struct mm81x_hif_ops mm81x_yaps_ops; + +enum mm81x_yaps_to_chip_q { + MM81X_YAPS_TX_Q = 0, + MM81X_YAPS_CMD_Q, + MM81X_YAPS_BEACON_Q, + MM81X_YAPS_MGMT_Q, + /* Keep this last */ + MM81X_YAPS_NUM_TC_Q +}; + +struct mm81x_yaps_pkt { + struct sk_buff *skb; + enum mm81x_yaps_to_chip_q tc_queue; +}; + +struct mm81x_yaps { + struct mm81x *mors; + struct mm81x_yaps_hw_aux_data *aux_data; + const struct mm81x_yaps_ops *ops; + u8 flags; + struct { + struct mm81x_yaps_pkt *to_chip_pkts; + struct mm81x_yaps_pkt *from_chip_pkts; + } hw; + + /* Chip interface is stopping, new work should not be enqueued. */ + bool finish; + + struct mm81x_skbq data_tx_qs[YAPS_TX_SKBQ_MAX]; + struct mm81x_skbq beacon_q; + struct mm81x_skbq mgmt_q; + struct mm81x_skbq data_rx_q; + struct mm81x_skbq cmd_q; + struct mm81x_skbq cmd_resp_q; + + struct { + struct timer_list timer; + unsigned long retry_expiry; + bool is_full; + } chip_queue_full; +}; + +struct mm81x_yaps_ops { + int (*write_pkts)(struct mm81x_yaps *yaps, struct mm81x_yaps_pkt *pkts, + int num_pkts, int *num_pkts_sent); + int (*read_pkts)(struct mm81x_yaps *yaps, struct mm81x_yaps_pkt *pkts, + int num_pkts_max, int *num_pkts_received); + int (*update_status)(struct mm81x_yaps *yaps); +}; + +int mm81x_yaps_init(struct mm81x *mors); +void mm81x_yaps_show(struct mm81x_yaps *yaps, struct seq_file *file); +void mm81x_yaps_finish(struct mm81x *mors); +void mm81x_yaps_flush_tx_data(struct mm81x *mors); +void mm81x_yaps_flush_cmds(struct mm81x *mors); +void mm81x_yaps_work(struct work_struct *work); +void mm81x_yaps_stale_tx_work(struct work_struct *work); +int mm81x_yaps_get_tx_status_pending_count(struct mm81x *mors); +int mm81x_yaps_get_tx_buffered_count(struct mm81x *mors); + +#endif /* !_MM81X_YAPS_H_ */ -- 2.43.0