On Wed, 2017-02-15 at 10:24 +0200, Yuval Mintz wrote:
> From: Sudarsana Reddy Kalluru <sudarsana.kall...@cavium.com>
> 
> This patch adds the driver support for,
>   - Registering the ptp clock functionality with the OS.
>   - Timestamping the Rx/Tx PTP packets.
>   - Ethtool callbacks related to PTP.



> +void qede_ptp_tx_ts(struct qede_dev *edev, struct sk_buff *skb)
> +{
> +     struct qede_ptp *ptp;
> +
> +     ptp = edev->ptp;
> +     if (!ptp)
> +             return;
> +
> +     if (unlikely(!(edev->flags & QEDE_TX_TIMESTAMPING_EN))) {
> +             DP_NOTICE(edev,
> +                       "Tx timestamping was not enabled, this packet will 
> not be timestamped\n");
> +     } else if (unlikely(ptp->tx_skb)) {
> +             DP_NOTICE(edev,
> +                       "The device supports only a single outstanding packet 
> to timestamp, this packet will not be timestamped\n");
> +     } else {
> +             skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
> +             /* schedule check for Tx timestamp */
> +             ptp->tx_skb = skb_get(skb);
> +             schedule_work(&ptp->work);
> +     }
> +}


This is a multi queue device.

Therefore multiple cpus could call this function at the same time.

ptp->tx_skb needs some kind of SMP protection.



 


Reply via email to