Lines Matching refs:rxfh_dev

1153 	struct ethtool_rxfh_param rxfh_dev = {};  in ethtool_set_rxfh_indir()  local
1164 rxfh_dev.indir_size = ops->get_rxfh_indir_size(dev); in ethtool_set_rxfh_indir()
1165 if (rxfh_dev.indir_size == 0) in ethtool_set_rxfh_indir()
1173 if (user_size != 0 && user_size != rxfh_dev.indir_size) in ethtool_set_rxfh_indir()
1176 rxfh_dev.indir = kcalloc(rxfh_dev.indir_size, in ethtool_set_rxfh_indir()
1177 sizeof(rxfh_dev.indir[0]), GFP_USER); in ethtool_set_rxfh_indir()
1178 if (!rxfh_dev.indir) in ethtool_set_rxfh_indir()
1187 u32 *indir = rxfh_dev.indir; in ethtool_set_rxfh_indir()
1189 for (i = 0; i < rxfh_dev.indir_size; i++) in ethtool_set_rxfh_indir()
1192 ret = ethtool_copy_validate_indir(rxfh_dev.indir, in ethtool_set_rxfh_indir()
1195 rxfh_dev.indir_size); in ethtool_set_rxfh_indir()
1200 rxfh_dev.hfunc = ETH_RSS_HASH_NO_CHANGE; in ethtool_set_rxfh_indir()
1201 ret = ops->set_rxfh(dev, &rxfh_dev, extack); in ethtool_set_rxfh_indir()
1212 kfree(rxfh_dev.indir); in ethtool_set_rxfh_indir()
1220 struct ethtool_rxfh_param rxfh_dev = {}; in ethtool_get_rxfh() local
1233 rxfh_dev.indir_size = ops->get_rxfh_indir_size(dev); in ethtool_get_rxfh()
1235 rxfh_dev.key_size = ops->get_rxfh_key_size(dev); in ethtool_get_rxfh()
1250 rxfh.indir_size = rxfh_dev.indir_size; in ethtool_get_rxfh()
1251 rxfh.key_size = rxfh_dev.key_size; in ethtool_get_rxfh()
1255 if ((user_indir_size && user_indir_size != rxfh_dev.indir_size) || in ethtool_get_rxfh()
1256 (user_key_size && user_key_size != rxfh_dev.key_size)) in ethtool_get_rxfh()
1259 indir_bytes = user_indir_size * sizeof(rxfh_dev.indir[0]); in ethtool_get_rxfh()
1266 rxfh_dev.indir = (u32 *)rss_config; in ethtool_get_rxfh()
1269 rxfh_dev.key = rss_config + indir_bytes; in ethtool_get_rxfh()
1277 if (rxfh_dev.indir) in ethtool_get_rxfh()
1278 memcpy(rxfh_dev.indir, ethtool_rxfh_context_indir(ctx), in ethtool_get_rxfh()
1281 rxfh_dev.key_size = 0; in ethtool_get_rxfh()
1283 if (rxfh_dev.key) in ethtool_get_rxfh()
1284 memcpy(rxfh_dev.key, in ethtool_get_rxfh()
1287 rxfh_dev.hfunc = ctx->hfunc; in ethtool_get_rxfh()
1289 rxfh_dev.input_xfrm = ctx->input_xfrm; in ethtool_get_rxfh()
1292 ret = dev->ethtool_ops->get_rxfh(dev, &rxfh_dev); in ethtool_get_rxfh()
1298 &rxfh_dev.hfunc, sizeof(rxfh.hfunc))) { in ethtool_get_rxfh()
1302 &rxfh_dev.input_xfrm, in ethtool_get_rxfh()
1307 &rxfh_dev.key_size, in ethtool_get_rxfh()
1362 struct ethtool_rxfh_param rxfh_dev = {}; in ethtool_set_rxfh() local
1416 indir_bytes = dev_indir_size * sizeof(rxfh_dev.indir[0]); in ethtool_set_rxfh()
1441 rxfh_dev.indir = (u32 *)rss_config; in ethtool_set_rxfh()
1442 rxfh_dev.indir_size = dev_indir_size; in ethtool_set_rxfh()
1443 ret = ethtool_copy_validate_indir(rxfh_dev.indir, in ethtool_set_rxfh()
1453 rxfh_dev.indir = (u32 *)rss_config; in ethtool_set_rxfh()
1454 rxfh_dev.indir_size = dev_indir_size; in ethtool_set_rxfh()
1455 indir = rxfh_dev.indir; in ethtool_set_rxfh()
1459 rxfh_dev.rss_delete = true; in ethtool_set_rxfh()
1464 rxfh_dev.key_size = dev_key_size; in ethtool_set_rxfh()
1465 rxfh_dev.key = rss_config + indir_bytes; in ethtool_set_rxfh()
1466 if (copy_from_user(rxfh_dev.key, in ethtool_set_rxfh()
1479 if (rxfh.rss_context && rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1486 if (rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1518 rxfh_dev.hfunc = rxfh.hfunc; in ethtool_set_rxfh()
1519 rxfh_dev.rss_context = rxfh.rss_context; in ethtool_set_rxfh()
1520 rxfh_dev.input_xfrm = rxfh.input_xfrm; in ethtool_set_rxfh()
1524 ret = ops->create_rxfh_context(dev, ctx, &rxfh_dev, in ethtool_set_rxfh()
1527 WARN_ON_ONCE(!ret && !rxfh_dev.key && in ethtool_set_rxfh()
1531 } else if (rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1536 ret = ops->modify_rxfh_context(dev, ctx, &rxfh_dev, in ethtool_set_rxfh()
1540 ret = ops->set_rxfh(dev, &rxfh_dev, extack); in ethtool_set_rxfh()
1553 &rxfh_dev.rss_context, sizeof(rxfh_dev.rss_context))) in ethtool_set_rxfh()
1556 if (!rxfh_dev.rss_context) { in ethtool_set_rxfh()
1566 if (WARN_ON(xa_load(&dev->ethtool->rss_ctx, rxfh_dev.rss_context))) { in ethtool_set_rxfh()
1572 if (xa_is_err(xa_store(&dev->ethtool->rss_ctx, rxfh_dev.rss_context, in ethtool_set_rxfh()
1581 rxfh_dev.indir = (u32 *)rss_config; in ethtool_set_rxfh()
1582 rxfh_dev.indir_size = dev_indir_size; in ethtool_set_rxfh()
1584 rxfh_dev.key = rss_config + indir_bytes; in ethtool_set_rxfh()
1585 rxfh_dev.key_size = dev_key_size; in ethtool_set_rxfh()
1587 ret = ops->get_rxfh(dev, &rxfh_dev); in ethtool_set_rxfh()
1594 if (rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1598 if (rxfh_dev.indir) { in ethtool_set_rxfh()
1600 ethtool_rxfh_context_indir(ctx)[i] = rxfh_dev.indir[i]; in ethtool_set_rxfh()
1605 if (rxfh_dev.key) { in ethtool_set_rxfh()
1606 memcpy(ethtool_rxfh_context_key(ctx), rxfh_dev.key, in ethtool_set_rxfh()
1610 if (rxfh_dev.hfunc != ETH_RSS_HASH_NO_CHANGE) in ethtool_set_rxfh()
1611 ctx->hfunc = rxfh_dev.hfunc; in ethtool_set_rxfh()
1612 if (rxfh_dev.input_xfrm != RXH_XFRM_NO_CHANGE) in ethtool_set_rxfh()
1613 ctx->input_xfrm = rxfh_dev.input_xfrm; in ethtool_set_rxfh()