Lines Matching +full:cfg +full:- +full:space
1 // SPDX-License-Identifier: GPL-2.0
25 * match. --pb
30 ifr->ifr_name[IFNAMSIZ-1] = 0; in dev_ifname()
31 return netdev_get_name(net, ifr->ifr_name, ifr->ifr_ifindex); in dev_ifname()
51 return -EFAULT; in dev_ifconf()
60 return -EFAULT; in dev_ifconf()
74 len - total, size); in dev_ifconf()
77 return -EFAULT; in dev_ifconf()
83 return put_user(total, &uifc->ifc_len); in dev_ifconf()
88 struct ifmap *ifmap = &ifr->ifr_map; in dev_getifmap()
93 cifmap->mem_start = dev->mem_start; in dev_getifmap()
94 cifmap->mem_end = dev->mem_end; in dev_getifmap()
95 cifmap->base_addr = dev->base_addr; in dev_getifmap()
96 cifmap->irq = dev->irq; in dev_getifmap()
97 cifmap->dma = dev->dma; in dev_getifmap()
98 cifmap->port = dev->if_port; in dev_getifmap()
103 ifmap->mem_start = dev->mem_start; in dev_getifmap()
104 ifmap->mem_end = dev->mem_end; in dev_getifmap()
105 ifmap->base_addr = dev->base_addr; in dev_getifmap()
106 ifmap->irq = dev->irq; in dev_getifmap()
107 ifmap->dma = dev->dma; in dev_getifmap()
108 ifmap->port = dev->if_port; in dev_getifmap()
115 struct compat_ifmap *cifmap = (struct compat_ifmap *)&ifr->ifr_map; in dev_setifmap()
117 if (!dev->netdev_ops->ndo_set_config) in dev_setifmap()
118 return -EOPNOTSUPP; in dev_setifmap()
122 .mem_start = cifmap->mem_start, in dev_setifmap()
123 .mem_end = cifmap->mem_end, in dev_setifmap()
124 .base_addr = cifmap->base_addr, in dev_setifmap()
125 .irq = cifmap->irq, in dev_setifmap()
126 .dma = cifmap->dma, in dev_setifmap()
127 .port = cifmap->port, in dev_setifmap()
130 return dev->netdev_ops->ndo_set_config(dev, &ifmap); in dev_setifmap()
133 return dev->netdev_ops->ndo_set_config(dev, &ifr->ifr_map); in dev_setifmap()
142 struct net_device *dev = dev_get_by_name_rcu(net, ifr->ifr_name); in dev_ifsioc_locked()
145 return -ENODEV; in dev_ifsioc_locked()
149 ifr->ifr_flags = (short) dev_get_flags(dev); in dev_ifsioc_locked()
154 ifr->ifr_metric = 0; in dev_ifsioc_locked()
158 ifr->ifr_mtu = dev->mtu; in dev_ifsioc_locked()
162 err = -EINVAL; in dev_ifsioc_locked()
169 ifr->ifr_ifindex = dev->ifindex; in dev_ifsioc_locked()
173 ifr->ifr_qlen = dev->tx_queue_len; in dev_ifsioc_locked()
181 err = -ENOTTY; in dev_ifsioc_locked()
188 int net_hwtstamp_validate(const struct kernel_hwtstamp_config *cfg) in net_hwtstamp_validate() argument
195 if (cfg->flags & ~HWTSTAMP_FLAG_MASK) in net_hwtstamp_validate()
196 return -EINVAL; in net_hwtstamp_validate()
198 tx_type = cfg->tx_type; in net_hwtstamp_validate()
199 rx_filter = cfg->rx_filter; in net_hwtstamp_validate()
238 return -ERANGE; in net_hwtstamp_validate()
246 const struct net_device_ops *ops = dev->netdev_ops; in dev_eth_ioctl()
248 if (!ops->ndo_eth_ioctl) in dev_eth_ioctl()
249 return -EOPNOTSUPP; in dev_eth_ioctl()
252 return -ENODEV; in dev_eth_ioctl()
254 return ops->ndo_eth_ioctl(dev, ifr, cmd); in dev_eth_ioctl()
258 * dev_get_hwtstamp_phylib() - Get hardware timestamping settings of NIC
261 * @cfg: Timestamping configuration structure
266 * there only exists a phydev->mii_ts->hwtstamp() method. So this will return
267 * -EOPNOTSUPP for phylib for now, which is still more accurate than letting
271 struct kernel_hwtstamp_config *cfg) in dev_get_hwtstamp_phylib() argument
275 hwprov = rtnl_dereference(dev->hwprov); in dev_get_hwtstamp_phylib()
277 cfg->qualifier = hwprov->desc.qualifier; in dev_get_hwtstamp_phylib()
278 if (hwprov->source == HWTSTAMP_SOURCE_PHYLIB && in dev_get_hwtstamp_phylib()
279 hwprov->phydev) in dev_get_hwtstamp_phylib()
280 return phy_hwtstamp_get(hwprov->phydev, cfg); in dev_get_hwtstamp_phylib()
282 if (hwprov->source == HWTSTAMP_SOURCE_NETDEV) in dev_get_hwtstamp_phylib()
283 return dev->netdev_ops->ndo_hwtstamp_get(dev, cfg); in dev_get_hwtstamp_phylib()
285 return -EOPNOTSUPP; in dev_get_hwtstamp_phylib()
288 if (phy_is_default_hwtstamp(dev->phydev)) in dev_get_hwtstamp_phylib()
289 return phy_hwtstamp_get(dev->phydev, cfg); in dev_get_hwtstamp_phylib()
291 return dev->netdev_ops->ndo_hwtstamp_get(dev, cfg); in dev_get_hwtstamp_phylib()
296 const struct net_device_ops *ops = dev->netdev_ops; in dev_get_hwtstamp()
298 struct hwtstamp_config cfg; in dev_get_hwtstamp() local
301 if (!ops->ndo_hwtstamp_get) in dev_get_hwtstamp()
305 return -ENODEV; in dev_get_hwtstamp()
316 hwtstamp_config_from_kernel(&cfg, &kernel_cfg); in dev_get_hwtstamp()
318 if (copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg))) in dev_get_hwtstamp()
319 return -EFAULT; in dev_get_hwtstamp()
326 * dev_set_hwtstamp_phylib() - Change hardware timestamping of NIC
329 * @cfg: Timestamping configuration structure
336 * frames and not forward them), it must set dev->see_all_hwtstamp_requests.
339 struct kernel_hwtstamp_config *cfg, in dev_set_hwtstamp_phylib() argument
342 const struct net_device_ops *ops = dev->netdev_ops; in dev_set_hwtstamp_phylib()
350 hwprov = rtnl_dereference(dev->hwprov); in dev_set_hwtstamp_phylib()
352 if (hwprov->source == HWTSTAMP_SOURCE_PHYLIB && in dev_set_hwtstamp_phylib()
353 hwprov->phydev) { in dev_set_hwtstamp_phylib()
355 phydev = hwprov->phydev; in dev_set_hwtstamp_phylib()
356 } else if (hwprov->source == HWTSTAMP_SOURCE_NETDEV) { in dev_set_hwtstamp_phylib()
359 return -EOPNOTSUPP; in dev_set_hwtstamp_phylib()
362 cfg->qualifier = hwprov->desc.qualifier; in dev_set_hwtstamp_phylib()
364 phy_ts = phy_is_default_hwtstamp(dev->phydev); in dev_set_hwtstamp_phylib()
366 phydev = dev->phydev; in dev_set_hwtstamp_phylib()
369 cfg->source = phy_ts ? HWTSTAMP_SOURCE_PHYLIB : HWTSTAMP_SOURCE_NETDEV; in dev_set_hwtstamp_phylib()
371 if (phy_ts && dev->see_all_hwtstamp_requests) { in dev_set_hwtstamp_phylib()
372 err = ops->ndo_hwtstamp_get(dev, &old_cfg); in dev_set_hwtstamp_phylib()
377 if (!phy_ts || dev->see_all_hwtstamp_requests) { in dev_set_hwtstamp_phylib()
378 err = ops->ndo_hwtstamp_set(dev, cfg, extack); in dev_set_hwtstamp_phylib()
380 if (extack->_msg) in dev_set_hwtstamp_phylib()
381 netdev_err(dev, "%s\n", extack->_msg); in dev_set_hwtstamp_phylib()
386 if (phy_ts && dev->see_all_hwtstamp_requests) in dev_set_hwtstamp_phylib()
387 changed = kernel_hwtstamp_config_changed(&old_cfg, cfg); in dev_set_hwtstamp_phylib()
390 err = phy_hwtstamp_set(phydev, cfg, extack); in dev_set_hwtstamp_phylib()
393 ops->ndo_hwtstamp_set(dev, &old_cfg, NULL); in dev_set_hwtstamp_phylib()
403 const struct net_device_ops *ops = dev->netdev_ops; in dev_set_hwtstamp()
406 struct hwtstamp_config cfg; in dev_set_hwtstamp() local
409 if (copy_from_user(&cfg, ifr->ifr_data, sizeof(cfg))) in dev_set_hwtstamp()
410 return -EFAULT; in dev_set_hwtstamp()
412 hwtstamp_config_to_kernel(&kernel_cfg, &cfg); in dev_set_hwtstamp()
426 if (!ops->ndo_hwtstamp_set) in dev_set_hwtstamp()
430 return -ENODEV; in dev_set_hwtstamp()
437 * updated version of it back to user space in dev_set_hwtstamp()
440 hwtstamp_config_from_kernel(&cfg, &kernel_cfg); in dev_set_hwtstamp()
442 if (copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg))) in dev_set_hwtstamp()
443 return -EFAULT; in dev_set_hwtstamp()
455 strscpy_pad(ifrr.ifr_name, dev->name, IFNAMSIZ); in generic_hwtstamp_ioctl_lower()
456 ifrr.ifr_ifru = kernel_cfg->ifr->ifr_ifru; in generic_hwtstamp_ioctl_lower()
462 kernel_cfg->ifr->ifr_ifru = ifrr.ifr_ifru; in generic_hwtstamp_ioctl_lower()
463 kernel_cfg->copied_to_user = true; in generic_hwtstamp_ioctl_lower()
471 const struct net_device_ops *ops = dev->netdev_ops; in generic_hwtstamp_get_lower()
474 return -ENODEV; in generic_hwtstamp_get_lower()
476 if (ops->ndo_hwtstamp_get) in generic_hwtstamp_get_lower()
488 const struct net_device_ops *ops = dev->netdev_ops; in generic_hwtstamp_set_lower()
491 return -ENODEV; in generic_hwtstamp_set_lower()
493 if (ops->ndo_hwtstamp_set) in generic_hwtstamp_set_lower()
504 const struct net_device_ops *ops = dev->netdev_ops; in dev_siocbond()
506 if (ops->ndo_siocbond) { in dev_siocbond()
508 return ops->ndo_siocbond(dev, ifr, cmd); in dev_siocbond()
510 return -ENODEV; in dev_siocbond()
513 return -EOPNOTSUPP; in dev_siocbond()
519 const struct net_device_ops *ops = dev->netdev_ops; in dev_siocdevprivate()
521 if (ops->ndo_siocdevprivate) { in dev_siocdevprivate()
523 return ops->ndo_siocdevprivate(dev, ifr, data, cmd); in dev_siocdevprivate()
525 return -ENODEV; in dev_siocdevprivate()
528 return -EOPNOTSUPP; in dev_siocdevprivate()
533 const struct net_device_ops *ops = dev->netdev_ops; in dev_siocwandev()
535 if (ops->ndo_siocwandev) { in dev_siocwandev()
537 return ops->ndo_siocwandev(dev, ifs); in dev_siocwandev()
539 return -ENODEV; in dev_siocwandev()
542 return -EOPNOTSUPP; in dev_siocwandev()
552 struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name); in dev_ifsioc()
556 return -ENODEV; in dev_ifsioc()
558 ops = dev->netdev_ops; in dev_ifsioc()
562 return dev_change_flags(dev, ifr->ifr_flags, NULL); in dev_ifsioc()
566 return -EOPNOTSUPP; in dev_ifsioc()
569 return dev_set_mtu(dev, ifr->ifr_mtu); in dev_ifsioc()
572 if (dev->addr_len > sizeof(struct sockaddr)) in dev_ifsioc()
573 return -EINVAL; in dev_ifsioc()
574 return dev_set_mac_address_user(dev, &ifr->ifr_hwaddr, NULL); in dev_ifsioc()
577 if (ifr->ifr_hwaddr.sa_family != dev->type) in dev_ifsioc()
578 return -EINVAL; in dev_ifsioc()
579 memcpy(dev->broadcast, ifr->ifr_hwaddr.sa_data, in dev_ifsioc()
580 min(sizeof(ifr->ifr_hwaddr.sa_data_min), in dev_ifsioc()
581 (size_t)dev->addr_len)); in dev_ifsioc()
589 if (!ops->ndo_set_rx_mode || in dev_ifsioc()
590 ifr->ifr_hwaddr.sa_family != AF_UNSPEC) in dev_ifsioc()
591 return -EINVAL; in dev_ifsioc()
593 return -ENODEV; in dev_ifsioc()
594 return dev_mc_add_global(dev, ifr->ifr_hwaddr.sa_data); in dev_ifsioc()
597 if (!ops->ndo_set_rx_mode || in dev_ifsioc()
598 ifr->ifr_hwaddr.sa_family != AF_UNSPEC) in dev_ifsioc()
599 return -EINVAL; in dev_ifsioc()
601 return -ENODEV; in dev_ifsioc()
602 return dev_mc_del_global(dev, ifr->ifr_hwaddr.sa_data); in dev_ifsioc()
605 if (ifr->ifr_qlen < 0) in dev_ifsioc()
606 return -EINVAL; in dev_ifsioc()
607 return dev_change_tx_queue_len(dev, ifr->ifr_qlen); in dev_ifsioc()
610 ifr->ifr_newname[IFNAMSIZ-1] = '\0'; in dev_ifsioc()
611 return dev_change_name(dev, ifr->ifr_newname); in dev_ifsioc()
614 return dev_siocwandev(dev, &ifr->ifr_settings); in dev_ifsioc()
640 err = -EINVAL; in dev_ifsioc()
646 * dev_load - load a network module
666 no_module = request_module("netdev-%s", name); in dev_load()
673 * This function handles all "interface"-type I/O control requests. The actual
678 * dev_ioctl - network device ioctl
681 * @ifr: pointer to a struct ifreq in user space
686 * user space syscall interfaces but can sometimes be useful for
702 ifr->ifr_name[IFNAMSIZ-1] = 0; in dev_ioctl()
704 colon = strchr(ifr->ifr_name, ':'); in dev_ioctl()
714 dev_load(net, ifr->ifr_name); in dev_ioctl()
715 ret = dev_get_mac_address(&ifr->ifr_hwaddr, net, ifr->ifr_name); in dev_ioctl()
721 * - can be done by all. in dev_ioctl()
722 * - atomic and do not require locking. in dev_ioctl()
723 * - return a value in dev_ioctl()
732 dev_load(net, ifr->ifr_name); in dev_ioctl()
741 dev_load(net, ifr->ifr_name); in dev_ioctl()
749 * - require superuser power. in dev_ioctl()
750 * - require strict serialization. in dev_ioctl()
751 * - return a value in dev_ioctl()
756 dev_load(net, ifr->ifr_name); in dev_ioctl()
757 if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) in dev_ioctl()
758 return -EPERM; in dev_ioctl()
770 * - require superuser power. in dev_ioctl()
771 * - require strict serialization. in dev_ioctl()
772 * - do not return a value in dev_ioctl()
777 return -EPERM; in dev_ioctl()
781 * - require local superuser power. in dev_ioctl()
782 * - require strict serialization. in dev_ioctl()
783 * - do not return a value in dev_ioctl()
799 if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) in dev_ioctl()
800 return -EPERM; in dev_ioctl()
804 dev_load(net, ifr->ifr_name); in dev_ioctl()
815 /* Get the per device memory space. We can add this but in dev_ioctl()
818 /* Set the per device memory buffer space. in dev_ioctl()
821 return -ENOTTY; in dev_ioctl()
831 dev_load(net, ifr->ifr_name); in dev_ioctl()
838 return -ENOTTY; in dev_ioctl()