Turn on a bit (for 82558/82559 only) which disables the chip's
authorchris <chris@openbsd.org>
Wed, 26 Apr 2000 19:12:08 +0000 (19:12 +0000)
committerchris <chris@openbsd.org>
Wed, 26 Apr 2000 19:12:08 +0000 (19:12 +0000)
builin feature to discard frames >1500 bytes (useful for jumbo frames,
also 802.1Q VLANs)

ok aaron@

sys/dev/ic/fxp.c
sys/dev/ic/fxpreg.h
sys/dev/ic/fxpvar.h
sys/dev/pci/if_fxp_pci.c

index e747d5f..4d19ead 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: fxp.c,v 1.2 2000/04/26 12:48:53 aaron Exp $   */
+/*     $OpenBSD: fxp.c,v 1.3 2000/04/26 19:12:08 chris Exp $   */
 /*     $NetBSD: if_fxp.c,v 1.2 1997/06/05 02:01:55 thorpej Exp $       */
 
 /*
@@ -1152,6 +1152,7 @@ fxp_init(xsc)
        cbp->stripping =        !prm;   /* truncate rx packet to byte count */
        cbp->padding =          1;      /* (do) pad short tx packets */
        cbp->rcv_crc_xfer =     0;      /* (don't) xfer CRC to host */
+       cbp->long_rx =          sc->not_82557; /* (enable) long packets */
        cbp->force_fdx =        0;      /* (don't) force full duplex */
        cbp->fdx_pin_en =       1;      /* (enable) FDX# pin */
        cbp->multi_ia =         0;      /* (don't) accept multiple IAs */
index 68cbd61..586c187 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: fxpreg.h,v 1.1 2000/04/18 18:44:27 jason Exp $        */
+/*     $OpenBSD: fxpreg.h,v 1.2 2000/04/26 19:12:08 chris Exp $        */
 
 /*
  * Copyright (c) 1995, David Greenman
@@ -161,7 +161,8 @@ struct fxp_cb_config {
        volatile u_int          stripping:1,
                                padding:1,
                                rcv_crc_xfer:1,
-                               :5;
+                               long_rx:1,              /* 82558/82559 */
+                               :4;
        volatile u_int          :6,
                                force_fdx:1,
                                fdx_pin_en:1;
index 4918342..92e075d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: fxpvar.h,v 1.1 2000/04/18 18:44:27 jason Exp $        */
+/*     $OpenBSD: fxpvar.h,v 1.2 2000/04/26 19:12:08 chris Exp $        */
 /*     $NetBSD: if_fxpvar.h,v 1.1 1997/06/05 02:01:58 thorpej Exp $    */
 
 /*                  
@@ -63,6 +63,7 @@ struct fxp_softc {
        int phy_primary_device;         /* device type of primary PHY */
        int phy_10Mbps_only;            /* PHY is 10Mbps-only device */
        int eeprom_size;                /* size of serial EEPROM */
+       int not_82557;                  /* yes if we are 82558/82559 */
 };
 
 /* Macros to ease CSR access. */
index 61b4aa1..d4e730b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_fxp_pci.c,v 1.1 2000/04/18 18:44:31 jason Exp $    */
+/*     $OpenBSD: if_fxp_pci.c,v 1.2 2000/04/26 19:12:08 chris Exp $    */
 
 /*
  * Copyright (c) 1995, David Greenman
@@ -138,6 +138,7 @@ fxp_pci_attach(parent, self, aux)
        bus_space_tag_t iot = pa->pa_iot;
        bus_addr_t iobase;
        bus_size_t iosize;
+       pcireg_t rev = PCI_REVISION(pa->pa_class);
 
        if (pci_io_find(pc, pa->pa_tag, FXP_PCI_IOBA, &iobase, &iosize)) {
                printf(": can't find i/o space\n");
@@ -170,6 +171,14 @@ fxp_pci_attach(parent, self, aux)
                return;
        }
 
+       /*
+        * revisions
+        * 2 = 82557
+        * 4, 6 = 82558
+        * 8 = 82559
+        */
+       sc->not_82557 = (rev >= 4) ? 1 : 0;
+
        /* Do generic parts of attach. */
        if (fxp_attach_common(sc, enaddr, intrstr)) {
                /* Failed! */