Loading drivers/soc/qcom/dfc_qmi.c +4 −8 Original line number Diff line number Diff line Loading @@ -924,18 +924,11 @@ int dfc_bearer_flow_ctl(struct net_device *dev, enable = bearer->grant_size ? true : false; qmi_rmnet_flow_control(dev, bearer->mq_idx, enable); trace_dfc_qmi_tc(dev->name, bearer->bearer_id, bearer->grant_size, 0, bearer->mq_idx, enable); /* Do not flow disable tcp ack q in tcp bidir */ if (bearer->ack_mq_idx != INVALID_MQ && (enable || !bearer->tcp_bidir)) { (enable || !bearer->tcp_bidir)) qmi_rmnet_flow_control(dev, bearer->ack_mq_idx, enable); trace_dfc_qmi_tc(dev->name, bearer->bearer_id, bearer->grant_size, 0, bearer->ack_mq_idx, enable); } if (!enable && bearer->ack_req) dfc_send_ack(dev, bearer->bearer_id, Loading Loading @@ -976,6 +969,9 @@ static int dfc_update_fc_map(struct net_device *dev, struct qos_info *qos, bool action = false; itm = qmi_rmnet_get_bearer_map(qos, fc_info->bearer_id); if (!itm) itm = qmi_rmnet_get_bearer_noref(qos, fc_info->bearer_id); if (itm) { /* The RAT switch flag indicates the start and end of * the switch. Ignore indications in between. Loading drivers/soc/qcom/qmi_rmnet.c +16 −13 Original line number Diff line number Diff line Loading @@ -215,6 +215,8 @@ int qmi_rmnet_flow_control(struct net_device *dev, u32 mq_idx, int enable) else netif_tx_stop_queue(q); trace_dfc_qmi_tc(dev->name, mq_idx, enable); return 0; } Loading Loading @@ -276,15 +278,11 @@ static void __qmi_rmnet_bearer_put(struct net_device *dev, if (reset) { qmi_rmnet_reset_txq(dev, i); qmi_rmnet_flow_control(dev, i, 1); trace_dfc_qmi_tc(dev->name, bearer->bearer_id, 0, 0, i, 1); if (dfc_mode == DFC_MODE_SA) { j = i + ACK_MQ_OFFSET; qmi_rmnet_reset_txq(dev, j); qmi_rmnet_flow_control(dev, j, 1); trace_dfc_qmi_tc(dev->name, bearer->bearer_id, 0, 0, j, 1); } } } Loading Loading @@ -322,18 +320,10 @@ static void __qmi_rmnet_update_mq(struct net_device *dev, qmi_rmnet_flow_control(dev, itm->mq_idx, bearer->grant_size > 0 ? 1 : 0); trace_dfc_qmi_tc(dev->name, itm->bearer_id, bearer->grant_size, 0, itm->mq_idx, bearer->grant_size > 0 ? 1 : 0); if (dfc_mode == DFC_MODE_SA) { if (dfc_mode == DFC_MODE_SA) qmi_rmnet_flow_control(dev, bearer->ack_mq_idx, bearer->grant_size > 0 ? 1 : 0); trace_dfc_qmi_tc(dev->name, itm->bearer_id, bearer->grant_size, 0, bearer->ack_mq_idx, bearer->grant_size > 0 ? 1 : 0); } } } Loading Loading @@ -506,6 +496,19 @@ static const struct kernel_param_ops qmi_rmnet_scale_ops = { module_param_cb(qmi_rmnet_scale_factor, &qmi_rmnet_scale_ops, &qmi_rmnet_scale_factor, 0664); struct rmnet_bearer_map *qmi_rmnet_get_bearer_noref(struct qos_info *qos_info, u8 bearer_id) { struct rmnet_bearer_map *bearer; bearer = __qmi_rmnet_bearer_get(qos_info, bearer_id); if (bearer) bearer->flow_ref--; return bearer; } #else static inline void qmi_rmnet_clean_flow_list(struct qos_info *qos) { Loading drivers/soc/qcom/qmi_rmnet_i.h +3 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,9 @@ int dfc_qmap_client_init(void *port, int index, struct svc_info *psvc, void dfc_qmap_client_exit(void *dfc_data); void dfc_qmap_send_ack(struct qos_info *qos, u8 bearer_id, u16 seq, u8 type); struct rmnet_bearer_map *qmi_rmnet_get_bearer_noref(struct qos_info *qos_info, u8 bearer_id); #else static inline struct rmnet_flow_map * qmi_rmnet_get_flow_map(struct qos_info *qos_info, Loading include/trace/events/dfc.h +7 −15 Original line number Diff line number Diff line Loading @@ -20,33 +20,25 @@ TRACE_EVENT(dfc_qmi_tc, TP_PROTO(const char *name, u8 bearer_id, u32 grant, int qlen, u32 tcm_handle, int enable), TP_PROTO(const char *name, u32 txq, int enable), TP_ARGS(name, bearer_id, grant, qlen, tcm_handle, enable), TP_ARGS(name, txq, enable), TP_STRUCT__entry( __string(dev_name, name) __field(u8, bid) __field(u32, grant) __field(int, qlen) __field(u32, tcm_handle) __field(u32, txq) __field(int, enable) ), TP_fast_assign( __assign_str(dev_name, name); __entry->bid = bearer_id; __entry->grant = grant; __entry->qlen = qlen; __entry->tcm_handle = tcm_handle; __entry->txq = txq; __entry->enable = enable; ), TP_printk("dev=%s bearer_id=%u grant=%u len=%d mq=%u %s", TP_printk("dev=%s txq=%u %s", __get_str(dev_name), __entry->bid, __entry->grant, __entry->qlen, __entry->tcm_handle, __entry->txq, __entry->enable ? "enable" : "disable") ); Loading Loading @@ -139,7 +131,7 @@ TRACE_EVENT(dfc_flow_info, __entry->action = add; ), TP_printk("%s: dev=%s bearer_id=%u flow_id=%u ip_type=%d mq=%d", TP_printk("%s: dev=%s bearer_id=%u flow_id=%u ip_type=%d txq=%d", __entry->action ? "add flow" : "delete flow", __get_str(dev_name), __entry->bid, __entry->fid, __entry->ip, __entry->handle) Loading Loading
drivers/soc/qcom/dfc_qmi.c +4 −8 Original line number Diff line number Diff line Loading @@ -924,18 +924,11 @@ int dfc_bearer_flow_ctl(struct net_device *dev, enable = bearer->grant_size ? true : false; qmi_rmnet_flow_control(dev, bearer->mq_idx, enable); trace_dfc_qmi_tc(dev->name, bearer->bearer_id, bearer->grant_size, 0, bearer->mq_idx, enable); /* Do not flow disable tcp ack q in tcp bidir */ if (bearer->ack_mq_idx != INVALID_MQ && (enable || !bearer->tcp_bidir)) { (enable || !bearer->tcp_bidir)) qmi_rmnet_flow_control(dev, bearer->ack_mq_idx, enable); trace_dfc_qmi_tc(dev->name, bearer->bearer_id, bearer->grant_size, 0, bearer->ack_mq_idx, enable); } if (!enable && bearer->ack_req) dfc_send_ack(dev, bearer->bearer_id, Loading Loading @@ -976,6 +969,9 @@ static int dfc_update_fc_map(struct net_device *dev, struct qos_info *qos, bool action = false; itm = qmi_rmnet_get_bearer_map(qos, fc_info->bearer_id); if (!itm) itm = qmi_rmnet_get_bearer_noref(qos, fc_info->bearer_id); if (itm) { /* The RAT switch flag indicates the start and end of * the switch. Ignore indications in between. Loading
drivers/soc/qcom/qmi_rmnet.c +16 −13 Original line number Diff line number Diff line Loading @@ -215,6 +215,8 @@ int qmi_rmnet_flow_control(struct net_device *dev, u32 mq_idx, int enable) else netif_tx_stop_queue(q); trace_dfc_qmi_tc(dev->name, mq_idx, enable); return 0; } Loading Loading @@ -276,15 +278,11 @@ static void __qmi_rmnet_bearer_put(struct net_device *dev, if (reset) { qmi_rmnet_reset_txq(dev, i); qmi_rmnet_flow_control(dev, i, 1); trace_dfc_qmi_tc(dev->name, bearer->bearer_id, 0, 0, i, 1); if (dfc_mode == DFC_MODE_SA) { j = i + ACK_MQ_OFFSET; qmi_rmnet_reset_txq(dev, j); qmi_rmnet_flow_control(dev, j, 1); trace_dfc_qmi_tc(dev->name, bearer->bearer_id, 0, 0, j, 1); } } } Loading Loading @@ -322,18 +320,10 @@ static void __qmi_rmnet_update_mq(struct net_device *dev, qmi_rmnet_flow_control(dev, itm->mq_idx, bearer->grant_size > 0 ? 1 : 0); trace_dfc_qmi_tc(dev->name, itm->bearer_id, bearer->grant_size, 0, itm->mq_idx, bearer->grant_size > 0 ? 1 : 0); if (dfc_mode == DFC_MODE_SA) { if (dfc_mode == DFC_MODE_SA) qmi_rmnet_flow_control(dev, bearer->ack_mq_idx, bearer->grant_size > 0 ? 1 : 0); trace_dfc_qmi_tc(dev->name, itm->bearer_id, bearer->grant_size, 0, bearer->ack_mq_idx, bearer->grant_size > 0 ? 1 : 0); } } } Loading Loading @@ -506,6 +496,19 @@ static const struct kernel_param_ops qmi_rmnet_scale_ops = { module_param_cb(qmi_rmnet_scale_factor, &qmi_rmnet_scale_ops, &qmi_rmnet_scale_factor, 0664); struct rmnet_bearer_map *qmi_rmnet_get_bearer_noref(struct qos_info *qos_info, u8 bearer_id) { struct rmnet_bearer_map *bearer; bearer = __qmi_rmnet_bearer_get(qos_info, bearer_id); if (bearer) bearer->flow_ref--; return bearer; } #else static inline void qmi_rmnet_clean_flow_list(struct qos_info *qos) { Loading
drivers/soc/qcom/qmi_rmnet_i.h +3 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,9 @@ int dfc_qmap_client_init(void *port, int index, struct svc_info *psvc, void dfc_qmap_client_exit(void *dfc_data); void dfc_qmap_send_ack(struct qos_info *qos, u8 bearer_id, u16 seq, u8 type); struct rmnet_bearer_map *qmi_rmnet_get_bearer_noref(struct qos_info *qos_info, u8 bearer_id); #else static inline struct rmnet_flow_map * qmi_rmnet_get_flow_map(struct qos_info *qos_info, Loading
include/trace/events/dfc.h +7 −15 Original line number Diff line number Diff line Loading @@ -20,33 +20,25 @@ TRACE_EVENT(dfc_qmi_tc, TP_PROTO(const char *name, u8 bearer_id, u32 grant, int qlen, u32 tcm_handle, int enable), TP_PROTO(const char *name, u32 txq, int enable), TP_ARGS(name, bearer_id, grant, qlen, tcm_handle, enable), TP_ARGS(name, txq, enable), TP_STRUCT__entry( __string(dev_name, name) __field(u8, bid) __field(u32, grant) __field(int, qlen) __field(u32, tcm_handle) __field(u32, txq) __field(int, enable) ), TP_fast_assign( __assign_str(dev_name, name); __entry->bid = bearer_id; __entry->grant = grant; __entry->qlen = qlen; __entry->tcm_handle = tcm_handle; __entry->txq = txq; __entry->enable = enable; ), TP_printk("dev=%s bearer_id=%u grant=%u len=%d mq=%u %s", TP_printk("dev=%s txq=%u %s", __get_str(dev_name), __entry->bid, __entry->grant, __entry->qlen, __entry->tcm_handle, __entry->txq, __entry->enable ? "enable" : "disable") ); Loading Loading @@ -139,7 +131,7 @@ TRACE_EVENT(dfc_flow_info, __entry->action = add; ), TP_printk("%s: dev=%s bearer_id=%u flow_id=%u ip_type=%d mq=%d", TP_printk("%s: dev=%s bearer_id=%u flow_id=%u ip_type=%d txq=%d", __entry->action ? "add flow" : "delete flow", __get_str(dev_name), __entry->bid, __entry->fid, __entry->ip, __entry->handle) Loading