Hi Pavel, Thus wrote Pavel Skripkin (paskripkin@xxxxxxxxx): > On 4/13/22 23:07, Martin Kaiser wrote: > > All that the _mgt_dispatcher function does is to call a function from > > a function pointer. It's not worth having a separate function for this. > > Merge _mgt_dispatcher into mgt_dispatcher. > > Signed-off-by: Martin Kaiser <martin@xxxxxxxxx> > > --- > [code snip] > > + > > + if (ptable->func) { > > + /* receive the frames that ra(a1) is my address or ra(a1) is bc address. */ > > + if (memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN) && > > + !is_broadcast_ether_addr(GetAddr1Ptr(pframe))) > > + return; > > + ptable->func(padapter, precv_frame); > > + } > > } > Looks like each `mlme_sta_tbl` element has `func` member initialized. I > think, we can remove this check. I've just sent a series to refactor mgt_dispatcher. All mlme_sta_tbl entries have a function pointer, but some of the point to a dummy function DoReserved. I guess we should use NULL and keep the check instead of calling a function that does nothing. Best regards, Martin