Skip to content

Commit 42b9cd8

Browse files
committed
sched: shorten MAC DL PDU logging for long lists of SDUs
1 parent 5619ead commit 42b9cd8

File tree

2 files changed

+49
-19
lines changed

2 files changed

+49
-19
lines changed

lib/mac/mac_dl/dl_sch_pdu_assembler.cpp

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -171,54 +171,81 @@ void dl_sch_pdu::encode_subheader(bool F_bit, lcid_dl_sch_t lcid, unsigned heade
171171

172172
// /////////////////////////
173173

174-
class dl_sch_pdu_assembler::dl_sch_pdu_logger
174+
class dl_sch_pdu_assembler::pdu_log_builder
175175
{
176176
public:
177-
explicit dl_sch_pdu_logger(du_ue_index_t ue_index_, rnti_t rnti_, units::bytes tbs_, srslog::basic_logger& logger_) :
178-
ue_index(ue_index_), rnti(rnti_), tbs(tbs_), logger(logger_)
177+
explicit pdu_log_builder(du_ue_index_t ue_index_,
178+
rnti_t rnti_,
179+
units::bytes tbs_,
180+
fmt::memory_buffer& fmtbuf_,
181+
srslog::basic_logger& logger_) :
182+
ue_index(ue_index_), rnti(rnti_), tbs(tbs_), logger(logger_), fmtbuf(fmtbuf_), enabled(logger.info.enabled())
179183
{
184+
fmtbuf.clear();
180185
}
181186

182187
void add_sdu(lcid_t lcid, unsigned len)
183188
{
184-
if (not logger.info.enabled()) {
189+
if (not enabled) {
185190
return;
186191
}
187-
fmt::format_to(fmtbuf, "{}SDU: lcid={} size={}", separator(), lcid, len);
192+
if (lcid != current_sdu_lcid) {
193+
if (current_sdu_lcid != lcid_t::INVALID_LCID) {
194+
fmt::format_to(fmtbuf, "SDU: lcid={} nof_sdus={} total_size={}", current_sdu_lcid, nof_sdus, sum_bytes);
195+
}
196+
current_sdu_lcid = lcid;
197+
nof_sdus = 1;
198+
sum_bytes = units::bytes{len};
199+
} else {
200+
nof_sdus++;
201+
sum_bytes += units::bytes{len};
202+
}
188203
}
189204

190205
void add_conres_id(const ue_con_res_id_t& conres)
191206
{
192-
if (not logger.info.enabled()) {
207+
if (not enabled) {
193208
return;
194209
}
195210
fmt::format_to(fmtbuf, "{}CON_RES: id={:x}", separator(), fmt::join(conres, ""));
196211
}
197212

198213
void add_ta_cmd(const ta_cmd_ce_payload& ce_payload)
199214
{
200-
if (not logger.info.enabled()) {
215+
if (not enabled) {
201216
return;
202217
}
203218
fmt::format_to(fmtbuf, "{}TA_CMD: tag_id={}, ta_cmd={}", separator(), ce_payload.tag_id, ce_payload.ta_cmd);
204219
}
205220

206221
void log()
207222
{
208-
if (not logger.info.enabled()) {
223+
if (not enabled) {
209224
return;
210225
}
226+
227+
// Log pending LCID SDUs.
228+
if (current_sdu_lcid != lcid_t::INVALID_LCID) {
229+
fmt::format_to(fmtbuf, "SDU: lcid={} nof_sdus={} total_size={}", current_sdu_lcid, nof_sdus, sum_bytes);
230+
}
231+
211232
logger.info("DL PDU: ue={} rnti={} size={}: {}", ue_index, rnti, tbs, to_c_str(fmtbuf));
212233
}
213234

214235
private:
215236
const char* separator() const { return fmtbuf.size() == 0 ? "" : ", "; }
216237

217-
du_ue_index_t ue_index;
218-
rnti_t rnti;
219-
units::bytes tbs;
238+
du_ue_index_t ue_index;
239+
rnti_t rnti;
240+
units::bytes tbs;
241+
220242
srslog::basic_logger& logger;
221-
fmt::memory_buffer fmtbuf;
243+
fmt::memory_buffer& fmtbuf;
244+
const bool enabled;
245+
246+
lcid_t current_sdu_lcid = lcid_t::INVALID_LCID;
247+
unsigned nof_sdus = 0;
248+
units::bytes sum_bytes{0U};
222249
};
223250

224251
// /////////////////////////
@@ -247,7 +274,7 @@ span<const uint8_t> dl_sch_pdu_assembler::assemble_newtx_pdu(rnti_t
247274
}
248275
dl_sch_pdu ue_pdu(buffer.first(tb_size_bytes));
249276

250-
dl_sch_pdu_logger pdu_logger{ue_mng.get_ue_index(rnti), rnti, units::bytes{tb_size_bytes}, logger};
277+
pdu_log_builder pdu_logger{ue_mng.get_ue_index(rnti), rnti, units::bytes{tb_size_bytes}, fmtbuf, logger};
251278

252279
// Encode added subPDUs.
253280
for (const dl_msg_lc_info& sched_lch : tb_info.lc_chs_to_sched) {
@@ -275,7 +302,7 @@ span<const uint8_t> dl_sch_pdu_assembler::assemble_newtx_pdu(rnti_t
275302
void dl_sch_pdu_assembler::assemble_sdus(dl_sch_pdu& ue_pdu,
276303
rnti_t rnti,
277304
const dl_msg_lc_info& lc_grant_info,
278-
dl_sch_pdu_logger& pdu_logger)
305+
pdu_log_builder& pdu_logger)
279306
{
280307
// Note: Do not attempt to build an SDU if there is not enough space for the MAC subheader, min payload size and
281308
// potential RLC header.
@@ -354,7 +381,7 @@ void dl_sch_pdu_assembler::assemble_sdus(dl_sch_pdu& ue_pdu,
354381
void dl_sch_pdu_assembler::assemble_ce(dl_sch_pdu& ue_pdu,
355382
rnti_t rnti,
356383
const dl_msg_lc_info& subpdu,
357-
dl_sch_pdu_logger& pdu_logger)
384+
pdu_log_builder& pdu_logger)
358385
{
359386
switch (subpdu.lcid.value()) {
360387
case lcid_dl_sch_t::UE_CON_RES_ID: {

lib/mac/mac_dl/dl_sch_pdu_assembler.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,16 +110,19 @@ class dl_sch_pdu_assembler
110110
span<const uint8_t> assemble_retx_pdu(rnti_t rnti, harq_id_t harq_id, unsigned tb_idx, unsigned tbs_bytes);
111111

112112
private:
113-
class dl_sch_pdu_logger;
113+
class pdu_log_builder;
114114

115115
/// Assemble MAC SDUs for a given LCID.
116-
void assemble_sdus(dl_sch_pdu& ue_pdu, rnti_t rnti, const dl_msg_lc_info& subpdu, dl_sch_pdu_logger& pdu_logger);
116+
void assemble_sdus(dl_sch_pdu& ue_pdu, rnti_t rnti, const dl_msg_lc_info& subpdu, pdu_log_builder& pdu_logger);
117117

118118
/// Assemble MAC subPDU with a CE.
119-
void assemble_ce(dl_sch_pdu& ue_pdu, rnti_t rnti, const dl_msg_lc_info& subpdu, dl_sch_pdu_logger& pdu_logger);
119+
void assemble_ce(dl_sch_pdu& ue_pdu, rnti_t rnti, const dl_msg_lc_info& subpdu, pdu_log_builder& pdu_logger);
120+
121+
mac_dl_ue_manager& ue_mng;
120122

121-
mac_dl_ue_manager& ue_mng;
122123
srslog::basic_logger& logger;
124+
// memory buffer to avoid allocations during formatting of pdus
125+
fmt::memory_buffer fmtbuf;
123126
};
124127

125128
} // namespace srsran

0 commit comments

Comments
 (0)