                              Release Notes
                       Broadcom BCM4400 Linux Driver
                              Version 3.0.14
                                 10/19/2005

                          Broadcom Corporation
                          16215 Alton Parkway,
                          Irvine, CA 92619-7013

                Copyright (c) 2000-2005 Broadcom Corporation
                           All rights reserved


v3.0.14 (Oct 19, 2005)
======================

    Fixes:
    -------------
       1. Problem: (CQ14352) Module will not compile on SuSE 9.3
                   installations.
          Cause  : SuSE uses a modified version of the 2.6.5 kernel
                   that uses MODULE_PARM instead of the new
                   module_param() system.  The driver uses the
                   kernel version to decide which system to use,
                   and ultimately uses the wrong one.
          Change : Detect the installation the driver is compiling
                   on.  If it is a SuSE system, use the old
                   MODULE_PARM style module parameters.
          Impact : None.


v3.0.13 (Aug 04, 2005)
======================

    Fixes:
    -------------
       1. Problem: (CQ13637) Module will not load on 2.4 kernels.
          Cause  : The pci_set_consistent_dma_mask() function is not
                   defined in 2.4 kernels.
          Change : If the driver is being compiled on a 2.4 kernel,
                   conditionally compile out the
                   pci_set_consistent_dma_mask() function.
          Impact : None.

       2. Problem: Call trace occurs when enslaving interface.
          Cause  : The bonding driver can call the bcm4400 in a context
                   where preemption is disabled. Some kernels will
                   issue a call trace when an interface function involves
                   a sleep thread when there should be none.
          Change : The driver was changed to detect if a call was being
                   made to it in a non sleep context and it uses the
                   appropriate copy function.
          Impact : All adapters with this version driver and kernel 2.6.x
                   and above.


v3.0.12 (Aug 03, 2005)
======================

    Fixes:
    -------------
       1. Problem: Compiling the driver yeildis MODULE_PARAM deprecated
                   warnings.
          Cause  : The MODULE_PARAM style module parameter system is
                   moving to the newer "module_param_array" style
                   paramters.
          Change : Add the module_param_array style parameter system
                   and add preprocessor conditionals.
          Impact : None.


