// channel behaviour

CCI vs CCC

Co-Channel Interference vs Co-Channel Contention

The CWNE community is actively debating whether "Co-Channel Interference" is even the right term. Peter Mackenzie (Hamina, CWNE) argues it should be "Co-Channel Contention." The distinction matters for how you design, diagnose, and explain high-density Wi-Fi problems. This page walks through the mechanics at the frame level, from CCA thresholds to BSS Color to what it looks like in a PCAP.

Traditional view
Co-Channel Interference
Overlapping BSSs on the same channel cause interference that degrades performance. Minimize at all costs.
vs
Peter Mackenzie / Hamina 2026
Co-Channel Contention
CSMA/CA means overlapping 802.11 devices take turns. That's contention, not interference. The name change matters.

Why the term matters

"Interference" in RF engineering means signals that corrupt each other. Adjacent channel interference (ACI) is a real example: a transmitter bleeding into an adjacent channel corrupts frames at the receiver. No protocol can fix that. It is noise.

What happens when two 802.11 APs operate on the same channel is different. CSMA/CA means they listen before transmitting. They detect each other's preambles. They set their NAV. They back off. They take turns. Frames are not corrupted. Throughput drops because the medium is shared. That is contention, not interference.

The distinction is not academic. If you call it interference, you design to eliminate it. If you call it contention, you design to manage it. Sometimes a densely co-channeled deployment with well-managed contention outperforms a spread-out deployment where clients are too far from APs to sustain high MCS.

Adjacent Channel Interference (ACI)
True interference
  • Transmitter on ch 3 bleeds energy into ch 1 and ch 6
  • Receiver cannot decode the corrupted frame
  • No ACK returned, retransmit occurs
  • CSMA/CA cannot help, ED detection only
  • Result: corrupted frames, elevated FCS errors, throughput collapse
  • Fix: eliminate the adjacent channel overlap
802.11-2020 §17.3.10.6
Co-Channel Contention (CCC)
Managed contention
  • AP1 and AP2 on ch 6, RSSI above SD threshold
  • AP2 hears AP1 preamble, decodes Duration field
  • AP2 sets NAV, defers until medium clears
  • Frames are received intact, throughput shared
  • Result: lower aggregate throughput, no frame corruption
  • Fix: manage CW, AP density, OBSS_PD (802.11ax)
802.11-2020 §10.3.2, §10.3.4
// the real enemy

Adjacent channel interference is the condition that actually corrupts frames and cannot be resolved by CSMA/CA. CCC simply reduces available airtime. The practical implication: in a dense deployment, measured retry rate and elevated channel utilisation (BSS Load IE) are CCC symptoms. Elevated FCS error rate is an ACI or RF noise symptom.

Exam topics this maps to

CCA
Clear Channel Assessment - SD and ED thresholds
CSMA/CA
Carrier Sense Multiple Access with Collision Avoidance
NAV
Network Allocation Vector - virtual carrier sense
OBSS
Overlapping Basic Service Set - the spec's term for CCC
Retry rate
Frame-level CCC indicator visible in PCAP
BSS Color
802.11ax hardware solution to OBSS differentiation

Clear Channel Assessment

Before any transmission, a station performs CCA to determine whether the medium is idle. CCA has two independent detection paths running simultaneously. Both can declare the medium busy. Either declaration prevents transmission.

Noise floor
typically -95 dBm
SD threshold
-82 dBm (802.11a/n/ac)
ED threshold
-62 dBm (20 dB above SD)
OBSS_PD (802.11ax)
-82 to -62 dBm (configurable)

Preamble-based detection

SD listens for an 802.11 preamble specifically. If a station decodes a preamble at greater than 4 dB SNR, it considers the medium busy, reads the Duration field from the PHY or MAC header, and sets its NAV accordingly.

SD is highly sensitive. A signal at -82 dBm from a distant AP you cannot associate to will trigger SD deferral. This is the core mechanism of co-channel contention: CSMA/CA deference to a decoded 802.11 frame.

802.11-2020 §10.3.2.2 - CCA-SD threshold
// SD fires when: RSSI > noise_floor + 4 dB // Approx -82 dBm for 802.11a/n/ac 20 MHz // Result: medium declared BUSY, NAV set

