On Mon, Jun 10, 2019 at 10:03 AM maowenan <maowenan@xxxxxxxxxx> wrote: > > > > On 2019/6/10 21:05, Willem de Bruijn wrote: > > On Mon, Jun 10, 2019 at 8:17 AM Mao Wenan <maowenan@xxxxxxxxxx> wrote: > >> > >> The variable 'status' in __packet_lookup_frame_in_block() is never used since > >> introduction in commit f6fb8f100b80 ("af-packet: TPACKET_V3 flexible buffer > >> implementation."), we can remove it. > >> And when __packet_lookup_frame_in_block() calls prb_retire_current_block(), > >> it can pass macro TP_STATUS_KERNEL instead of 0. > >> > >> Signed-off-by: Mao Wenan <maowenan@xxxxxxxxxx> > >> --- > >> /* Ok, close the current block */ > >> - prb_retire_current_block(pkc, po, 0); > >> + prb_retire_current_block(pkc, po, TP_STATUS_KERNEL); > > > > I don't think that 0 is intended to mean TP_STATUS_KERNEL here. > > > > prb_retire_current_block calls prb_close_block which sets status to > > > > TP_STATUS_USER | stat > > > > where stat is 0 or TP_STATUS_BLK_TMO. > > > #define TP_STATUS_KERNEL 0 > #define TP_STATUS_BLK_TMO (1 << 5) > > Actually, packet_current_rx_frame calls __packet_lookup_frame_in_block with status=TP_STATUS_KERNEL > in original code. > > __packet_lookup_frame_in_block in this function, first is to check whether the currently active block > has enough space for the packet, which means status of block should be TP_STATUS_KERNEL, then it calls > prb_retire_current_block to retire this block. I know. I mean that the status here is what is passed to userspace on block retire. It is not intended to be TP_STATUS_USER | TP_STATUS_KERNEL. That makes no sense. > Since there needs some discussion about means of status, I can send v2 only removing the parameter status of > __packet_lookup_frame_in_block? Sounds good.