v3.0.11 (Aug 03, 2005)
======================

    Fixes:
    -------------
       1. Problem: (CQ #13593) 4401 hangs when dealing with memory
                   addresses above 1G.
          Cause  : Hardware DMA limitation.
          Change : Modify the code to ensure memory addresses are
                   below the 1G ceiling.
          Impact : None.

    Enhancements:
    -------------
       1. Change : Added mmiowb() calls to guarantee ordering of
                   PCI memory writes. 


v3.0.10 (Aug 02, 2005)
======================

   Fixes:
   ------
   1. Problem: (CQ #13314) 4401B0 devices hang the system.
      Cause  : It is possible for an external program to do PHY
               register reads and writes before the device has
               been opened.  If this happens before the first
               open call, the operations will be performed
               against a MAC core that has not yet been powered
               up.  The result are register writes that are
               thrown away and register reads that hang the system,
               waiting for data that will never arrive.
      Change : Modify the LM_ReadPhy() and LM_WritePhy() routines
               to return an error code.  The two functions will
               ensure the correct power state or return an error
               otherwise.
      Impact : None.


v3.0.9 (Jun 24, 2005)
=====================

   Fixes:
   ------
   1. Problem: (CQ #13172) Driver does not compile on linux kernel
               version 2.6.12.
      Cause  : This kernel version removes the pci_name field from
               the device structure.
      Change : Use pci_name() instead.
      Impact : None.


v3.0.8 (Jul 30, 2004)
=====================

   Fixes:
   ------
   1. Problem: (CQ #8775) Driver allows tx_pkt_desc_cnt to be
               set out of range.

      Cause  : Off-by-one error in the validation code.

      Change : Fixed the validating test.

      Impact : None.

   2. Problem: (CQ #10259) Cannot compile driver on Redhat Fedora.
               (problem 1) Source code does not compile.

      Cause  : genapic may be referenced by hard_smp_processor_id.

      Change : Removed hard_smp_processor_id which is purely for
               debugging and not needed.

      Impact : None.

   3. Problem: (CQ #10259) Cannot compile driver on Redhat Fedora.
               (problem 2) Source RPM does not build.

      Cause  : spec file was not handling 2.6 kernels with the new
               kernel build mechanism properly.

      Change : Modified the spec file to detect build environment
               and adjust build target accordingly.

      Impact : None.

v3.0.7 (Oct 31, 2003)
=====================

   Fixes:
   ------
   1. Problem: (CQ #8782) Driver cannot bring up the link when the
               system was previously running Windows without a cold
               boot.

      Cause: Windows driver may power down the PHY and the Linux
             driver did not take steps to power it back on.

      Change: Changed the code to always power on the PHY during
              chip reset.

      Impact: None.

v3.0.6 (Oct 28, 2003)
=====================

   Fixes:
   ------
   1. Problem: (CQ #8762) Activity LED stays on solid when speed is
               forced.

      Cause: Acivity LED in PHY register 26 not enabled.

      Change: Fixed by enabling activity LED after PHY reset.

      Imapct: None.

v3.0.5 (Oct 24, 2003)
=====================

   Fixes:
   ------
   1. Problem: (CQ #8740) System freezes when tx_pkt_desc_cnt is set to
               a non-default value.

      Cause: Driver has a bug that assumes that the number of tx
             descriptors is always a power of 2.

      Change: Fixed the bug by using a tx ring size that is the next power
              of 2 size bigger than the number of tx descriptors selected.

      Impact: None.

v3.0.4 (Oct 17, 2003)
=====================

   Fixes:
   ------
   1. Problem: Some packets transmitted from 4401 have CRC errors.

      Cause: CRC errors possibly caused by resets when there is rx
             fifo underrun.

      Change: Added some delay to allow pending transmit packets to
              drain before reset.

      Imapct: None.

v3.0.3 (Oct 08, 2003)
=====================

   Fixes:
   ------
   1. Problem: (CQ #8576) Cannot pass traffic after changing line speed
               to 10 Mbps.

      Cause: For some reason, a PHY reset is needed after changing speed.

      Change: Added delay after forcing link down to make sure that the
              link partner sees the link down and added a PHY reset after
              that before changing the line speed.

      Impact: None.

   2. Problem: (CQ #8578) 4401B0 stops passing traffic under stress and
                generates watchdog transmit timeouts. NIC does not
                recover from timeout reset.

      Cause: Possibly because MAC reset is skipped in the chip reset
             sequence for 4401B0.

      Change: Added MAC reset back eventhough it is supposedly not
              required for B0.

      Impact: None.

v3.0.2 (Sep 26, 2003)
=====================

   Fixes:
   ------
   1. Problem: (CQ #8476) ethtool fails to change line speed from auto
               to fixed.

      Cause: A link down is necessary to force the link partner to
             recognize the speed/duplex change.

      Change: Fixed by forcing a link-down before speed/duplex changes.

      Impact: None.

    2. Problem: (CQ #8514) Poor performance when connected to some hubs.

       Cause: Driver is rejecting some good packets in half-duplex.

       Change: Changed the driver to not reject packets when Rx Symbol
               Error is the only error reported.

       Impact: none.

    3. Problem: (CQ #8471) Cannot upgrade drivers in Mandrake 9.1

       Cause: Mandrake uses new 3rdparty module path.

       Change: Modified makefile to accomodate new path.

       Imapct: None.

       
v3.0.1 (Aug 25, 2003)
=====================

   Fixes:
   ------
   1. Problem: WOL does not work on 4401-B0.

      Change: Fixed the logic to program wol on B0.

      Impact: None.

v3.0.0 (Aug 20, 2003)
=====================

   Enhancements:
   -------------
   1. Problem: Driver does not work on 4401 B0.

      Change: Added changes to support 4401 B0.

      Impact: None.

    2. Problem: Driver does not work on 2.5 kernels.

       Change: Updated driver and Makefile to work on 2.5 kernels.

       Impact: None.

    3. Problem: Driver does not use NAPI.

       Change: Updated driver to use NAPI if available.

       Impact: None.

     4. Problem: Driver lacks support for the newer ethtool commands.

        Change: Added GSTRINGS and GSTATS ioctls. More will be added
                later.

        Impact: None.

v2.0.5 (July 02, 2003)
======================

   Fixes:
   ------
   1. Problem: Driver panics when loading on 2.4.20-18.7 RH kernel.

      Cause: Makefile compiles driver with kgcc, making the driver
             incompatible with the kernel that was compiled with gcc.

      Change: Modified Makefile to choose kgcc only if the kernel
              was compiled with kgcc.

      Impact: None.

   2. Problem: Link error when compiling driver into kernel with
               CONFIG_HOTPLUG not defined.

      Cause: __devexit_p not used in the bcm5700_remove_one pointer.

      Change: Added __devexit_p for the bcm5700_remove_one pointer.

      Impact: None.

v2.0.4 (June 26, 2003)
======================

   Fixes:
   ------
   1. Problem: ifconfig freezes some machines.

      Cause: Chip generates target aborts when MAC registers are
             accessed before chip reset.

      Change: Changed LM_ResetAdapter to eliminate certain register
              accesses before chip reset.

      Impact: None.

v2.0.3 (June 25, 2003)
======================

   Fixes:
   ------
   1. Problem: Loading driver hangs system on a certain machine.

      Cause: Chip generates target aborts when MAC registers are
             accessed before chip reset.

      Change: Removed the call to LM_SetupPhy in LM_GetAdapterInfo.

      Impact: Unable to show PHY advertisement registers in /proc file
              before ifup.

v2.0.2 (April 28, 2003)
=======================

   Fixes:
   ------
   1. Problem: (CQ #7621) "Flow_Control_Advertisement" and
               "Speed_Advertisement" have no initial values in /proc
               file

      Cause: Related varaibles not initialized before ifup.

      Change: Added LM_SetupPhy call in LM_GetAdapterInfo.

      Impact: none.

v2.0.1 (April 23, 2003)
=======================

   Fixes:
   ------
   1. Problem: (CQ #7421) "Part_Number" has no value in /proc file

      Cause: 4401 does not have VPD.

      Change: Removed "Part_Number" entry from /proc file

      Impact: Only /proc file.

   Enhancements:
   -------------
   1. Request: No warning when compiling the driver without kernel
               headers

      Change: Changed Makefile to print a warning when kernel header
              files are not found.

      Impact: None.


2.0.0 (03/25/03)

- Fixed a crash problem under heavy traffic caused by reset and tasklet running
  at the same time.

1.0.3 (02/25/03)

- Fixed multiple problems with the reset logic.
- Added magic packet WOL.
- Fixed compiler warnings.

1.0.2 (09/06/02)

- Fixed the problem of not passing traffic after stress.

1.0.1 (08/26/02)

- Fixed the problem of resets during heavy traffic.

1.0.0 (08/22/02)

- First release.
