To perform an 802.11 Core Reset:

  1. If this core is enabled (See BackPlane#core-enable) and we're in DMA mode

    1. Do a TX DMA reset on all 4 of the DMA interrupts

    2. Reset the first RX DMA interrupt (This is the RX DMA engine)

    3. If the core revision is less than 5
      1. Reset the 4th RX DMA interrupt (This is the DMA engine that does RX for some control packets)

  2. If the net device is currently in the process of being put down (ifconfig down)
    1. Mask StatusBitField with mask of 0xFFFFFFFC

  3. Otherwise
    1. Perform a core reset (See BackPlane#core-enable) with flags:

      1. 0x20040000 if the PHY is to be connected (requested by a parameter to this function)
      2. 0x00040000 otherwise
    2. update PHYConnected to the requested value
    3. Write 0 to MMIO offset 0x3E6

    4. Set bit 0x400 in the StatusBitField

    5. Clear the saved interrupt status for the four DMA engines

Exported/Archived from the wiki to HTML on 2016-10-27