| 70 | } |
| 71 | |
| 72 | static int |
| 73 | nfp_mtr_profile_validate(uint32_t mtr_profile_id, |
| 74 | struct rte_mtr_meter_profile *profile, |
| 75 | struct rte_mtr_error *error) |
| 76 | { |
| 77 | /* Profile must not be NULL. */ |
| 78 | if (profile == NULL) { |
| 79 | return -rte_mtr_error_set(error, EINVAL, |
| 80 | RTE_MTR_ERROR_TYPE_METER_PROFILE, |
| 81 | NULL, "Meter profile is null"); |
| 82 | } |
| 83 | |
| 84 | /* Meter profile ID must be valid. */ |
| 85 | if (mtr_profile_id >= NFP_MAX_PROFILE_CNT) { |
| 86 | return -rte_mtr_error_set(error, EINVAL, |
| 87 | RTE_MTR_ERROR_TYPE_METER_PROFILE_ID, |
| 88 | NULL, "Meter profile id not valid"); |
| 89 | } |
| 90 | |
| 91 | switch (profile->alg) { |
| 92 | case RTE_MTR_SRTCM_RFC2697: |
| 93 | case RTE_MTR_TRTCM_RFC2698: |
| 94 | return 0; |
| 95 | case RTE_MTR_TRTCM_RFC4115: |
| 96 | return -rte_mtr_error_set(error, ENOTSUP, |
| 97 | RTE_MTR_ERROR_TYPE_METER_PROFILE, |
| 98 | NULL, "Unsupported metering algorithm"); |
| 99 | default: |
| 100 | return -rte_mtr_error_set(error, ENOTSUP, |
| 101 | RTE_MTR_ERROR_TYPE_METER_PROFILE, |
| 102 | NULL, "Unknown metering algorithm"); |
| 103 | } |
| 104 | } |
| 105 | |
| 106 | static void |
| 107 | nfp_mtr_profile_config_2698(uint32_t mtr_profile_id, |
no test coverage detected