Energy-based detection

ED measures raw energy on the channel regardless of whether it is an 802.11 signal. The threshold is 20 dB higher than SD, approximately -62 dBm. It detects non-802.11 emitters, microwave ovens, Bluetooth, DECT phones, and anything else with sufficient RF energy.

ED cannot decode a preamble. It has no Duration field to read. It cannot set a NAV. It simply declares the medium busy until the energy drops. This is why non-802.11 interference is harder to characterise in a PCAP.

802.11-2020 §10.3.2.3 - CCA-ED threshold
// ED fires when: energy > -62 dBm (typical) // Signal can be non-802.11 // Result: medium declared BUSY, no NAV set

The 4 microsecond CCA window

CCA must complete within 4 microseconds before any transmission. Both SD and ED checks run in parallel. The outcomes determine the path:

SD result
ED result
Outcome
NAV set?
Preamble decoded
Energy above threshold
BUSY
Yes - from Duration field
Preamble decoded
Energy below threshold
BUSY
Yes - from Duration field
No preamble
Energy above threshold
BUSY
No - unknown source
No preamble
Energy below threshold
IDLE
No
802.11-2020 Table 10-4 - CCA state transitions

Network Allocation Vector

Physical carrier sense (CCA-SD / CCA-ED) tells a station what is happening on the medium right now. Virtual carrier sense, implemented through the NAV, tells a station what is scheduled to happen.

Every 802.11 MAC frame carries a Duration field in bytes 2-3 of the MAC header. Any station that receives and decodes a frame reads this field and updates its NAV timer. The NAV counts down in microseconds. While NAV is greater than zero, the station treats the medium as busy regardless of what CCA says.

Same BSS frames

Frames from your own AP and associated clients. The Duration field reserves the medium for the upcoming exchange: DATA, SIFS, ACK. Or for RTS/CTS: reserves for CTS, SIFS, DATA, SIFS, ACK.

In 802.11ax, intra-BSS NAV is tracked separately from OBSS NAV. Spatial reuse cannot override intra-BSS NAV - the station must wait.

// RTS Duration field sets NAV for: SIFS + CTS + SIFS + DATA + SIFS + ACK // All hearing stations defer for that window

Other BSS frames

Frames from an AP or client in a different BSS on the same channel. Your station decodes the preamble, reads the Duration field, and defers. This is the core mechanism of co-channel contention.

In pre-802.11ax devices, OBSS NAV and intra-BSS NAV are treated identically. In 802.11ax, OBSS NAV can be overridden during a Spatial Reuse TXOP if OBSS_PD conditions are met.

// OBSS NAV - the CCC mechanism: // AP2 hears AP1's frame, reads Duration // AP2 NAV = Duration us, medium BUSY // AP2 cannot transmit until NAV expires

The CSMA/CA backoff sequence

In a healthy co-channel deployment, this is the ordered sequence every station follows. No frames are corrupted. Throughput is shared across all contending stations.

01
Wait for DIFS

Station waits for medium to be idle for one DIFS period (AIFS for EDCA). 802.11a/n/ac: DIFS = 28 µs. 802.11b: DIFS = 50 µs.

02
Random backoff

Station picks a random backoff value between 0 and CW (Contention Window). Initial CW_min for best-effort (AC_BE): 31 slots. Each slot = 9 µs (802.11a/n/ac).

03
Count down backoff

Station decrements its backoff counter each idle slot. If the medium goes busy (CCA-SD fires, NAV non-zero), the countdown freezes. It resumes when the medium is idle again after DIFS.

04
Transmit at zero

When backoff reaches zero, station transmits. If two stations reach zero simultaneously, a collision occurs, both detect the missing ACK, and each doubles its CW (binary exponential backoff).

05
CW doubles on collision

Each retry doubles the contention window: 31, 63, 127, 255, 511, 1023 slots. After CW_max (1023 for AC_BE), it stays at max. After 7 retries (CWNA configurable), the frame is dropped.

802.11-2020 §10.3.4 - DCF backoff procedure
// EDCA and traffic priorities

