vmwareでNetBSDを動かすとネットワークあたりで落ちるので-currentから引っ張ってきて対応。for NetBSD-3.1.1:
*** if_pcn.c.org Mon Oct 29 15:48:11 2007
--- if_pcn.c Mon Oct 29 15:56:54 2007
***************
*** 127,132 ****
--- 127,133 ----
* transmit logic can deal with this, we just are hoping to sneak by.
*/
#define PCN_NTXSEGS 16
+ #define PCN_NTXSEGS_VMWARE 8
#define PCN_TXQUEUELEN 128
#define PCN_TXQUEUELEN_MASK (PCN_TXQUEUELEN - 1)
***************
*** 712,720 ****
}
/* Create the transmit buffer DMA maps. */
for (i = 0; i < PCN_TXQUEUELEN; i++) {
if ((error = bus_dmamap_create(sc->sc_dmat, MCLBYTES,
! PCN_NTXSEGS, MCLBYTES, 0, 0,
&sc->sc_txsoft[i].txs_dmamap)) != 0) {
printf("%s: unable to create tx DMA map %d, "
"error = %d\n", sc->sc_dev.dv_xname, i, error);
--- 713,722 ----
}
/* Create the transmit buffer DMA maps. */
+ printf("%s: VMware Tx segment count bug detected\n", sc->sc_dev.dv_xname);
for (i = 0; i < PCN_TXQUEUELEN; i++) {
if ((error = bus_dmamap_create(sc->sc_dmat, MCLBYTES,
! PCN_NTXSEGS_VMWARE, MCLBYTES, 0, 0,
&sc->sc_txsoft[i].txs_dmamap)) != 0) {
printf("%s: unable to create tx DMA map %d, "
"error = %d\n", sc->sc_dev.dv_xname, i, error);
vmwareでNetBSDを動かすとネットワークあたりで落ちるので-currentから引っ張ってきて対応。for NetBSD-3.1.1:
*** if_pcn.c.org Mon Oct 29 15:48:11 2007
--- if_pcn.c Mon Oct 29 15:56:54 2007
***************
*** 127,132 ****
--- 127,133 ----
* transmit logic can deal with this, we just are hoping to sneak by.
*/
#define PCN_NTXSEGS 16
+ #define PCN_NTXSEGS_VMWARE 8
#define PCN_TXQUEUELEN 128
#define PCN_TXQUEUELEN_MASK (PCN_TXQUEUELEN - 1)
***************
*** 712,720 ****
}
/* Create the transmit buffer DMA maps. */
for (i = 0; i < PCN_TXQUEUELEN; i++) {
if ((error = bus_dmamap_create(sc->sc_dmat, MCLBYTES,
! PCN_NTXSEGS, MCLBYTES, 0, 0,
&sc->sc_txsoft[i].txs_dmamap)) != 0) {
printf("%s: unable to create tx DMA map %d, "
"error = %d\n", sc->sc_dev.dv_xname, i, error);
--- 713,722 ----
}
/* Create the transmit buffer DMA maps. */
+ printf("%s: VMware Tx segment count bug detected\n", sc->sc_dev.dv_xname);
for (i = 0; i < PCN_TXQUEUELEN; i++) {
if ((error = bus_dmamap_create(sc->sc_dmat, MCLBYTES,
! PCN_NTXSEGS_VMWARE, MCLBYTES, 0, 0,
&sc->sc_txsoft[i].txs_dmamap)) != 0) {
printf("%s: unable to create tx DMA map %d, "
"error = %d\n", sc->sc_dev.dv_xname, i, error);