Loading drivers/platform/msm/ipa/ipa_api.c +19 −0 Original line number Diff line number Diff line Loading @@ -1634,6 +1634,25 @@ u16 ipa_get_smem_restr_bytes(void) } EXPORT_SYMBOL(ipa_get_smem_restr_bytes); /** * ipa_broadcast_wdi_quota_reach_ind() - quota reach * @uint32_t fid: [in] input netdev ID * @uint64_t num_bytes: [in] used bytes * * Returns: 0 on success, negative on failure */ int ipa_broadcast_wdi_quota_reach_ind(uint32_t fid, uint64_t num_bytes) { int ret; IPA_API_DISPATCH_RETURN(ipa_broadcast_wdi_quota_reach_ind, fid, num_bytes); return ret; } EXPORT_SYMBOL(ipa_broadcast_wdi_quota_reach_ind); /** * ipa_uc_wdi_get_dbpa() - To retrieve * doorbell physical address of wlan pipes Loading drivers/platform/msm/ipa/ipa_api.h +3 −0 Original line number Diff line number Diff line Loading @@ -183,6 +183,9 @@ struct ipa_api_controller { u16 (*ipa_get_smem_restr_bytes)(void); int (*ipa_broadcast_wdi_quota_reach_ind)(uint32_t fid, uint64_t num_bytes); int (*ipa_uc_wdi_get_dbpa)(struct ipa_wdi_db_params *out); int (*ipa_uc_reg_rdyCB)(struct ipa_wdi_uc_ready_params *param); Loading drivers/platform/msm/ipa/ipa_v3/ipa_i.h +8 −0 Original line number Diff line number Diff line Loading @@ -937,6 +937,10 @@ struct ipa3_uc_wdi_ctx { struct IpaHwStatsWDIInfoData_t *wdi_uc_stats_mmio; void *priv; ipa_uc_ready_cb uc_ready_cb; /* for AP+STA stats update */ #ifdef IPA_WAN_MSG_IPv6_ADDR_GW_LEN ipa_wdi_meter_notifier_cb stats_notify; #endif }; /** Loading Loading @@ -1611,6 +1615,7 @@ int ipa3_resume_wdi_pipe(u32 clnt_hdl); int ipa3_suspend_wdi_pipe(u32 clnt_hdl); int ipa3_get_wdi_stats(struct IpaHwStatsWDIInfoData_t *stats); u16 ipa3_get_smem_restr_bytes(void); int ipa3_broadcast_wdi_quota_reach_ind(uint32_t fid, uint64_t num_bytes); int ipa3_setup_uc_ntn_pipes(struct ipa_ntn_conn_in_params *in, ipa_notify_cb notify, void *priv, u8 hdr_len, struct ipa_ntn_conn_out_params *outp); Loading Loading @@ -1651,6 +1656,9 @@ enum ipacm_client_enum ipa3_get_client(int pipe_idx); bool ipa3_get_client_uplink(int pipe_idx); int ipa3_get_wlan_stats(struct ipa_get_wdi_sap_stats *wdi_sap_stats); int ipa3_set_wlan_quota(struct ipa_set_wifi_quota *wdi_quota); /* * IPADMA */ Loading drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +2 −1 Original line number Diff line number Diff line Loading @@ -884,7 +884,8 @@ static void ipa3_q6_clnt_ind_cb(struct qmi_handle *handle, unsigned int msg_id, IPAWANDBG("Quota reached indication on qmux(%d) Mbytes(%lu)\n", qmi_ind.apn.mux_id, (unsigned long int) qmi_ind.apn.num_Mbytes); ipa3_broadcast_quota_reach_ind(qmi_ind.apn.mux_id); ipa3_broadcast_quota_reach_ind(qmi_ind.apn.mux_id, IPA_UPSTEAM_MODEM); } } Loading drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.h +6 −2 Original line number Diff line number Diff line Loading @@ -181,7 +181,8 @@ int rmnet_ipa3_poll_tethering_stats(struct wan_ioctl_poll_tethering_stats int rmnet_ipa3_set_data_quota(struct wan_ioctl_set_data_quota *data); void ipa3_broadcast_quota_reach_ind(uint32_t mux_id); void ipa3_broadcast_quota_reach_ind(uint32_t mux_id, enum ipa_upstream_type upstream_type); int rmnet_ipa3_set_tether_client_pipe(struct wan_ioctl_set_tether_client_pipe *data); Loading @@ -189,6 +190,8 @@ int rmnet_ipa3_set_tether_client_pipe(struct wan_ioctl_set_tether_client_pipe int rmnet_ipa3_query_tethering_stats(struct wan_ioctl_query_tether_stats *data, bool reset); int rmnet_ipa3_reset_tethering_stats(struct wan_ioctl_reset_tether_stats *data); int ipa3_qmi_get_data_stats(struct ipa_get_data_stats_req_msg_v01 *req, struct ipa_get_data_stats_resp_msg_v01 *resp); Loading Loading @@ -283,7 +286,8 @@ static inline int rmnet_ipa3_set_data_quota( return -EPERM; } static inline void ipa3_broadcast_quota_reach_ind(uint32_t mux_id) { } static inline void ipa3_broadcast_quota_reach_ind(uint32_t mux_id, enum ipa_upstream_type upstream_type) { } static inline int ipa3_qmi_get_data_stats( struct ipa_get_data_stats_req_msg_v01 *req, Loading Loading
drivers/platform/msm/ipa/ipa_api.c +19 −0 Original line number Diff line number Diff line Loading @@ -1634,6 +1634,25 @@ u16 ipa_get_smem_restr_bytes(void) } EXPORT_SYMBOL(ipa_get_smem_restr_bytes); /** * ipa_broadcast_wdi_quota_reach_ind() - quota reach * @uint32_t fid: [in] input netdev ID * @uint64_t num_bytes: [in] used bytes * * Returns: 0 on success, negative on failure */ int ipa_broadcast_wdi_quota_reach_ind(uint32_t fid, uint64_t num_bytes) { int ret; IPA_API_DISPATCH_RETURN(ipa_broadcast_wdi_quota_reach_ind, fid, num_bytes); return ret; } EXPORT_SYMBOL(ipa_broadcast_wdi_quota_reach_ind); /** * ipa_uc_wdi_get_dbpa() - To retrieve * doorbell physical address of wlan pipes Loading
drivers/platform/msm/ipa/ipa_api.h +3 −0 Original line number Diff line number Diff line Loading @@ -183,6 +183,9 @@ struct ipa_api_controller { u16 (*ipa_get_smem_restr_bytes)(void); int (*ipa_broadcast_wdi_quota_reach_ind)(uint32_t fid, uint64_t num_bytes); int (*ipa_uc_wdi_get_dbpa)(struct ipa_wdi_db_params *out); int (*ipa_uc_reg_rdyCB)(struct ipa_wdi_uc_ready_params *param); Loading
drivers/platform/msm/ipa/ipa_v3/ipa_i.h +8 −0 Original line number Diff line number Diff line Loading @@ -937,6 +937,10 @@ struct ipa3_uc_wdi_ctx { struct IpaHwStatsWDIInfoData_t *wdi_uc_stats_mmio; void *priv; ipa_uc_ready_cb uc_ready_cb; /* for AP+STA stats update */ #ifdef IPA_WAN_MSG_IPv6_ADDR_GW_LEN ipa_wdi_meter_notifier_cb stats_notify; #endif }; /** Loading Loading @@ -1611,6 +1615,7 @@ int ipa3_resume_wdi_pipe(u32 clnt_hdl); int ipa3_suspend_wdi_pipe(u32 clnt_hdl); int ipa3_get_wdi_stats(struct IpaHwStatsWDIInfoData_t *stats); u16 ipa3_get_smem_restr_bytes(void); int ipa3_broadcast_wdi_quota_reach_ind(uint32_t fid, uint64_t num_bytes); int ipa3_setup_uc_ntn_pipes(struct ipa_ntn_conn_in_params *in, ipa_notify_cb notify, void *priv, u8 hdr_len, struct ipa_ntn_conn_out_params *outp); Loading Loading @@ -1651,6 +1656,9 @@ enum ipacm_client_enum ipa3_get_client(int pipe_idx); bool ipa3_get_client_uplink(int pipe_idx); int ipa3_get_wlan_stats(struct ipa_get_wdi_sap_stats *wdi_sap_stats); int ipa3_set_wlan_quota(struct ipa_set_wifi_quota *wdi_quota); /* * IPADMA */ Loading
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +2 −1 Original line number Diff line number Diff line Loading @@ -884,7 +884,8 @@ static void ipa3_q6_clnt_ind_cb(struct qmi_handle *handle, unsigned int msg_id, IPAWANDBG("Quota reached indication on qmux(%d) Mbytes(%lu)\n", qmi_ind.apn.mux_id, (unsigned long int) qmi_ind.apn.num_Mbytes); ipa3_broadcast_quota_reach_ind(qmi_ind.apn.mux_id); ipa3_broadcast_quota_reach_ind(qmi_ind.apn.mux_id, IPA_UPSTEAM_MODEM); } } Loading
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.h +6 −2 Original line number Diff line number Diff line Loading @@ -181,7 +181,8 @@ int rmnet_ipa3_poll_tethering_stats(struct wan_ioctl_poll_tethering_stats int rmnet_ipa3_set_data_quota(struct wan_ioctl_set_data_quota *data); void ipa3_broadcast_quota_reach_ind(uint32_t mux_id); void ipa3_broadcast_quota_reach_ind(uint32_t mux_id, enum ipa_upstream_type upstream_type); int rmnet_ipa3_set_tether_client_pipe(struct wan_ioctl_set_tether_client_pipe *data); Loading @@ -189,6 +190,8 @@ int rmnet_ipa3_set_tether_client_pipe(struct wan_ioctl_set_tether_client_pipe int rmnet_ipa3_query_tethering_stats(struct wan_ioctl_query_tether_stats *data, bool reset); int rmnet_ipa3_reset_tethering_stats(struct wan_ioctl_reset_tether_stats *data); int ipa3_qmi_get_data_stats(struct ipa_get_data_stats_req_msg_v01 *req, struct ipa_get_data_stats_resp_msg_v01 *resp); Loading Loading @@ -283,7 +286,8 @@ static inline int rmnet_ipa3_set_data_quota( return -EPERM; } static inline void ipa3_broadcast_quota_reach_ind(uint32_t mux_id) { } static inline void ipa3_broadcast_quota_reach_ind(uint32_t mux_id, enum ipa_upstream_type upstream_type) { } static inline int ipa3_qmi_get_data_stats( struct ipa_get_data_stats_req_msg_v01 *req, Loading