aboutsummaryrefslogtreecommitdiffstats
path: root/tests/handover/handover_test.c
AgeCommit message (Collapse)AuthorFilesLines
2021-07-12handover_test: fix ts_str may be uninitializedosmith/build-fixOliver Smith1-2/+2
Fix for: handover_test.c: In function 'res_ind': handover_test.c:1094:30: error: 'ts_str' may be used uninitialized in this function [-Werror=maybe-uninitialized] char subslot_val = ts_str[lchan->nr]; Fixes: f76424 ("RES IND: add test_resource_indication.ho_vty") Change-Id: I398ba24b945bad96896eeb5ddbaff9c48bacf8ab
2021-07-11RES IND: add test_resource_indication.ho_vtyNeels Hofmeyr1-0/+88
Show that osmo-bsc does not yet take Resource Indication's reported interference levels into account. (An upcoming patch will change that.) This test is not actually doing any handover, but it is using the handover/*.ho_vty scripting that was intended for handover testing. (Like test_dyn_ts_favor_half_used_tch_h_as_target.ho_vty does.) Related: SYS#5313 Change-Id: I56ec61196a1e103f0b4caf18d25d8222bb82cf87
2021-07-06Rename osmo dyn ts enums to contain SDCCH8Pau Espin Pedrol1-6/+6
They will gain support to be activated as SDCCH/8 soon too. Related: OS#5309 Depends: libosmocore.git I56dcfe4d17899630b17f80145c3ced72f1e91e68 Change-Id: Id5b89fe589a52ff88486435ac43809edb4b80f98
2021-06-10RSL: rx and tx VAMOS Channel Number cbits for VAMOS lchansNeels Hofmeyr1-6/+6
Add the Osmocom-specific extension to indicate VAMOS shadow lchans in RSL, in lchan lookup and RSL message transmission. Note that RR messages containing cbits (Assignment Command, Handover Command, ...) must *not* send Osmocom specific cbits to the MS. Only the RSL messages directed to the BTS send Osmocom specific bits. Related: SYS#5315 OS#4940 Depends: If33c1695922d110c0d2c60d5c0136caf2587194e (libosmocore) Change-Id: I957eff0d2c33ec795eda75a4bff21965b0179f73
2021-06-10RSL chan_nr: replace OSMO_ASSERT with error handlingNeels Hofmeyr1-1/+2
It's bad to abort the program for an incompatible chan_nr. Instead of OSMO_ASSERT(), make sure that error handling happens all they way to the original callers of gsm_lchan2chan_nr etc. This is also preparation to add further error causes: Osmocom specific cbits needed for a non-Osmo BTS. Related: SYS#5315 OS#4940 Change-Id: I71ed6437c403a3f9336e17a94b4948fca295d853
2021-05-31replace ts_*_for_each_lchan() with ts_for_n_lchans()Neels Hofmeyr1-1/+2
So far we have a couple of macros iterating a specific number of lchans, depending on dynamic timeslot state etc. With addition of VAMOS lchans, this would become more complex and bloated. Instead of separate iteration macros for each situation, only have one that takes a number of lchans as argument. That allows to more clearly pick the number of lchans, especially for non-trivial VAMOS scenarios. Related: SYS#5315 OS#4940 Change-Id: Ib2c6baf73a81ba371143ba5adc912aef6f79238d
2021-05-31add fields to reflect nr of lchans in ts structNeels Hofmeyr1-4/+4
So far the number of usable lchans is determined on-the-fly by the physical channel config. With VAMOS, this becomes more complex, namely determining whether the BTS is vamos capable. Instead of calling a function to determine the number of lchans for every use, rather place the number of valid lchans in int members of the timeslot struct, and initialize those during timeslot setup. Actual use of these new fields will follow in a subsequent patch, which introduces the ts_for_n_lchans() macro to replace current lchan iteration macros. Related: SYS#5315 OS#4940 Change-Id: I08027d79db71a23e874b729c4e6173b0f269ee4f
2021-05-28RSL link: explicitly select rsl_link based on lchanNeels Hofmeyr1-7/+7
Prepare for VAMOS, where there will be secondary "shadow" lchans serving secondary MS on the same timeslots. For those, RSL messages will need to reflect a different stream ID aka TEI, via an rsl_link_vamos. Make sure that every code path that sends an RSL message for a specific lchan selects the RSL link via the new function rsl_chan_link(). When VAMOS is implemented, this function can select the proper RSL stream. Rename gsm_bts_trx.rsl_link to rsl_link_primary. This makes sure I'm not missing any uses of the RSL link, and clarifies the code. Related: SYS#5315 OS#4940 Change-Id: Ifbf16bb296e91f151d19e15e39f5c953ad77ff17
2021-05-28hodec 2: do intra-cell congestion resolution by AssignmentNeels Hofmeyr1-8/+127
So far we do all channel reassignments by Handover Command. Since osmo-bsc now supports rassignment of ongoing voice calls, do intra-cell congestion resolution by Assignment Command. In effect, add support for expecting an Assignment Command in handover_test, and expect assignments instead of handovers for intra-cell congestion resolution test cases. Related: SYS#5330 OS#3277 Change-Id: Id56a890106b93fcee67ac9401b890e7b63bba421
2021-05-27handover_test: fix naming/wording: 'handover-req' should be 'handover-cmd'Neels Hofmeyr1-26/+26
Related: SYS#5315 OS#4940 OS#3277 Change-Id: I0c20971590e4b1a19f77ff3f15d58992eeebfbd9
2021-05-27make sure channel mode and s15_s0 are updated only after an ACKNeels Hofmeyr1-5/+5
I noticed during testing that an lchan used as TCH/F in fact still had its channel mode set to Signalling -- because on Assignment, the Speech mode used to be placed in the *previous* lchan and the new lchan was never updated after the Activ ACK. This is unbearable confusion which I complained about numerous times, so far mostly for cosmetic reasons. But implementing re-assignment properly actually requires this to be cleaned up. Keep all volatile chan mode settings in lchan->activate.* or lchan->modify.*, and only update lchan->* members when an ACK has been received for those settings. So a failed request keeps a sane state. Make sure that those settings are in fact updated in the proper lchan, upon an ACK, so that subsequent re-assignment or mode-modify know the accurate lchan state. Related are upcoming patches that sort out the AMR multirate configuration in a similar fashion, see Iebac2dc26412d877e5364f90d6f2ed7a7952351e Ia7519d2fa9e7f0b61b222d27d077bde4660c40b9 Ie57f9d0e3912632903d9740291225bfd1634ed47. Related: SYS#5315 OS#4940 OS#3787 OS#3833 Change-Id: Ie0da36124d73efc28a8809b63d7c96e2167fc412
2021-05-27handover_test: add bspower to meas-rep cmdNeels Hofmeyr1-7/+28
Subsequent patch will add a test that uses this to show a handover oscillation problem in the presence of nonzero BS Power. Related: SYS#5339 Change-Id: I158d4b27370ab19318f83018803853f423c89b79
2021-05-21handover_test: ack release only when lchan is still waitingNeels Hofmeyr1-6/+8
Change-Id: I4c7596df06d7c211adcfcd110a1984903a0820e1
2021-04-27Lb: stop RESET FSM when sccp_user is unboundNeels Hofmeyr1-0/+1
A crash was reported in bssmap_le_tx_reset() sending a RESET with sccp_user == NULL. Looking at the issue I noticed that when the sccp_user is torn down, the RESET FSM should also be terminated. Add bssmap_reset_term_and_free() to the generic RESET FSM implementation and call from lb_stop() before sccp_user is set to NULL. Related: OS#5134 Change-Id: If412ef990fcdde8ff88098a5169e86f05cd1c7f0
2021-04-19Send EUTRAN neighs based on whether Common Id msg contained Last used ↵Pau Espin Pedrol1-1/+1
E-UTRAN PLMN ID From 3GPP TS 48.008 sec 3.1.30 "Common ID": """ If the SCCP connection is established due to CSFB from E-UTRAN and the MSC supports return to the last used PLMN after CS fallback, then it should send the COMMON ID message to the BSS including the Last used E-UTRAN PLMN ID information element if available at the MSC immediately following the successful SCCP connection setup. """ Furthermore, 3GPP TS 48.008 version 16.0.0 Release 16 "3.2.1.21 CLEAR COMMAND", for field CSFB Indication, states: """ NOTE: This information element doesn't serve any useful purpose. MSCs should not send the information element unless it is required by the recipients (due to the need to interwork with older versions of the protocol). It is expected that in future versions of the present document, this information element will be deleted from this message. """ Hence, build up the EUTRAN neighbor list based on whether we received the Last E-UTRAN PLMN ID IE during Common Id. In the future, we should probably filter the list while populating it based on the received IE. This change will also allow reusing same mechanism for SRVCC EUTRAN->GERAN support, where te Last E-UTRAN PLMN ID IE can be found inside "Old BSS to New BSS information" IE in msg HANDOVER REQUEST. Related: SYS#5337 Change-Id: I5d290ac55eca5adde1c33396422f4c10b83c03d5
2021-03-24refactor handover penalty timersNeels Hofmeyr1-0/+2
So far the list of penalty timers was stored for an opaque target pointer. That was either a gsm_bts pointer for a local BTS, or a cell identifier list pointer for a remote-BSS cell. Reasons to refactor penalty timers: - The cell identifier list pointer came from the neighbor configuration storage, but the way cell neighbor config is stored will change in a subsequent patch. There will be no more cell identifier lists there. - Storing object pointers is inherently unsafe -- if an object gets removed and another gets allocated, the penalty timer could theoretically remain in force for an unrelated object. Rather store penalty timers for specific Cell IDs. Since remote-BSS neighbors can be requested by a cell identifier *list*, use a gsm0808_cell_id_list2 as key in the list of penalty timers. Fix handover_test.c: have different CI for each local BTS. So far it was the same LAC+CI for all BTSes, which now would make the test fail, because any penalty timer would appear to apply to all local cells. Related: OS#5018 Change-Id: I72dd6226a6d69c3f653a3174c6f55bf4eecc6885
2021-01-12handover_test: add lchan wildcards to meas-rep cmdNeels Hofmeyr1-7/+67
With 'set-ts-use', it is convenient to build a scenario of lchan usage, but still inconvenient to send measurement reports to all lchans. I need this for testing congestion-check, because each lchan needs to have at least one measurement report, or congestion check is skipped. Example: set-ts-use trx 0 0 states * TCH/F TCH/F - - TCH/HH TCH/HH TCH/H- meas-rep lchan * * * * rxlev 10 rxqual 0 ta 0 This patch adds the '*' for the lchan arguments, usually being bts idx, trx idx, timeslot idx and subslot idx. Use lchan wildcards at the appropriate places to shorten some tests. Change-Id: I441f92348508d45e1069a3dfa1ff3842dbba97d6
2021-01-11handover_test: vty echoNeels Hofmeyr1-0/+22
Echo each handover_test command on the test output, to help with understanding the exact point of a test failure. Even nicer would be a general echo of all VTY commands, but the VTY currently does not support that feature. Refraining from a libosmocore patch just for these test scripts... Change-Id: Ifc307a7d0b7e3caa355f8cee88778762b529ad71
2021-01-11handover_test: saner ho request handlingNeels Hofmeyr1-50/+27
Similar to chan act handling, clarify and safeguard HO Request handling. Ensure that each HO Request is handled by the test script. Place unhandled HO Requests in new_ho_req pointer, moving to last_ho_req upon handling it. Instead of the got_ho_req flag and additional ho_req_lchan pointer, just keep a last_ho_req pointer. Drop a bunch of utterly useless RSL message parsing code. Fix unhandled HO Request in test_max_handovers.ho_vty. Change-Id: I0a664f24d7dd3d7b254b29675fdc49cd70a1a480
2021-01-11handover_test: saner chan act handlingNeels Hofmeyr1-46/+27
Do not clear pending chan act requests when sending a measurement report or starting congestion check. This potentially left channel activations unnoticed and dangling, e.g. for repeated meas-rep. A typical test should indeed handle pending channel activation requests before potentially triggering more, safeguard against this by asserting that only one channel activation is pending. Place unhandled channel activations in new_chan_req pointer, moving to last_chan_req upon handling it. Instead of the got_chan_req flag and additional chan_req_lchan pointer, just keep a last_chan_req pointer. Change-Id: If06587058798d96afca86358030dc0c1c3c6df39
2021-01-11handover_test: safeguard against unhandled chan reqNeels Hofmeyr1-1/+7
Change-Id: Ib0d5c4647af23e6729cc19e98b1870cdde2fe994
2021-01-11handover_test: include ack-chan in expect-chanNeels Hofmeyr1-16/+0
Change-Id: Ic9f1e94b12334fed6bdce35beef94d8e2968f3ad
2021-01-05handover_test: add 'meas-rep repeat N'Neels Hofmeyr1-16/+40
Some tests want to repeat the same measurement report, typically 10 times to fill the averaging window. Instead of 10 lines saying 'meas-rep ...', allow 'meas-rep repeat 10 ...'. Change-Id: Ib2fa81a449fb73ec7c458b0e6877d6561c79a846
2021-01-05handover_test.c: properly release lchans in set-ts-useNeels Hofmeyr1-10/+11
An upcoming test that uses set-ts-use to release used lchans uncovered an incomplete release, keeping the lchans occupied due to a missing release ack. Always ack the release. Change-Id: Ia22906bfbfcc48b7bd08473a2b17f6b0554687d3
2020-12-23handover_test: set a fake osmo_mgcpc_ep_ci pointerNeels Hofmeyr1-0/+10
The handover_fsm activates voice on a target lchan only when the source lchan has an osmo_mgcpc_ep_ci pointer for the BTS side. Since that struct is opaque, set a fake pointer and override the osmo_mgcpc_ep_ci_name() function so that the pointer is never dereferenced. This more accurately models the RTP stream setup events during handover. Change-Id: Ibc22001bf9e9874dd3f44f0acac8b6a4c1069aa7
2020-12-23handover_test: adjust logging for reproducabilityNeels Hofmeyr1-1/+3
Do not show source file and line numbers in the log, so that the log output remains unchanged for unrelated changes. Also show the log level. Change-Id: I8ebcaf16cd14881a3a41616dcff175e173db9ae8
2020-12-23handover_test: send ho detectionNeels Hofmeyr1-4/+44
So far we skipped the HO Detection message, because the FSM also accepts a handover when the Handover Complete arrives without a Detection. Rather model the real behavior. Also send the EST IND message and RTP-ready events from the ho detection. Change-Id: Ib676e74f23ef9cd1b55262117822b0e110013bdc
2020-12-23handover_test: log sending ho completeNeels Hofmeyr1-0/+5
Change-Id: I540e880f9aafb92be03c35086340de1968b26836
2020-12-23handover_test: implement as VTY shellNeels Hofmeyr1-1519/+485
Drop the string arrays, and move the 32 handover tests to separate script files. Instead of the peculiar implementation and instead of cryptic commands, implement the handover test scripts as a VTY. handover_test.c now sets up a VTY with handover testing VTY commands. It also features the complete and unabridged VTY configuration nodes of osmo-bsc itself. That allows dropping various ho script commands. Before: static char *test_case_14[] = { "Handover to congested cell, if RX level is below minimum\n\n" "The better neighbor cell is congested, so no handover is performed.\n" "If the RX level of the current cell drops below minimum acceptable\n" "level, the handover is performed.\n", "create-n-bts", "2", "create-ms", "0", "TCH/F", "AMR", "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-", "set-min-free", "1", "TCH/F", "4", "set-min-free", "1", "TCH/H", "4", "meas-rep", "0","0","1","0", "10","0", "1","0","30", "expect-no-chan", "meas-rep", "0","0","1","0", "9","0", "1","0","30", "expect-chan", "1", "1", "ack-chan", "expect-ho", "0", "1", "ho-complete", "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-", "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-", } After: # Handover to congested cell, if RX level is below minimum # The better neighbor cell is congested, so no handover is performed. # If the RX level of the current cell drops below minimum acceptable # level, the handover is performed. create-n-bts 2 set-ts-use trx 0 0 states * TCH/F - - - - - - network bts 1 handover2 min-free-slots tch/f 4 handover2 min-free-slots tch/h 4 meas-rep lchan 0 0 1 0 rxlev 10 rxqual 0 ta 0 neighbors 30 expect-no-chan meas-rep lchan 0 0 1 0 rxlev 9 rxqual 0 ta 0 neighbors 30 expect-ho from lchan 0 0 1 0 to lchan 1 0 1 0 expect-ts-use trx 0 0 states * - - - - - - - expect-ts-use trx 1 0 states * TCH/F - - - - - - Note how osmo-bsc's stock vty config nodes seamlessly integrate in the test steps: just enter a configuration node, modify some values, and indenting trivially takes care of exiting nodes correctly. Running a test manually: ./handover_test test_0123.ho_vty Instead of calling each test separately in testsuite.at, have a handover_tests.sh script that picks up new tests just by presence of files named test*.ho_vty. Rationale: It was considered to move handover tests to the TTCN suite, but there is an advantage in having these C tests: they run super fast and catch bugs even in the gerrit verification job, potentially saving a lot of time. It is a reality that I need more of these tests, for dynamic timeslots and TCH/F <-> TCH/H switches. The way the handover tests are written, as arrays of strings containing cryptic fixed-argument script commands, has been a pain to work with from the start, and now I am no longer willing to endure that pain. Change-Id: Ie238ebe41039d3fa44c9699937589e000883e052
2020-12-09hodec 2: prefer moving TCH/H from half-used dyn TSNeels Hofmeyr1-3/+2
Change-Id: I427dc9faa3790c24119127ae227d8cc802dd50e6
2020-11-18handover_test: add test 32: half used TCH/H on dyn TSNeels Hofmeyr1-0/+24
Shows undesired behavior of moving a TCH/H from a fully used dyn TS leading to two half-used dyn TS, rather than moving the half-used dyn TS that would lead to completely freeing a dyn TS. Change-Id: I3beaa95d12ca0a19d4d1a732f3e22558e68ee29c
2020-11-18handover test 30: play through filling up all lchansNeels Hofmeyr1-0/+44
Change-Id: I938ef9ebf77a4e72fc525f4f764daf34f17167ef
2020-11-18hodec 2: favor moving dyn TSNeels Hofmeyr1-5/+4
When a used timeslot gets moved to another timeslot for load balancing, prefer moving a dynamic timeslot, as illustrated by handover_test.c test 30. Rationale: freeing up a dynamic timeslot is better for PDCH availability, as well as for flexibility in timeslots. Test 30 shows that when freeing a static TCH/F even though a dynamic one with identical ratings is in use, later handovers to a TCH/H may become impossible, because no more dynamic timeslots are available to switch to TCH/H. A freed dynamic timeslot allows congestion resolution to continue and reduce more TCH/F to TCH/H. The scope of this preference is per-TRX, where the RXLEV ratings used for picking a target lchan are the same by definition. In other words, this never overrules picking another lchan that has better RXLEV. Among lchans on dynamic timeslots that could be moved, this code favors moving later lchans; mainly because it makes for a simpler condition in the code. Change-Id: Ic221b8d2687cdec0bf94410c84a4da43853f0900
2020-11-17fix TCH/H allocation: use half occupied dyn TS instead of switching more dyn TSNeels Hofmeyr1-2/+1
Change-Id: I5a8d943f31774af00664d037550be14e767d312a
2020-11-17handover_test: add test 31: TCH/H: re-use dyn TSNeels Hofmeyr1-0/+13
Show undesired behavior of opening up another TCH/H timeslot even though another TCH/H timeslot still has room for a second lchan. This is particularly bad for dynamic timeslots, reducing PDCH as well as TCH/F resources. Change-Id: If222835af92d832b848824e5466bdcaf9af8a614
2020-11-17handover test: add test 30: de-congest TCH/F by moving to dyn TS TCH/HNeels Hofmeyr1-0/+40
In the test, show the undesired behavior of moving non-dynamic timeslots first, because they are the first to be considered in the congestion resolution loop. The behavior will be fixed in Ic221b8d2687cdec0bf94410c84a4da43853f0900. Change-Id: I09ab9f2f79fa434c7279cb4d09899f69b047aa55
2020-11-17handover_test: drop secondary array of lchansNeels Hofmeyr1-31/+11
Change-Id: I7c80a16324d764969f279a5e1d6f55b0dbe9c17b
2020-11-17handover_test: change 'meas-rep' params to bts-trx-ts-ss nrNeels Hofmeyr1-98/+122
So far the 'meas-rep' expects the index of the MS in order of appearance, to send a measurement report for that MS. That may seem like a simplification for human readability, but in fact, it is confusing for a human to keep track which MS has which index, and to which timeslot it has been handovered. When reading the tests, it is much easier to read exactly which timeslot the measurement report is being sent to; which MS came first is inherently not as interesting as which lchans are currently occupied. Change-Id: I7ab2ef604196cfe96112dfefb9aa930368bf4812
2020-11-17handover_test: add 'set-ts-use'Neels Hofmeyr1-10/+118
When a test wants to use N lchans, so far it has to issue N 'create-ms' commands. Many lchan distributions cannot be easily obtained by this, because 'crate-ms' always takes the first free lchan. To shorten test setup and easily allow arbitrary lchan distributions, this command sets specific lchans to specific usage states in one line. Change-Id: I6e90679bf22609fb72e53e3d11748a4070a38159
2020-11-17handover test: add 'expect-ts-use' to clarify testsNeels Hofmeyr1-0/+187
In handover tests, it can be hard to follow which lchans are currently occupied. The expect-ts-use command is like an assertion for a specific distribution of used lchans, and helps understanding test intentions. Change-Id: I6f4b573de7faace2d6bfe4f58b568e69c74dd07d
2020-11-17handover test: fix dyn ts: set pchan_is on act / relNeels Hofmeyr1-0/+33
Before this, handover_test channel activation and release on dynamic timeslots failed to reflect the correct pchan type that osmo-bsc uses. Change-Id: I3284b4565ad2c3b124442f4373243da1518206ce
2020-11-17handover_test: allow arbitrary timeslot config and multiple TRXNeels Hofmeyr1-7/+42
Adjust 'create-bts' command so that it allows multiple TRX and arbitrary timeslot configurations. It is now possible to write tests for dynamic timeslots and multiple TRX. Change-Id: Ic645cea671aa4798804666b8886f11bab5351e11
2020-11-17handover_test cosmetic: eliminate bts array and bts_num from main()Neels Hofmeyr1-13/+17
This "global" array shadows the bsc_gsmnet state and is not needed. Look up the BTS in bsc_gsmnet like all of osmo-bsc does. Change-Id: Ieb27403b97124771e4d28b9c69bf7c36288f396d
2020-11-17handover_test prep: rename 'create-bts' to 'create-n-bts'Neels Hofmeyr1-31/+31
I will add a command to create a single BTS with arbitrary timeslot configurations. To limit amount of editing of the current tests, keep the current 'create-bts' command, which creates N identically configured BTS, but rename it to 'create-n-bts'. Thus allow the upcoming single-BTS command to take the name 'create-bts'. Change-Id: I4853771cf23b509b7f278d04c57883332ede786d
2020-11-17handover_test prep: allow configuring several trx in create_bts()Neels Hofmeyr1-24/+28
Preparation for Ic645cea671aa4798804666b8886f11bab5351e11 to allow arbitrary timeslot configurations in the tests. Change-Id: Ie0d0c85552ba24802392423b60cfa3919e87563f
2020-11-17handover_test prep: allow arbitrary timeslots in create_bts() codeNeels Hofmeyr1-13/+32
Allow passing timeslot config to create_bts(). Preparation for Ic645cea671aa4798804666b8886f11bab5351e11 to allow arbitrary timeslot configurations in the tests. Change-Id: I3ae898be4a503060c6bf30ae89115a75461ffc27
2020-11-17handover_test prep: move generate_si() into create_bts()Neels Hofmeyr1-4/+5
Preparation for Ic645cea671aa4798804666b8886f11bab5351e11 to allow arbitrary timeslot configurations in the tests. Change-Id: I8ed468da53f7b0e5ba8125d1bebafebe8c5becbb
2020-11-17handover_test prep: move arfcn into create_bts()Neels Hofmeyr1-4/+4
Preparation for Ic645cea671aa4798804666b8886f11bab5351e11 to allow arbitrary timeslot configurations in the tests. Change-Id: I6eb11e9f98c827cfcd819990db38b6848bf18b27
2020-11-17handover_test: fix commentNeels Hofmeyr1-1/+1
Change-Id: Ice7932aae8b57bedf8bfc98eb77e73ad039a7e82
2020-10-15BSSMAP RESET: move RESET-ACK into reset fsmNeels Hofmeyr1-0/+1
The Lb interface will need the same RESET-ACK logic. Change-Id: Idf4682319a0af5665e867dbc0515d1fe343d9daf