• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login
Netgate Discussion Forum
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login

Patch for Firebox III running "FreeBSD 6.4"

Scheduled Pinned Locked Moved Problems Installing or Upgrading pfSense Software
1 Posts 1 Posters 1.3k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D
    Dyna
    last edited by Jun 3, 2010, 7:16 PM

    Hi Folks,

    I forward ported the patched that was for "FreeBSD 4.11" to work with "FreeBSD 6.4", I just did it so there has not been any extensive testing. It's not much change as you can see. The ata subsystem quite  different in 6.4 so it's a whole different file, location and function :) ..

    The network bit is the same but I'm including it below just to make it a bit clearer..

    Anyways here it is:

    –- src/sys/dev/ata/ata-lowlevel.c      2008-10-02 03:57:24.000000000 +0100
    +++ src.pathced/sys/dev/ata/ata-lowlevel.c      2010-06-01 01:40:32.000000000 +0100
    @@ -53,6 +53,16 @@
    static void ata_tf_read(struct ata_request *);
    static void ata_tf_write(struct ata_request *);

    +/* Hack for Firebox III /
    +static __inline void
    +ad_vlb_sync(struct resource port)
    +{
    +    (void)ATA_INB(port, ATA_SECTOR);
    +    (void)ATA_INB(port, ATA_SECTOR);
    +    (void)ATA_INB(port, ATA_SECTOR);
    +}
    +
    +
    /

      * low level ATA functions
      /
    @@ -820,10 +830,14 @@
            ATA_IDX_INSW_STRM(ch, ATA_DATA,
                              (void
    )((uintptr_t)request->data+request->donecount),
                              size / sizeof(int16_t));
    -    else
    +    else {
    +      disable_intr();
    +      ad_vlb_sync(ch->r_io[ATA_DATA].res);
            ATA_IDX_INSL_STRM(ch, ATA_DATA,
                              (void
    )((uintptr_t)request->data+request->donecount),
                              size / sizeof(int32_t));
    +      enable_intr();
    +    }

    if (request->transfersize < length) {
            device_printf(request->dev, "WARNING - %s read data overrun %d>%d\n",
    @@ -845,10 +859,14 @@
            ATA_IDX_OUTSW_STRM(ch, ATA_DATA,
                              (void*)((uintptr_t)request->data+request->donecount),
                              size / sizeof(int16_t));
    -    else
    +    else {
    +      disable_intr();
    +      ad_vlb_sync(ch->r_io[ATA_DATA].res);
            ATA_IDX_OUTSL_STRM(ch, ATA_DATA,
                              (void*)((uintptr_t)request->data+request->donecount),
                              size / sizeof(int32_t));
    +      enable_intr();
    +    }

    if (request->transfersize < length) {
            device_printf(request->dev, "WARNING - %s write data underrun %d>%d\n",

    – The network bit

    --- src//sys/pci/if_dc.c        2008-11-24 21:26:26.000000000 +0000
    +++ src.pathced//sys/pci/if_dc.c        2010-06-01 00:56:12.000000000 +0100
    @@ -2030,7 +2030,7 @@
            switch(sc->dc_type) {
            case DC_TYPE_98713:
            case DC_TYPE_98713A:
    -      case DC_TYPE_987x5:
    +      /case DC_TYPE_987x5:/
            case DC_TYPE_PNICII:
                    dc_read_eeprom(sc, (caddr_t)&mac_offset,
                        (DC_EE_NODEADDR_OFFSET / 2), 1, 0);

    Cheers Dyna

    1 Reply Last reply Reply Quote 0
    1 out of 1
    • First post
      1/1
      Last post
    Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.
      This community forum collects and processes your personal information.
      consent.not_received