> -----Original Message----- > From: Guilherme Piccoli <gpicc...@canonical.com> > Sent: Wednesday, June 26, 2019 1:56 AM > To: Sudarsana Reddy Kalluru <skall...@marvell.com>; > jay.vosbu...@canonical.com > Cc: GR-everest-linux-l2 <gr-everest-linux...@marvell.com>; > netdev@vger.kernel.org; Ariel Elior <ael...@marvell.com> > Subject: Re: [EXT] [PATCH V2] bnx2x: Prevent ptp_task to be rescheduled > indefinitely > > Sudarsana, let me ask you something: why does the register is reading value > 0x0 always in the TX timestamp routine if the RX filter is set to None? This > is > the main cause of the thread reschedule thing.
The register value of zero indicates there is no pending Tx timestamp to be read by the driver. FW writes/latches the Tx timestamp for PTP event packet in this register. And it does the latching only if the register is free. In this case user/app look to be requesting the Timestamp (via skb->tx_flags) for non-ptp Tx packet. In the Tx path, driver schedules a thread for reading the Tx timestamp, bnx2x_start_xmit() { if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) schedule_work(&bp->ptp_task); } FW seem to be not timestamping the packet at all and driver is indefinitely waiting for it. > > Of course this thread thing is important to fix, but I was discussing with my > leader here and we are curious on the reasoning the register is getting 0x0. > > Thanks in advance, > > > Guilherme