EDCA (Enhanced Distributed Channel Access) in 802.11e/n/ac/ax uses four Access Categories: Voice (AC_VO), Video (AC_VI), Best Effort (AC_BE), Background (AC_BK). Each has its own AIFS and CW parameters. AC_VO has shorter AIFS and smaller CW, winning contention more often. In a CCC scenario, VoIP degradation often means AC_VO is losing contention to OBSS AC_BE traffic - visible as retry patterns on voice-class frames in a PCAP.

802.11-2020 Table 10-1 - EDCA default parameters

BSS Color - the 802.11ax hardware solution

BSS Color addresses the core CCC problem: pre-802.11ax stations defer to any OBSS frame above the SD threshold, even at -81 dBm from an AP 200 metres away. 802.11ax introduces a 6-bit BSS Color identifier carried in the HE SIG-A field of every HE PPDU. Each BSS is assigned a unique color (1-63, value 0 is reserved). Receiving stations use this to classify incoming frames as intra-BSS or inter-BSS before applying CCA rules.

Where it lives in the frame

HE SIG-A is a 2-symbol field in the HE PPDU preamble, transmitted at the lowest MCS (MCS 0, BPSK 1/2) for maximum range. It carries the BSS Color in bits 7-12 (HE SU PPDU) or the same position in HE MU PPDU formats.

// HE SIG-A field - partial layout: bits 0-3 : BSS Color (6 bits, split) bits 6-7 : Spatial Reuse fields bit 8 : BSS Color Change Announcement // 63 available colors per OBSS group
802.11ax-2021 §27.3.11.8 - HE SIG-A

The spatial reuse threshold

When a station receives an inter-BSS HE frame (different BSS Color), it compares the frame RSSI to the OBSS_PD threshold instead of the standard CCA-SD threshold. If RSSI is below OBSS_PD, the station can treat the medium as idle and transmit concurrently.

// Spatial Reuse decision: if frame.bss_color != my_bss_color: if frame.rssi < OBSS_PD_threshold: medium = IDLE // can transmit else: medium = BUSY // defer as before
802.11ax-2021 §26.9.2 - OBSS_PD-based SR operation

The constant product rule

Raising the OBSS_PD threshold lets you ignore weaker OBSS signals and transmit more aggressively. But this creates a problem: the OBSS station you are now ignoring cannot know you are transmitting. If you hit it hard, its receiver will see interference. 802.11ax solves this with a mandatory TX power reduction constraint.

TX Power limit when using Spatial Reuse:
TXPwr ≤ TXPwrref - max(0, OBSS_PD + 82)
TXPwrref = 21 dBm (typical)
OBSS_PD threshold
Max TX power
Effect
-82 dBm (default CCA-SD)
21 dBm (no reduction)
No spatial reuse benefit
-72 dBm
11 dBm (-10 dB reduction)
Moderate spatial reuse
-62 dBm (ED threshold)
1 dBm (-20 dB reduction)
Maximum spatial reuse, very low TX power

The constraint is designed so that as you raise your OBSS_PD threshold (ignoring weaker OBSS signals), you also lower your own TX power to match. The OBSS station you are ignoring will therefore hear your transmission at a level low enough not to corrupt its ongoing frame. This is the constant product constraint: ignore at the same level you reduce your impact.

802.11ax-2021 §26.9.2.2 - TX power constraints for SR

Intra-BSS NAV vs OBSS NAV

802.11ax introduces separate NAV timers for intra-BSS and inter-BSS frames. Pre-802.11ax, all NAV was treated equally. In 802.11ax, a station performing Spatial Reuse can override the OBSS NAV if OBSS_PD conditions are met. The intra-BSS NAV remains mandatory - Spatial Reuse cannot override your own BSS's medium reservation.

802.11ax-2021 §26.9.3.3 - Intra-BSS NAV vs OBSS NAV

What CCC looks like in a PCAP

Co-channel contention leaves five distinct signatures in a PCAP capture. None of them prove the cause in isolation. Together they build a picture. The key diagnostic question is whether high retry rate correlates with visible OBSS traffic - that confirms contention rather than RF noise or driver issues.

01
Retry bit in Frame Control

