svn commit: r333101 - stable/11/sys/net

Hans Petter Selasky hselasky at FreeBSD.org
Mon Apr 30 08:13:31 UTC 2018


Author: hselasky
Date: Mon Apr 30 08:13:30 2018
New Revision: 333101
URL: https://svnweb.freebsd.org/changeset/base/333101

Log:
  MFC r333015:
  Add network device event for priority code point, PCP, changes.
  
  When the PCP is changed for either a VLAN network interface or when
  prio tagging is enabled for a regular ethernet network interface,
  broadcast the IFNET_EVENT_PCP event so applications like ibcore can
  update its GID tables accordingly.
  
  Reviewed by:	ae, kib
  Differential Revision:	https://reviews.freebsd.org/D15040
  Sponsored by:	Mellanox Technologies

Modified:
  stable/11/sys/net/if_ethersubr.c
  stable/11/sys/net/if_var.h
  stable/11/sys/net/if_vlan.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/net/if_ethersubr.c
==============================================================================
--- stable/11/sys/net/if_ethersubr.c	Mon Apr 30 07:30:37 2018	(r333100)
+++ stable/11/sys/net/if_ethersubr.c	Mon Apr 30 08:13:30 2018	(r333101)
@@ -1124,10 +1124,13 @@ ether_ioctl(struct ifnet *ifp, u_long command, caddr_t
 		if (error != 0)
 			break;
 		if (ifr->ifr_lan_pcp > 7 &&
-		    ifr->ifr_lan_pcp != IFNET_PCP_NONE)
+		    ifr->ifr_lan_pcp != IFNET_PCP_NONE) {
 			error = EINVAL;
-		else
+		} else {
 			ifp->if_pcp = ifr->ifr_lan_pcp;
+			/* broadcast event about PCP change */
+			EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_PCP);
+		}
 		break;
 
 	case SIOCGLANPCP:

Modified: stable/11/sys/net/if_var.h
==============================================================================
--- stable/11/sys/net/if_var.h	Mon Apr 30 07:30:37 2018	(r333100)
+++ stable/11/sys/net/if_var.h	Mon Apr 30 08:13:30 2018	(r333101)
@@ -368,6 +368,8 @@ EVENTHANDLER_DECLARE(ifnet_link_event, ifnet_link_even
 /* Interface up/down event */
 #define IFNET_EVENT_UP		0
 #define IFNET_EVENT_DOWN	1
+#define IFNET_EVENT_PCP		2	/* priority code point, PCP */
+
 typedef void (*ifnet_event_fn)(void *, struct ifnet *ifp, int event);
 EVENTHANDLER_DECLARE(ifnet_event, ifnet_event_fn);
 #endif /* _SYS_EVENTHANDLER_H_ */

Modified: stable/11/sys/net/if_vlan.c
==============================================================================
--- stable/11/sys/net/if_vlan.c	Mon Apr 30 07:30:37 2018	(r333100)
+++ stable/11/sys/net/if_vlan.c	Mon Apr 30 08:13:30 2018	(r333101)
@@ -1930,6 +1930,8 @@ vlan_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data
 		}
 		ifv->ifv_pcp = ifr->ifr_vlan_pcp;
 		vlan_tag_recalculate(ifv);
+		/* broadcast event about PCP change */
+		EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_PCP);
 		break;
 
 	case SIOCSIFCAP:


More information about the svn-src-all mailing list