net: wwan: iosm: fix invalid mux header type
authorM Chetan Kumar <m.chetan.kumar@linux.intel.com>
Mon, 7 Nov 2022 07:35:13 +0000 (13:05 +0530)
committerDavid S. Miller <davem@davemloft.net>
Wed, 9 Nov 2022 14:00:25 +0000 (14:00 +0000)
Data stall seen during peak DL throughput test & packets are
dropped by mux layer due to invalid header type in datagram.

During initlization Mux aggregration protocol is set to default
UL/DL size and TD count of Mux lite protocol. This configuration
mismatch between device and driver is resulting in data stall/packet
drops.

Override the UL/DL size and TD count for Mux aggregation protocol.

Fixes: 1f52d7b62285 ("net: wwan: iosm: Enable M.2 7360 WWAN card support")
Signed-off-by: M Chetan Kumar <m.chetan.kumar@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/wwan/iosm/iosm_ipc_imem_ops.c
drivers/net/wwan/iosm/iosm_ipc_mux.h

index b7f9237..66b90cc 100644 (file)
@@ -91,6 +91,14 @@ void ipc_imem_wwan_channel_init(struct iosm_imem *ipc_imem,
        }
 
        ipc_chnl_cfg_get(&chnl_cfg, ipc_imem->nr_of_channels);
+
+       if (ipc_imem->mmio->mux_protocol == MUX_AGGREGATION &&
+           ipc_imem->nr_of_channels == IPC_MEM_IP_CHL_ID_0) {
+               chnl_cfg.ul_nr_of_entries = IPC_MEM_MAX_TDS_MUX_AGGR_UL;
+               chnl_cfg.dl_nr_of_entries = IPC_MEM_MAX_TDS_MUX_AGGR_DL;
+               chnl_cfg.dl_buf_size = IPC_MEM_MAX_ADB_BUF_SIZE;
+       }
+
        ipc_imem_channel_init(ipc_imem, IPC_CTYPE_WWAN, chnl_cfg,
                              IRQ_MOD_OFF);
 
index cd9d74c..9968bb8 100644 (file)
@@ -10,6 +10,7 @@
 
 #define IPC_MEM_MAX_UL_DG_ENTRIES      100
 #define IPC_MEM_MAX_TDS_MUX_AGGR_UL    60
+#define IPC_MEM_MAX_TDS_MUX_AGGR_DL    60
 
 #define IPC_MEM_MAX_ADB_BUF_SIZE (16 * 1024)
 #define IPC_MEM_MAX_UL_ADB_BUF_SIZE IPC_MEM_MAX_ADB_BUF_SIZE