MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ena_mp_primary_handle

Function ena_mp_primary_handle

dpdk/drivers/net/ena/ena_ethdev.c:4021–4086  ·  view source on GitHub ↗

* Multi-Process communication request handling (in primary) *********************************************************************/

Source from the content-addressed store, hash-verified

4019 * Multi-Process communication request handling (in primary)
4020 *********************************************************************/
4021static int
4022ena_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;

Callers

nothing calls this directly

Calls 10

mp_msg_initFunction · 0.85
ena_com_get_ena_srd_infoFunction · 0.85
ena_com_get_eni_statsFunction · 0.50
ena_com_set_dev_mtuFunction · 0.50
rte_mp_replyClass · 0.50

Tested by

no test coverage detected