1 /* 2 * net/switchdev/switchdev.c - Switch device API 3 * Copyright (c) 2014 Jiri Pirko <jiri@resnulli.us> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 */ 10 11 #include <linux/kernel.h> 12 #include <linux/types.h> 13 #include <linux/init.h> 14 #include <linux/netdevice.h> 15 #include <net/switchdev.h> 16 17 /** 18 * netdev_switch_parent_id_get - Get ID of a switch 19 * @dev: port device 20 * @psid: switch ID 21 * 22 * Get ID of a switch this port is part of. 23 */ 24 int netdev_switch_parent_id_get(struct net_device *dev, 25 struct netdev_phys_item_id *psid) 26 { 27 const struct net_device_ops *ops = dev->netdev_ops; 28 29 if (!ops->ndo_switch_parent_id_get) 30 return -EOPNOTSUPP; 31 return ops->ndo_switch_parent_id_get(dev, psid); 32 } 33 EXPORT_SYMBOL(netdev_switch_parent_id_get); 34 35 /** 36 * netdev_switch_port_stp_update - Notify switch device port of STP 37 * state change 38 * @dev: port device 39 * @state: port STP state 40 * 41 * Notify switch device port of bridge port STP state change. 42 */ 43 int netdev_switch_port_stp_update(struct net_device *dev, u8 state) 44 { 45 const struct net_device_ops *ops = dev->netdev_ops; 46 47 if (!ops->ndo_switch_port_stp_update) 48 return -EOPNOTSUPP; 49 WARN_ON(!ops->ndo_switch_parent_id_get); 50 return ops->ndo_switch_port_stp_update(dev, state); 51 } 52 EXPORT_SYMBOL(netdev_switch_port_stp_update); 53