// 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

BSS Color is the marking, Spatial Reuse is the action

These two terms get used interchangeably and they are not the same thing. BSS Color is a 6-bit label carried in every HE PPDU. On its own it does nothing except let a receiver tell intra-BSS frames from inter-BSS frames. Spatial Reuse is the behaviour that acts on that label: ignoring a low-power inter-BSS frame and transmitting anyway. The marking is inert. The action is what changes the airtime.

The cleanest analogy is QoS. Marking a frame with a DSCP value or an 802.11e access category does nothing by itself. It is the action taken on the marking, the policing, the queuing, the scheduling, that changes behaviour. BSS Color is the DSCP marking. Spatial Reuse is the queuing policy. Confusing the two is the single most common source of muddled Spatial Reuse discussion, even among experienced engineers.

3 to 5 dB, not 20 dB

The standard permits OBSS_PD to range from -82 dBm up to -62 dBm, a 20 dB span. That figure gets quoted as if it were the operating range. It is not. The 20 dB is the ceiling the standard allows, paired with a mandatory transmit power back-off that grows as you raise the threshold. Practitioners who actually run Spatial Reuse in production report that the useful gain sits in the first 3 to 5 dB of threshold raise. Nobody runs 10 dB or more, because the transmit power penalty cancels the benefit and the failure modes get sharp.

// read the two numbers correctly

When a deck or a datasheet cites the 20 dB range, it is describing the spec's maximum, not the deployment reality. State both so the reader does not mistake the headroom for the operating point. The practical knob is 3 to 5 dB. Beyond that the destination-side problem below starts to dominate.

The decision is made at the wrong end

OBSS_PD-based Spatial Reuse has a built-in information problem. The station deciding whether to reuse the medium measures the inter-BSS signal it hears from the other transmitter. But the device that actually suffers if the reuse decision is wrong is the destination station of that other transmission, which may be somewhere else entirely.

Picture AP1, AP2, and a station STA1 sitting at the midpoint between them. AP2 hears AP1 weakly, so it decides the medium is reusable and transmits at reduced power. But STA1, the device AP1 was talking to, is close enough to AP2 that AP2's transmission lands on it as real interference. AP2 made a reasonable decision from its own vantage and still corrupted a frame at a station it could not properly account for. The reuse decision is taken at the transmitter while the consequence lands at the destination. That is the structural critique of OBSS_PD-based SR, and it is why aggressive thresholds bite.

The destination-STA awareness gap, raised in CWNE-level discussion of OBSS_PD limits

OBSS_PD is the default, PSR and SRG are the rest

OBSS_PD-based SR
Default, most deployed
  • Receiver raises its CCA threshold for inter-BSS frames
  • Transmits if the OBSS frame is below the raised threshold
  • Mandatory TX power back-off scales with the raise
  • Decision made unilaterally at the transmitter
802.11ax-2021 §26.9.2
Parameterized SR (PSR)
Trigger-frame carried
  • For uplink trigger-based (TB) PPDUs
  • The soliciting AP advertises an acceptable interference level
  • A nearby station can transmit inside the TB exchange
  • More controlled than blind OBSS_PD reuse
802.11ax-2021 - PSR field in Trigger
// SRG-based SR

Spatial Reuse Groups (SRG) is the third, controlled-coordination variant. APs are grouped and share OBSS_PD parameters so reuse decisions are coordinated rather than unilateral. It is rarely deployed in the field because it needs AP-to-controller coordination that most vendors have not exposed in their management planes. Good in theory, scarce in practice.

802.11ax-2021 §26.9.2 - SRG OBSS_PD parameters

Does Spatial Reuse help downlink without client support?

Here is a question the wireless community is genuinely still debating. The AP makes the OBSS_PD CCA-override decision unilaterally on the downlink. That suggests Spatial Reuse could improve downlink throughput even when the clients are legacy and cannot read or set a BSS Color, in the same way RX-SOP improved downlink for years with zero client support. The counter-view is that meaningful SR with BSS coloring needs participating clients, and that ad-hoc testing without them has been inconclusive.

This is presented here as a live open debate rather than a resolved answer, because that is what it is. Engineers with deep field experience disagree, the measured evidence is thin, and it is exactly the kind of question a careful per-frame capture analysis could eventually settle. If you see a confident one-line answer either way, be skeptical.

Wi-Fi 8 Coordinated Spatial Reuse

802.11bn (Wi-Fi 8, Ultra High Reliability) is drafting Coordinated Spatial Reuse (Co-SR), which targets the destination-STA gap directly. Instead of each transmitter deciding alone, neighbouring APs coordinate their reuse decisions and power levels, so the device that would suffer interference is accounted for before the reuse happens. It is the standards body's answer to the structural critique above. The amendment is still in draft, so treat any specific Co-SR behaviour as provisional until TGbn publishes.

IEEE 802.11bn (Wi-Fi 8 UHR) Coordinated Spatial Reuse - draft, subject to change | see /wi-fi-8

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