There is now the function copy_harq_proc_struct and some
procedures for the UE have changed, which makes necessary
to have UE->dlsch valid for both subframes (odd and even).
We increase memory usage, maybe it's not the correct solution.
To be kept in mind if something goes wrong at some point.
----------------------------------------------------------
bug 24
Ttile:
The last line "multicast_group = multicast_group" is hard
to understand. The local variable should be different name
than the global variable.
Bug Location:
const char *multicast_group_list[MULTICAST_LINK_NUM_GROUPS] = {
"239.0.0.161",
"239.0.0.162",
"239.0.0.163",
"239.0.0.164"
};
:
:
void multicast_link_start(void (*rx_handlerP) (unsigned int, char *),
unsigned char multicast_group, char *multicast_ifname)
{
rx_handler = rx_handlerP;
multicast_group = multicast_group;
Note:
Detected by CppCheck
----------------------------------------------------------
Note: not sure that the code is correct,
to be checked (Cédric Roux).
----------------------------------------------------------
bug 22
Ttile:
(subframe!=2)||(subframe!=7) is always TRUE. This coding
is really intended? Operator || should be && instead?
Bug Location:
((frame_parms->frame_type==TDD)&&(frame_parms->tdd_config==1)&&((subframe!=2)||(subframe!=7)))) {
Note:
Detected by CppCheck
----------------------------------------------------------
Note: this fix does not solve the issue with how
this buffer is used in this function, but I'm not
sure this code is used at all (Cédric Roux).
----------------------------------------------------------
bug 21
Ttile:
PAYLOAD_MAX=1500, so this coding results in index overflow.
Additionally, operator "!=" just compairs something, this
coding is meaningless.
Bug Location:
buffer[PAYLOAD_MAX] != '\0';
Note:
Detected by CppCheck
----------------------------------------------------------
----------------------------------------------------------
bug 18
Ttile:
Probably he/she wants to copy the contents of arrays, but
this coding doesn't copy anything, moreover index overflow
occurs.
Bug Location:
u2e_t[UE_id][eNB_id]->tx_data[3]=tx[eNB_id][3];
u2e_t[UE_id][eNB_id]->rx_data[3]=rx[NB_eNB_INST+UE_id][3];
Note:
Detected by CppCheck
----------------------------------------------------------
bug 19
Title:
Probably he/she wants to copy the contents of arrays, but
this coding doesn't copy anything, moreover index overflow
occurs.
Bug Location:
e2u_t[eNB_id][UE_id]->tx_data[3]=tx[NB_eNB_INST+UE_id][3];
e2u_t[eNB_id][UE_id]->rx_data[3]=rx[eNB_id][3];
Note:
Detected by CppCheck
----------------------------------------------------------
bug 20
Title:
Probably he/she wants to copy the contents of arrays, but
this coding doesn't copy anything, moreover index overflow
occurs.
Bug Location:
tx_data[3]=cthread->tx_data[3];
rx_data[3]=cthread->rx_data[3];
Note:
Detected by CppCheck
----------------------------------------------------------
In 20MHz the UE didn't do any uplink granted by DCI0.
It was replying to RAR, so uplink decoding was okay.
Turns out the DCI0 structure for TDD was wrong.
The constant RLC_UM_SEGMENT_NB_MAX_LI_PER_PDU is set to 24. This is
too low. Running a downlink TCP iperf with a 10MHz or 20MHz cell
leads to lots of the following warning in the log:
[RLC][W][SN 792] Bad RLC header! Discard this RLC PDU (size=618)
The problem is that the uplink RLC PDU contains a lot of TCP ack.
We can see much more than 24 of them. The RLC layer is not happy
and discards the PDU.
Putting 256 for RLC_UM_SEGMENT_NB_MAX_LI_PER_PDU (arbitrarily chosen,
big but not too big) solves the problem, at least for 10MHz.