Lines Matching refs:rxfh_dev

1351 	struct ethtool_rxfh_param rxfh_dev = {};  in ethtool_set_rxfh_indir()  local
1361 rxfh_dev.indir_size = ops->get_rxfh_indir_size(dev); in ethtool_set_rxfh_indir()
1362 if (rxfh_dev.indir_size == 0) in ethtool_set_rxfh_indir()
1370 if (user_size != 0 && user_size != rxfh_dev.indir_size) in ethtool_set_rxfh_indir()
1373 rxfh_dev.indir = kcalloc(rxfh_dev.indir_size, in ethtool_set_rxfh_indir()
1374 sizeof(rxfh_dev.indir[0]), GFP_USER); in ethtool_set_rxfh_indir()
1375 if (!rxfh_dev.indir) in ethtool_set_rxfh_indir()
1385 u32 *indir = rxfh_dev.indir; in ethtool_set_rxfh_indir()
1387 for (i = 0; i < rxfh_dev.indir_size; i++) in ethtool_set_rxfh_indir()
1390 ret = ethtool_copy_validate_indir(rxfh_dev.indir, in ethtool_set_rxfh_indir()
1393 rxfh_dev.indir_size); in ethtool_set_rxfh_indir()
1398 rxfh_dev.hfunc = ETH_RSS_HASH_NO_CHANGE; in ethtool_set_rxfh_indir()
1401 ret = ops->set_rxfh(dev, &rxfh_dev, extack); in ethtool_set_rxfh_indir()
1414 kfree(rxfh_dev.indir); in ethtool_set_rxfh_indir()
1422 struct ethtool_rxfh_param rxfh_dev = {}; in ethtool_get_rxfh() local
1435 rxfh_dev.indir_size = ops->get_rxfh_indir_size(dev); in ethtool_get_rxfh()
1437 rxfh_dev.key_size = ops->get_rxfh_key_size(dev); in ethtool_get_rxfh()
1451 rxfh.indir_size = rxfh_dev.indir_size; in ethtool_get_rxfh()
1452 rxfh.key_size = rxfh_dev.key_size; in ethtool_get_rxfh()
1456 if ((user_indir_size && user_indir_size != rxfh_dev.indir_size) || in ethtool_get_rxfh()
1457 (user_key_size && user_key_size != rxfh_dev.key_size)) in ethtool_get_rxfh()
1460 indir_bytes = user_indir_size * sizeof(rxfh_dev.indir[0]); in ethtool_get_rxfh()
1467 rxfh_dev.indir = (u32 *)rss_config; in ethtool_get_rxfh()
1470 rxfh_dev.key = rss_config + indir_bytes; in ethtool_get_rxfh()
1479 if (rxfh_dev.indir) in ethtool_get_rxfh()
1480 memcpy(rxfh_dev.indir, ethtool_rxfh_context_indir(ctx), in ethtool_get_rxfh()
1483 rxfh_dev.key_size = 0; in ethtool_get_rxfh()
1485 if (rxfh_dev.key) in ethtool_get_rxfh()
1486 memcpy(rxfh_dev.key, in ethtool_get_rxfh()
1489 rxfh_dev.hfunc = ctx->hfunc; in ethtool_get_rxfh()
1491 rxfh_dev.input_xfrm = ctx->input_xfrm; in ethtool_get_rxfh()
1494 ret = dev->ethtool_ops->get_rxfh(dev, &rxfh_dev); in ethtool_get_rxfh()
1500 &rxfh_dev.hfunc, sizeof(rxfh.hfunc))) { in ethtool_get_rxfh()
1504 &rxfh_dev.input_xfrm, in ethtool_get_rxfh()
1509 &rxfh_dev.key_size, in ethtool_get_rxfh()
1531 struct ethtool_rxfh_param rxfh_dev = {}; in ethtool_set_rxfh() local
1584 indir_bytes = dev_indir_size * sizeof(rxfh_dev.indir[0]); in ethtool_set_rxfh()
1610 rxfh_dev.indir = (u32 *)rss_config; in ethtool_set_rxfh()
1611 rxfh_dev.indir_size = dev_indir_size; in ethtool_set_rxfh()
1612 ret = ethtool_copy_validate_indir(rxfh_dev.indir, in ethtool_set_rxfh()
1622 rxfh_dev.indir = (u32 *)rss_config; in ethtool_set_rxfh()
1623 rxfh_dev.indir_size = dev_indir_size; in ethtool_set_rxfh()
1624 indir = rxfh_dev.indir; in ethtool_set_rxfh()
1629 rxfh_dev.rss_delete = true; in ethtool_set_rxfh()
1634 rxfh_dev.key_size = dev_key_size; in ethtool_set_rxfh()
1635 rxfh_dev.key = rss_config + indir_bytes; in ethtool_set_rxfh()
1636 if (copy_from_user(rxfh_dev.key, in ethtool_set_rxfh()
1650 if (rxfh.rss_context && rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1659 if (rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1685 rxfh_dev.hfunc = rxfh.hfunc; in ethtool_set_rxfh()
1686 rxfh_dev.rss_context = rxfh.rss_context; in ethtool_set_rxfh()
1687 rxfh_dev.input_xfrm = rxfh.input_xfrm; in ethtool_set_rxfh()
1691 ret = ops->set_rxfh(dev, &rxfh_dev, extack); in ethtool_set_rxfh()
1694 ret = ops->create_rxfh_context(dev, ctx, &rxfh_dev, extack); in ethtool_set_rxfh()
1696 WARN_ON_ONCE(!ret && !rxfh_dev.key && ops->rxfh_per_ctx_key && in ethtool_set_rxfh()
1699 } else if (rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1705 ret = ops->modify_rxfh_context(dev, ctx, &rxfh_dev, extack); in ethtool_set_rxfh()
1718 &rxfh_dev.rss_context, sizeof(rxfh_dev.rss_context))) in ethtool_set_rxfh()
1721 if (!rxfh_dev.rss_context) { in ethtool_set_rxfh()
1729 if (rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1733 if (rxfh_dev.indir) { in ethtool_set_rxfh()
1735 ethtool_rxfh_context_indir(ctx)[i] = rxfh_dev.indir[i]; in ethtool_set_rxfh()
1740 if (rxfh_dev.key) { in ethtool_set_rxfh()
1741 memcpy(ethtool_rxfh_context_key(ctx), rxfh_dev.key, in ethtool_set_rxfh()
1745 if (rxfh_dev.hfunc != ETH_RSS_HASH_NO_CHANGE) in ethtool_set_rxfh()
1746 ctx->hfunc = rxfh_dev.hfunc; in ethtool_set_rxfh()
1747 if (rxfh_dev.input_xfrm != RXH_XFRM_NO_CHANGE) in ethtool_set_rxfh()
1748 ctx->input_xfrm = rxfh_dev.input_xfrm; in ethtool_set_rxfh()