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> >> --- >> net/packet/af_packet.c | 5 ++--- >> 1 file changed, 2 insertions(+), 3 deletions(-) >> >> diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c >> index a29d66d..fb1a79c 100644 >> --- a/net/packet/af_packet.c >> +++ b/net/packet/af_packet.c >> @@ -1003,7 +1003,6 @@ static void prb_fill_curr_block(char *curr, >> /* Assumes caller has the sk->rx_queue.lock */ >> static void *__packet_lookup_frame_in_block(struct packet_sock *po, >> struct sk_buff *skb, >> - int status, >> unsigned int len >> ) >> { >> @@ -1046,7 +1045,7 @@ static void *__packet_lookup_frame_in_block(struct packet_sock *po, >> } >> >> /* 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. Since there needs some discussion about means of status, I can send v2 only removing the parameter status of __packet_lookup_frame_in_block? > >