* [PATCH net-next 0/4] net: wwan: iosm: improvements
@ 2021-12-09 14:32 M Chetan Kumar
2021-12-09 14:32 ` [PATCH net-next 1/4] net: wwan: iosm: set tx queue len M Chetan Kumar
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: M Chetan Kumar @ 2021-12-09 14:32 UTC (permalink / raw)
To: netdev
Cc: kuba, davem, johannes, ryazanov.s.a, loic.poulain, krishna.c.sudi,
m.chetan.kumar, m.chetan.kumar, linuxwwan
This patch series brings in IOSM driver improvments. Patch details are
explained below.
PATCH1:
* Set tx queue len.
PATCH2:
* Release data channel if there is no active IP session.
PATCH3:
* Removes dead code.
PATCH4:
* Correct open parenthesis alignment.
M Chetan Kumar (4):
net: wwan: iosm: set tx queue len
net: wwan: iosm: release data channel in case no active IP session
net: wwan: iosm: removed unused function decl
net: wwan: iosm: correct open parenthesis alignment
drivers/net/wwan/iosm/iosm_ipc_imem.c | 1 -
drivers/net/wwan/iosm/iosm_ipc_mmio.c | 2 +-
drivers/net/wwan/iosm/iosm_ipc_mux.c | 28 ++++++++++++++--------
drivers/net/wwan/iosm/iosm_ipc_mux.h | 1 -
drivers/net/wwan/iosm/iosm_ipc_mux_codec.c | 18 +++++++-------
drivers/net/wwan/iosm/iosm_ipc_wwan.c | 3 ++-
drivers/net/wwan/iosm/iosm_ipc_wwan.h | 10 --------
7 files changed, 30 insertions(+), 33 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH net-next 1/4] net: wwan: iosm: set tx queue len 2021-12-09 14:32 [PATCH net-next 0/4] net: wwan: iosm: improvements M Chetan Kumar @ 2021-12-09 14:32 ` M Chetan Kumar 2021-12-09 14:32 ` [PATCH net-next 2/4] net: wwan: iosm: release data channel in case no active IP session M Chetan Kumar ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: M Chetan Kumar @ 2021-12-09 14:32 UTC (permalink / raw) To: netdev Cc: kuba, davem, johannes, ryazanov.s.a, loic.poulain, krishna.c.sudi, m.chetan.kumar, m.chetan.kumar, linuxwwan Set wwan net dev tx queue len to DEFAULT_TX_QUEUE_LEN. Signed-off-by: M Chetan Kumar <m.chetan.kumar@linux.intel.com> Reviewed-by: Sergey Ryazanov <ryazanov.s.a@gmail.com> --- drivers/net/wwan/iosm/iosm_ipc_wwan.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wwan/iosm/iosm_ipc_wwan.c b/drivers/net/wwan/iosm/iosm_ipc_wwan.c index b571d9cedba4..27151148c782 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_wwan.c +++ b/drivers/net/wwan/iosm/iosm_ipc_wwan.c @@ -8,6 +8,7 @@ #include <linux/if_link.h> #include <linux/rtnetlink.h> #include <linux/wwan.h> +#include <net/pkt_sched.h> #include "iosm_ipc_chnl_cfg.h" #include "iosm_ipc_imem_ops.h" @@ -159,7 +160,7 @@ static void ipc_wwan_setup(struct net_device *iosm_dev) { iosm_dev->header_ops = NULL; iosm_dev->hard_header_len = 0; - iosm_dev->priv_flags |= IFF_NO_QUEUE; + iosm_dev->tx_queue_len = DEFAULT_TX_QUEUE_LEN; iosm_dev->type = ARPHRD_NONE; iosm_dev->mtu = ETH_DATA_LEN; -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH net-next 2/4] net: wwan: iosm: release data channel in case no active IP session 2021-12-09 14:32 [PATCH net-next 0/4] net: wwan: iosm: improvements M Chetan Kumar 2021-12-09 14:32 ` [PATCH net-next 1/4] net: wwan: iosm: set tx queue len M Chetan Kumar @ 2021-12-09 14:32 ` M Chetan Kumar 2021-12-09 14:32 ` [PATCH net-next 3/4] net: wwan: iosm: removed unused function decl M Chetan Kumar ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: M Chetan Kumar @ 2021-12-09 14:32 UTC (permalink / raw) To: netdev Cc: kuba, davem, johannes, ryazanov.s.a, loic.poulain, krishna.c.sudi, m.chetan.kumar, m.chetan.kumar, linuxwwan If there is no active IP session (interface up & running) then release the data channel. Use nr_sessions variable to track current active IP sessions. If the count drops to 0, then send pipe close ctrl message to release the data channel. Signed-off-by: M Chetan Kumar <m.chetan.kumar@linux.intel.com> Reviewed-by: Sergey Ryazanov <ryazanov.s.a@gmail.com> --- drivers/net/wwan/iosm/iosm_ipc_imem.c | 1 - drivers/net/wwan/iosm/iosm_ipc_mux.c | 28 ++++++++++++++-------- drivers/net/wwan/iosm/iosm_ipc_mux.h | 1 - drivers/net/wwan/iosm/iosm_ipc_mux_codec.c | 18 +++++++------- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/drivers/net/wwan/iosm/iosm_ipc_imem.c b/drivers/net/wwan/iosm/iosm_ipc_imem.c index 2a6ddd7c6c88..0c1f496936a3 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_imem.c +++ b/drivers/net/wwan/iosm/iosm_ipc_imem.c @@ -134,7 +134,6 @@ static int ipc_imem_setup_cp_mux_cap_init(struct iosm_imem *ipc_imem, * for channel alloc function. */ cfg->instance_id = IPC_MEM_MUX_IP_CH_IF_ID; - cfg->nr_sessions = IPC_MEM_MUX_IP_SESSION_ENTRIES; return 0; } diff --git a/drivers/net/wwan/iosm/iosm_ipc_mux.c b/drivers/net/wwan/iosm/iosm_ipc_mux.c index c1c77ce699da..8e66ffe92055 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_mux.c +++ b/drivers/net/wwan/iosm/iosm_ipc_mux.c @@ -97,7 +97,7 @@ static bool ipc_mux_session_open(struct iosm_mux *ipc_mux, /* Search for a free session interface id. */ if_id = le32_to_cpu(session_open->if_id); - if (if_id < 0 || if_id >= ipc_mux->nr_sessions) { + if (if_id < 0 || if_id >= IPC_MEM_MUX_IP_SESSION_ENTRIES) { dev_err(ipc_mux->dev, "invalid interface id=%d", if_id); return false; } @@ -129,6 +129,7 @@ static bool ipc_mux_session_open(struct iosm_mux *ipc_mux, /* Save and return the assigned if id. */ session_open->if_id = cpu_to_le32(if_id); + ipc_mux->nr_sessions++; return true; } @@ -151,7 +152,7 @@ static void ipc_mux_session_close(struct iosm_mux *ipc_mux, /* Copy the session interface id. */ if_id = le32_to_cpu(msg->if_id); - if (if_id < 0 || if_id >= ipc_mux->nr_sessions) { + if (if_id < 0 || if_id >= IPC_MEM_MUX_IP_SESSION_ENTRIES) { dev_err(ipc_mux->dev, "invalid session id %d", if_id); return; } @@ -170,6 +171,7 @@ static void ipc_mux_session_close(struct iosm_mux *ipc_mux, ipc_mux->session[if_id].flow_ctl_mask = 0; ipc_mux_session_reset(ipc_mux, if_id); + ipc_mux->nr_sessions--; } static void ipc_mux_channel_close(struct iosm_mux *ipc_mux, @@ -178,7 +180,7 @@ static void ipc_mux_channel_close(struct iosm_mux *ipc_mux, int i; /* Free pending session UL packet. */ - for (i = 0; i < ipc_mux->nr_sessions; i++) + for (i = 0; i < IPC_MEM_MUX_IP_SESSION_ENTRIES; i++) if (ipc_mux->session[i].wwan) ipc_mux_session_reset(ipc_mux, i); @@ -244,6 +246,11 @@ static int ipc_mux_schedule(struct iosm_mux *ipc_mux, union mux_msg *msg) /* Release an IP session. */ ipc_mux->event = MUX_E_MUX_SESSION_CLOSE; ipc_mux_session_close(ipc_mux, &msg->session_close); + if (!ipc_mux->nr_sessions) { + ipc_mux->event = MUX_E_MUX_CHANNEL_CLOSE; + ipc_mux_channel_close(ipc_mux, + &msg->channel_close); + } ret = ipc_mux->channel_id; goto out; @@ -281,7 +288,6 @@ struct iosm_mux *ipc_mux_init(struct ipc_mux_config *mux_cfg, ipc_mux->protocol = mux_cfg->protocol; ipc_mux->ul_flow = mux_cfg->ul_flow; - ipc_mux->nr_sessions = mux_cfg->nr_sessions; ipc_mux->instance_id = mux_cfg->instance_id; ipc_mux->wwan_q_offset = 0; @@ -340,7 +346,7 @@ static void ipc_mux_restart_tx_for_all_sessions(struct iosm_mux *ipc_mux) struct mux_session *session; int idx; - for (idx = 0; idx < ipc_mux->nr_sessions; idx++) { + for (idx = 0; idx < IPC_MEM_MUX_IP_SESSION_ENTRIES; idx++) { session = &ipc_mux->session[idx]; if (!session->wwan) @@ -365,7 +371,7 @@ static void ipc_mux_stop_netif_for_all_sessions(struct iosm_mux *ipc_mux) struct mux_session *session; int idx; - for (idx = 0; idx < ipc_mux->nr_sessions; idx++) { + for (idx = 0; idx < IPC_MEM_MUX_IP_SESSION_ENTRIES; idx++) { session = &ipc_mux->session[idx]; if (!session->wwan) @@ -387,7 +393,7 @@ void ipc_mux_check_n_restart_tx(struct iosm_mux *ipc_mux) int ipc_mux_get_max_sessions(struct iosm_mux *ipc_mux) { - return ipc_mux ? ipc_mux->nr_sessions : -EFAULT; + return ipc_mux ? IPC_MEM_MUX_IP_SESSION_ENTRIES : -EFAULT; } enum ipc_mux_protocol ipc_mux_get_active_protocol(struct iosm_mux *ipc_mux) @@ -435,9 +441,11 @@ void ipc_mux_deinit(struct iosm_mux *ipc_mux) return; ipc_mux_stop_netif_for_all_sessions(ipc_mux); - channel_close = &mux_msg.channel_close; - channel_close->event = MUX_E_MUX_CHANNEL_CLOSE; - ipc_mux_schedule(ipc_mux, &mux_msg); + if (ipc_mux->state == MUX_S_ACTIVE) { + channel_close = &mux_msg.channel_close; + channel_close->event = MUX_E_MUX_CHANNEL_CLOSE; + ipc_mux_schedule(ipc_mux, &mux_msg); + } /* Empty the ADB free list. */ free_list = &ipc_mux->ul_adb.free_list; diff --git a/drivers/net/wwan/iosm/iosm_ipc_mux.h b/drivers/net/wwan/iosm/iosm_ipc_mux.h index ddd2cd0bd911..88debaa1ed31 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_mux.h +++ b/drivers/net/wwan/iosm/iosm_ipc_mux.h @@ -278,7 +278,6 @@ struct iosm_mux { struct ipc_mux_config { enum ipc_mux_protocol protocol; enum ipc_mux_ul_flow ul_flow; - int nr_sessions; int instance_id; }; diff --git a/drivers/net/wwan/iosm/iosm_ipc_mux_codec.c b/drivers/net/wwan/iosm/iosm_ipc_mux_codec.c index bdb2d32cdb6d..40fb54a0513e 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_mux_codec.c +++ b/drivers/net/wwan/iosm/iosm_ipc_mux_codec.c @@ -175,7 +175,7 @@ static int ipc_mux_dl_dlcmds_decode_process(struct iosm_mux *ipc_mux, switch (le32_to_cpu(cmdh->command_type)) { case MUX_LITE_CMD_FLOW_CTL: - if (cmdh->if_id >= ipc_mux->nr_sessions) { + if (cmdh->if_id >= IPC_MEM_MUX_IP_SESSION_ENTRIES) { dev_err(ipc_mux->dev, "if_id [%d] not valid", cmdh->if_id); return -EINVAL; /* No session interface id. */ @@ -307,13 +307,13 @@ static void ipc_mux_dl_fcth_decode(struct iosm_mux *ipc_mux, } if_id = fct->if_id; - if (if_id >= ipc_mux->nr_sessions) { + if (if_id >= IPC_MEM_MUX_IP_SESSION_ENTRIES) { dev_err(ipc_mux->dev, "not supported if_id: %d", if_id); return; } /* Is the session active ? */ - if_id = array_index_nospec(if_id, ipc_mux->nr_sessions); + if_id = array_index_nospec(if_id, IPC_MEM_MUX_IP_SESSION_ENTRIES); wwan = ipc_mux->session[if_id].wwan; if (!wwan) { dev_err(ipc_mux->dev, "session Net ID is NULL"); @@ -355,13 +355,13 @@ static void ipc_mux_dl_adgh_decode(struct iosm_mux *ipc_mux, } if_id = adgh->if_id; - if (if_id >= ipc_mux->nr_sessions) { + if (if_id >= IPC_MEM_MUX_IP_SESSION_ENTRIES) { dev_err(ipc_mux->dev, "invalid if_id while decoding %d", if_id); return; } /* Is the session active ? */ - if_id = array_index_nospec(if_id, ipc_mux->nr_sessions); + if_id = array_index_nospec(if_id, IPC_MEM_MUX_IP_SESSION_ENTRIES); wwan = ipc_mux->session[if_id].wwan; if (!wwan) { dev_err(ipc_mux->dev, "session Net ID is NULL"); @@ -538,7 +538,7 @@ static void ipc_mux_stop_tx_for_all_sessions(struct iosm_mux *ipc_mux) struct mux_session *session; int idx; - for (idx = 0; idx < ipc_mux->nr_sessions; idx++) { + for (idx = 0; idx < IPC_MEM_MUX_IP_SESSION_ENTRIES; idx++) { session = &ipc_mux->session[idx]; if (!session->wwan) @@ -563,7 +563,7 @@ static bool ipc_mux_lite_send_qlt(struct iosm_mux *ipc_mux) qlt_size = offsetof(struct ipc_mem_lite_gen_tbl, vfl) + MUX_QUEUE_LEVEL * sizeof(struct mux_lite_vfl); - for (i = 0; i < ipc_mux->nr_sessions; i++) { + for (i = 0; i < IPC_MEM_MUX_IP_SESSION_ENTRIES; i++) { session = &ipc_mux->session[i]; if (!session->wwan || session->flow_ctl_mask) @@ -777,13 +777,13 @@ bool ipc_mux_ul_data_encode(struct iosm_mux *ipc_mux) ipc_mux->adb_prep_ongoing = true; - for (i = 0; i < ipc_mux->nr_sessions; i++) { + for (i = 0; i < IPC_MEM_MUX_IP_SESSION_ENTRIES; i++) { session_id = ipc_mux->rr_next_session; session = &ipc_mux->session[session_id]; /* Go to next handle rr_next_session overflow */ ipc_mux->rr_next_session++; - if (ipc_mux->rr_next_session >= ipc_mux->nr_sessions) + if (ipc_mux->rr_next_session >= IPC_MEM_MUX_IP_SESSION_ENTRIES) ipc_mux->rr_next_session = 0; if (!session->wwan || session->flow_ctl_mask || -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH net-next 3/4] net: wwan: iosm: removed unused function decl 2021-12-09 14:32 [PATCH net-next 0/4] net: wwan: iosm: improvements M Chetan Kumar 2021-12-09 14:32 ` [PATCH net-next 1/4] net: wwan: iosm: set tx queue len M Chetan Kumar 2021-12-09 14:32 ` [PATCH net-next 2/4] net: wwan: iosm: release data channel in case no active IP session M Chetan Kumar @ 2021-12-09 14:32 ` M Chetan Kumar 2021-12-09 14:32 ` [PATCH net-next 4/4] net: wwan: iosm: correct open parenthesis alignment M Chetan Kumar 2021-12-11 5:00 ` [PATCH net-next 0/4] net: wwan: iosm: improvements patchwork-bot+netdevbpf 4 siblings, 0 replies; 6+ messages in thread From: M Chetan Kumar @ 2021-12-09 14:32 UTC (permalink / raw) To: netdev Cc: kuba, davem, johannes, ryazanov.s.a, loic.poulain, krishna.c.sudi, m.chetan.kumar, m.chetan.kumar, linuxwwan ipc_wwan_tx_flowctrl() is declared in iosm_ipc_wwan.h but is not defined. Removed the dead code. Signed-off-by: M Chetan Kumar <m.chetan.kumar@linux.intel.com> Reviewed-by: Sergey Ryazanov <ryazanov.s.a@gmail.com> --- drivers/net/wwan/iosm/iosm_ipc_wwan.h | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/drivers/net/wwan/iosm/iosm_ipc_wwan.h b/drivers/net/wwan/iosm/iosm_ipc_wwan.h index 4925f22dff0a..a23e926398ff 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_wwan.h +++ b/drivers/net/wwan/iosm/iosm_ipc_wwan.h @@ -42,14 +42,4 @@ int ipc_wwan_receive(struct iosm_wwan *ipc_wwan, struct sk_buff *skb_arg, * */ void ipc_wwan_tx_flowctrl(struct iosm_wwan *ipc_wwan, int id, bool on); - -/** - * ipc_wwan_is_tx_stopped - Checks if Tx stopped for a Interface id. - * @ipc_wwan: Pointer to wwan instance - * @id: Ipc mux channel session id - * - * Return: true if stopped, false otherwise - */ -bool ipc_wwan_is_tx_stopped(struct iosm_wwan *ipc_wwan, int id); - #endif -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH net-next 4/4] net: wwan: iosm: correct open parenthesis alignment 2021-12-09 14:32 [PATCH net-next 0/4] net: wwan: iosm: improvements M Chetan Kumar ` (2 preceding siblings ...) 2021-12-09 14:32 ` [PATCH net-next 3/4] net: wwan: iosm: removed unused function decl M Chetan Kumar @ 2021-12-09 14:32 ` M Chetan Kumar 2021-12-11 5:00 ` [PATCH net-next 0/4] net: wwan: iosm: improvements patchwork-bot+netdevbpf 4 siblings, 0 replies; 6+ messages in thread From: M Chetan Kumar @ 2021-12-09 14:32 UTC (permalink / raw) To: netdev Cc: kuba, davem, johannes, ryazanov.s.a, loic.poulain, krishna.c.sudi, m.chetan.kumar, m.chetan.kumar, linuxwwan Fix checkpatch warning in iosm_ipc_mmio.c - Alignment should match open parenthesis Signed-off-by: M Chetan Kumar <m.chetan.kumar@linux.intel.com> Reviewed-by: Sergey Ryazanov <ryazanov.s.a@gmail.com> --- drivers/net/wwan/iosm/iosm_ipc_mmio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wwan/iosm/iosm_ipc_mmio.c b/drivers/net/wwan/iosm/iosm_ipc_mmio.c index 09f94c123531..f09e5e77a2a5 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_mmio.c +++ b/drivers/net/wwan/iosm/iosm_ipc_mmio.c @@ -192,7 +192,7 @@ void ipc_mmio_config(struct iosm_mmio *ipc_mmio) iowrite64(0, ipc_mmio->base + ipc_mmio->offset.ap_win_end); iowrite64(ipc_mmio->context_info_addr, - ipc_mmio->base + ipc_mmio->offset.context_info); + ipc_mmio->base + ipc_mmio->offset.context_info); } void ipc_mmio_set_psi_addr_and_size(struct iosm_mmio *ipc_mmio, dma_addr_t addr, -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH net-next 0/4] net: wwan: iosm: improvements 2021-12-09 14:32 [PATCH net-next 0/4] net: wwan: iosm: improvements M Chetan Kumar ` (3 preceding siblings ...) 2021-12-09 14:32 ` [PATCH net-next 4/4] net: wwan: iosm: correct open parenthesis alignment M Chetan Kumar @ 2021-12-11 5:00 ` patchwork-bot+netdevbpf 4 siblings, 0 replies; 6+ messages in thread From: patchwork-bot+netdevbpf @ 2021-12-11 5:00 UTC (permalink / raw) To: M Chetan Kumar Cc: netdev, kuba, davem, johannes, ryazanov.s.a, loic.poulain, krishna.c.sudi, m.chetan.kumar, linuxwwan Hello: This series was applied to netdev/net-next.git (master) by Jakub Kicinski <kuba@kernel.org>: On Thu, 9 Dec 2021 20:02:26 +0530 you wrote: > This patch series brings in IOSM driver improvments. Patch details are > explained below. > > PATCH1: > * Set tx queue len. > PATCH2: > * Release data channel if there is no active IP session. > PATCH3: > * Removes dead code. > PATCH4: > * Correct open parenthesis alignment. > > [...] Here is the summary with links: - [net-next,1/4] net: wwan: iosm: set tx queue len https://git.kernel.org/netdev/net-next/c/5d710dc3318c - [net-next,2/4] net: wwan: iosm: release data channel in case no active IP session https://git.kernel.org/netdev/net-next/c/da633aa3163f - [net-next,3/4] net: wwan: iosm: removed unused function decl https://git.kernel.org/netdev/net-next/c/8a7ed600505a - [net-next,4/4] net: wwan: iosm: correct open parenthesis alignment https://git.kernel.org/netdev/net-next/c/dd464f145c8c You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-12-11 5:00 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-12-09 14:32 [PATCH net-next 0/4] net: wwan: iosm: improvements M Chetan Kumar 2021-12-09 14:32 ` [PATCH net-next 1/4] net: wwan: iosm: set tx queue len M Chetan Kumar 2021-12-09 14:32 ` [PATCH net-next 2/4] net: wwan: iosm: release data channel in case no active IP session M Chetan Kumar 2021-12-09 14:32 ` [PATCH net-next 3/4] net: wwan: iosm: removed unused function decl M Chetan Kumar 2021-12-09 14:32 ` [PATCH net-next 4/4] net: wwan: iosm: correct open parenthesis alignment M Chetan Kumar 2021-12-11 5:00 ` [PATCH net-next 0/4] net: wwan: iosm: improvements patchwork-bot+netdevbpf
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.