From: Yanchao Yang <yanchao.yang@mediatek.com>
To: Loic Poulain <loic.poulain@linaro.org>,
Sergey Ryazanov <ryazanov.s.a@gmail.com>,
Johannes Berg <johannes@sipsolutions.net>,
"David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
netdev ML <netdev@vger.kernel.org>,
kernel ML <linux-kernel@vger.kernel.org>
Cc: MTK ML <linux-mediatek@lists.infradead.org>,
Liang Lu <liang.lu@mediatek.com>,
Haijun Liu <haijun.liu@mediatek.com>,
Hua Yang <hua.yang@mediatek.com>,
Ting Wang <ting.wang@mediatek.com>,
Felix Chen <felix.chen@mediatek.com>,
Mingliang Xu <mingliang.xu@mediatek.com>,
Min Dong <min.dong@mediatek.com>,
Aiden Wang <aiden.wang@mediatek.com>,
Guohao Zhang <guohao.zhang@mediatek.com>,
Chris Feng <chris.feng@mediatek.com>,
Yanchao Yang <yanchao.yang@mediatek.com>,
Lambert Wang <lambert.wang@mediatek.com>,
Mingchuang Qiao <mingchuang.qiao@mediatek.com>,
Xiayu Zhang <xiayu.zhang@mediatek.com>,
Haozhe Chang <haozhe.chang@mediatek.com>,
MediaTek Corporation <linuxwwan@mediatek.com>
Subject: [PATCH net-next v1 03/13] net: wwan: tmi: Add control plane transaction layer
Date: Tue, 22 Nov 2022 19:11:42 +0800 [thread overview]
Message-ID: <20221122111152.160377-4-yanchao.yang@mediatek.com> (raw)
In-Reply-To: <20221122111152.160377-1-yanchao.yang@mediatek.com>
From: MediaTek Corporation <linuxwwan@mediatek.com>
The control plane implements TX services that reside in the transaction layer.
The services receive the packets from the port layer and call the corresponding
DMA components to transmit data to the device. Meanwhile, TX services receive
and manage the port control commands from the port layer.
The control plane implements RX services that reside in the transaction layer.
The services receive the downlink packets from the modem and transfer the
packets to the corresponding port layer interfaces.
Signed-off-by: Mingliang Xu <mingliang.xu@mediatek.com>
Signed-off-by: MediaTek Corporation <linuxwwan@mediatek.com>
---
drivers/net/wwan/mediatek/Makefile | 3 +-
drivers/net/wwan/mediatek/mtk_ctrl_plane.c | 62 ++++++++++++++++++++++
drivers/net/wwan/mediatek/mtk_ctrl_plane.h | 35 ++++++++++++
drivers/net/wwan/mediatek/mtk_dev.c | 8 +++
drivers/net/wwan/mediatek/mtk_dev.h | 1 +
5 files changed, 108 insertions(+), 1 deletion(-)
create mode 100644 drivers/net/wwan/mediatek/mtk_ctrl_plane.c
create mode 100644 drivers/net/wwan/mediatek/mtk_ctrl_plane.h
diff --git a/drivers/net/wwan/mediatek/Makefile b/drivers/net/wwan/mediatek/Makefile
index 122a791e1683..69a9fb7d5b96 100644
--- a/drivers/net/wwan/mediatek/Makefile
+++ b/drivers/net/wwan/mediatek/Makefile
@@ -5,7 +5,8 @@ MODULE_NAME := mtk_tmi
mtk_tmi-y = \
pcie/mtk_pci.o \
mtk_dev.o \
- mtk_bm.o
+ mtk_bm.o \
+ mtk_ctrl_plane.o
ccflags-y += -I$(srctree)/$(src)/
ccflags-y += -I$(srctree)/$(src)/pcie/
diff --git a/drivers/net/wwan/mediatek/mtk_ctrl_plane.c b/drivers/net/wwan/mediatek/mtk_ctrl_plane.c
new file mode 100644
index 000000000000..4c8f71223a11
--- /dev/null
+++ b/drivers/net/wwan/mediatek/mtk_ctrl_plane.c
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: BSD-3-Clause-Clear
+/*
+ * Copyright (c) 2022, MediaTek Inc.
+ */
+
+#include <linux/device.h>
+#include <linux/freezer.h>
+#include <linux/kthread.h>
+#include <linux/list.h>
+#include <linux/sched.h>
+#include <linux/wait.h>
+
+#include "mtk_bm.h"
+#include "mtk_ctrl_plane.h"
+
+int mtk_ctrl_init(struct mtk_md_dev *mdev)
+{
+ struct mtk_ctrl_blk *ctrl_blk;
+ int err;
+
+ ctrl_blk = devm_kzalloc(mdev->dev, sizeof(*ctrl_blk), GFP_KERNEL);
+ if (!ctrl_blk)
+ return -ENOMEM;
+
+ ctrl_blk->mdev = mdev;
+ mdev->ctrl_blk = ctrl_blk;
+
+ ctrl_blk->bm_pool = mtk_bm_pool_create(mdev, MTK_BUFF_SKB,
+ VQ_MTU_3_5K, BUFF_3_5K_MAX_CNT, MTK_BM_LOW_PRIO);
+ if (!ctrl_blk->bm_pool) {
+ err = -ENOMEM;
+ goto err_free_mem;
+ }
+
+ ctrl_blk->bm_pool_63K = mtk_bm_pool_create(mdev, MTK_BUFF_SKB,
+ VQ_MTU_63K, BUFF_63K_MAX_CNT, MTK_BM_LOW_PRIO);
+
+ if (!ctrl_blk->bm_pool_63K) {
+ err = -ENOMEM;
+ goto err_destroy_pool;
+ }
+
+ return 0;
+
+err_destroy_pool:
+ mtk_bm_pool_destroy(mdev, ctrl_blk->bm_pool);
+err_free_mem:
+ devm_kfree(mdev->dev, ctrl_blk);
+
+ return err;
+}
+
+int mtk_ctrl_exit(struct mtk_md_dev *mdev)
+{
+ struct mtk_ctrl_blk *ctrl_blk = mdev->ctrl_blk;
+
+ mtk_bm_pool_destroy(mdev, ctrl_blk->bm_pool);
+ mtk_bm_pool_destroy(mdev, ctrl_blk->bm_pool_63K);
+ devm_kfree(mdev->dev, ctrl_blk);
+
+ return 0;
+}
diff --git a/drivers/net/wwan/mediatek/mtk_ctrl_plane.h b/drivers/net/wwan/mediatek/mtk_ctrl_plane.h
new file mode 100644
index 000000000000..343766a2b39e
--- /dev/null
+++ b/drivers/net/wwan/mediatek/mtk_ctrl_plane.h
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: BSD-3-Clause-Clear
+ *
+ * Copyright (c) 2022, MediaTek Inc.
+ */
+
+#ifndef __MTK_CTRL_PLANE_H__
+#define __MTK_CTRL_PLANE_H__
+
+#include <linux/kref.h>
+#include <linux/skbuff.h>
+
+#include "mtk_dev.h"
+
+#define VQ_MTU_3_5K (0xE00)
+#define VQ_MTU_63K (0xFC00)
+
+#define BUFF_3_5K_MAX_CNT (100)
+#define BUFF_63K_MAX_CNT (64)
+
+struct mtk_ctrl_trans {
+ struct mtk_ctrl_blk *ctrl_blk;
+ struct mtk_md_dev *mdev;
+};
+
+struct mtk_ctrl_blk {
+ struct mtk_md_dev *mdev;
+ struct mtk_ctrl_trans *trans;
+ struct mtk_bm_pool *bm_pool;
+ struct mtk_bm_pool *bm_pool_63K;
+};
+
+int mtk_ctrl_init(struct mtk_md_dev *mdev);
+int mtk_ctrl_exit(struct mtk_md_dev *mdev);
+
+#endif /* __MTK_CTRL_PLANE_H__ */
diff --git a/drivers/net/wwan/mediatek/mtk_dev.c b/drivers/net/wwan/mediatek/mtk_dev.c
index 513aac37cb9c..96b111be206a 100644
--- a/drivers/net/wwan/mediatek/mtk_dev.c
+++ b/drivers/net/wwan/mediatek/mtk_dev.c
@@ -4,6 +4,7 @@
*/
#include "mtk_bm.h"
+#include "mtk_ctrl_plane.h"
#include "mtk_dev.h"
int mtk_dev_init(struct mtk_md_dev *mdev)
@@ -14,12 +15,19 @@ int mtk_dev_init(struct mtk_md_dev *mdev)
if (ret)
goto err_bm_init;
+ ret = mtk_ctrl_init(mdev);
+ if (ret)
+ goto err_ctrl_init;
+
+err_ctrl_init:
+ mtk_bm_exit(mdev);
err_bm_init:
return ret;
}
void mtk_dev_exit(struct mtk_md_dev *mdev)
{
+ mtk_ctrl_exit(mdev);
mtk_bm_exit(mdev);
}
diff --git a/drivers/net/wwan/mediatek/mtk_dev.h b/drivers/net/wwan/mediatek/mtk_dev.h
index 0c4b727b9c53..d6e8e9b2e52a 100644
--- a/drivers/net/wwan/mediatek/mtk_dev.h
+++ b/drivers/net/wwan/mediatek/mtk_dev.h
@@ -130,6 +130,7 @@ struct mtk_md_dev {
u32 hw_ver;
int msi_nvecs;
char dev_str[MTK_DEV_STR_LEN];
+ void *ctrl_blk;
struct mtk_bm_ctrl *bm_ctrl;
};
--
2.32.0
next prev parent reply other threads:[~2022-11-22 11:20 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-22 11:11 [PATCH net-next v1 00/13] net: wwan: tmi: PCIe driver for MediaTek M.2 modem Yanchao Yang
2022-11-22 11:11 ` [PATCH net-next v1 01/13] net: wwan: tmi: Add PCIe core Yanchao Yang
2022-11-24 11:06 ` AngeloGioacchino Del Regno
2022-12-05 12:40 ` Yanchao Yang (杨彦超)
2022-12-05 12:47 ` AngeloGioacchino Del Regno
2022-12-26 1:43 ` Yanchao Yang (杨彦超)
2022-12-04 18:52 ` Sergey Ryazanov
2022-12-07 2:33 ` Yanchao Yang (杨彦超)
2022-12-16 20:40 ` Sergey Ryazanov
2023-01-11 13:33 ` Yanchao Yang (杨彦超)
2022-11-22 11:11 ` [PATCH net-next v1 02/13] net: wwan: tmi: Add buffer management Yanchao Yang
2022-12-04 18:58 ` Sergey Ryazanov
2022-12-09 10:26 ` Yanchao Yang (杨彦超)
2022-12-16 20:17 ` Sergey Ryazanov
2023-01-11 13:37 ` Yanchao Yang (杨彦超)
2022-11-22 11:11 ` Yanchao Yang [this message]
2022-11-22 11:11 ` [PATCH net-next v1 04/13] net: wwan: tmi: Add control DMA interface Yanchao Yang
2022-11-22 11:11 ` [PATCH net-next v1 05/13] net: wwan: tmi: Add control port Yanchao Yang
2022-11-22 11:11 ` [PATCH net-next v1 06/13] net: wwan: tmi: Add FSM thread Yanchao Yang
2022-11-22 11:11 ` [PATCH net-next v1 07/13] net: wwan: tmi: Add AT & MBIM WWAN ports Yanchao Yang
2022-11-22 11:11 ` [PATCH net-next v1 08/13] net: wwan: tmi: Introduce data plane hardware interface Yanchao Yang
2022-11-22 11:11 ` [PATCH net-next v1 09/13] net: wwan: tmi: Add data plane transaction layer Yanchao Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221122111152.160377-4-yanchao.yang@mediatek.com \
--to=yanchao.yang@mediatek.com \
--cc=aiden.wang@mediatek.com \
--cc=chris.feng@mediatek.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=felix.chen@mediatek.com \
--cc=guohao.zhang@mediatek.com \
--cc=haijun.liu@mediatek.com \
--cc=haozhe.chang@mediatek.com \
--cc=hua.yang@mediatek.com \
--cc=johannes@sipsolutions.net \
--cc=kuba@kernel.org \
--cc=lambert.wang@mediatek.com \
--cc=liang.lu@mediatek.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linuxwwan@mediatek.com \
--cc=loic.poulain@linaro.org \
--cc=min.dong@mediatek.com \
--cc=mingchuang.qiao@mediatek.com \
--cc=mingliang.xu@mediatek.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=ryazanov.s.a@gmail.com \
--cc=ting.wang@mediatek.com \
--cc=xiayu.zhang@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®