Page MenuHomeFreeBSD

D54486.diff
No OneTemporary

D54486.diff

diff --git a/share/man/man4/bge.4 b/share/man/man4/bge.4
--- a/share/man/man4/bge.4
+++ b/share/man/man4/bge.4
@@ -29,7 +29,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd August 18, 2017
+.Dd January 5, 2026
.Dt BGE 4
.Os
.Sh NAME
@@ -276,3 +276,11 @@
while the system is up as the kernel is currently unable to cope with a
.Nm
interface disappearing.
+.Pp
+The UDP transmit checksum offloading is disabled by default, see
+.Va dev.bge.%d.forced_udpcsum .
+To avoid problems when the interface is a member of a
+.Xr bridge 4
+interface, all transmit checksum offloading is initially disabled in this case.
+Transmit checksum offloading can be enabled using
+.Xr ifconfig 8 .
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -3721,7 +3721,12 @@
if_setgetcounterfn(ifp, bge_get_counter);
if_setsendqlen(ifp, BGE_TX_RING_CNT - 1);
if_setsendqready(ifp);
- if_sethwassist(ifp, sc->bge_csum_features);
+ /* Initially enable checksum offloading either for all of IPv4, TCP/IPv4
+ * and UDP/IPv4, or for none. This avoids problems when the interface
+ * is added to a bridge.
+ */
+ if (sc->bge_csum_features & CSUM_UDP)
+ if_sethwassist(ifp, sc->bge_csum_features);
if_setcapabilities(ifp, IFCAP_HWCSUM | IFCAP_VLAN_HWTAGGING |
IFCAP_VLAN_MTU);
if ((sc->bge_flags & (BGE_FLAG_TSO | BGE_FLAG_TSO3)) != 0) {
@@ -3732,6 +3737,13 @@
if_setcapabilitiesbit(ifp, IFCAP_VLAN_HWCSUM, 0);
#endif
if_setcapenable(ifp, if_getcapabilities(ifp));
+ /*
+ * Disable TXCSUM capability initially, if UDP checksum offloading is
+ * not enabled. This avoids problems when the interface is added to a
+ * bridge.
+ */
+ if ((sc->bge_csum_features & CSUM_UDP) == 0)
+ if_setcapenablebit(ifp, 0, IFCAP_TXCSUM);
#ifdef DEVICE_POLLING
if_setcapabilitiesbit(ifp, IFCAP_POLLING, 0);
#endif

File Metadata

Mime Type
text/plain
Expires
Tue, Jan 13, 2:43 AM (5 h, 36 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27624256
Default Alt Text
D54486.diff (1 KB)

Event Timeline