Lines Matching refs:tuna
2358 static int ethtool_tunable_valid(const struct ethtool_tunable *tuna)
2360 switch (tuna->id) {
2363 if (tuna->len != sizeof(u32) ||
2364 tuna->type_id != ETHTOOL_TUNABLE_U32)
2368 if (tuna->len != sizeof(u16) ||
2369 tuna->type_id != ETHTOOL_TUNABLE_U16)
2382 struct ethtool_tunable tuna;
2388 if (copy_from_user(&tuna, useraddr, sizeof(tuna)))
2390 ret = ethtool_tunable_valid(&tuna);
2393 data = kzalloc(tuna.len, GFP_USER);
2396 ret = ops->get_tunable(dev, &tuna, data);
2399 useraddr += sizeof(tuna);
2401 if (copy_to_user(useraddr, data, tuna.len))
2413 struct ethtool_tunable tuna;
2419 if (copy_from_user(&tuna, useraddr, sizeof(tuna)))
2421 ret = ethtool_tunable_valid(&tuna);
2424 useraddr += sizeof(tuna);
2425 data = memdup_user(useraddr, tuna.len);
2428 ret = ops->set_tunable(dev, &tuna, data);
2548 static int ethtool_phy_tunable_valid(const struct ethtool_tunable *tuna)
2550 switch (tuna->id) {
2553 if (tuna->len != sizeof(u8) ||
2554 tuna->type_id != ETHTOOL_TUNABLE_U8)
2558 if (tuna->len != sizeof(u16) ||
2559 tuna->type_id != ETHTOOL_TUNABLE_U16)
2572 struct ethtool_tunable tuna;
2580 if (copy_from_user(&tuna, useraddr, sizeof(tuna)))
2582 ret = ethtool_phy_tunable_valid(&tuna);
2585 data = kzalloc(tuna.len, GFP_USER);
2590 ret = phydev->drv->get_tunable(phydev, &tuna, data);
2593 ret = dev->ethtool_ops->get_phy_tunable(dev, &tuna, data);
2597 useraddr += sizeof(tuna);
2599 if (copy_to_user(useraddr, data, tuna.len))
2611 struct ethtool_tunable tuna;
2619 if (copy_from_user(&tuna, useraddr, sizeof(tuna)))
2621 ret = ethtool_phy_tunable_valid(&tuna);
2624 useraddr += sizeof(tuna);
2625 data = memdup_user(useraddr, tuna.len);
2630 ret = phydev->drv->set_tunable(phydev, &tuna, data);
2633 ret = dev->ethtool_ops->set_phy_tunable(dev, &tuna, data);