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:
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to