Of all the gin joints in all the towns in all the world, Chia-liang Kao 
had to walk into mine and say:
[chop]

> * - Can you show me the output of the following:
> * 
> *   pciconf -r pci0:19:0 0xc
> * 
> *   I want to see what the latency timer setting looks like.
> It shows `0x00002008'

Hmm... Alright, I have a patch I'd like you to try. I don't know that
this will really have an effect, but I'm curious to see what it does.
If this doesn't work, then the only other thing I can think of is if
you can give me login access to your machine so that I can try some
experiments.

Anyway, to apply the patch, do the following:

- Save this message to /tmp/vr.patch (or something similar).
- Become root.
- Type the following:

        # cd /sys/pci
        # patch < /tmp/vr.patch

- Compile a new kernel and boot it.

Let me know if this has any effect on the card's behavior.

-Bill

-- 
=============================================================================
-Bill Paul            (212) 854-6020 | System Manager, Master of Unix-Fu
Work:         wp...@ctr.columbia.edu | Center for Telecommunications Research
Home:  wp...@skynet.ctr.columbia.edu | Columbia University, New York City
=============================================================================
 "It is not I who am crazy; it is I who am mad!" - Ren Hoek, "Space Madness"
=============================================================================

*** ../CVSWORK/sys_pci/if_vr.c  Mon Feb  1 16:25:52 1999
--- if_vr.c     Wed Feb  3 16:11:24 1999
***************
*** 899,905 ****
        vm_offset_t             pbase, vbase;
  #endif
        u_char                  eaddr[ETHER_ADDR_LEN];
!       u_int32_t               command;
        struct vr_softc         *sc;
        struct ifnet            *ifp;
        int                     media = IFM_ETHER|IFM_100_TX|IFM_FDX;
--- 899,905 ----
        vm_offset_t             pbase, vbase;
  #endif
        u_char                  eaddr[ETHER_ADDR_LEN];
!       u_int32_t               command, lat;
        struct vr_softc         *sc;
        struct ifnet            *ifp;
        int                     media = IFM_ETHER|IFM_100_TX|IFM_FDX;
***************
*** 988,993 ****
--- 988,1002 ----
                goto fail;
        }
  
+       /* bump up the latency timer a little */
+       command = pci_conf_read(config_id, VR_PCI_LATENCY_TIMER);
+       lat = (command & 0x0000FF00) >> 8;
+       if (lat < 64) {
+               command &= 0xFFFF00FF;
+               command |= 0x00004000;
+               pci_conf_write(config_id, VR_PCI_LATENCY_TIMER, command);
+       }
+ 
        /* Reset the adapter. */
        vr_reset(sc);
  
***************
*** 1675,1680 ****
--- 1684,1692 ----
  
        VR_CLRBIT(sc, VR_TXCFG, VR_TXCFG_TX_THRESH);
        VR_SETBIT(sc, VR_TXCFG, VR_TXTHRESH_STORENFWD);
+ 
+       /* Adjust configuration a little */
+       CSR_WRITE_2(sc, VR_BCR0, 0x0006);
  
        /* Init circular RX list. */
        if (vr_list_rx_init(sc) == ENOBUFS) {

To Unsubscribe: send mail to majord...@freebsd.org
with "unsubscribe freebsd-current" in the body of the message

Reply via email to