|
@@ -19,14 +19,14 @@
|
|
|
#include <net/switchdev.h>
|
|
|
|
|
|
/**
|
|
|
- * netdev_switch_parent_id_get - Get ID of a switch
|
|
|
+ * switchdev_parent_id_get - Get ID of a switch
|
|
|
* @dev: port device
|
|
|
* @psid: switch ID
|
|
|
*
|
|
|
* Get ID of a switch this port is part of.
|
|
|
*/
|
|
|
-int netdev_switch_parent_id_get(struct net_device *dev,
|
|
|
- struct netdev_phys_item_id *psid)
|
|
|
+int switchdev_parent_id_get(struct net_device *dev,
|
|
|
+ struct netdev_phys_item_id *psid)
|
|
|
{
|
|
|
const struct swdev_ops *ops = dev->swdev_ops;
|
|
|
|
|
@@ -34,17 +34,17 @@ int netdev_switch_parent_id_get(struct net_device *dev,
|
|
|
return -EOPNOTSUPP;
|
|
|
return ops->swdev_parent_id_get(dev, psid);
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(netdev_switch_parent_id_get);
|
|
|
+EXPORT_SYMBOL_GPL(switchdev_parent_id_get);
|
|
|
|
|
|
/**
|
|
|
- * netdev_switch_port_stp_update - Notify switch device port of STP
|
|
|
+ * switchdev_port_stp_update - Notify switch device port of STP
|
|
|
* state change
|
|
|
* @dev: port device
|
|
|
* @state: port STP state
|
|
|
*
|
|
|
* Notify switch device port of bridge port STP state change.
|
|
|
*/
|
|
|
-int netdev_switch_port_stp_update(struct net_device *dev, u8 state)
|
|
|
+int switchdev_port_stp_update(struct net_device *dev, u8 state)
|
|
|
{
|
|
|
const struct swdev_ops *ops = dev->swdev_ops;
|
|
|
struct net_device *lower_dev;
|
|
@@ -55,57 +55,57 @@ int netdev_switch_port_stp_update(struct net_device *dev, u8 state)
|
|
|
return ops->swdev_port_stp_update(dev, state);
|
|
|
|
|
|
netdev_for_each_lower_dev(dev, lower_dev, iter) {
|
|
|
- err = netdev_switch_port_stp_update(lower_dev, state);
|
|
|
+ err = switchdev_port_stp_update(lower_dev, state);
|
|
|
if (err && err != -EOPNOTSUPP)
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
return err;
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(netdev_switch_port_stp_update);
|
|
|
+EXPORT_SYMBOL_GPL(switchdev_port_stp_update);
|
|
|
|
|
|
-static DEFINE_MUTEX(netdev_switch_mutex);
|
|
|
-static RAW_NOTIFIER_HEAD(netdev_switch_notif_chain);
|
|
|
+static DEFINE_MUTEX(switchdev_mutex);
|
|
|
+static RAW_NOTIFIER_HEAD(switchdev_notif_chain);
|
|
|
|
|
|
/**
|
|
|
- * register_netdev_switch_notifier - Register notifier
|
|
|
+ * register_switchdev_notifier - Register notifier
|
|
|
* @nb: notifier_block
|
|
|
*
|
|
|
* Register switch device notifier. This should be used by code
|
|
|
* which needs to monitor events happening in particular device.
|
|
|
* Return values are same as for atomic_notifier_chain_register().
|
|
|
*/
|
|
|
-int register_netdev_switch_notifier(struct notifier_block *nb)
|
|
|
+int register_switchdev_notifier(struct notifier_block *nb)
|
|
|
{
|
|
|
int err;
|
|
|
|
|
|
- mutex_lock(&netdev_switch_mutex);
|
|
|
- err = raw_notifier_chain_register(&netdev_switch_notif_chain, nb);
|
|
|
- mutex_unlock(&netdev_switch_mutex);
|
|
|
+ mutex_lock(&switchdev_mutex);
|
|
|
+ err = raw_notifier_chain_register(&switchdev_notif_chain, nb);
|
|
|
+ mutex_unlock(&switchdev_mutex);
|
|
|
return err;
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(register_netdev_switch_notifier);
|
|
|
+EXPORT_SYMBOL_GPL(register_switchdev_notifier);
|
|
|
|
|
|
/**
|
|
|
- * unregister_netdev_switch_notifier - Unregister notifier
|
|
|
+ * unregister_switchdev_notifier - Unregister notifier
|
|
|
* @nb: notifier_block
|
|
|
*
|
|
|
* Unregister switch device notifier.
|
|
|
* Return values are same as for atomic_notifier_chain_unregister().
|
|
|
*/
|
|
|
-int unregister_netdev_switch_notifier(struct notifier_block *nb)
|
|
|
+int unregister_switchdev_notifier(struct notifier_block *nb)
|
|
|
{
|
|
|
int err;
|
|
|
|
|
|
- mutex_lock(&netdev_switch_mutex);
|
|
|
- err = raw_notifier_chain_unregister(&netdev_switch_notif_chain, nb);
|
|
|
- mutex_unlock(&netdev_switch_mutex);
|
|
|
+ mutex_lock(&switchdev_mutex);
|
|
|
+ err = raw_notifier_chain_unregister(&switchdev_notif_chain, nb);
|
|
|
+ mutex_unlock(&switchdev_mutex);
|
|
|
return err;
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(unregister_netdev_switch_notifier);
|
|
|
+EXPORT_SYMBOL_GPL(unregister_switchdev_notifier);
|
|
|
|
|
|
/**
|
|
|
- * call_netdev_switch_notifiers - Call notifiers
|
|
|
+ * call_switchdev_notifiers - Call notifiers
|
|
|
* @val: value passed unmodified to notifier function
|
|
|
* @dev: port device
|
|
|
* @info: notifier information data
|
|
@@ -114,21 +114,21 @@ EXPORT_SYMBOL_GPL(unregister_netdev_switch_notifier);
|
|
|
* when it needs to propagate hardware event.
|
|
|
* Return values are same as for atomic_notifier_call_chain().
|
|
|
*/
|
|
|
-int call_netdev_switch_notifiers(unsigned long val, struct net_device *dev,
|
|
|
- struct netdev_switch_notifier_info *info)
|
|
|
+int call_switchdev_notifiers(unsigned long val, struct net_device *dev,
|
|
|
+ struct switchdev_notifier_info *info)
|
|
|
{
|
|
|
int err;
|
|
|
|
|
|
info->dev = dev;
|
|
|
- mutex_lock(&netdev_switch_mutex);
|
|
|
- err = raw_notifier_call_chain(&netdev_switch_notif_chain, val, info);
|
|
|
- mutex_unlock(&netdev_switch_mutex);
|
|
|
+ mutex_lock(&switchdev_mutex);
|
|
|
+ err = raw_notifier_call_chain(&switchdev_notif_chain, val, info);
|
|
|
+ mutex_unlock(&switchdev_mutex);
|
|
|
return err;
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(call_netdev_switch_notifiers);
|
|
|
+EXPORT_SYMBOL_GPL(call_switchdev_notifiers);
|
|
|
|
|
|
/**
|
|
|
- * netdev_switch_port_bridge_setlink - Notify switch device port of bridge
|
|
|
+ * switchdev_port_bridge_setlink - Notify switch device port of bridge
|
|
|
* port attributes
|
|
|
*
|
|
|
* @dev: port device
|
|
@@ -137,8 +137,8 @@ EXPORT_SYMBOL_GPL(call_netdev_switch_notifiers);
|
|
|
*
|
|
|
* Notify switch device port of bridge port attributes
|
|
|
*/
|
|
|
-int netdev_switch_port_bridge_setlink(struct net_device *dev,
|
|
|
- struct nlmsghdr *nlh, u16 flags)
|
|
|
+int switchdev_port_bridge_setlink(struct net_device *dev,
|
|
|
+ struct nlmsghdr *nlh, u16 flags)
|
|
|
{
|
|
|
const struct net_device_ops *ops = dev->netdev_ops;
|
|
|
|
|
@@ -150,10 +150,10 @@ int netdev_switch_port_bridge_setlink(struct net_device *dev,
|
|
|
|
|
|
return ops->ndo_bridge_setlink(dev, nlh, flags);
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(netdev_switch_port_bridge_setlink);
|
|
|
+EXPORT_SYMBOL_GPL(switchdev_port_bridge_setlink);
|
|
|
|
|
|
/**
|
|
|
- * netdev_switch_port_bridge_dellink - Notify switch device port of bridge
|
|
|
+ * switchdev_port_bridge_dellink - Notify switch device port of bridge
|
|
|
* port attribute delete
|
|
|
*
|
|
|
* @dev: port device
|
|
@@ -162,8 +162,8 @@ EXPORT_SYMBOL_GPL(netdev_switch_port_bridge_setlink);
|
|
|
*
|
|
|
* Notify switch device port of bridge port attribute delete
|
|
|
*/
|
|
|
-int netdev_switch_port_bridge_dellink(struct net_device *dev,
|
|
|
- struct nlmsghdr *nlh, u16 flags)
|
|
|
+int switchdev_port_bridge_dellink(struct net_device *dev,
|
|
|
+ struct nlmsghdr *nlh, u16 flags)
|
|
|
{
|
|
|
const struct net_device_ops *ops = dev->netdev_ops;
|
|
|
|
|
@@ -175,11 +175,11 @@ int netdev_switch_port_bridge_dellink(struct net_device *dev,
|
|
|
|
|
|
return ops->ndo_bridge_dellink(dev, nlh, flags);
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(netdev_switch_port_bridge_dellink);
|
|
|
+EXPORT_SYMBOL_GPL(switchdev_port_bridge_dellink);
|
|
|
|
|
|
/**
|
|
|
- * ndo_dflt_netdev_switch_port_bridge_setlink - default ndo bridge setlink
|
|
|
- * op for master devices
|
|
|
+ * ndo_dflt_switchdev_port_bridge_setlink - default ndo bridge setlink
|
|
|
+ * op for master devices
|
|
|
*
|
|
|
* @dev: port device
|
|
|
* @nlh: netlink msg with bridge port attributes
|
|
@@ -187,8 +187,8 @@ EXPORT_SYMBOL_GPL(netdev_switch_port_bridge_dellink);
|
|
|
*
|
|
|
* Notify master device slaves of bridge port attributes
|
|
|
*/
|
|
|
-int ndo_dflt_netdev_switch_port_bridge_setlink(struct net_device *dev,
|
|
|
- struct nlmsghdr *nlh, u16 flags)
|
|
|
+int ndo_dflt_switchdev_port_bridge_setlink(struct net_device *dev,
|
|
|
+ struct nlmsghdr *nlh, u16 flags)
|
|
|
{
|
|
|
struct net_device *lower_dev;
|
|
|
struct list_head *iter;
|
|
@@ -198,18 +198,18 @@ int ndo_dflt_netdev_switch_port_bridge_setlink(struct net_device *dev,
|
|
|
return ret;
|
|
|
|
|
|
netdev_for_each_lower_dev(dev, lower_dev, iter) {
|
|
|
- err = netdev_switch_port_bridge_setlink(lower_dev, nlh, flags);
|
|
|
+ err = switchdev_port_bridge_setlink(lower_dev, nlh, flags);
|
|
|
if (err && err != -EOPNOTSUPP)
|
|
|
ret = err;
|
|
|
}
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(ndo_dflt_netdev_switch_port_bridge_setlink);
|
|
|
+EXPORT_SYMBOL_GPL(ndo_dflt_switchdev_port_bridge_setlink);
|
|
|
|
|
|
/**
|
|
|
- * ndo_dflt_netdev_switch_port_bridge_dellink - default ndo bridge dellink
|
|
|
- * op for master devices
|
|
|
+ * ndo_dflt_switchdev_port_bridge_dellink - default ndo bridge dellink
|
|
|
+ * op for master devices
|
|
|
*
|
|
|
* @dev: port device
|
|
|
* @nlh: netlink msg with bridge port attributes
|
|
@@ -217,8 +217,8 @@ EXPORT_SYMBOL_GPL(ndo_dflt_netdev_switch_port_bridge_setlink);
|
|
|
*
|
|
|
* Notify master device slaves of bridge port attribute deletes
|
|
|
*/
|
|
|
-int ndo_dflt_netdev_switch_port_bridge_dellink(struct net_device *dev,
|
|
|
- struct nlmsghdr *nlh, u16 flags)
|
|
|
+int ndo_dflt_switchdev_port_bridge_dellink(struct net_device *dev,
|
|
|
+ struct nlmsghdr *nlh, u16 flags)
|
|
|
{
|
|
|
struct net_device *lower_dev;
|
|
|
struct list_head *iter;
|
|
@@ -228,16 +228,16 @@ int ndo_dflt_netdev_switch_port_bridge_dellink(struct net_device *dev,
|
|
|
return ret;
|
|
|
|
|
|
netdev_for_each_lower_dev(dev, lower_dev, iter) {
|
|
|
- err = netdev_switch_port_bridge_dellink(lower_dev, nlh, flags);
|
|
|
+ err = switchdev_port_bridge_dellink(lower_dev, nlh, flags);
|
|
|
if (err && err != -EOPNOTSUPP)
|
|
|
ret = err;
|
|
|
}
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(ndo_dflt_netdev_switch_port_bridge_dellink);
|
|
|
+EXPORT_SYMBOL_GPL(ndo_dflt_switchdev_port_bridge_dellink);
|
|
|
|
|
|
-static struct net_device *netdev_switch_get_lowest_dev(struct net_device *dev)
|
|
|
+static struct net_device *switchdev_get_lowest_dev(struct net_device *dev)
|
|
|
{
|
|
|
const struct swdev_ops *ops = dev->swdev_ops;
|
|
|
struct net_device *lower_dev;
|
|
@@ -253,7 +253,7 @@ static struct net_device *netdev_switch_get_lowest_dev(struct net_device *dev)
|
|
|
return dev;
|
|
|
|
|
|
netdev_for_each_lower_dev(dev, lower_dev, iter) {
|
|
|
- port_dev = netdev_switch_get_lowest_dev(lower_dev);
|
|
|
+ port_dev = switchdev_get_lowest_dev(lower_dev);
|
|
|
if (port_dev)
|
|
|
return port_dev;
|
|
|
}
|
|
@@ -261,7 +261,7 @@ static struct net_device *netdev_switch_get_lowest_dev(struct net_device *dev)
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
-static struct net_device *netdev_switch_get_dev_by_nhs(struct fib_info *fi)
|
|
|
+static struct net_device *switchdev_get_dev_by_nhs(struct fib_info *fi)
|
|
|
{
|
|
|
struct netdev_phys_item_id psid;
|
|
|
struct netdev_phys_item_id prev_psid;
|
|
@@ -276,11 +276,11 @@ static struct net_device *netdev_switch_get_dev_by_nhs(struct fib_info *fi)
|
|
|
if (!nh->nh_dev)
|
|
|
return NULL;
|
|
|
|
|
|
- dev = netdev_switch_get_lowest_dev(nh->nh_dev);
|
|
|
+ dev = switchdev_get_lowest_dev(nh->nh_dev);
|
|
|
if (!dev)
|
|
|
return NULL;
|
|
|
|
|
|
- if (netdev_switch_parent_id_get(dev, &psid))
|
|
|
+ if (switchdev_parent_id_get(dev, &psid))
|
|
|
return NULL;
|
|
|
|
|
|
if (nhsel > 0) {
|
|
@@ -297,7 +297,7 @@ static struct net_device *netdev_switch_get_dev_by_nhs(struct fib_info *fi)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * netdev_switch_fib_ipv4_add - Add IPv4 route entry to switch
|
|
|
+ * switchdev_fib_ipv4_add - Add IPv4 route entry to switch
|
|
|
*
|
|
|
* @dst: route's IPv4 destination address
|
|
|
* @dst_len: destination address length (prefix length)
|
|
@@ -309,8 +309,8 @@ static struct net_device *netdev_switch_get_dev_by_nhs(struct fib_info *fi)
|
|
|
*
|
|
|
* Add IPv4 route entry to switch device.
|
|
|
*/
|
|
|
-int netdev_switch_fib_ipv4_add(u32 dst, int dst_len, struct fib_info *fi,
|
|
|
- u8 tos, u8 type, u32 nlflags, u32 tb_id)
|
|
|
+int switchdev_fib_ipv4_add(u32 dst, int dst_len, struct fib_info *fi,
|
|
|
+ u8 tos, u8 type, u32 nlflags, u32 tb_id)
|
|
|
{
|
|
|
struct net_device *dev;
|
|
|
const struct swdev_ops *ops;
|
|
@@ -328,7 +328,7 @@ int netdev_switch_fib_ipv4_add(u32 dst, int dst_len, struct fib_info *fi,
|
|
|
if (fi->fib_net->ipv4.fib_offload_disabled)
|
|
|
return 0;
|
|
|
|
|
|
- dev = netdev_switch_get_dev_by_nhs(fi);
|
|
|
+ dev = switchdev_get_dev_by_nhs(fi);
|
|
|
if (!dev)
|
|
|
return 0;
|
|
|
ops = dev->swdev_ops;
|
|
@@ -343,10 +343,10 @@ int netdev_switch_fib_ipv4_add(u32 dst, int dst_len, struct fib_info *fi,
|
|
|
|
|
|
return err;
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(netdev_switch_fib_ipv4_add);
|
|
|
+EXPORT_SYMBOL_GPL(switchdev_fib_ipv4_add);
|
|
|
|
|
|
/**
|
|
|
- * netdev_switch_fib_ipv4_del - Delete IPv4 route entry from switch
|
|
|
+ * switchdev_fib_ipv4_del - Delete IPv4 route entry from switch
|
|
|
*
|
|
|
* @dst: route's IPv4 destination address
|
|
|
* @dst_len: destination address length (prefix length)
|
|
@@ -357,8 +357,8 @@ EXPORT_SYMBOL_GPL(netdev_switch_fib_ipv4_add);
|
|
|
*
|
|
|
* Delete IPv4 route entry from switch device.
|
|
|
*/
|
|
|
-int netdev_switch_fib_ipv4_del(u32 dst, int dst_len, struct fib_info *fi,
|
|
|
- u8 tos, u8 type, u32 tb_id)
|
|
|
+int switchdev_fib_ipv4_del(u32 dst, int dst_len, struct fib_info *fi,
|
|
|
+ u8 tos, u8 type, u32 tb_id)
|
|
|
{
|
|
|
struct net_device *dev;
|
|
|
const struct swdev_ops *ops;
|
|
@@ -367,7 +367,7 @@ int netdev_switch_fib_ipv4_del(u32 dst, int dst_len, struct fib_info *fi,
|
|
|
if (!(fi->fib_flags & RTNH_F_EXTERNAL))
|
|
|
return 0;
|
|
|
|
|
|
- dev = netdev_switch_get_dev_by_nhs(fi);
|
|
|
+ dev = switchdev_get_dev_by_nhs(fi);
|
|
|
if (!dev)
|
|
|
return 0;
|
|
|
ops = dev->swdev_ops;
|
|
@@ -381,14 +381,14 @@ int netdev_switch_fib_ipv4_del(u32 dst, int dst_len, struct fib_info *fi,
|
|
|
|
|
|
return err;
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(netdev_switch_fib_ipv4_del);
|
|
|
+EXPORT_SYMBOL_GPL(switchdev_fib_ipv4_del);
|
|
|
|
|
|
/**
|
|
|
- * netdev_switch_fib_ipv4_abort - Abort an IPv4 FIB operation
|
|
|
+ * switchdev_fib_ipv4_abort - Abort an IPv4 FIB operation
|
|
|
*
|
|
|
* @fi: route FIB info structure
|
|
|
*/
|
|
|
-void netdev_switch_fib_ipv4_abort(struct fib_info *fi)
|
|
|
+void switchdev_fib_ipv4_abort(struct fib_info *fi)
|
|
|
{
|
|
|
/* There was a problem installing this route to the offload
|
|
|
* device. For now, until we come up with more refined
|
|
@@ -401,4 +401,4 @@ void netdev_switch_fib_ipv4_abort(struct fib_info *fi)
|
|
|
fib_flush_external(fi->fib_net);
|
|
|
fi->fib_net->ipv4.fib_offload_disabled = true;
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(netdev_switch_fib_ipv4_abort);
|
|
|
+EXPORT_SYMBOL_GPL(switchdev_fib_ipv4_abort);
|