diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0291-staging-fsl_ppfe-eth-add-function-to-update-tmu-cred.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/701-net-0291-staging-fsl_ppfe-eth-add-function-to-update-tmu-cred.patch | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0291-staging-fsl_ppfe-eth-add-function-to-update-tmu-cred.patch b/target/linux/layerscape/patches-5.4/701-net-0291-staging-fsl_ppfe-eth-add-function-to-update-tmu-cred.patch new file mode 100644 index 0000000000..72152bf786 --- /dev/null +++ b/target/linux/layerscape/patches-5.4/701-net-0291-staging-fsl_ppfe-eth-add-function-to-update-tmu-cred.patch @@ -0,0 +1,68 @@ +From cc230f5618174506889f98ac6b79e72ac9d9d9e4 Mon Sep 17 00:00:00 2001 +From: Calvin Johnson <calvin.johnson@nxp.com> +Date: Wed, 15 Nov 2017 13:45:27 +0530 +Subject: [PATCH] staging: fsl_ppfe/eth: add function to update tmu credits + +__hif_lib_update_credit function is used to update the tmu credits. +If tx_qos is set, tmu credit is updated based on the number of packets +transmitted by tmu. + +Signed-off-by: Calvin Johnson <calvin.johnson@nxp.com> +Signed-off-by: Anjaneyulu Jagarlmudi <anji.jagarlmudi@nxp.com> +--- + drivers/staging/fsl_ppfe/pfe_hif_lib.c | 33 +++++++++++++++++++++++++++++++++ + drivers/staging/fsl_ppfe/pfe_hif_lib.h | 1 + + 2 files changed, 34 insertions(+) + +--- a/drivers/staging/fsl_ppfe/pfe_hif_lib.c ++++ b/drivers/staging/fsl_ppfe/pfe_hif_lib.c +@@ -565,6 +565,39 @@ static void hif_lib_tmu_credit_init(stru + } + } + ++/* __hif_lib_update_credit ++ * ++ * @param[in] client hif client context ++ * @param[in] queue queue number in match with TMU ++ */ ++void __hif_lib_update_credit(struct hif_client_s *client, unsigned int queue) ++{ ++ unsigned int tmu_tx_packets, tmp; ++ ++ if (tx_qos) { ++ tmu_tx_packets = be32_to_cpu(pe_dmem_read(TMU0_ID + ++ client->id, TMU_DM_TX_TRANS, 4)); ++ ++ /* tx_packets counter overflowed */ ++ if (tmu_tx_packets > ++ pfe->tmu_credit.tx_packets[client->id][queue]) { ++ tmp = UINT_MAX - tmu_tx_packets + ++ pfe->tmu_credit.tx_packets[client->id][queue]; ++ ++ pfe->tmu_credit.tx_credit[client->id][queue] = ++ pfe->tmu_credit.tx_credit_max[client->id][queue] - tmp; ++ } else { ++ /* TMU tx <= pfe_eth tx, normal case or both OF since ++ * last time ++ */ ++ pfe->tmu_credit.tx_credit[client->id][queue] = ++ pfe->tmu_credit.tx_credit_max[client->id][queue] - ++ (pfe->tmu_credit.tx_packets[client->id][queue] - ++ tmu_tx_packets); ++ } ++ } ++} ++ + int pfe_hif_lib_init(struct pfe *pfe) + { + int rc; +--- a/drivers/staging/fsl_ppfe/pfe_hif_lib.h ++++ b/drivers/staging/fsl_ppfe/pfe_hif_lib.h +@@ -185,6 +185,7 @@ void *hif_lib_tx_get_next_complete(struc + void *hif_lib_receive_pkt(struct hif_client_s *client, int qno, int *len, int + *ofst, unsigned int *rx_ctrl, + unsigned int *desc_ctrl, void **priv_data); ++void __hif_lib_update_credit(struct hif_client_s *client, unsigned int queue); + void hif_lib_set_rx_cpu_affinity(struct hif_client_s *client, int cpu_id); + void hif_lib_set_tx_queue_nocpy(struct hif_client_s *client, int qno, int + enable); |