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); |
