Cell Reselection (Idle) in LTE 4G
Idle-mode mobility — the S-criterion for suitability, the R-criterion ranking, absolute frequency priorities, and intra/inter-frequency and inter-RAT reselection.
When your phone sits in your pocket with no active call or data session, it is not idle in the lazy sense — it is quietly watching the radio around it and deciding, entirely on its own, which cell to camp on. That autonomous "which cell is best right now?" decision in RRC_IDLE is cell reselection, and it is governed by TS 36.304 (the UE procedures) with the thresholds and timers broadcast per TS 36.331. The network never commands an idle UE to move; the UE moves itself, using a small toolbox of criteria and a handful of parameters it reads from the System Information Blocks.
Introduction
Cell reselection is the idle-mode mobility procedure a UE runs continuously while camped on a cell but not connected. It is a pure UE-autonomous algorithm — defined by TS 36.304, parameterised by values broadcast per TS 36.331 — with no per-move signalling to the network. The UE measures, ranks or priority-compares, waits out a timer, and hops, all on its own.
It runs precisely in RRC_IDLE (and the idle-like paging states of later releases), the state where the UE has no C-RNTI, no bearer, and no handover machinery. Because there is no dedicated connection to hand over, the UE cannot be told where to go; it must keep itself camped on the best usable cell so that paging reaches it and a later access attempt succeeds — and it must do so without burning battery on constant measurement.
The procedure is a short pipeline: decide whether to measure (search thresholds) → check a candidate is usable (S-criterion) → choose among usable candidates (R-criterion ranking or absolute-priority comparison) → commit only after it stays best (Treselection). Knowing which stage a stuck UE is in — not measuring, measuring but nothing qualifies, qualifying but never committing — is usually enough to name the misconfigured parameter.
On this page
Why cell reselection is needed
In plain words: reselection is like walking through a building while streaming music on Wi-Fi with your screen off. You don't phone the IT desk every time you drift toward a better access point — your phone quietly notices the current one is fading, sees a stronger one, waits a moment to be sure it isn't a fluke, and switches. The network stays out of it entirely; the device just keeps itself on the best usable connection so that when a message finally arrives, it lands.
Concretely, reselection exists because of what idle mode is. The UE holds no radio connection and no context in any cell, so there is no bearer to hand over and no eNB tracking it move-by-move — the network literally cannot steer it. Yet the UE must stay reachable: it has to be camped on a cell whose paging channel it can hear and through which a later RRC connection can actually succeed. And it must do all of this on a tight battery budget, so it cannot measure every neighbour all the time. Reselection is the algorithm that balances those three pressures — keep camped somewhere good, follow real coverage changes, but don't waste power or ping-pong on noise.
An idle-mode UE autonomously re-evaluating which cell to camp on, using measured level and quality against thresholds it reads from SIB3 (serving-cell and common reselection info), SIB4 (intra-frequency neighbours), SIB5 (inter-frequency E-UTRA), and SIB6/SIB7 (UTRAN/GERAN inter-RAT).
In idle there is no per-UE signalling budget for handover. Letting the UE decide keeps it camped where paging will reach it and where a later RRC connection can succeed — without waking the network for every small movement, and without draining the battery on constant measurement.
The UE checks a cell is still suitable (the S-criterion), then either ranks candidates by signal (the R-criterion, for equal-priority and intra-frequency) or compares by absolute frequency priority, and finally commits only after a candidate stays better for Treselection.
Cell Selection vs Cell Reselection
Two closely related procedures often get muddled. Cell selection is the one-shot act of finding a suitable cell to camp on when the UE first powers up, returns from out-of-coverage, or transitions out of connected mode. It comes in two flavours: initial cell selection, where the UE has no stored information and scans every carrier and every band it supports for the strongest cell; and stored-information cell selection, where the UE uses previously saved carrier frequencies and cell parameters to find a suitable cell faster. Either way the goal is the same — land on a cell that passes the suitability test so the UE can camp.
Cell reselection is the ongoing job that runs while already camped in idle (and in RRC_INACTIVE-like paging states in later releases): the UE keeps measuring the serving cell and neighbours and hops to a better one when the rules say so. This page is about reselection. The essential difference is that selection answers "where do I camp now, from a cold or semi-cold start?" while reselection answers "should I move from the cell I am already camped on?" — a continuous background loop rather than a one-time search.
Camped normally: once selection or reselection lands the UE on a suitable cell of its registered/selected PLMN, it is "camped normally" — it monitors that cell's paging channel, reads system information, and can initiate access. Everything below is about keeping that camped cell the best available one.
The S-Criterion — Is a Cell Suitable?
Before any ranking or priority comparison happens, a cell must pass the suitability test, the S-criterion. It asks whether the received level (and, from Release 9, the received quality) clears the minimum the operator has configured. The received-level term Srxlev is built from measured RSRP minus the minimum required level; the quality term Squal is built from measured RSRQ minus a minimum quality. A cell qualifies only when the relevant terms are positive — Srxlev > 0, and, where quality is configured, Squal > 0.
q-RxLevMin + Pcompensation ) − QoffsettempSqual = Qqualmeas − (
q-QualMin + Qqualminoffset ) − Qoffsettemp
Here Qrxlevmeas is measured RSRP and Qqualmeas is measured RSRQ. q-RxLevMin and q-QualMin are the operator's floors, broadcast in the SIBs. Pcompensation accounts for the UE's uplink power headroom: a UE that physically cannot reach the cell on the uplink should not treat it as suitable, so this term subtracts a penalty derived from p-Max and the UE's power class — formally Pcompensation = max(PEMAX − PPowerClass, 0). Qoffsettemp is a temporary offset applied to a cell after a failed access attempt, so a cell that just rejected the UE is briefly made to look worse. The optional q-RxLevMinOffset / Qqualminoffset terms are applied only during periodic search for a higher-priority PLMN while roaming, so a visited network cannot trap the UE. The Squal (RSRQ-based) gate was added in Release 9; on legacy configurations only Srxlev is checked.
Suitability gates everything. A cell that fails the S-criterion is never reselected, no matter how strongly it ranks or how high its priority. Ranking (R-criterion) and priority comparison only ever choose among cells that are already suitable. The S-criterion is also the same test used at initial cell selection — the difference is only what happens after a cell passes.
✅ Debugging steps
- Read the serving cell's
q-RxLevMin(andq-QualMin, Rel-9+) fromSIB1/SIB3and recomputeSrxlev/Squalagainst the measured RSRP/RSRQ in the trace. - Check
Pcompensation= max(PEMAX−PPowerClass, 0) — a power-limited UE on a high-p-Maxcell can fail suitability even with decent RSRP. - Confirm no
Qoffsettemppenalty is lingering from a recent failed access, artificially suppressing an otherwise-suitable cell. - Verify the cell is not barred (
cellBarredinSIB1) or reserved — a barred cell fails suitability regardless of level.
⚠ Common causes of failure
q-RxLevMin/q-QualMinset too high, so genuinely usable cells never pass suitability (UE goes "no suitable cell", out of service).- Power-limited UE with a large
Pcompensationpenalty on a cell it can hear but cannot reach on the uplink. - Cell barred, reserved for operator use, or belonging to a forbidden PLMN/TA, so it is excluded despite strong signal.
- Rel-9
Squalgate biting under heavy load: RSRP is fine but RSRQ collapses, so the cell drops out of suitability.
The R-Criterion — Ranking & the Treselection Timer
For intra-frequency neighbours, and for inter-frequency neighbours of equal priority, absolute priorities cannot break the tie — so the UE falls back to signal-strength ranking, the R-criterion. Each cell is given a rank value R in dBm. The serving cell gets a hysteresis bonus Qhyst to make it "sticky", while each neighbour can be nudged up or down by cell- and frequency-specific offsets bundled into Qoffset.
QhystRn = Qmeas,n −
Qoffset
Qmeas is measured RSRP. For a neighbour on the same frequency, Qoffset is just the cell-specific offset q-OffsetCell; for an equal-priority inter-frequency neighbour it is the sum of the frequency offset q-OffsetFreq and the cell offset. The UE continuously computes Rs for the serving cell and Rn for every suitable neighbour, sorts them, and identifies the best-ranked cell.
But ranking better for an instant is not enough. The UE reselects to the highest-ranked neighbour only if all three of these hold: the new cell is ranked better than the serving cell (Rn > Rs); this has been true for the whole duration of the reselection timer Treselection; and more than 1 second has elapsed since the UE last camped on the current serving cell. That middle condition is the anti-ping-pong heartbeat of the whole procedure.
Treselection is the commitment timer. A neighbour can flicker above the serving cell for a moment during a fade and it changes nothing. Only when it stays better for the entire Treselection window does the UE actually move. Lengthening Treselection makes the UE more stable but slower to follow real coverage changes; shortening it makes reselection snappier but risks ping-pong. It is the single most important knob for tuning idle-mode stability, and — as the last section shows — it is scaled down automatically when the UE is moving fast.
Two subtleties round out the R-criterion. Qhyst is the margin a neighbour must beat: because it is added to Rs, a neighbour must exceed the serving cell by more than Qhyst dB before it can even start the Treselection clock. And Qoffset lets the operator bias the outcome — a positive q-OffsetCell discourages reselection to a specific neighbour (useful to protect a congested cell), while a negative one actively encourages it (useful to pull traffic onto a preferred cell).
Treselection window does it reselect, at the second marker.✅ Debugging steps
- Compute Rs = Qmeas,s +
Qhystand Rn = Qmeas,n −Qoffsetfrom the trace and confirm the ranking order matches what the UE actually did. - Check the target genuinely beats the serving cell by more than
Qhystbefore expecting theTreselectionclock to even start. - Measure how long Rn > Rs held and compare to the broadcast
Treselection; confirm the >1 s-since-camping guard is also satisfied. - Inspect
q-OffsetCell/q-OffsetFreqfor a bias that is deliberately suppressing or forcing this neighbour.
⚠ Common causes of failure
Treselectiontoo long, so a moving UE lags behind coverage and drops the serving cell before it commits (ping-out / call setup on a dying cell).Treselectiontoo short orQhysttoo small, causing ping-pong between two similar cells.- A large positive
q-OffsetCell/q-OffsetFrequnintentionally locking the UE onto a weakening serving cell. - The 1-second minimum-camp guard repeatedly blocking rapid moves in a fast-fading pocket.
Absolute Frequency Priorities
Ranking works within a frequency layer, but LTE steers UEs between layers with absolute priorities, not signal comparison. Every frequency layer is assigned a cellReselectionPriority (integer 0–7, higher = more preferred). These come from SIB3 for the serving frequency, SIB5 for inter-frequency E-UTRA layers, and SIB6/SIB7 for UTRAN/GERAN. Alternatively they can be delivered per-UE in the RRCConnectionRelease message via idleModeMobilityControlInfo — these dedicated priorities override the broadcast ones and are the mechanism operators use to push a specific UE onto a specific layer as it goes idle.
The rules are deliberately asymmetric depending on whether the target layer is higher or lower priority than the serving one. This asymmetry is the whole point: it keeps the UE glued to the preferred layer as long as it is usable, and only lets it fall to a lesser layer when the preferred one genuinely weakens.
Srxlev(target) > threshX-High for TreselectionGo DOWN (lower priority):
Srxlev(serving) < threshServing-Low and Srxlev(target) > threshX-Low for Treselection
To move up to a higher-priority layer, the UE needs only the target to clear threshX-High — the serving cell's condition is irrelevant, because the operator wants the UE on the preferred layer whenever it can get there. To drop down to a lower-priority layer, two things must be true at once: the serving cell must have fallen below threshServing-Low, and the target must clear threshX-Low. If several layers qualify at the same time, the UE picks the highest-priority one. Note that equal-priority frequencies never use this comparison at all — a layer explicitly sharing the serving layer's priority is handled by the R-criterion, and a layer with no configured priority is simply not considered for reselection.
Why the asymmetry: it prevents ping-pong down onto a low layer while the current layer is still fine, and it guarantees the UE always drifts back up to the operator's preferred layer as soon as coverage there is adequate — exactly the behaviour you want for load-steering onto a capacity band.
✅ Debugging steps
- List each frequency layer's
cellReselectionPriorityfromSIB3/SIB5/SIB6/SIB7(and check for dedicated priorities from the lastRRCConnectionRelease). - For an "up" move, verify only that target
Srxlev>threshX-High; for a "down" move, verify both serving <threshServing-Lowand target >threshX-Low. - Confirm the target layer actually has a configured priority — a layer with no priority is silently ignored for reselection.
- Check whether dedicated priorities have a validity timer (
t320) that expired, reverting the UE to broadcast priorities mid-test.
⚠ Common causes of failure
- Two layers accidentally sharing the same priority, so the UE ranks (R-criterion) where the operator expected a priority-based move.
- A layer left with no
cellReselectionPriorityat all, making the UE never consider it. threshX-High/threshServing-Lowset so the UE never climbs to the capacity layer, or descends off it too eagerly.- Dedicated priorities from
idleModeMobilityControlInfooverriding the broadcast plan in a way that pins the UE to an unexpected layer.
Intra-Frequency, Inter-Frequency & Inter-RAT
Putting the two mechanisms together, the reselection logic branches by the type of the candidate. The branch decides whether ranking or priority comparison applies, and which SIB supplied the parameters.
Intra-frequency neighbours — cells on the same carrier as the serving cell — are always chosen by the R-criterion. Priority is meaningless here because they share the serving frequency by definition. Their neighbour list and offsets come from SIB4, and a cell not in the list is still measured and considered unless it is on a black-list. Inter-frequency E-UTRA neighbours are the priority-driven case: a layer of higher or lower priority uses the threshX-High/threshX-Low rules, while a layer of equal priority drops back to R-criterion ranking with q-OffsetFreq folded into Qoffset. Their parameters come from SIB5.
Inter-RAT reselection extends the same absolute-priority machinery to other radio technologies. Reselection to UTRAN (3G) uses priorities and thresholds from SIB6; reselection to GERAN (2G) uses SIB7. Because 2G/3G do not report RSRP, the measured quantity differs — UTRAN FDD uses CPICH RSCP and Ec/No, GERAN uses GSM carrier RSSI — but the comparison logic is identical: higher-priority target needs to clear threshX-High; lower-priority target needs the serving E-UTRA cell below threshServing-Low and the target above threshX-Low. In later releases the same pattern extends to reselection toward NR via SIB24, letting an idle LTE UE drift onto a 5G cell.
| Candidate type | Decided by | Parameter source |
|---|---|---|
| Intra-frequency neighbour | R-criterion (ranking): reselect if Rn > Rs for Treselection | SIB3 / SIB4 |
| Inter-frequency, equal priority | R-criterion, with q-OffsetFreq in Qoffset | SIB5 |
| Inter-frequency, higher priority | Priority: Srxlev(target) > threshX-High | SIB5 |
| Inter-frequency, lower priority | Priority: serving < threshServing-Low AND target > threshX-Low | SIB5 |
| Inter-RAT UTRAN (3G) | Priority (RSCP/EcNo based) | SIB6 |
| Inter-RAT GERAN (2G) | Priority (RSSI based) | SIB7 |
| Candidate fails S-criterion | Never reselected, whatever its rank or priority | — |
Measurement Rules & Speed-State Scaling
Measuring neighbours costs battery, so the UE only powers up its receiver for reselection measurements when it is worth it. Two search thresholds decide this, both compared against the serving cell.
| Threshold | Applies to | Rule |
|---|---|---|
Sintrasearch (s-IntraSearchP/s-IntraSearchQ) | Intra-frequency neighbours | If serving Srxlev > Sintrasearch (and Squal > the Q variant), the UE may skip intra-frequency measurements. Below it, it must measure same-frequency neighbours. |
SnonIntraSearch (s-NonIntraSearchP/s-NonIntraSearchQ) | Equal/lower-priority inter-frequency & inter-RAT | If serving Srxlev > SnonIntraSearch, the UE need not measure equal- or lower-priority layers. Below it, it must. |
| (none — always measure) | Higher-priority layers (E-UTRA and inter-RAT) | A UE always measures higher-priority layers, regardless of how strong the serving cell is — the operator's preferred layer is never ignored. |
If either threshold is absent from the SIB, the UE treats it as "always measure" for that category. The logic is intuitive: while your serving cell is strong there is little point scanning equal-or-lower layers, but a higher-priority layer is always worth a look because the operator would rather have you there.
The second refinement is speed-dependent (mobility-state) scaling. A fast-moving UE crosses cells quickly and should reselect more eagerly so it does not lag behind coverage. The UE estimates its own mobility state by counting how many reselections it has performed inside a sliding window t-Evaluation: crossing n-CellChangeMedium puts it in Medium-mobility state, crossing n-CellChangeHigh puts it in High-mobility state, and if it falls quiet for t-HystNormal it returns to Normal. This estimate needs no GPS and no network help — it is inferred purely from reselection history.
In Medium- and High-mobility states the UE applies the broadcast scaling factors from SpeedStateScaleFactors. Treselection is multiplied by sf-Medium or sf-High (values from 0.25 to 1.0), shortening the commitment timer so a fast UE reselects sooner. And Qhyst is adjusted by sf-Medium/sf-High from q-HystSF, typically reducing the hysteresis so the sticky bonus that keeps a stationary UE glued to its serving cell is relaxed for a mover. Net effect: the faster you go, the lower the barrier to reselection and the shorter the wait — while a stationary UE enjoys full hysteresis and a full timer for maximum stability.
Mental model: search thresholds decide whether to measure, priorities decide which layer to prefer, the S-criterion decides if a cell qualifies at all, the R-criterion breaks ties within a layer, and Treselection decides when the move actually commits. Speed scaling simply shrinks the timer and hysteresis when the UE is moving fast.
Reading reselection in the logs
Idle-mode traces expose the whole decision: the serving-cell measurement, the search-threshold comparison that gated measuring, the ranked candidate, and the timer that committed the move. Reading them in that order tells you which stage stalled.
Representative log — illustrative, values vary by vendor/build:
| Field | Meaning | Example | Check |
|---|---|---|---|
Srxlev(serving) | Serving suitability level = RSRP − (q-RxLevMin + Pcompensation). | 8 dB | Must be > 0 for the serving cell to stay suitable; near 0 means imminent out-of-service. |
Sintrasearch / SnonIntraSearch | Search thresholds gating whether neighbours are measured. | 6 / 4 | If serving Srxlev is above these the UE skips measuring; confirm that matches the "measure/skip" decision logged. |
Qhyst | Serving-cell hysteresis bonus added to Rs. | 4 dB | Neighbour must beat serving by more than this; too small = ping-pong, too large = sticky. |
Treselection | How long the candidate must stay best before committing. | 1 s | Compare to how long Rn > Rs actually held; scaled by sf-Medium/High at speed. |
| Rs / Rn | Computed ranks of serving and neighbour. | -100 / -96 | Rn > Rs is the reselect condition; verify the arithmetic against Qhyst/Qoffset. |
mobilityState | NORMAL / MEDIUM / HIGH from reselection counting. | NORMAL | MEDIUM/HIGH shrinks Treselection/Qhyst; a mis-estimated state changes reselection speed. |
✅ Debugging steps
- Confirm the search-threshold decision: is serving
Srxlevabove or belowSintrasearch/SnonIntraSearch, and did the UE measure the categories it should have? - Check the UE's estimated
mobilityStateagainst how fast it is actually moving — count reselections int-Evaluationvsn-CellChangeMedium/n-CellChangeHigh. - Verify the applied
TreselectionandQhystafter anysf-Medium/sf-Highscaling, not just the broadcast values. - For higher-priority layers, confirm the UE is measuring them regardless of serving strength.
⚠ Common causes of failure
- Search thresholds set so the UE never measures neighbours until the serving cell is nearly dead, causing late reselection or radio-link loss in idle.
- Mobility-state estimator stuck in NORMAL for a fast UE (window/counters mis-tuned), so no speed scaling applies and reselection lags.
- Missing
SpeedStateScaleFactorsin the SIB, so a fast UE runs full-length timers. - Higher-priority layer measurement suppressed by a config error, so the UE never climbs to the preferred band.
| Parameter | Where broadcast | Role |
|---|---|---|
q-RxLevMin, q-QualMin | SIB1/SIB3 | Minimum required RSRP / RSRQ for suitability (S-criterion). |
Qhyst | SIB3 | Serving-cell hysteresis bonus in ranking (Rs). |
q-OffsetCell, q-OffsetFreq | SIB4/SIB5 | Per-cell and per-frequency neighbour offsets folded into Qoffset. |
Treselection (t-ReselectionEUTRA, …) | SIB3/SIB5/SIB6/SIB7 | How long a candidate must stay best before reselection commits. |
cellReselectionPriority | SIB3–SIB7 or dedicated | Absolute priority of each frequency layer (0–7). |
threshX-High, threshX-Low | SIB5–SIB7 | Target thresholds for going up / down in priority. |
threshServing-Low | SIB3 | Serving threshold that must be crossed to descend to a lower layer. |
Sintrasearch, SnonIntraSearch | SIB3 | Serving-cell thresholds gating whether to measure neighbours. |
sf-Medium, sf-High | SIB3 | Speed-state scaling of Treselection and Qhyst. |
LTE ↔ NR: the reselection algorithm is essentially identical in NR — same S-criterion, same R-criterion ranking, same absolute-priority ladder, same Treselection commitment. The differences are in the plumbing. NR broadcasts the parameters in SIB2 (common reselection + serving/intra-frequency) and SIB3/SIB4 (intra- and inter-frequency neighbour lists), not the LTE SIB3–SIB7 layout. The measured quantities gain SS-RSRP/SS-RSRQ/SS-SINR derived from SSB beams (with beam consolidation via nrofSS-BlocksToAverage and absThreshSS-BlocksConsolidation), rather than a single cell-wide RSRP. And NR adds RRC_INACTIVE, where the UE reselects exactly as in idle but stays within a RAN Notification Area and can be RAN-paged — a state LTE does not have.
Summary
Cell reselection is the UE's own idle-mode mobility engine: no network command, just a measure-rank-wait-hop loop tuned entirely by broadcast parameters. Run it as a pipeline and each stall points at a distinct cause. First the search thresholds (Sintrasearch, SnonIntraSearch) decide whether the UE even measures neighbours — a UE that never measures until the serving cell is nearly dead is misconfigured here. Then the S-criterion gates suitability: a cell that fails Srxlev/Squal is never reselected no matter how it ranks. Then the choice mechanism — R-criterion ranking for intra-frequency and equal-priority layers, absolute priorities (threshX-High/threshServing-Low/threshX-Low) between layers of different priority.
Finally Treselection is the commitment timer — the candidate must stay best for the whole window (and >1 s must have passed since camping) before the UE moves — and speed-state scaling shrinks that timer and Qhyst for a fast UE. When reselection misbehaves, ask which stage it is in: not measuring (thresholds), measuring but nothing qualifies (S-criterion / priorities), or qualifying but never committing (Treselection / Qhyst / offsets). Naming the stage almost always names the parameter.
Interview Quickfire
Q. What is the difference between cell selection and cell reselection?
A. Selection is the one-time procedure of finding a suitable cell to camp on (power-on, out-of-coverage return, or leaving connected mode), in either an initial or stored-information form. Reselection is the continuous idle-mode process of moving to a better cell while already camped, driven by the S-criterion plus R-criterion ranking and absolute-priority rules read from the SIBs.
Q. What must be true for a UE to actually reselect to a higher-ranked neighbour?
A. Three things at once: Rn > Rs (the neighbour beats the serving cell including Qhyst); this stays true for the whole Treselection timer; and more than 1 second has passed since the UE last camped on the serving cell. The candidate must also be suitable (pass the S-criterion).
Q. Why is climbing to a higher-priority frequency easier than dropping to a lower one?
A. For a higher-priority layer the UE reselects as soon as the target's Srxlev exceeds threshX-High — the serving cell's condition is irrelevant because the operator wants the UE on the preferred layer. For a lower-priority layer the UE must also see its serving cell fall below threshServing-Low, so it only descends when the current layer is genuinely weak.
Q. What are Sintrasearch and SnonIntraSearch for?
A. They are serving-cell thresholds that gate measurement. If serving Srxlev is above Sintrasearch the UE may skip intra-frequency measurements; if it is above SnonIntraSearch it may skip equal- and lower-priority inter-frequency and inter-RAT measurements. Higher-priority layers are always measured regardless.
Q. How does the UE know it is moving fast, and what changes when it does?
A. It counts reselections within t-Evaluation; crossing n-CellChangeMedium/n-CellChangeHigh puts it in Medium/High mobility state. In those states it multiplies Treselection by sf-Medium/sf-High and adjusts Qhyst, generally shortening the timer and shrinking the hysteresis so a fast UE reselects sooner.
Q. What role does Qoffset play, and where does it come from?
A. Qoffset biases a neighbour's rank Rn. For intra-frequency it is the cell offset q-OffsetCell; for equal-priority inter-frequency it adds the frequency offset q-OffsetFreq. A positive value discourages reselection to that neighbour (protecting a congested cell); a negative value encourages it (pulling traffic onto a preferred cell).
Where cell reselection connects
Reselection assumes the UE can already find and measure cells, knows which RRC state it is in, and stays reachable while camped — the pieces on either side of this procedure.