* Multi-Process communication request handling (in primary) *********************************************************************/
| 4019 | * Multi-Process communication request handling (in primary) |
| 4020 | *********************************************************************/ |
| 4021 | static int |
| 4022 | ena_mp_primary_handle(const struct rte_mp_msg *mp_msg, const void *peer) |
| 4023 | { |
| 4024 | const struct ena_mp_body *req = |
| 4025 | (const struct ena_mp_body *)mp_msg->param; |
| 4026 | struct ena_adapter *adapter; |
| 4027 | struct ena_com_dev *ena_dev; |
| 4028 | struct ena_mp_body *rsp; |
| 4029 | struct rte_mp_msg mp_rsp; |
| 4030 | struct rte_eth_dev *dev; |
| 4031 | int res = 0; |
| 4032 | |
| 4033 | rsp = (struct ena_mp_body *)&mp_rsp.param; |
| 4034 | mp_msg_init(&mp_rsp, req->type, req->port_id); |
| 4035 | |
| 4036 | if (!rte_eth_dev_is_valid_port(req->port_id)) { |
| 4037 | rte_errno = ENODEV; |
| 4038 | res = -rte_errno; |
| 4039 | PMD_DRV_LOG(ERR, "Unknown port %d in request %d\n", |
| 4040 | req->port_id, req->type); |
| 4041 | goto end; |
| 4042 | } |
| 4043 | dev = &rte_eth_devices[req->port_id]; |
| 4044 | adapter = dev->data->dev_private; |
| 4045 | ena_dev = &adapter->ena_dev; |
| 4046 | |
| 4047 | switch (req->type) { |
| 4048 | case ENA_MP_DEV_STATS_GET: |
| 4049 | res = ena_com_get_dev_basic_stats(ena_dev, |
| 4050 | &adapter->basic_stats); |
| 4051 | break; |
| 4052 | case ENA_MP_ENI_STATS_GET: |
| 4053 | res = ena_com_get_eni_stats(ena_dev, |
| 4054 | (struct ena_admin_eni_stats *)&adapter->metrics_stats); |
| 4055 | break; |
| 4056 | case ENA_MP_MTU_SET: |
| 4057 | res = ena_com_set_dev_mtu(ena_dev, req->args.mtu); |
| 4058 | break; |
| 4059 | case ENA_MP_IND_TBL_GET: |
| 4060 | res = ena_com_indirect_table_get(ena_dev, |
| 4061 | adapter->indirect_table); |
| 4062 | break; |
| 4063 | case ENA_MP_IND_TBL_SET: |
| 4064 | res = ena_com_indirect_table_set(ena_dev); |
| 4065 | break; |
| 4066 | case ENA_MP_CUSTOMER_METRICS_GET: |
| 4067 | res = ena_com_get_customer_metrics(ena_dev, |
| 4068 | (char *)adapter->metrics_stats, |
| 4069 | sizeof(uint64_t) * adapter->metrics_num); |
| 4070 | break; |
| 4071 | case ENA_MP_SRD_STATS_GET: |
| 4072 | res = ena_com_get_ena_srd_info(ena_dev, |
| 4073 | (struct ena_admin_ena_srd_info *)&adapter->srd_stats); |
| 4074 | break; |
| 4075 | default: |
| 4076 | PMD_DRV_LOG(ERR, "Unknown request type %d\n", req->type); |
| 4077 | res = -EINVAL; |
| 4078 | break; |
nothing calls this directly
no test coverage detected