summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Schodet2010-09-02 11:10:35 +0200
committerNicolas Schodet2010-09-06 15:12:10 +0200
commit16fa149657867e7f10c2082d7de8e589e88b4914 (patch)
tree3a84e30a5f2ffa7e20ada1833e99daf33a29af4f
parentddb1a806e5c76ce76098ac5baea94a53d73f7125 (diff)
cesar/mac/pbproc: add IFS in prep_mpdu structure, refs #476
-rw-r--r--cesar/mac/pbproc/inc/prep_mpdu.h2
-rw-r--r--cesar/mac/pbproc/src/prep_mpdu.c2
-rw-r--r--cesar/mac/pbproc/test/pbproc/src/prep_mpdu.c3
3 files changed, 7 insertions, 0 deletions
diff --git a/cesar/mac/pbproc/inc/prep_mpdu.h b/cesar/mac/pbproc/inc/prep_mpdu.h
index b20ffdd038..3b4596df01 100644
--- a/cesar/mac/pbproc/inc/prep_mpdu.h
+++ b/cesar/mac/pbproc/inc/prep_mpdu.h
@@ -67,6 +67,8 @@ struct pbproc_prep_mpdu_t
pbproc_fc_t fc_av;
/** SOF frame control 1.0. */
u32 fc10;
+ /** Inter Frame Spacing (IFS). */
+ uint ifs_tck;
/** Frame length with preamble (including IFS). */
uint flp_tck;
/** Used main MFS. */
diff --git a/cesar/mac/pbproc/src/prep_mpdu.c b/cesar/mac/pbproc/src/prep_mpdu.c
index ed03fa78a6..8af14a70a9 100644
--- a/cesar/mac/pbproc/src/prep_mpdu.c
+++ b/cesar/mac/pbproc/src/prep_mpdu.c
@@ -118,6 +118,7 @@ pbproc_prep_beacon (pbproc_t *ctx)
u32 symb_nb = (1 * tm->bits_per_pb[PHY_PB_SIZE_136]
+ tm->bits_per_symbol - 1) / tm->bits_per_symbol;
u32 data_tck = MAC_PAYLOAD_TCK (symb_nb, ctx->symbol_tck[tm->gil]);
+ prep->ifs_tck = MAC_B2BIFS_TCK;
prep->flp_tck = ctx->times.pre_fcs_tck + data_tck + MAC_B2BIFS_TCK;
/* Does it fit? */
if (ctx->times.pre_fcs_tck + data_tck + MAC_B2BIFS_TCK
@@ -422,6 +423,7 @@ pbproc_prep_mpdu (pbproc_t *ctx)
data_tck = 0;
rifs_tck = MAC_RIFS_DEFAULT_TCK;
}
+ prep->ifs_tck = rifs_tck;
prep->flp_tck = times->pre_fcs_tck + data_tck + rifs_tck;
/* Early return if no symbol. */
if (max_seg_nb == 0)
diff --git a/cesar/mac/pbproc/test/pbproc/src/prep_mpdu.c b/cesar/mac/pbproc/test/pbproc/src/prep_mpdu.c
index edd833f462..72d1660d44 100644
--- a/cesar/mac/pbproc/test/pbproc/src/prep_mpdu.c
+++ b/cesar/mac/pbproc/test/pbproc/src/prep_mpdu.c
@@ -211,6 +211,7 @@ prep_mpdu_test_f (test_t t, test_pbproc_t *tp, u32 date,
test_fail_unless (prep->seg_nb_pending == 0);
test_fail_unless (prep->main_seg_nb == 0);
test_fail_unless (prep->main_seg_nb_reserved == 0);
+ test_fail_unless (prep->ifs_tck == rifs_tck);
test_fail_unless (prep->flp_tck == MAC_PREAMBLE_TCK + MAC_FC_AV_TCK
+ MAC_PAYLOAD_TCK (params->symb_nb, dx)
+ rifs_tck);
@@ -317,6 +318,7 @@ prep_mpdu_test_f (test_t t, test_pbproc_t *tp, u32 date,
test_fail_unless (prep->seg_nb_pending == seg_nb_pending);
test_fail_unless (prep->pb_nb_total == params->main_seg_nb_total +
seg_nb_pending);
+ test_fail_unless (prep->ifs_tck == rifs_tck);
test_fail_unless (prep->flp_tck == MAC_PREAMBLE_TCK + MAC_FC_AV_TCK
+ MAC_PAYLOAD_TCK (params->symb_nb, dx)
+ rifs_tck);
@@ -986,6 +988,7 @@ prep_beacon_test (test_t t, test_pbproc_t *tp, u32 date, bool prepared,
prep->mod, PHY_FEC_RATE_1_2, PHY_PB_SIZE_136));
test_fail_unless (prep->gil == PHY_GIL_567);
test_fail_unless (prep->tonemap == NULL);
+ test_fail_unless (prep->ifs_tck == MAC_B2BIFS_TCK);
test_fail_unless (prep->flp_tck == MAC_PREAMBLE_HYBRID_TCK
+ MAC_FC_10_TCK + MAC_FC_AV_TCK
+ MAC_PAYLOAD_TCK (symb_nb, MAC_DX567_TCK)