|
@@ -218,6 +218,9 @@ enum {
|
|
|
|
|
|
/* device driver supports TX zero-copy buffers */
|
|
|
SKBTX_DEV_ZEROCOPY = 1 << 4,
|
|
|
+
|
|
|
+ /* generate wifi status information (where possible) */
|
|
|
+ SKBTX_WIFI_STATUS = 1 << 5,
|
|
|
};
|
|
|
|
|
|
/*
|
|
@@ -352,6 +355,8 @@ typedef unsigned char *sk_buff_data_t;
|
|
|
* @ooo_okay: allow the mapping of a socket to a queue to be changed
|
|
|
* @l4_rxhash: indicate rxhash is a canonical 4-tuple hash over transport
|
|
|
* ports.
|
|
|
+ * @wifi_acked_valid: wifi_acked was set
|
|
|
+ * @wifi_acked: whether frame was acked on wifi or not
|
|
|
* @dma_cookie: a cookie to one of several possible DMA operations
|
|
|
* done by skb DMA functions
|
|
|
* @secmark: security marking
|
|
@@ -445,10 +450,11 @@ struct sk_buff {
|
|
|
#endif
|
|
|
__u8 ooo_okay:1;
|
|
|
__u8 l4_rxhash:1;
|
|
|
+ __u8 wifi_acked_valid:1;
|
|
|
+ __u8 wifi_acked:1;
|
|
|
+ /* 10/12 bit hole (depending on ndisc_nodetype presence) */
|
|
|
kmemcheck_bitfield_end(flags2);
|
|
|
|
|
|
- /* 0/13 bit hole */
|
|
|
-
|
|
|
#ifdef CONFIG_NET_DMA
|
|
|
dma_cookie_t dma_cookie;
|
|
|
#endif
|
|
@@ -2263,6 +2269,15 @@ static inline void skb_tx_timestamp(struct sk_buff *skb)
|
|
|
sw_tx_timestamp(skb);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * skb_complete_wifi_ack - deliver skb with wifi status
|
|
|
+ *
|
|
|
+ * @skb: the original outgoing packet
|
|
|
+ * @acked: ack status
|
|
|
+ *
|
|
|
+ */
|
|
|
+void skb_complete_wifi_ack(struct sk_buff *skb, bool acked);
|
|
|
+
|
|
|
extern __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len);
|
|
|
extern __sum16 __skb_checksum_complete(struct sk_buff *skb);
|
|
|
|