1007f790cSJiri Pirko /* 2007f790cSJiri Pirko * net/switchdev/switchdev.c - Switch device API 3007f790cSJiri Pirko * Copyright (c) 2014 Jiri Pirko <[email protected]> 4007f790cSJiri Pirko * 5007f790cSJiri Pirko * This program is free software; you can redistribute it and/or modify 6007f790cSJiri Pirko * it under the terms of the GNU General Public License as published by 7007f790cSJiri Pirko * the Free Software Foundation; either version 2 of the License, or 8007f790cSJiri Pirko * (at your option) any later version. 9007f790cSJiri Pirko */ 10007f790cSJiri Pirko 11007f790cSJiri Pirko #include <linux/kernel.h> 12007f790cSJiri Pirko #include <linux/types.h> 13007f790cSJiri Pirko #include <linux/init.h> 14007f790cSJiri Pirko #include <linux/netdevice.h> 15007f790cSJiri Pirko #include <net/switchdev.h> 16007f790cSJiri Pirko 17007f790cSJiri Pirko /** 18007f790cSJiri Pirko * netdev_switch_parent_id_get - Get ID of a switch 19007f790cSJiri Pirko * @dev: port device 20007f790cSJiri Pirko * @psid: switch ID 21007f790cSJiri Pirko * 22007f790cSJiri Pirko * Get ID of a switch this port is part of. 23007f790cSJiri Pirko */ 24007f790cSJiri Pirko int netdev_switch_parent_id_get(struct net_device *dev, 25007f790cSJiri Pirko struct netdev_phys_item_id *psid) 26007f790cSJiri Pirko { 27007f790cSJiri Pirko const struct net_device_ops *ops = dev->netdev_ops; 28007f790cSJiri Pirko 29007f790cSJiri Pirko if (!ops->ndo_switch_parent_id_get) 30007f790cSJiri Pirko return -EOPNOTSUPP; 31007f790cSJiri Pirko return ops->ndo_switch_parent_id_get(dev, psid); 32007f790cSJiri Pirko } 33007f790cSJiri Pirko EXPORT_SYMBOL(netdev_switch_parent_id_get); 34*38dcf357SScott Feldman 35*38dcf357SScott Feldman /** 36*38dcf357SScott Feldman * netdev_switch_port_stp_update - Notify switch device port of STP 37*38dcf357SScott Feldman * state change 38*38dcf357SScott Feldman * @dev: port device 39*38dcf357SScott Feldman * @state: port STP state 40*38dcf357SScott Feldman * 41*38dcf357SScott Feldman * Notify switch device port of bridge port STP state change. 42*38dcf357SScott Feldman */ 43*38dcf357SScott Feldman int netdev_switch_port_stp_update(struct net_device *dev, u8 state) 44*38dcf357SScott Feldman { 45*38dcf357SScott Feldman const struct net_device_ops *ops = dev->netdev_ops; 46*38dcf357SScott Feldman 47*38dcf357SScott Feldman if (!ops->ndo_switch_port_stp_update) 48*38dcf357SScott Feldman return -EOPNOTSUPP; 49*38dcf357SScott Feldman WARN_ON(!ops->ndo_switch_parent_id_get); 50*38dcf357SScott Feldman return ops->ndo_switch_port_stp_update(dev, state); 51*38dcf357SScott Feldman } 52*38dcf357SScott Feldman EXPORT_SYMBOL(netdev_switch_port_stp_update); 53