|
@@ -1947,6 +1947,27 @@ static inline ktime_t net_invalid_timestamp(void)
|
|
extern void skb_tstamp_tx(struct sk_buff *orig_skb,
|
|
extern void skb_tstamp_tx(struct sk_buff *orig_skb,
|
|
struct skb_shared_hwtstamps *hwtstamps);
|
|
struct skb_shared_hwtstamps *hwtstamps);
|
|
|
|
|
|
|
|
+static inline void sw_tx_timestamp(struct sk_buff *skb)
|
|
|
|
+{
|
|
|
|
+ union skb_shared_tx *shtx = skb_tx(skb);
|
|
|
|
+ if (shtx->software && !shtx->in_progress)
|
|
|
|
+ skb_tstamp_tx(skb, NULL);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * skb_tx_timestamp() - Driver hook for transmit timestamping
|
|
|
|
+ *
|
|
|
|
+ * Ethernet MAC Drivers should call this function in their hard_xmit()
|
|
|
|
+ * function as soon as possible after giving the sk_buff to the MAC
|
|
|
|
+ * hardware, but before freeing the sk_buff.
|
|
|
|
+ *
|
|
|
|
+ * @skb: A socket buffer.
|
|
|
|
+ */
|
|
|
|
+static inline void skb_tx_timestamp(struct sk_buff *skb)
|
|
|
|
+{
|
|
|
|
+ sw_tx_timestamp(skb);
|
|
|
|
+}
|
|
|
|
+
|
|
extern __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len);
|
|
extern __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len);
|
|
extern __sum16 __skb_checksum_complete(struct sk_buff *skb);
|
|
extern __sum16 __skb_checksum_complete(struct sk_buff *skb);
|
|
|
|
|