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

Function cxgbe_dev_rss_reta_update

dpdk/drivers/net/cxgbe/cxgbe_ethdev.c:1248–1283  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1246}
1247
1248static int cxgbe_dev_rss_reta_update(struct rte_eth_dev *dev,
1249 struct rte_eth_rss_reta_entry64 *reta_conf,
1250 uint16_t reta_size)
1251{
1252 struct port_info *pi = dev->data->dev_private;
1253 struct adapter *adapter = pi->adapter;
1254 u16 i, idx, shift, *rss;
1255 int ret;
1256
1257 if (!(adapter->flags & FULL_INIT_DONE))
1258 return -ENOMEM;
1259
1260 if (!reta_size || reta_size > pi->rss_size)
1261 return -EINVAL;
1262
1263 rss = rte_calloc(NULL, pi->rss_size, sizeof(u16), 0);
1264 if (!rss)
1265 return -ENOMEM;
1266
1267 rte_memcpy(rss, pi->rss, pi->rss_size * sizeof(u16));
1268 for (i = 0; i < reta_size; i++) {
1269 idx = i / RTE_ETH_RETA_GROUP_SIZE;
1270 shift = i % RTE_ETH_RETA_GROUP_SIZE;
1271 if (!(reta_conf[idx].mask & (1ULL << shift)))
1272 continue;
1273
1274 rss[i] = reta_conf[idx].reta[shift];
1275 }
1276
1277 ret = cxgbe_write_rss(pi, rss);
1278 if (!ret)
1279 rte_memcpy(pi->rss, rss, pi->rss_size * sizeof(u16));
1280
1281 rte_free(rss);
1282 return ret;
1283}
1284
1285static int cxgbe_dev_rss_reta_query(struct rte_eth_dev *dev,
1286 struct rte_eth_rss_reta_entry64 *reta_conf,

Callers

nothing calls this directly

Calls 4

rte_callocFunction · 0.85
cxgbe_write_rssFunction · 0.85
rte_freeFunction · 0.85
rte_memcpyFunction · 0.50

Tested by

no test coverage detected