On Tue, Sep 08, 2020 at 11:00:41PM +0100, Russell King wrote:

> @@ -2984,13 +2985,19 @@ static irqreturn_t mvpp2_isr(int irq, void *dev_id)
>  
>  static void mvpp2_isr_handle_ptp_queue(struct mvpp2_port *port, int nq)
>  {
> +     struct skb_shared_hwtstamps shhwtstamps;
> +     struct mvpp2_hwtstamp_queue *queue;
> +     struct sk_buff *skb;
>       void __iomem *ptp_q;
> +     unsigned int id;
>       u32 r0, r1, r2;
>  
>       ptp_q = port->priv->iface_base + MVPP22_PTP_BASE(port->gop_id);
>       if (nq)
>               ptp_q += MVPP22_PTP_TX_Q1_R0 - MVPP22_PTP_TX_Q0_R0;
>  
> +     queue = &port->tx_hwtstamp_queue[nq];
> +
>       while (1) {
>               r0 = readl_relaxed(ptp_q + MVPP22_PTP_TX_Q0_R0) & 0xffff;
>               if (!r0)
> @@ -2998,6 +3005,19 @@ static void mvpp2_isr_handle_ptp_queue(struct 
> mvpp2_port *port, int nq)
>  
>               r1 = readl_relaxed(ptp_q + MVPP22_PTP_TX_Q0_R1) & 0xffff;
>               r2 = readl_relaxed(ptp_q + MVPP22_PTP_TX_Q0_R2) & 0xffff;
> +
> +             id = (r0 >> 1) & 31;
> +
> +             skb = queue->skb[id];
> +             queue->skb[id] = NULL;
> +             if (skb) {
> +                     u32 ts = r2 << 19 | r1 << 3 | r0 >> 13;
> +
> +                     netdev_info(port->dev, "tx stamp 0x%08x\n", ts);

This probably should be _debug instead.

> +                     mvpp22_tai_tstamp(port->priv->tai, ts, &shhwtstamps);
> +                     skb_tstamp_tx(skb, &shhwtstamps);
> +                     dev_kfree_skb_any(skb);
> +             }
>       }
>  }

Thanks,
Richard

Reply via email to