Hi, On Thu, Oct 20, 2022 at 10:25 AM Miquel Raynal <miquel.raynal@xxxxxxxxxxx> wrote: > > Back in 2014, the LQI was saved in the skb control buffer (skb->cb, or > mac_cb(skb)) without any actual reset of this area prior to its use. > > As part of a useful rework of the use of this region, 32edc40ae65c > ("ieee802154: change _cb handling slightly") introduced mac_cb_init() to > basically memset the cb field to 0. In particular, this new function got > called at the beginning of mac802154_parse_frame_start(), right before > the location where the buffer got actually filled. > > What went through unnoticed however, is the fact that the very first > helper called by device drivers in the receive path already used this > area to save the LQI value for later extraction. Resetting the cb field > "so late" led to systematically zeroing the LQI. > > If we consider the reset of the cb field needed, we can make it as soon > as we get an skb from a device driver, right before storing the LQI, > as is the very first time we need to write something there. > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: 32edc40ae65c ("ieee802154: change _cb handling slightly") > Signed-off-by: Miquel Raynal <miquel.raynal@xxxxxxxxxxx> Acked-by: Alexander Aring <aahringo@xxxxxxxxxx> > --- > > Hello, > > I am surprised the LQI was gone for all those years and nobody > noticed it, so perhaps I did misinterpret slightly the situation, but I > am pretty sure the cb area reset was erasing the LQI. > probably because nobody was really using those values before. There were some patches years ago to add them into af802154 cmsg but probably not well tested and so far it's the only upstream user. However, thanks for fixing it. - Alex