|
@@ -1236,6 +1236,7 @@ static inline int cpsw_tx_packet_submit(struct cpsw_priv *priv,
|
|
{
|
|
{
|
|
struct cpsw_common *cpsw = priv->cpsw;
|
|
struct cpsw_common *cpsw = priv->cpsw;
|
|
|
|
|
|
|
|
+ skb_tx_timestamp(skb);
|
|
return cpdma_chan_submit(txch, skb, skb->data, skb->len,
|
|
return cpdma_chan_submit(txch, skb, skb->data, skb->len,
|
|
priv->emac_port + cpsw->data.dual_emac);
|
|
priv->emac_port + cpsw->data.dual_emac);
|
|
}
|
|
}
|
|
@@ -1597,6 +1598,7 @@ static netdev_tx_t cpsw_ndo_start_xmit(struct sk_buff *skb,
|
|
{
|
|
{
|
|
struct cpsw_priv *priv = netdev_priv(ndev);
|
|
struct cpsw_priv *priv = netdev_priv(ndev);
|
|
struct cpsw_common *cpsw = priv->cpsw;
|
|
struct cpsw_common *cpsw = priv->cpsw;
|
|
|
|
+ struct cpts *cpts = cpsw->cpts;
|
|
struct netdev_queue *txq;
|
|
struct netdev_queue *txq;
|
|
struct cpdma_chan *txch;
|
|
struct cpdma_chan *txch;
|
|
int ret, q_idx;
|
|
int ret, q_idx;
|
|
@@ -1608,11 +1610,9 @@ static netdev_tx_t cpsw_ndo_start_xmit(struct sk_buff *skb,
|
|
}
|
|
}
|
|
|
|
|
|
if (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP &&
|
|
if (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP &&
|
|
- cpts_is_tx_enabled(cpsw->cpts))
|
|
|
|
|
|
+ cpts_is_tx_enabled(cpts) && cpts_can_timestamp(cpts, skb))
|
|
skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
|
|
skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
|
|
|
|
|
|
- skb_tx_timestamp(skb);
|
|
|
|
-
|
|
|
|
q_idx = skb_get_queue_mapping(skb);
|
|
q_idx = skb_get_queue_mapping(skb);
|
|
if (q_idx >= cpsw->tx_ch_num)
|
|
if (q_idx >= cpsw->tx_ch_num)
|
|
q_idx = q_idx % cpsw->tx_ch_num;
|
|
q_idx = q_idx % cpsw->tx_ch_num;
|