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

Function mana_mp_secondary_handle

dpdk/drivers/net/mana/mp.c:121–172  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

119}
120
121static int
122mana_mp_secondary_handle(const struct rte_mp_msg *mp_msg, const void *peer)
123{
124 struct rte_mp_msg mp_res = { 0 };
125 struct mana_mp_param *res = (struct mana_mp_param *)mp_res.param;
126 const struct mana_mp_param *param =
127 (const struct mana_mp_param *)mp_msg->param;
128 struct rte_eth_dev *dev;
129 int ret;
130
131 if (!rte_eth_dev_is_valid_port(param->port_id)) {
132 DRV_LOG(ERR, "MP handle port ID %u invalid", param->port_id);
133 return -ENODEV;
134 }
135
136 dev = &rte_eth_devices[param->port_id];
137
138 mp_init_msg(&mp_res, param->type, param->port_id);
139
140 switch (param->type) {
141 case MANA_MP_REQ_START_RXTX:
142 DRV_LOG(INFO, "Port %u starting datapath", dev->data->port_id);
143
144 dev->tx_pkt_burst = mana_tx_burst;
145 dev->rx_pkt_burst = mana_rx_burst;
146
147 rte_mb();
148
149 res->result = 0;
150 ret = rte_mp_reply(&mp_res, peer);
151 break;
152
153 case MANA_MP_REQ_STOP_RXTX:
154 DRV_LOG(INFO, "Port %u stopping datapath", dev->data->port_id);
155
156 dev->tx_pkt_burst = mana_tx_burst_removed;
157 dev->rx_pkt_burst = mana_rx_burst_removed;
158
159 rte_mb();
160
161 res->result = 0;
162 ret = rte_mp_reply(&mp_res, peer);
163 break;
164
165 default:
166 DRV_LOG(ERR, "Port %u unknown secondary MP type %u",
167 param->port_id, param->type);
168 ret = -EINVAL;
169 }
170
171 return ret;
172}
173
174int
175mana_mp_init_primary(void)

Callers

nothing calls this directly

Calls 3

mp_init_msgFunction · 0.70
rte_mp_replyClass · 0.70

Tested by

no test coverage detected