diff options
author | yongari <yongari@FreeBSD.org> | 2012-01-17 22:15:33 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2012-01-17 22:15:33 +0000 |
commit | a4e977ace50f32ed979c640952e474741d7e8b17 (patch) | |
tree | 7f72569ae15b1440a4ef8ec4feba375dbf2d7249 /sys/dev/bge | |
parent | 4175ee1d5f6550260fc7590f36ddda22ae626387 (diff) | |
download | FreeBSD-src-a4e977ace50f32ed979c640952e474741d7e8b17.zip FreeBSD-src-a4e977ace50f32ed979c640952e474741d7e8b17.tar.gz |
Introduce a tunable that disables use of MSI.
Non-zero value will use INTx.
Diffstat (limited to 'sys/dev/bge')
-rw-r--r-- | sys/dev/bge/if_bge.c | 9 | ||||
-rw-r--r-- | sys/dev/bge/if_bgereg.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c index ea477fd..bb4c7a7 100644 --- a/sys/dev/bge/if_bge.c +++ b/sys/dev/bge/if_bge.c @@ -2745,6 +2745,9 @@ bge_can_use_msi(struct bge_softc *sc) { int can_use_msi = 0; + if (sc->bge_msi_disable != 0) + return (0); + /* Disable MSI for polling(4). */ #ifdef DEVICE_POLLING return (0); @@ -5627,6 +5630,12 @@ bge_add_sysctls(struct bge_softc *sc) "Number of fragmented TX buffers of a frame allowed before " "forced collapsing"); + sc->bge_msi_disable = 0; + snprintf(tn, sizeof(tn), "dev.bge.%d.msi_disable", unit); + TUNABLE_INT_FETCH(tn, &sc->bge_msi_disable); + SYSCTL_ADD_INT(ctx, children, OID_AUTO, "msi_disable", + CTLFLAG_RD, &sc->bge_msi_disable, 0, "Disable MSI"); + /* * It seems all Broadcom controllers have a bug that can generate UDP * datagrams with checksum value 0 when TX UDP checksum offloading is diff --git a/sys/dev/bge/if_bgereg.h b/sys/dev/bge/if_bgereg.h index ccb2c6d..de06b2b 100644 --- a/sys/dev/bge/if_bgereg.h +++ b/sys/dev/bge/if_bgereg.h @@ -2864,6 +2864,7 @@ struct bge_softc { int bge_timer; int bge_forced_collapse; int bge_forced_udpcsum; + int bge_msi_disable; int bge_csum_features; struct callout bge_stat_ch; uint32_t bge_rx_discards; |