Loading drivers/platform/msm/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -112,7 +112,7 @@ config IPA3 config RMNET_IPA3 tristate "IPA3 RMNET WWAN Network Device" depends on IPA3 && MSM_QMI_INTERFACE depends on IPA3 && QCOM_QMI_HELPERS help This WWAN Network Driver implements network stack class device. It supports Embedded data transfer from A7 to Q6. Configures IPA HW Loading drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +499 −519 File changed.Preview size limit exceeded, changes collapsed. Show changes drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.h +11 −3 Original line number Diff line number Diff line Loading @@ -69,6 +69,10 @@ DEV_NAME " %s:%d " fmt, ## args); \ } while (0) struct ipa_q6_all_client_params { struct sockaddr_qrtr sq; }; extern struct ipa3_qmi_context *ipa3_qmi_ctx; struct ipa3_qmi_context { Loading @@ -88,6 +92,7 @@ struct ipa3_qmi_context { ipa_configure_ul_firewall_rules_req_msg_cache [MAX_NUM_QMI_RULE_CACHE]; bool modem_cfg_emb_pipe_flt; struct ipa_q6_all_client_params ipa_q6_client_params; }; struct ipa3_rmnet_mux_val { Loading @@ -99,9 +104,12 @@ struct ipa3_rmnet_mux_val { uint32_t hdr_hdl; }; extern struct qmi_elem_info ipa3_init_modem_driver_req_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_init_modem_driver_resp_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_indication_reg_req_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_init_modem_driver_req_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_init_modem_driver_resp_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_indication_reg_req_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_indication_reg_resp_msg_data_v01_ei[]; extern struct qmi_elem_info Loading drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service_v01.c +27 −28 Original line number Diff line number Diff line Loading @@ -11,7 +11,6 @@ * */ #include <linux/qmi_encdec.h> #include <linux/ipa_qmi_service_v01.h> #include <linux/soc/qcom/qmi.h> Loading Loading @@ -1110,7 +1109,7 @@ struct qmi_elem_info ipa3_init_modem_driver_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_init_modem_driver_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -1207,7 +1206,7 @@ struct qmi_elem_info ipa3_init_modem_driver_cmplt_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_init_modem_driver_cmplt_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -1274,7 +1273,7 @@ struct qmi_elem_info ipa3_indication_reg_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_indication_reg_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading @@ -1293,7 +1292,7 @@ struct qmi_elem_info ipa3_master_driver_init_complt_ind_msg_data_v01_ei[] = { .offset = offsetof(struct ipa_master_driver_init_complt_ind_msg_v01, master_driver_init_status), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -1472,7 +1471,7 @@ struct qmi_elem_info ipa3_install_fltr_rule_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_install_fltr_rule_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -1804,7 +1803,7 @@ struct qmi_elem_info ipa3_fltr_installed_notif_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_fltr_installed_notif_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -1871,7 +1870,7 @@ struct qmi_elem_info ipa3_enable_force_clear_datapath_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_enable_force_clear_datapath_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -1909,7 +1908,7 @@ struct qmi_elem_info .offset = offsetof( struct ipa_disable_force_clear_datapath_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -2236,7 +2235,7 @@ struct qmi_elem_info ipa3_config_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_config_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -2374,7 +2373,7 @@ struct qmi_elem_info ipa3_get_data_stats_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_get_data_stats_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -2602,7 +2601,7 @@ struct qmi_elem_info ipa3_get_apn_data_stats_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_get_apn_data_stats_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -2721,7 +2720,7 @@ struct qmi_elem_info ipa3_set_data_usage_quota_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_set_data_usage_quota_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -2769,7 +2768,7 @@ struct qmi_elem_info ipa3_stop_data_usage_quota_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_stop_data_usage_quota_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -2918,7 +2917,7 @@ struct qmi_elem_info ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_install_fltr_rule_resp_ex_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -2957,7 +2956,7 @@ struct qmi_elem_info ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_per_client_stats_info_type_data_v01_ei[] = { struct qmi_elem_info ipa3_per_client_stats_info_type_data_v01_ei[] = { { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, Loading Loading @@ -3073,7 +3072,7 @@ struct elem_info ipa3_per_client_stats_info_type_data_v01_ei[] = { }, }; struct elem_info ipa3_ul_firewall_rule_type_data_v01_ei[] = { struct qmi_elem_info ipa3_ul_firewall_rule_type_data_v01_ei[] = { { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, Loading Loading @@ -3101,7 +3100,7 @@ struct elem_info ipa3_ul_firewall_rule_type_data_v01_ei[] = { }, }; struct elem_info ipa3_ul_firewall_config_result_type_data_v01_ei[] = { struct qmi_elem_info ipa3_ul_firewall_config_result_type_data_v01_ei[] = { { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, Loading Loading @@ -3129,7 +3128,7 @@ struct elem_info ipa3_ul_firewall_config_result_type_data_v01_ei[] = { }, }; struct elem_info ipa3_enable_per_client_stats_req_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_enable_per_client_stats_req_msg_data_v01_ei[] = { { .data_type = QMI_UNSIGNED_1_BYTE, .elem_len = 1, Loading @@ -3147,7 +3146,7 @@ struct elem_info ipa3_enable_per_client_stats_req_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = { { .data_type = QMI_STRUCT, .elem_len = 1, Loading @@ -3157,7 +3156,7 @@ struct elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_enable_per_client_stats_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading @@ -3166,7 +3165,7 @@ struct elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_get_stats_per_client_req_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_get_stats_per_client_req_msg_data_v01_ei[] = { { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, Loading Loading @@ -3214,7 +3213,7 @@ struct elem_info ipa3_get_stats_per_client_req_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = { { .data_type = QMI_STRUCT, .elem_len = 1, Loading @@ -3224,7 +3223,7 @@ struct elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_get_stats_per_client_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -3266,7 +3265,7 @@ struct elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[] = { { .data_type = QMI_DATA_LEN, .elem_len = 1, Loading Loading @@ -3346,7 +3345,7 @@ struct elem_info ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = { { .data_type = QMI_STRUCT, .elem_len = 1, Loading @@ -3356,7 +3355,7 @@ struct elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_configure_ul_firewall_rules_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading @@ -3365,7 +3364,7 @@ struct elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_configure_ul_firewall_rules_ind_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_configure_ul_firewall_rules_ind_msg_data_v01_ei[] = { { .data_type = QMI_STRUCT, .elem_len = 1, Loading drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +14 −15 Original line number Diff line number Diff line Loading @@ -1620,7 +1620,7 @@ static int ipa3_wwan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) case RMNET_IOCTL_GET_DRIVER_NAME: memcpy(&ext_ioctl_data.u.if_name, IPA_NETDEV()->name, IFNAMSIZ); extend_ioctl_data.u.if_name[IFNAMSIZ - 1] = '\0'; ext_ioctl_data.u.if_name[IFNAMSIZ - 1] = '\0'; if (copy_to_user((u8 *)ifr->ifr_ifru.ifru_data, &ext_ioctl_data, sizeof(struct rmnet_ioctl_extended_s))) Loading @@ -1644,7 +1644,7 @@ static int ipa3_wwan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) &rmnet_ipa3_ctx->add_mux_channel_lock); return -EFAULT; } extend_ioctl_data.u.rmnet_mux_val.vchannel_name ext_ioctl_data.u.rmnet_mux_val.vchannel_name [IFNAMSIZ-1] = '\0'; IPAWANDBG("ADD_MUX_CHANNEL(%d, name: %s)\n", ext_ioctl_data.u.rmnet_mux_val.mux_id, Loading Loading @@ -3464,7 +3464,7 @@ static inline bool rmnet_ipa3_check_any_client_inited ) { int i = 0; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; for (; i < IPA_MAX_NUM_HW_PATH_CLIENTS; i++) { teth_ptr = &rmnet_ipa3_ctx->tether_device[device_type]; Loading @@ -3487,7 +3487,7 @@ static inline int rmnet_ipa3_get_lan_client_info ) { int i = 0; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], Loading Loading @@ -3516,7 +3516,7 @@ static inline int rmnet_ipa3_delete_lan_client_info { struct ipa_lan_client *lan_client = NULL; int i; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; /* Check if the request is to clean up all clients. */ teth_ptr = &rmnet_ipa3_ctx->tether_device[device_type]; Loading @@ -3529,7 +3529,7 @@ static inline int rmnet_ipa3_delete_lan_client_info for (i = 0; i < IPA_MAX_NUM_HW_PATH_CLIENTS; i++) teth_ptr->lan_client[i].client_idx = -1; } else { lan_client = teth_ptr->lan_client[lan_clnt_idx]; lan_client = &teth_ptr->lan_client[lan_clnt_idx]; /* Reset the client info before sending the message. */ memset(lan_client, 0, sizeof(struct ipa_lan_client)); Loading @@ -3554,7 +3554,7 @@ int rmnet_ipa3_set_lan_client_info( struct wan_ioctl_lan_client_info *data) { struct ipa_lan_client *lan_client = NULL; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n", Loading Loading @@ -3588,7 +3588,7 @@ int rmnet_ipa3_set_lan_client_info( } teth_ptr = &rmnet_ipa3_ctx->tether_device[data->device_type]; lan_client = teth_ptr->lan_client[data->client_idx]; lan_client = &teth_ptr->lan_client[data->client_idx]; memcpy(lan_client->mac, data->mac, IPA_MAC_ADDR_SIZE); Loading Loading @@ -3631,9 +3631,8 @@ int rmnet_ipa3_set_lan_client_info( int rmnet_ipa3_clear_lan_client_info( struct wan_ioctl_lan_client_info *data) { struct ipa_lan_client *lan_client = NULL; struct ipa_tether_device_info *teth_ptr = NULL; IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n", data->mac[0], data->mac[1], data->mac[2], Loading @@ -3653,9 +3652,9 @@ int rmnet_ipa3_clear_lan_client_info( return -EINVAL; } mutex_lock(&rmnet_ipa3_ctx->per_client_stats_guard); teth_ptr = &rmnet_ipa3_ctx->tether_device[data->device_type]; lan_client = teth_ptr->lan_client[data->client_idx]; mutex_lock(&rmnet_ipa3_ctx->per_client_stats_guard); lan_client = &teth_ptr->lan_client[data->client_idx]; if (!data->client_init) { /* check if the client is already de-inited. */ Loading Loading @@ -3775,7 +3774,7 @@ int rmnet_ipa3_query_per_client_stats( struct ipa_get_stats_per_client_resp_msg_v01 *resp; int rc, lan_clnt_idx, lan_clnt_idx1, i; struct ipa_lan_client *lan_client = NULL; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n", data->client_info[0].mac[0], Loading Loading @@ -3813,7 +3812,7 @@ int rmnet_ipa3_query_per_client_stats( } teth_ptr = &rmnet_ipa3_ctx->tether_device[data->device_type]; lan_client = teth_ptr->lan_client[lan_clnt_idx1]; lan_client = &teth_ptr->lan_client[lan_clnt_idx1]; /* * Check if disconnect flag is set and Loading Loading @@ -3939,7 +3938,7 @@ int rmnet_ipa3_query_per_client_stats( static int __init ipa3_wwan_init(void) { int i, j; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; rmnet_ipa3_ctx = kzalloc(sizeof(*rmnet_ipa3_ctx), GFP_KERNEL); Loading Loading
drivers/platform/msm/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -112,7 +112,7 @@ config IPA3 config RMNET_IPA3 tristate "IPA3 RMNET WWAN Network Device" depends on IPA3 && MSM_QMI_INTERFACE depends on IPA3 && QCOM_QMI_HELPERS help This WWAN Network Driver implements network stack class device. It supports Embedded data transfer from A7 to Q6. Configures IPA HW Loading
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +499 −519 File changed.Preview size limit exceeded, changes collapsed. Show changes
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.h +11 −3 Original line number Diff line number Diff line Loading @@ -69,6 +69,10 @@ DEV_NAME " %s:%d " fmt, ## args); \ } while (0) struct ipa_q6_all_client_params { struct sockaddr_qrtr sq; }; extern struct ipa3_qmi_context *ipa3_qmi_ctx; struct ipa3_qmi_context { Loading @@ -88,6 +92,7 @@ struct ipa3_qmi_context { ipa_configure_ul_firewall_rules_req_msg_cache [MAX_NUM_QMI_RULE_CACHE]; bool modem_cfg_emb_pipe_flt; struct ipa_q6_all_client_params ipa_q6_client_params; }; struct ipa3_rmnet_mux_val { Loading @@ -99,9 +104,12 @@ struct ipa3_rmnet_mux_val { uint32_t hdr_hdl; }; extern struct qmi_elem_info ipa3_init_modem_driver_req_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_init_modem_driver_resp_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_indication_reg_req_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_init_modem_driver_req_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_init_modem_driver_resp_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_indication_reg_req_msg_data_v01_ei[]; extern struct qmi_elem_info ipa3_indication_reg_resp_msg_data_v01_ei[]; extern struct qmi_elem_info Loading
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service_v01.c +27 −28 Original line number Diff line number Diff line Loading @@ -11,7 +11,6 @@ * */ #include <linux/qmi_encdec.h> #include <linux/ipa_qmi_service_v01.h> #include <linux/soc/qcom/qmi.h> Loading Loading @@ -1110,7 +1109,7 @@ struct qmi_elem_info ipa3_init_modem_driver_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_init_modem_driver_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -1207,7 +1206,7 @@ struct qmi_elem_info ipa3_init_modem_driver_cmplt_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_init_modem_driver_cmplt_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -1274,7 +1273,7 @@ struct qmi_elem_info ipa3_indication_reg_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_indication_reg_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading @@ -1293,7 +1292,7 @@ struct qmi_elem_info ipa3_master_driver_init_complt_ind_msg_data_v01_ei[] = { .offset = offsetof(struct ipa_master_driver_init_complt_ind_msg_v01, master_driver_init_status), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -1472,7 +1471,7 @@ struct qmi_elem_info ipa3_install_fltr_rule_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_install_fltr_rule_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -1804,7 +1803,7 @@ struct qmi_elem_info ipa3_fltr_installed_notif_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_fltr_installed_notif_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -1871,7 +1870,7 @@ struct qmi_elem_info ipa3_enable_force_clear_datapath_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_enable_force_clear_datapath_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -1909,7 +1908,7 @@ struct qmi_elem_info .offset = offsetof( struct ipa_disable_force_clear_datapath_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -2236,7 +2235,7 @@ struct qmi_elem_info ipa3_config_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_config_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -2374,7 +2373,7 @@ struct qmi_elem_info ipa3_get_data_stats_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_get_data_stats_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -2602,7 +2601,7 @@ struct qmi_elem_info ipa3_get_apn_data_stats_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_get_apn_data_stats_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -2721,7 +2720,7 @@ struct qmi_elem_info ipa3_set_data_usage_quota_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_set_data_usage_quota_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -2769,7 +2768,7 @@ struct qmi_elem_info ipa3_stop_data_usage_quota_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_stop_data_usage_quota_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading Loading @@ -2918,7 +2917,7 @@ struct qmi_elem_info ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_install_fltr_rule_resp_ex_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -2957,7 +2956,7 @@ struct qmi_elem_info ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_per_client_stats_info_type_data_v01_ei[] = { struct qmi_elem_info ipa3_per_client_stats_info_type_data_v01_ei[] = { { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, Loading Loading @@ -3073,7 +3072,7 @@ struct elem_info ipa3_per_client_stats_info_type_data_v01_ei[] = { }, }; struct elem_info ipa3_ul_firewall_rule_type_data_v01_ei[] = { struct qmi_elem_info ipa3_ul_firewall_rule_type_data_v01_ei[] = { { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, Loading Loading @@ -3101,7 +3100,7 @@ struct elem_info ipa3_ul_firewall_rule_type_data_v01_ei[] = { }, }; struct elem_info ipa3_ul_firewall_config_result_type_data_v01_ei[] = { struct qmi_elem_info ipa3_ul_firewall_config_result_type_data_v01_ei[] = { { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, Loading Loading @@ -3129,7 +3128,7 @@ struct elem_info ipa3_ul_firewall_config_result_type_data_v01_ei[] = { }, }; struct elem_info ipa3_enable_per_client_stats_req_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_enable_per_client_stats_req_msg_data_v01_ei[] = { { .data_type = QMI_UNSIGNED_1_BYTE, .elem_len = 1, Loading @@ -3147,7 +3146,7 @@ struct elem_info ipa3_enable_per_client_stats_req_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = { { .data_type = QMI_STRUCT, .elem_len = 1, Loading @@ -3157,7 +3156,7 @@ struct elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_enable_per_client_stats_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading @@ -3166,7 +3165,7 @@ struct elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_get_stats_per_client_req_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_get_stats_per_client_req_msg_data_v01_ei[] = { { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, Loading Loading @@ -3214,7 +3213,7 @@ struct elem_info ipa3_get_stats_per_client_req_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = { { .data_type = QMI_STRUCT, .elem_len = 1, Loading @@ -3224,7 +3223,7 @@ struct elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_get_stats_per_client_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_OPT_FLAG, Loading Loading @@ -3266,7 +3265,7 @@ struct elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[] = { { .data_type = QMI_DATA_LEN, .elem_len = 1, Loading Loading @@ -3346,7 +3345,7 @@ struct elem_info ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = { { .data_type = QMI_STRUCT, .elem_len = 1, Loading @@ -3356,7 +3355,7 @@ struct elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = { .offset = offsetof( struct ipa_configure_ul_firewall_rules_resp_msg_v01, resp), .ei_array = get_qmi_response_type_v01_ei(), .ei_array = qmi_response_type_v01_ei, }, { .data_type = QMI_EOTI, Loading @@ -3365,7 +3364,7 @@ struct elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = { }, }; struct elem_info ipa3_configure_ul_firewall_rules_ind_msg_data_v01_ei[] = { struct qmi_elem_info ipa3_configure_ul_firewall_rules_ind_msg_data_v01_ei[] = { { .data_type = QMI_STRUCT, .elem_len = 1, Loading
drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +14 −15 Original line number Diff line number Diff line Loading @@ -1620,7 +1620,7 @@ static int ipa3_wwan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) case RMNET_IOCTL_GET_DRIVER_NAME: memcpy(&ext_ioctl_data.u.if_name, IPA_NETDEV()->name, IFNAMSIZ); extend_ioctl_data.u.if_name[IFNAMSIZ - 1] = '\0'; ext_ioctl_data.u.if_name[IFNAMSIZ - 1] = '\0'; if (copy_to_user((u8 *)ifr->ifr_ifru.ifru_data, &ext_ioctl_data, sizeof(struct rmnet_ioctl_extended_s))) Loading @@ -1644,7 +1644,7 @@ static int ipa3_wwan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) &rmnet_ipa3_ctx->add_mux_channel_lock); return -EFAULT; } extend_ioctl_data.u.rmnet_mux_val.vchannel_name ext_ioctl_data.u.rmnet_mux_val.vchannel_name [IFNAMSIZ-1] = '\0'; IPAWANDBG("ADD_MUX_CHANNEL(%d, name: %s)\n", ext_ioctl_data.u.rmnet_mux_val.mux_id, Loading Loading @@ -3464,7 +3464,7 @@ static inline bool rmnet_ipa3_check_any_client_inited ) { int i = 0; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; for (; i < IPA_MAX_NUM_HW_PATH_CLIENTS; i++) { teth_ptr = &rmnet_ipa3_ctx->tether_device[device_type]; Loading @@ -3487,7 +3487,7 @@ static inline int rmnet_ipa3_get_lan_client_info ) { int i = 0; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], Loading Loading @@ -3516,7 +3516,7 @@ static inline int rmnet_ipa3_delete_lan_client_info { struct ipa_lan_client *lan_client = NULL; int i; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; /* Check if the request is to clean up all clients. */ teth_ptr = &rmnet_ipa3_ctx->tether_device[device_type]; Loading @@ -3529,7 +3529,7 @@ static inline int rmnet_ipa3_delete_lan_client_info for (i = 0; i < IPA_MAX_NUM_HW_PATH_CLIENTS; i++) teth_ptr->lan_client[i].client_idx = -1; } else { lan_client = teth_ptr->lan_client[lan_clnt_idx]; lan_client = &teth_ptr->lan_client[lan_clnt_idx]; /* Reset the client info before sending the message. */ memset(lan_client, 0, sizeof(struct ipa_lan_client)); Loading @@ -3554,7 +3554,7 @@ int rmnet_ipa3_set_lan_client_info( struct wan_ioctl_lan_client_info *data) { struct ipa_lan_client *lan_client = NULL; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n", Loading Loading @@ -3588,7 +3588,7 @@ int rmnet_ipa3_set_lan_client_info( } teth_ptr = &rmnet_ipa3_ctx->tether_device[data->device_type]; lan_client = teth_ptr->lan_client[data->client_idx]; lan_client = &teth_ptr->lan_client[data->client_idx]; memcpy(lan_client->mac, data->mac, IPA_MAC_ADDR_SIZE); Loading Loading @@ -3631,9 +3631,8 @@ int rmnet_ipa3_set_lan_client_info( int rmnet_ipa3_clear_lan_client_info( struct wan_ioctl_lan_client_info *data) { struct ipa_lan_client *lan_client = NULL; struct ipa_tether_device_info *teth_ptr = NULL; IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n", data->mac[0], data->mac[1], data->mac[2], Loading @@ -3653,9 +3652,9 @@ int rmnet_ipa3_clear_lan_client_info( return -EINVAL; } mutex_lock(&rmnet_ipa3_ctx->per_client_stats_guard); teth_ptr = &rmnet_ipa3_ctx->tether_device[data->device_type]; lan_client = teth_ptr->lan_client[data->client_idx]; mutex_lock(&rmnet_ipa3_ctx->per_client_stats_guard); lan_client = &teth_ptr->lan_client[data->client_idx]; if (!data->client_init) { /* check if the client is already de-inited. */ Loading Loading @@ -3775,7 +3774,7 @@ int rmnet_ipa3_query_per_client_stats( struct ipa_get_stats_per_client_resp_msg_v01 *resp; int rc, lan_clnt_idx, lan_clnt_idx1, i; struct ipa_lan_client *lan_client = NULL; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n", data->client_info[0].mac[0], Loading Loading @@ -3813,7 +3812,7 @@ int rmnet_ipa3_query_per_client_stats( } teth_ptr = &rmnet_ipa3_ctx->tether_device[data->device_type]; lan_client = teth_ptr->lan_client[lan_clnt_idx1]; lan_client = &teth_ptr->lan_client[lan_clnt_idx1]; /* * Check if disconnect flag is set and Loading Loading @@ -3939,7 +3938,7 @@ int rmnet_ipa3_query_per_client_stats( static int __init ipa3_wwan_init(void) { int i, j; struct ipa_tether_device_info *teth_ptr; struct ipa_tether_device_info *teth_ptr = NULL; rmnet_ipa3_ctx = kzalloc(sizeof(*rmnet_ipa3_ctx), GFP_KERNEL); Loading