> -----Original Message----- > From: Richard Cochran [mailto:richardcoch...@gmail.com] > Sent: Monday, February 22, 2016 4:48 PM > To: Yangbo Lu > Cc: netdev@vger.kernel.org; Claudiu Manoil > Subject: Re: [PATCH 3/3] gianfar: fix endianness for hardware timestamp > > On Mon, Feb 22, 2016 at 02:49:33PM +0800, Yangbo Lu wrote: > > @@ -2708,6 +2708,7 @@ static void gfar_clean_tx_ring(struct > gfar_priv_tx_q *tx_queue) > > struct skb_shared_hwtstamps shhwtstamps; > > u64 *ns = (u64 *)(((uintptr_t)skb->data + 0x10) & > > ~0x7UL); > > + *ns = be64_to_cpu(*ns); > > > > memset(&shhwtstamps, 0, sizeof(shhwtstamps)); > > shhwtstamps.hwtstamp = ns_to_ktime(*ns); > > There is no point in modifying the buffer data in place. > > Instead, do this: > > memset(&shhwtstamps, 0, sizeof(shhwtstamps)); > shhwtstamps.hwtstamp = ns_to_ktime(be64_to_cpu(*ns)); > > or this: > > u64 ns, *ptr = (u64 *)(((uintptr_t)skb->data + 0x10) & > ~0x7UL); > ns = be64_to_cpu(*ptr); > > memset(&shhwtstamps, 0, sizeof(shhwtstamps)); > shhwtstamps.hwtstamp = ns_to_ktime(ns); >
[Lu Yangbo-B47093] I will modify codes according your suggestion. Thank you so much! > > @@ -3037,6 +3038,7 @@ static void gfar_process_frame(struct net_device > *ndev, struct sk_buff *skb) > > if (priv->hwts_rx_en) { > > struct skb_shared_hwtstamps *shhwtstamps = skb_hwtstamps(skb); > > u64 *ns = (u64 *) skb->data; > > + *ns = be64_to_cpu(*ns); > > > > memset(shhwtstamps, 0, sizeof(*shhwtstamps)); > > shhwtstamps->hwtstamp = ns_to_ktime(*ns); > > Same here. > > Thanks, > Richard