高通拨号流程介绍
1 简介
高通平台如sdx55内部包含多个处理器,其中APSS使用的是Arm Cortex-A7处理器,MODEM侧使用的是高通的Q6处理器。那AP和modem之间的数据通路是如何建立的呢?
dsi_netctrl_test是在APPS内部运行的可执行程序,该程序从APPS发起数据拨号流程,建立APPS与MODEM之间的数据通路。拨号成功后,APPS内部的应用程序数据可以经由该数据通路到达MODEM,进而经由无线接口访问外部网络。
下面是整体框图:
sdx55内部A7处理器与Q6处理器之间的控制和数据通路参考上图。外部数据可以多种接口方式接入到A7,如USB接口、PCIe接口及以太网接口。A7与Q6之间的数据经由IPA模块(IP硬件加速)直接传输。数据到达Q6之后,经由无线接口访问外部网络。
A7与Q6之间的控制消息通过共享内存通道进行传输。
2 APPS与MODEM间数据传输
2.1 APPS与MODEM间数据通路
上图为dsi_netctrl_test程序完成2路数据拨号后所建立的APPS与MODEM之间的数据通路情况。如图中所示,在APPS侧创建了2个虚拟网络接口rmnet_data0及rmnet_data1,分别对应了两路数据拨号。这两个接口的数据使用高通的QMAP协议在物理网络接口rmnet_ipa0上复用传输,通过QMAP协议头中的MUX_ID字段来区分。例如,rmnet_data0使用的MUX_ID为1,rmnet_data1使用的MUX_ID为2。MODEM侧从IPA通道上接收到数据后,根据MUX_ID对数据进行分发,将数据传递到对应的通路上。
2.2 物理数据通道及数据传输格式
sdx55平台APSS与MODEM之间的物理数据通道主要是IPA通道。IPA是IP数据硬件加速引擎,完成报文协议头添加及去除,过滤,NAT,IP路由等功能。
APPS进行数据拨号时需要发送设置物理通道数据传输格式的QMI消息QMI_WDA_SET_DATA_FORMAT_REQ_V01,与MODEM协商确立物理通道数据传输格式。数据传输格式的可选配置内容如下表所示。
数据传输格式 | 格式说明 |
---|---|
qos_format | Indicates whether the Quality of Service (QOS) data format is used by the client. Values: - 0 – QOS flow header is not present (Default) - 1 – QOS flow header is present |
link_prot | Link protocol used by the client: - 0x01 – 802.3 Ethernet mode (Default) - 0x02 – IP mode |
ul_data_aggregation_protocol | Uplink (UL) data aggregation protocol to be used for uplink data transfer. Values: - WDA_UL_DATA_AGG_DISABLED (0x00) – - WDA_UL_DATA_AGG_TLP_ENABLED (0x01) – - WDA_UL_DATA_AGG_QC_NCM_ENABLED (0x02) – - WDA_UL_DATA_AGG_MBIM_ENABLED (0x03) – - WDA_UL_DATA_AGG_RNDIS_ENABLED (0x04) – - WDS_UL_DATA_AGG_QMAP_ENABLED (0x05) – - WDA_UL_DATA_AGG_QMAP_ENABLED (0x05) – - WDS_UL_DATA_AGG_QMAP_V2_ENABLED (0x06) – - WDA_UL_DATA_AGG_QMAP_V2_ENABLED (0x06) – - WDA_UL_DATA_AGG_QMAP_V3_ENABLED (0x07) – - WDA_UL_DATA_AGG_QMAP_V4_ENABLED (0x08) – - WDA_UL_DATA_AGG_QMAP_V5_ENABLED (0x09) – |
dl_data_aggregation_protocol | Downlink (DL) data aggregation protocol to be used for downlink data transfer. Values: - WDA_DL_DATA_AGG_DISABLED (0x00) – - WDA_DL_DATA_AGG_TLP_ENABLED (0x01) – - WDA_DL_DATA_AGG_QC_NCM_ENABLED (0x02) – - WDA_DL_DATA_AGG_MBIM_ENABLED (0x03) – - WDA_DL_DATA_AGG_RNDIS_ENABLED (0x04) – - WDS_DL_DATA_AGG_QMAP_ENABLED (0x05) – - WDA_DL_DATA_AGG_QMAP_ENABLED (0x05) – - WDS_DL_DATA_AGG_ |