Hi Jakub and Michal, If you guys are OK with this, this is the version of the patch on long MICs and segment count I will be applying. On Thu, 2019-05-23 at 10:53 -0700, Brian Gix wrote: > From: Jakub Witowski <jakub.witowski@xxxxxxxxxxx> > > Contrary to the comment, implementation used a 8-byte MIC even if this > generated an additional segment. > --- > mesh/model.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/mesh/model.c b/mesh/model.c > index 034d54496..90bb62db8 100644 > --- a/mesh/model.c > +++ b/mesh/model.c > @@ -40,6 +40,9 @@ > #include "mesh/util.h" > #include "mesh/model.h" > > +/* Divide and round to ceiling (up) to calculate segment count */ > +#define CEILDIV(val, div) (((val) + (div) - 1) / (div)) > + > struct mesh_model { > const struct mesh_model_ops *cbs; > void *user_data; > @@ -451,7 +454,7 @@ static bool msg_send(struct mesh_node *node, bool credential, uint16_t src, > > /* Use large MIC if it doesn't affect segmentation */ > if (msg_len > 11 && msg_len <= 376) { > - if ((out_len / 12) == ((out_len + 4) / 12)) { > + if (CEILDIV(out_len, 12) == CEILDIV(out_len + 4, 12)) { > szmic = true; > out_len = msg_len + sizeof(uint64_t); > }