aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/Kconfig1
-rw-r--r--net/Makefile3
-rw-r--r--net/switchdev/Kconfig13
-rw-r--r--net/switchdev/Makefile5
-rw-r--r--net/switchdev/switchdev.c33
5 files changed, 55 insertions, 0 deletions
diff --git a/net/Kconfig b/net/Kconfig
index 99815b5454bf..ff9ffc17fa0e 100644
--- a/net/Kconfig
+++ b/net/Kconfig
@@ -228,6 +228,7 @@ source "net/vmw_vsock/Kconfig"
228source "net/netlink/Kconfig" 228source "net/netlink/Kconfig"
229source "net/mpls/Kconfig" 229source "net/mpls/Kconfig"
230source "net/hsr/Kconfig" 230source "net/hsr/Kconfig"
231source "net/switchdev/Kconfig"
231 232
232config RPS 233config RPS
233 boolean 234 boolean
diff --git a/net/Makefile b/net/Makefile
index 7ed1970074b0..95fc694e4ddc 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -73,3 +73,6 @@ obj-$(CONFIG_OPENVSWITCH) += openvswitch/
73obj-$(CONFIG_VSOCKETS) += vmw_vsock/ 73obj-$(CONFIG_VSOCKETS) += vmw_vsock/
74obj-$(CONFIG_NET_MPLS_GSO) += mpls/ 74obj-$(CONFIG_NET_MPLS_GSO) += mpls/
75obj-$(CONFIG_HSR) += hsr/ 75obj-$(CONFIG_HSR) += hsr/
76ifneq ($(CONFIG_NET_SWITCHDEV),)
77obj-y += switchdev/
78endif
diff --git a/net/switchdev/Kconfig b/net/switchdev/Kconfig
new file mode 100644
index 000000000000..155754588fd6
--- /dev/null
+++ b/net/switchdev/Kconfig
@@ -0,0 +1,13 @@
1#
2# Configuration for Switch device support
3#
4
5config NET_SWITCHDEV
6 boolean "Switch (and switch-ish) device support (EXPERIMENTAL)"
7 depends on INET
8 ---help---
9 This module provides glue between core networking code and device
10 drivers in order to support hardware switch chips in very generic
11 meaning of the word "switch". This include devices supporting L2/L3 but
12 also various flow offloading chips, including switches embedded into
13 SR-IOV NICs.
diff --git a/net/switchdev/Makefile b/net/switchdev/Makefile
new file mode 100644
index 000000000000..5ed63ed324d0
--- /dev/null
+++ b/net/switchdev/Makefile
@@ -0,0 +1,5 @@
1#
2# Makefile for the Switch device API
3#
4
5obj-$(CONFIG_NET_SWITCHDEV) += switchdev.o
diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c
new file mode 100644
index 000000000000..66973deaae56
--- /dev/null
+++ b/net/switchdev/switchdev.c
@@ -0,0 +1,33 @@
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 */
24int 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}
33EXPORT_SYMBOL(netdev_switch_parent_id_get);