diff options
author | Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com> | 2017-02-15 10:24:11 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-02-15 12:42:53 -0500 |
commit | 4c55215c05d252e975930fe08ff418d02e002ceb (patch) | |
tree | 9ea214d52889e57fd7532a8039509a7fe86a1d5e /drivers/net/ethernet/qlogic/qede/qede_fp.c | |
parent | c78c70fa30e23dc6cdb394f6c13880919499fba5 (diff) | |
download | linux-4c55215c05d252e975930fe08ff418d02e002ceb.tar.gz linux-4c55215c05d252e975930fe08ff418d02e002ceb.tar.bz2 linux-4c55215c05d252e975930fe08ff418d02e002ceb.zip |
qede: Add driver support for PTP
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.
Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic/qede/qede_fp.c')
-rw-r--r-- | drivers/net/ethernet/qlogic/qede/qede_fp.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/ethernet/qlogic/qede/qede_fp.c b/drivers/net/ethernet/qlogic/qede/qede_fp.c index 26848eed3bc1..1e65038c8fc0 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_fp.c +++ b/drivers/net/ethernet/qlogic/qede/qede_fp.c @@ -40,6 +40,7 @@ #include <linux/if_ether.h> #include <linux/if_vlan.h> #include <net/ip6_checksum.h> +#include "qede_ptp.h" #include <linux/qed/qed_if.h> #include "qede.h" @@ -1277,6 +1278,7 @@ static int qede_rx_process_cqe(struct qede_dev *edev, qede_get_rxhash(skb, fp_cqe->bitfields, fp_cqe->rss_hash); qede_set_skb_csum(skb, csum_flag); skb_record_rx_queue(skb, rxq->rxq_id); + qede_ptp_record_rx_ts(edev, cqe, skb); /* SKB is prepared - pass it to stack */ qede_skb_receive(edev, fp, rxq, skb, le16_to_cpu(fp_cqe->vlan_tag)); @@ -1451,6 +1453,9 @@ netdev_tx_t qede_start_xmit(struct sk_buff *skb, struct net_device *ndev) first_bd->data.bd_flags.bitfields = 1 << ETH_TX_1ST_BD_FLAGS_START_BD_SHIFT; + if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) + qede_ptp_tx_ts(edev, skb); + /* Map skb linear data for DMA and set in the first BD */ mapping = dma_map_single(txq->dev, skb->data, skb_headlen(skb), DMA_TO_DEVICE); |