Lines Matching refs:upper_dev
7990 static int ____netdev_has_upper_dev(struct net_device *upper_dev,
7995 return upper_dev == dev;
8001 * @upper_dev: upper device to check
8008 struct net_device *upper_dev)
8011 .data = (void *)upper_dev,
8024 * @upper_dev: upper device to check
8032 struct net_device *upper_dev)
8035 .data = (void *)upper_dev,
8279 struct net_device *upper_dev)
8283 .data = (void *)upper_dev,
8811 struct net_device *upper_dev,
8818 ret = __netdev_adjacent_dev_insert(dev, upper_dev, up_list,
8823 ret = __netdev_adjacent_dev_insert(upper_dev, dev, down_list,
8826 __netdev_adjacent_dev_remove(dev, upper_dev, 1, up_list);
8834 struct net_device *upper_dev,
8839 __netdev_adjacent_dev_remove(dev, upper_dev, ref_nr, up_list);
8840 __netdev_adjacent_dev_remove(upper_dev, dev, ref_nr, down_list);
8844 struct net_device *upper_dev,
8847 return __netdev_adjacent_dev_link_lists(dev, upper_dev,
8849 &upper_dev->adj_list.lower,
8854 struct net_device *upper_dev)
8856 __netdev_adjacent_dev_unlink_lists(dev, upper_dev, 1,
8858 &upper_dev->adj_list.lower);
8862 struct net_device *upper_dev, bool master,
8872 .upper_dev = upper_dev,
8882 if (dev == upper_dev)
8885 /* To prevent loops, check if dev is not upper device to upper_dev. */
8886 if (__netdev_has_upper_dev(upper_dev, dev))
8889 if ((dev->lower_level + upper_dev->upper_level) > MAX_NEST_DEV)
8893 if (__netdev_has_upper_dev(dev, upper_dev))
8898 return master_dev == upper_dev ? -EEXIST : -EBUSY;
8907 ret = __netdev_adjacent_dev_link_neighbour(dev, upper_dev, upper_priv,
8921 __netdev_update_lower_level(upper_dev, priv);
8922 __netdev_walk_all_upper_dev(upper_dev, __netdev_update_lower_level,
8928 __netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
8936 * @upper_dev: new upper device
8945 struct net_device *upper_dev,
8953 return __netdev_upper_dev_link(dev, upper_dev, false,
8961 * @upper_dev: new upper device
8973 struct net_device *upper_dev,
8982 return __netdev_upper_dev_link(dev, upper_dev, true,
8988 struct net_device *upper_dev,
8995 .upper_dev = upper_dev,
9001 changeupper_info.master = netdev_master_upper_dev_get(dev) == upper_dev;
9006 __netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
9014 __netdev_update_lower_level(upper_dev, priv);
9015 __netdev_walk_all_upper_dev(upper_dev, __netdev_update_lower_level,
9022 * @upper_dev: new upper device
9028 struct net_device *upper_dev)
9035 __netdev_upper_dev_unlink(dev, upper_dev, &priv);
9039 static void __netdev_adjacent_dev_set(struct net_device *upper_dev,
9045 adj = __netdev_find_adj(lower_dev, &upper_dev->adj_list.lower);
9049 adj = __netdev_find_adj(upper_dev, &lower_dev->adj_list.upper);
9054 static void netdev_adjacent_dev_disable(struct net_device *upper_dev,
9057 __netdev_adjacent_dev_set(upper_dev, lower_dev, true);
9060 static void netdev_adjacent_dev_enable(struct net_device *upper_dev,
9063 __netdev_adjacent_dev_set(upper_dev, lower_dev, false);