@@ -3239,29 +3239,6 @@ static inline void isr_rx_conn(u8_t crc_ok, u8_t trx_done,
32393239 u8_t chg = 0 ;
32403240#endif /* CONFIG_BT_CTLR_PROFILE_ISR */
32413241
3242- #if defined(CONFIG_BT_CTLR_CONN_RSSI )
3243- /* Collect RSSI for connection */
3244- if (_radio .packet_counter == 0 ) {
3245- if (rssi_ready ) {
3246- u8_t rssi = radio_rssi_get ();
3247-
3248- _radio .conn_curr -> rssi_latest = rssi ;
3249-
3250- if (((_radio .conn_curr -> rssi_reported - rssi ) & 0xFF ) >
3251- RADIO_RSSI_THRESHOLD ) {
3252- if (_radio .conn_curr -> rssi_sample_count ) {
3253- _radio .conn_curr -> rssi_sample_count -- ;
3254- }
3255- } else {
3256- _radio .conn_curr -> rssi_sample_count =
3257- RADIO_RSSI_SAMPLE_COUNT ;
3258- }
3259- }
3260- }
3261- #else /* !CONFIG_BT_CTLR_CONN_RSSI */
3262- ARG_UNUSED (rssi_ready );
3263- #endif /* !CONFIG_BT_CTLR_CONN_RSSI */
3264-
32653242 /* Increment packet counter for this connection event */
32663243 _radio .packet_counter ++ ;
32673244
@@ -3386,6 +3363,13 @@ static inline void isr_rx_conn(u8_t crc_ok, u8_t trx_done,
33863363
33873364#endif /* CONFIG_BT_CTLR_PROFILE_ISR */
33883365
3366+ /* NOTE: Check for connection termination and skip accessing connection
3367+ * context.
3368+ */
3369+ if (!_radio .conn_curr ) {
3370+ goto isr_rx_conn_terminate_exit ;
3371+ }
3372+
33893373 /* release tx node and generate event for num complete */
33903374 if (tx_release ) {
33913375 pdu_node_tx_release (_radio .conn_curr -> handle , tx_release );
@@ -3401,6 +3385,29 @@ static inline void isr_rx_conn(u8_t crc_ok, u8_t trx_done,
34013385 packet_rx_enqueue ();
34023386 }
34033387
3388+ #if defined(CONFIG_BT_CTLR_CONN_RSSI )
3389+ /* Collect RSSI for connection */
3390+ if (rssi_ready ) {
3391+ u8_t rssi = radio_rssi_get ();
3392+
3393+ _radio .conn_curr -> rssi_latest = rssi ;
3394+
3395+ if (((_radio .conn_curr -> rssi_reported - rssi ) & 0xFF ) >
3396+ RADIO_RSSI_THRESHOLD ) {
3397+ if (_radio .conn_curr -> rssi_sample_count ) {
3398+ _radio .conn_curr -> rssi_sample_count -- ;
3399+ }
3400+ } else {
3401+ _radio .conn_curr -> rssi_sample_count =
3402+ RADIO_RSSI_SAMPLE_COUNT ;
3403+ }
3404+ }
3405+ #else /* !CONFIG_BT_CTLR_CONN_RSSI */
3406+ ARG_UNUSED (rssi_ready );
3407+ #endif /* !CONFIG_BT_CTLR_CONN_RSSI */
3408+
3409+ isr_rx_conn_terminate_exit :
3410+
34043411#if defined(CONFIG_BT_CTLR_PROFILE_ISR )
34053412 /* calculate the elapsed time in us since on-air radio packet end
34063413 * to ISR entry
0 commit comments