summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilenko Jelisavcic2013-06-05 10:00:21 +0200
committerMilenko Jelisavcic2013-06-12 10:33:17 +0200
commit59c5a9475c1d3b76f50852fa7afe394a4c173a8f (patch)
treec154325b3e6997e4ec67333d6683a81bc72b525b
parent4bd5d78853f491a71d46044f907b613decead826 (diff)
cesar/mac/pbproc: update backoff, closes #4037
-rw-r--r--cesar/mac/pbproc/src/fsm_tx_rts_cts.c5
-rw-r--r--cesar/mac/pbproc/test/pbproc/src/tx_rts_cts.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/cesar/mac/pbproc/src/fsm_tx_rts_cts.c b/cesar/mac/pbproc/src/fsm_tx_rts_cts.c
index 28ab054df2..36918d711a 100644
--- a/cesar/mac/pbproc/src/fsm_tx_rts_cts.c
+++ b/cesar/mac/pbproc/src/fsm_tx_rts_cts.c
@@ -48,7 +48,8 @@ pbproc_ftrc__handle (pbproc_t *ctx)
phy_tx_fc10 (ctx->phy, ctx->prep_mpdu.rts_tx_date,
ctx->prep_mpdu.fc10);
phy_tx_param_short (ctx->phy, ctx->prep_mpdu.fc_mode);
- phy_tx_frame (ctx->phy, ctx->prep_mpdu.rts_tx_date, true, true,
+ bool prp = ctx->access.prp;
+ phy_tx_frame (ctx->phy, ctx->prep_mpdu.rts_tx_date, true, prp,
ctx->prep_mpdu.rts_fc_av.words);
ca_access_vcs_restart_eifs (ctx->ca, ctx->prep_mpdu.rts_tx_date);
pbproc_fsm_change_state (ctx, PBPROC_FSM_STATE_TX_RTS_CTS_WAIT_ACCESS_CONF);
@@ -79,6 +80,8 @@ void ARCH_ILRAM_PRIO (2)
pbproc_ftrc__tx_rts_cts_wait_access_conf__access_conf (pbproc_t *ctx)
{
dbg_claim (ctx);
+ ca_backoff_deferred (ctx->ca,
+ phy_access_backoff_slot_count (ctx->phy) - 2);
phy_rx_activate (ctx->phy, false,
ctx->prep_mpdu.rts_tx_date + ctx->times.rts_rcg_tck, true);
pbproc_fsm_change_state (ctx, PBPROC_FSM_STATE_TX_RTS_CTS_WAIT_CTS);
diff --git a/cesar/mac/pbproc/test/pbproc/src/tx_rts_cts.c b/cesar/mac/pbproc/test/pbproc/src/tx_rts_cts.c
index e49093e989..1fead5451a 100644
--- a/cesar/mac/pbproc/test/pbproc/src/tx_rts_cts.c
+++ b/cesar/mac/pbproc/test/pbproc/src/tx_rts_cts.c
@@ -126,6 +126,7 @@ tx_rts_cts_test (test_t t, test_pbproc_t *tp, u32 date, uint mfs_seg_nb,
.stop_tx_on_prp_lost = true),
SCENARIO_EVENT (ca_access_vcs_restart_eifs, .start_date = date),
SCENARIO_ACTION (phy_access_conf),
+ SCENARIO_EVENT (ca_backoff_deferred, .slot_count = 0),
SCENARIO_EVENT (phy_rx_activate, .now = false,
.date = date + rts_cts_rcg_tck,
.pre_detection = true),
@@ -178,6 +179,8 @@ tx_rts_cts_test (test_t t, test_pbproc_t *tp, u32 date, uint mfs_seg_nb,
.stop_tx_on_prp_lost = true),
SCENARIO_EVENT (ca_access_vcs_restart_eifs, .start_date = date),
SCENARIO_ACTION_COND (!access_conf_fail, phy_access_conf),
+ SCENARIO_EVENT_COND (!access_conf_fail, ca_backoff_deferred,
+ .slot_count = 0),
SCENARIO_EVENT_COND (!access_conf_fail, phy_rx_activate, .now = false,
.date = date + rts_cts_rcg_tck,
.pre_detection = true),