Interference Calculation only effects GPHYs with a PHY Revision > 0. It is only changed if PHYConnected is true.
Interference Calculation Modes
Contents
None
Check the previous Interference Calculation mode and if the previous mode wasn't none, make sure that the previously set interference mode is disabled. If the previous mode was WLAN Manual or WLAN Automatic, also unset all of the ACI Flags.
Non WLAN
Enable
PHY Revision 1
Save the value of RadioRegister 0x78
Read the value of RadioRegister 0x78 and mask it with 0x1E
If the bit-reversed (as a 4 bit value) value is less than 10, but >= 8
- The value is 7
Otherwise, if the value is >= 10
- Subtract 3 from the bit-reversed (as a 4 bit value) value
- Otherwise, use the value as is
- Reverse the bits in the (original or modified as in the previous steps) value (as a 4 bit value)
Shift the value to the left by 1, bitwise OR with 0x20 and write that back to RadioRegister 0x78
Set NRSSIThreshold for G PHYs
Save PHYRegister 0x406
Write 0x7E28 to PHYRegister 0x406
Or PHYRegister 0x42B with 0x800
Or PHYRegister 0x401 with 0x1000
Save PHYRegister 0x4A0
Maskset PHYRegister 0x4A0 with mask 0xC0C0 and set 8
Save PHYRegister 0x4A1
Maskset PHYRegister 0x4A1 with mask 0xC0C0 and set 0x605
Save PHYRegister 0x4A2
Maskset PHYRegister 0x4A2 with mask 0xC0C0 and set 0x204
Save PHYRegister 0x4A8
Maskset PHYRegister 0x4A8 with mask 0xC0C0 and set 0x803
Save PHYRegister 0x4AB
Maskset PHYRegister 0x4AB with mask 0xC0C0 and set 0x605
Save PHYRegister 0x4A7
Write 2 to PHYRegister 0x4A7
Save PHYRegister 0x4A3
Write 0x287A to PHYRegister 0x4A3
Save PHYRegister 0x4A9
Write 0x2027 to PHYRegister 0x4A9
Save PHYRegister 0x493
Write 0x32F5 to PHYRegister 0x493
Save PHYRegister 0x4AA
Write 0x2027 to PHYRegister 0x4AA
Save PHYRegister 0x4AC
Write 0x32F5 to PHYRegister 0x4AC
Not PHY Revision 1
Set Bit 0x800 in PHYRegister 0x42B
Unset Bit 0x4000 in PHYRegister 0x429
Disable
PHY Revision 1
Restore the saved value of RadioRegister 0x78
Set NRSSIThreshold for G PHYs
Restore the saved value of PHYRegister 0x406
Unset bit 0x800 in PHYRegister 0x42B
- If "bad frame preemption" is disabled, turn off bit 11 in PHY Register 0x401
Set bit 0x4000 in PHYRegister 0x429
Restore the saved value of PHYRegister 0x4A0
Restore the saved value of PHYRegister 0x4A1
Restore the saved value of PHYRegister 0x4A2
Restore the saved value of PHYRegister 0x4A8
Restore the saved value of PHYRegister 0x4AB
Restore the saved value of PHYRegister 0x4A7
Restore the saved value of PHYRegister 0x4A3
Restore the saved value of PHYRegister 0x4A9
Restore the saved value of PHYRegister 0x493
Restore the saved value of PHYRegister 0x4AA
Restore the saved value of PHYRegister 0x4AC
Not PHY Revision 1
Unset bit 0x800 in PHYRegister 0x42B
Set bit 0x4000 in PHYRegister 0x429
WLAN Manual
Enable
If PHYRegister 0x33 has 0x800 set, return
Enable the "Do ACI" flag (see ACI Flags)
Save PHYRegister 0x401
Save PHYRegister 0x429
- If the PHY Revision is less than 2
Save PHYRegister 0x406
- Otherwise
Save PHYRegister 0x4C0
Save PHYRegister 0x4C1
Save PHYRegister 0x33
Save PHYRegister 0x4A7
Save PHYRegister 0x4A3
Save PHYRegister 0x4A9
Save PHYRegister 0x4AA
Save PHYRegister 0x4AC
Save PHYRegister 0x493
Save PHYRegister 0x4A1
Save PHYRegister 0x4A0
Save PHYRegister 0x4A2
Save PHYRegister 0x48A
Save PHYRegister 0x4A8
Save PHYRegister 0x4AB
- If the PHY Revision is 2
Save PHYRegister 0x4AD
Save PHYRegister 0x4AE
- If the PHY Revision is 3 or greater
Save PHYRegister 0x4AD
Save PHYRegister 0x415
Save PHYRegister 0x416
Save PHYRegister 0x417
Save InternalLookupTable offset 0x1A00, table offset 0x2
Save InternalLookupTable offset 0x1A00, table offset 0x3
Save PHYRegister 0x42B
Save PHYRegister 0x48C
Unset bit 0x1000 in PHYRegister 0x401
MaskSet PHYRegister 0x429 with mask 0xFFFC and set with 2
Write 0x800 to PHYRegister 0x33
Write 0x2027 to PHYRegister 0x4A3
Write 0x1CA8 to PHYRegister 0x4A9
Write 0x287A to PHYRegister 0x493
Write 0x1CA8 to PHYRegister 0x4AA
Write 0x287A to PHYRegister 0x4AC
MaskSet PHYRegister 0x4A0 with mask 0xFFC0 and set with 0x1A
Write 0xD to PHYRegister 0x4A7
- If the PHY Revision is less than 2
Write 0xFF0D to PHYRegister 0x406
- Otherwise, if the PHY Revision is 2
Write 0xFFFF to PHYRegister 0x4C0
Write 0xA9 to PHYRegister 0x4C1
- Otherwise
Write 0xC1 to PHYRegister 0x4C0
Write 0x59 to PHYRegister 0x4C1
MaskSet PHYRegister 0x4A1 with mask 0xC0FF and set 0x1800
MaskSet PHYRegister 0x4A1 with mask 0xFFC0 and set 0x0015
MaskSet PHYRegister 0x4A8 with mask 0xCFFF and set 0x1000
MaskSet PHYRegister 0x4A8 with mask 0xF0FF and set 0x0A00
MaskSet PHYRegister 0x4AB with mask 0xCFFF and set 0x1000
MaskSet PHYRegister 0x4AB with mask 0xF0FF and set 0x0800
MaskSet PHYRegister 0x4AB with mask 0xFFCF and set 0x0010
MaskSet PHYRegister 0x4AB with mask 0xFFF0 and set 0x0005
MaskSet PHYRegister 0x4A8 with mask 0xFFCF and set 0x0010
MaskSet PHYRegister 0x4A8 with mask 0xFFF0 and set 0x0006
MaskSet PHYRegister 0x4A2 with mask 0xF0FF and set 0x0800
MaskSet PHYRegister 0x4A0 with mask 0xF0FF and set 0x0500
MaskSet PHYRegister 0x4A2 with mask 0xFFF0 and set 0x000B
- If the PHY Revision is 3 or greater
Unset bit 0x8000 in PHYRegister 0x48A
MaskSet PHYRegister 0x415 with mask 0x8000 and set with 0x36D8
MaskSet PHYRegister 0x416 with mask 0x8000 and set with 0x36D8
MaskSet PHYRegister 0x417 with mask 0xFE00 and set with 0x16D
- Otherwise
Set bit 0x1000 in PHYRegister 0x48A
MaskSet PHYRegister 0x48A with mask 0x9FFF and set with 0x2000
Set bit 0x800 in the MicrocodeFlagsBitfield (in the SHM) if it's unset
- If the PHY Revision is 2 or greater
Set bit 0x800 in PHYRegister 0x42B
Maskset PHYRegister 0x48C with mask 0xF0FF and set with 0x200
- If the PHY Revision is 2
MaskSet PHYRegister 0x4AE with mask 0xFF00 and set with 0x7F
MaskSet PHYRegister 0x4AD with mask 0x00FF and set with 0x1300
- If the PHY Revision is 6 or greater
Write 0x7F to InternalLookupTable offset 0x1A00, table offset 3
Write 0x7F to InternalLookupTable offset 0x1A00, table offset 2
Bitwise AND PHYRegister 0x4AD with 0x00FF
Perform NRSSISlopeCalculation for G PHYs.
Disable
If PHYRegister 0x33 doesn't have bit 0x800 set, return
Disable the "Do ACI" flag (see ACI Flags)
Restore the saved value of PHYRegister 0x401
Restore the saved value of PHYRegister 0x429
Restore the saved value of PHYRegister 0x33
Restore the saved value of PHYRegister 0x4A3
Restore the saved value of PHYRegister 0x4A9
Restore the saved value of PHYRegister 0x493
Restore the saved value of PHYRegister 0x4AA
Restore the saved value of PHYRegister 0x4AC
Restore the saved value of PHYRegister 0x4A0
Restore the saved value of PHYRegister 0x4A7
- If the PHY Revision is 2 or greater
Restore the saved value of PHYRegister 0x4C0
Restore the saved value of PHYRegister 0x4C1
- Otherwise
Restore the saved value of PHYRegister 0x406
Restore the saved value of PHYRegister 0x4A1
Restore the saved value of PHYRegister 0x4AB
Restore the saved value of PHYRegister 0x4A8
- If the PHY Revision is 2
Restore the saved value of PHYRegister 0x4AD
Restore the saved value of PHYRegister 0x4AE
- Otherwise, if the PHY Revision is 3 or greater
Restore the saved value of PHYRegister 0x4AD
Restore the saved value of PHYRegister 0x415
Restore the saved value of PHYRegister 0x416
Restore the saved value of PHYRegister 0x417
Restore the saved value of InternalLookupTable offset 0x1A00, table offset 0x2
Restore the saved value of InternalLookupTable offset 0x1A00, table offset 0x3
Return the saved value of PHYRegister 0x4A2
Return the saved value of PHYRegister 0x48A
Return the saved value of PHYRegister 0x42B
Return the saved value of PHYRegister 0x48C
Unset bit 0x800 in the MicrocodeFlagsBitfield (in the SHM) if it's set
Perform NRSSISlopeCalculation for G PHYs.
WLAN Automatic
Enable
Enable the "WLAN Automatic" flag (see ACI Flags)
If the "Do ACI" flag is set (see ACI Flags), perform the WLAN Manual enable procedure
Disable
Perform the WLAN Manual disable procedure.