Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 748759d5 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'stmmac-hw-tstamp-fixes'



Jose Abreu says:

====================
net: stmmac: Fix HW timestamping

Three fixes for HW timestamping feature, all of them for RX side.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 0247880a 9454360d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -275,7 +275,7 @@ static int dwmac4_wrback_get_rx_timestamp_status(void *desc, u32 ats)
					goto exit;
				i++;

			} while ((ret == 1) || (i < 10));
			} while ((ret == 1) && (i < 10));

			if (i == 10)
				ret = -EBUSY;
+7 −7
Original line number Diff line number Diff line
@@ -473,19 +473,18 @@ static void stmmac_get_rx_hwtstamp(struct stmmac_priv *priv, struct dma_desc *p,
				   struct dma_desc *np, struct sk_buff *skb)
{
	struct skb_shared_hwtstamps *shhwtstamp = NULL;
	struct dma_desc *desc = p;
	u64 ns;

	if (!priv->hwts_rx_en)
		return;

	/* Check if timestamp is available */
	if (priv->hw->desc->get_rx_timestamp_status(p, priv->adv_ts)) {
	/* For GMAC4, the valid timestamp is from CTX next desc. */
	if (priv->plat->has_gmac4)
			ns = priv->hw->desc->get_timestamp(np, priv->adv_ts);
		else
			ns = priv->hw->desc->get_timestamp(p, priv->adv_ts);
		desc = np;

	/* Check if timestamp is available */
	if (priv->hw->desc->get_rx_timestamp_status(desc, priv->adv_ts)) {
		ns = priv->hw->desc->get_timestamp(desc, priv->adv_ts);
		netdev_dbg(priv->dev, "get valid RX hw timestamp %llu\n", ns);
		shhwtstamp = skb_hwtstamps(skb);
		memset(shhwtstamp, 0, sizeof(struct skb_shared_hwtstamps));
@@ -3333,6 +3332,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue)
				 * them in stmmac_rx_refill() function so that
				 * device can reuse it.
				 */
				dev_kfree_skb_any(rx_q->rx_skbuff[entry]);
				rx_q->rx_skbuff[entry] = NULL;
				dma_unmap_single(priv->device,
						 rx_q->rx_skbuff_dma[entry],