Bit 11 of the Frame Control field is set to 1 on retransmitted frames. In a capture with significant OBSS activity, expect elevated retry rates on data frames. Greater than 10% retry on AC_BE is a contention signal. Greater than 5% on AC_VO suggests the VoIP SLA is at risk.

Wireshark display filter:
wlan.fc.retry == 1
Shows all retransmitted frames in capture
Retry rate per BSSID:
wlan.fc.retry == 1 && wlan.bssid == aa:bb:cc:dd:ee:ff
802.11-2020 §9.2.4.1.3 - Retry subfield
02
BSS Load IE - channel utilisation

The BSS Load element (IE tag 11) is included in beacons and probe responses by supporting APs. It carries three fields: Station Count (16-bit), Channel Utilization (8-bit, units of 1/255), and Available Admission Capacity. Channel Utilization above 0.5 (approximately 200/255) suggests the medium is busy more than half the time.

Show beacons with BSS Load IE:
wlan.fc.type_subtype == 8 && wlan.tag.number == 11
BSS Load IE structure:
Station Count2 bytes - associated clients
Channel Utilization1 byte - 255 = 100% busy
Available Admission2 bytes - TSPEC capacity
802.11-2020 §9.4.2.28 - BSS Load element
03
OBSS frames from foreign BSSIDs

In a monitor mode capture, frames from all BSSIDs on the channel are visible. Count the proportion of air time consumed by frames whose BSSID is not your AP. High OBSS frame volume correlates with elevated NAV deferral time for your own stations.

Show only your BSS frames:
wlan.bssid == your:ap:mac:here
Show OBSS frames only (exclude your BSSID):
!(wlan.bssid == your:ap:mac:here) && wlan.fc.type == 2
Note: monitor mode required. Managed-mode capture only sees frames addressed to your station, missing most OBSS traffic.
04
Duration field - NAV reservation

The Duration/ID field in bytes 2-3 of the MAC header carries the NAV reservation in microseconds. In a high-contention environment, you will see long Duration values set by frames from OBSS BSSIDs, followed by idle periods where your stations cannot transmit.

Frames setting long NAV reservations:
wlan.duration > 5000
Duration in microseconds. 5000 us = 5 ms NAV window
Large duration from OBSS BSSIDs:
wlan.duration > 2000 && !(wlan.bssid == your:bssid)
802.11-2020 §9.2.4.6 - Duration/ID field
05
BSS Color in HE frames (802.11ax)

In a Wi-Fi 6/6E/7 capture, every HE PPDU carries the BSS Color in the HE SIG-A field. Wireshark decodes this in the WLAN Radiotap or HE Info fields. Cross-referencing BSS Color against retry rate and OBSS_PD threshold can confirm whether spatial reuse is active and whether color collisions are contributing to elevated contention.

Show frames with specific BSS Color:
wlan.he.bss_color_info.bss_color == 7
Detect BSS Color collision (two BSSIDs, same color):
wlan.he.bss_color_info.bss_color == X
If two different BSSIDs appear with the same color: collision. AP will announce color change in BSS Color Change Announcement IE.
802.11ax-2021 §27.3.11.8 - HE SIG-A BSS Color field
Triage
CCC vs RF noise - how to tell them apart
Symptom
CCC (contention)
RF noise / ACI
Retry rate
Elevated
Elevated
FCS errors
Low / absent
Elevated
OBSS frames visible
Yes, decodable
No (or garbled)
Duration field set
Yes, from OBSS
No / erratic
BSS Load CU
High
Variable
Channel change fixes it
Yes
Depends on source
// governing references
IEEE 802.11-2020§10.3.2.2 CCA-SD | §10.3.2.3 CCA-ED | §10.3.4 DCF backoff | §9.2.4.6 Duration field | §9.4.2.28 BSS Load element
IEEE 802.11ax-2021§26.9.2 OBSS_PD SR operation | §26.9.3.3 Dual NAV | §27.3.11.8 HE SIG-A BSS Color
IEEE 802.11e-2005EDCA - Enhanced Distributed Channel Access | Table 10-1 AIFS and CW parameters by AC
Hamina Webinar 2026Peter Mackenzie - "Why I Love CCI" | January 2026 | CCC terminology argument