diff options
-rw-r--r-- | include/net/dcbevent.h | 31 | ||||
-rw-r--r-- | net/dcb/Makefile | 2 | ||||
-rw-r--r-- | net/dcb/dcbevent.c | 40 | ||||
-rw-r--r-- | net/dcb/dcbnl.c | 2 |
4 files changed, 74 insertions, 1 deletions
diff --git a/include/net/dcbevent.h b/include/net/dcbevent.h new file mode 100644 index 000000000000..bc1e7ef40171 --- /dev/null +++ b/include/net/dcbevent.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2010, Intel Corporation. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify it | ||
5 | * under the terms and conditions of the GNU General Public License, | ||
6 | * version 2, as published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
11 | * more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License along with | ||
14 | * this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
15 | * Place - Suite 330, Boston, MA 02111-1307 USA. | ||
16 | * | ||
17 | * Author: John Fastabend <john.r.fastabend@intel.com> | ||
18 | */ | ||
19 | |||
20 | #ifndef _DCB_EVENT_H | ||
21 | #define _DCB_EVENT_H | ||
22 | |||
23 | enum dcbevent_notif_type { | ||
24 | DCB_APP_EVENT = 1, | ||
25 | }; | ||
26 | |||
27 | extern int register_dcbevent_notifier(struct notifier_block *nb); | ||
28 | extern int unregister_dcbevent_notifier(struct notifier_block *nb); | ||
29 | extern int call_dcbevent_notifiers(unsigned long val, void *v); | ||
30 | |||
31 | #endif | ||
diff --git a/net/dcb/Makefile b/net/dcb/Makefile index 9930f4cde818..c1282c9e64fa 100644 --- a/net/dcb/Makefile +++ b/net/dcb/Makefile | |||
@@ -1 +1 @@ | |||
obj-$(CONFIG_DCB) += dcbnl.o | obj-$(CONFIG_DCB) += dcbnl.o dcbevent.o | ||
diff --git a/net/dcb/dcbevent.c b/net/dcb/dcbevent.c new file mode 100644 index 000000000000..665a8802105a --- /dev/null +++ b/net/dcb/dcbevent.c | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2010, Intel Corporation. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify it | ||
5 | * under the terms and conditions of the GNU General Public License, | ||
6 | * version 2, as published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
11 | * more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License along with | ||
14 | * this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
15 | * Place - Suite 330, Boston, MA 02111-1307 USA. | ||
16 | * | ||
17 | * Author: John Fastabend <john.r.fastabend@intel.com> | ||
18 | */ | ||
19 | |||
20 | #include <linux/rtnetlink.h> | ||
21 | #include <linux/notifier.h> | ||
22 | |||
23 | static ATOMIC_NOTIFIER_HEAD(dcbevent_notif_chain); | ||
24 | |||
25 | int register_dcbevent_notifier(struct notifier_block *nb) | ||
26 | { | ||
27 | return atomic_notifier_chain_register(&dcbevent_notif_chain, nb); | ||
28 | } | ||
29 | EXPORT_SYMBOL(register_dcbevent_notifier); | ||
30 | |||
31 | int unregister_dcbevent_notifier(struct notifier_block *nb) | ||
32 | { | ||
33 | return atomic_notifier_chain_unregister(&dcbevent_notif_chain, nb); | ||
34 | } | ||
35 | EXPORT_SYMBOL(unregister_dcbevent_notifier); | ||
36 | |||
37 | int call_dcbevent_notifiers(unsigned long val, void *v) | ||
38 | { | ||
39 | return atomic_notifier_call_chain(&dcbevent_notif_chain, val, v); | ||
40 | } | ||
diff --git a/net/dcb/dcbnl.c b/net/dcb/dcbnl.c index cfd731faf6c6..69144125fc4f 100644 --- a/net/dcb/dcbnl.c +++ b/net/dcb/dcbnl.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <net/netlink.h> | 23 | #include <net/netlink.h> |
24 | #include <net/rtnetlink.h> | 24 | #include <net/rtnetlink.h> |
25 | #include <linux/dcbnl.h> | 25 | #include <linux/dcbnl.h> |
26 | #include <net/dcbevent.h> | ||
26 | #include <linux/rtnetlink.h> | 27 | #include <linux/rtnetlink.h> |
27 | #include <net/sock.h> | 28 | #include <net/sock.h> |
28 | 29 | ||
@@ -1460,6 +1461,7 @@ u8 dcb_setapp(struct net_device *dev, struct dcb_app *new) | |||
1460 | } | 1461 | } |
1461 | out: | 1462 | out: |
1462 | spin_unlock(&dcb_lock); | 1463 | spin_unlock(&dcb_lock); |
1464 | call_dcbevent_notifiers(DCB_APP_EVENT, new); | ||
1463 | return 0; | 1465 | return 0; |
1464 | } | 1466 | } |
1465 | EXPORT_SYMBOL(dcb_setapp); | 1467 | EXPORT_SYMBOL(dcb_setapp); |