Module Name:    src
Committed By:   yamaguchi
Date:           Thu Nov  2 09:40:47 UTC 2023

Modified Files:
        src/sys/dev/pci/ixgbe: ixgbe.c ixv.c
        src/sys/net: if_ethersubr.c

Log Message:
Use ether_bpf_mtap only when the device supports vlan harware tagging

The function is bpf_mtap() for ethernet devices and *currently*
it is just handling VLAN tag stripped by the hardware.


To generate a diff of this commit:
cvs rdiff -u -r1.346 -r1.347 src/sys/dev/pci/ixgbe/ixgbe.c
cvs rdiff -u -r1.193 -r1.194 src/sys/dev/pci/ixgbe/ixv.c
cvs rdiff -u -r1.325 -r1.326 src/sys/net/if_ethersubr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/ixgbe/ixgbe.c
diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.346 src/sys/dev/pci/ixgbe/ixgbe.c:1.347
--- src/sys/dev/pci/ixgbe/ixgbe.c:1.346	Thu Nov  2 05:07:57 2023
+++ src/sys/dev/pci/ixgbe/ixgbe.c	Thu Nov  2 09:40:47 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.c,v 1.346 2023/11/02 05:07:57 msaitoh Exp $ */
+/* $NetBSD: ixgbe.c,v 1.347 2023/11/02 09:40:47 yamaguchi Exp $ */
 
 /******************************************************************************
 
@@ -64,7 +64,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.346 2023/11/02 05:07:57 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.347 2023/11/02 09:40:47 yamaguchi Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -1411,14 +1411,10 @@ ixgbe_setup_interface(device_t dev, stru
 
 	if_initialize(ifp);
 	sc->ipq = if_percpuq_create(&sc->osdep.ec.ec_if);
-	ether_ifattach(ifp, sc->hw.mac.addr);
-	aprint_normal_dev(dev, "Ethernet address %s\n",
-	    ether_sprintf(sc->hw.mac.addr));
 	/*
 	 * We use per TX queue softint, so if_deferred_start_init() isn't
 	 * used.
 	 */
-	ether_set_ifflags_cb(ec, ixgbe_ifflags_cb);
 
 	sc->max_frame_size = ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;
 
@@ -1442,6 +1438,11 @@ ixgbe_setup_interface(device_t dev, stru
 	/* Enable the above capabilities by default */
 	ec->ec_capenable = ec->ec_capabilities;
 
+	ether_ifattach(ifp, sc->hw.mac.addr);
+	aprint_normal_dev(dev, "Ethernet address %s\n",
+	    ether_sprintf(sc->hw.mac.addr));
+	ether_set_ifflags_cb(ec, ixgbe_ifflags_cb);
+
 	/*
 	 * Don't turn this on by default, if vlans are
 	 * created on another pseudo device (eg. lagg)

Index: src/sys/dev/pci/ixgbe/ixv.c
diff -u src/sys/dev/pci/ixgbe/ixv.c:1.193 src/sys/dev/pci/ixgbe/ixv.c:1.194
--- src/sys/dev/pci/ixgbe/ixv.c:1.193	Thu Nov  2 05:07:57 2023
+++ src/sys/dev/pci/ixgbe/ixv.c	Thu Nov  2 09:40:47 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: ixv.c,v 1.193 2023/11/02 05:07:57 msaitoh Exp $ */
+/* $NetBSD: ixv.c,v 1.194 2023/11/02 09:40:47 yamaguchi Exp $ */
 
 /******************************************************************************
 
@@ -35,7 +35,7 @@
 /*$FreeBSD: head/sys/dev/ixgbe/if_ixv.c 331224 2018-03-19 20:55:05Z erj $*/
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.193 2023/11/02 05:07:57 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.194 2023/11/02 09:40:47 yamaguchi Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -1678,14 +1678,10 @@ ixv_setup_interface(device_t dev, struct
 
 	if_initialize(ifp);
 	sc->ipq = if_percpuq_create(&sc->osdep.ec.ec_if);
-	ether_ifattach(ifp, sc->hw.mac.addr);
-	aprint_normal_dev(dev, "Ethernet address %s\n",
-	    ether_sprintf(sc->hw.mac.addr));
 	/*
 	 * We use per TX queue softint, so if_deferred_start_init() isn't
 	 * used.
 	 */
-	ether_set_ifflags_cb(ec, ixv_ifflags_cb);
 
 	sc->max_frame_size = ifp->if_mtu + IXGBE_MTU_HDR;
 
@@ -1709,6 +1705,11 @@ ixv_setup_interface(device_t dev, struct
 	/* Enable the above capabilities by default */
 	ec->ec_capenable = ec->ec_capabilities;
 
+	ether_ifattach(ifp, sc->hw.mac.addr);
+	aprint_normal_dev(dev, "Ethernet address %s\n",
+	    ether_sprintf(sc->hw.mac.addr));
+	ether_set_ifflags_cb(ec, ixv_ifflags_cb);
+
 	/* Don't enable LRO by default */
 #if 0
 	/* NetBSD doesn't support LRO yet */

Index: src/sys/net/if_ethersubr.c
diff -u src/sys/net/if_ethersubr.c:1.325 src/sys/net/if_ethersubr.c:1.326
--- src/sys/net/if_ethersubr.c:1.325	Thu Nov  2 09:36:27 2023
+++ src/sys/net/if_ethersubr.c	Thu Nov  2 09:40:47 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_ethersubr.c,v 1.325 2023/11/02 09:36:27 yamaguchi Exp $	*/
+/*	$NetBSD: if_ethersubr.c,v 1.326 2023/11/02 09:40:47 yamaguchi Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_ethersubr.c,v 1.325 2023/11/02 09:36:27 yamaguchi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_ethersubr.c,v 1.326 2023/11/02 09:40:47 yamaguchi Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -1051,7 +1051,8 @@ ether_ifattach(struct ifnet *ifp, const 
 	ifp->if_mtu = ETHERMTU;
 	ifp->if_output = ether_output;
 	ifp->_if_input = ether_input;
-	ifp->if_bpf_mtap = ether_bpf_mtap;
+	if (ec->ec_capabilities & ETHERCAP_VLAN_HWTAGGING)
+		ifp->if_bpf_mtap = ether_bpf_mtap;
 	if (ifp->if_baudrate == 0)
 		ifp->if_baudrate = IF_Mbps(10);		/* just a default */
 

Reply via email to