Simply return EOPNOTSUPP like in raw_userreq() rather than defining an empty function. This will help reducing reducing recursive splsotnet() in pr_usrreq() functions.
ok? Index: netmpls/mpls_raw.c =================================================================== RCS file: /cvs/src/sys/netmpls/mpls_raw.c,v retrieving revision 1.13 diff -u -p -r1.13 mpls_raw.c --- netmpls/mpls_raw.c 24 Nov 2015 13:37:16 -0000 1.13 +++ netmpls/mpls_raw.c 15 Nov 2016 13:21:59 -0000 @@ -60,19 +60,6 @@ int mpls_mapttl_ip6 = 0; int *mplsctl_vars[MPLSCTL_MAXID] = MPLSCTL_VARS; -int mpls_control(struct socket *, u_long, caddr_t, struct ifnet *); - -/* - * Generic MPLS control operations (ioctl's). - * Ifp is 0 if not an interface-specific ioctl. - */ -/* ARGSUSED */ -int -mpls_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp) -{ - return (EOPNOTSUPP); -} - int mpls_raw_usrreq(struct socket *so, int req, struct mbuf *m, struct mbuf *nam, struct mbuf *control, struct proc *p) @@ -84,8 +71,7 @@ mpls_raw_usrreq(struct socket *so, int r #endif /* MPLS_DEBUG */ if (req == PRU_CONTROL) - return (mpls_control(so, (u_long)m, (caddr_t)nam, - (struct ifnet *)control)); + return (EOPNOTSUPP); switch (req) { case PRU_ATTACH: