qcacmn: Add QDF APIs for dev_scratch in network buffer

Kernel 4.14 and later supports dev_scratch for network
buffer which can be used to store data in a nbuf in the
format unsigned long.

Add APIs:
 1) qdf_nbuf_is_dev_scratch_supported
 2) qdf_nbuf_get_dev_scratch
 3) qdf_nbuf_set_dev_scratch

Change-Id: I2a72d369bb53f8f86d4bcee3cf6d13f5e4aff57f
CRs-Fixed: 2313270
This commit is contained in:
Rakshith Suresh Patkar
2018-09-11 19:46:34 +05:30
committed by nshrivas
parent 0b9d49b447
commit ecd7d60c6a
2 changed files with 91 additions and 0 deletions

View File

@@ -1588,6 +1588,42 @@ static inline void qdf_nbuf_reset(qdf_nbuf_t buf, int reserve, int align)
__qdf_nbuf_reset(buf, reserve, align); __qdf_nbuf_reset(buf, reserve, align);
} }
/**
* qdf_nbuf_dev_scratch_is_supported() - dev_scratch support for network buffer
* in kernel
*
* Return: true if dev_scratch is supported
* false if dev_scratch is not supported
*/
static inline bool qdf_nbuf_is_dev_scratch_supported(void)
{
return __qdf_nbuf_is_dev_scratch_supported();
}
/**
* qdf_nbuf_get_dev_scratch() - get dev_scratch of network buffer
* @buf: Pointer to network buffer
*
* Return: dev_scratch if dev_scratch supported
* 0 if dev_scratch not supported
*/
static inline unsigned long qdf_nbuf_get_dev_scratch(qdf_nbuf_t buf)
{
return __qdf_nbuf_get_dev_scratch(buf);
}
/**
* qdf_nbuf_set_dev_scratch() - set dev_scratch of network buffer
* @buf: Pointer to network buffer
* @value: value to be set in dev_scratch of network buffer
*
* Return: void
*/
static inline void qdf_nbuf_set_dev_scratch(qdf_nbuf_t buf, unsigned long value)
{
__qdf_nbuf_set_dev_scratch(buf, value);
}
/** /**
* qdf_nbuf_peek_header() - return the data pointer & length of the header * qdf_nbuf_peek_header() - return the data pointer & length of the header
* @buf: Network nbuf * @buf: Network nbuf

View File

@@ -28,6 +28,7 @@
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/version.h>
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <qdf_types.h> #include <qdf_types.h>
#include <qdf_net_types.h> #include <qdf_net_types.h>
@@ -961,6 +962,60 @@ __qdf_nbuf_reset(struct sk_buff *skb, int reserve, int align)
skb_reserve(skb, reserve); skb_reserve(skb, reserve);
} }
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0))
/**
* qdf_nbuf_dev_scratch_is_supported() - dev_scratch support for network buffer
* in kernel
*
* Return: true if dev_scratch is supported
* false if dev_scratch is not supported
*/
static inline bool __qdf_nbuf_is_dev_scratch_supported(void)
{
return true;
}
/**
* qdf_nbuf_get_dev_scratch() - get dev_scratch of network buffer
* @skb: Pointer to network buffer
*
* Return: dev_scratch if dev_scratch supported
* 0 if dev_scratch not supported
*/
static inline unsigned long __qdf_nbuf_get_dev_scratch(struct sk_buff *skb)
{
return skb->dev_scratch;
}
/**
* qdf_nbuf_set_dev_scratch() - set dev_scratch of network buffer
* @skb: Pointer to network buffer
* @value: value to be set in dev_scratch of network buffer
*
* Return: void
*/
static inline void
__qdf_nbuf_set_dev_scratch(struct sk_buff *skb, unsigned long value)
{
skb->dev_scratch = value;
}
#else
static inline bool __qdf_nbuf_is_dev_scratch_supported(void)
{
return false;
}
static inline unsigned long __qdf_nbuf_get_dev_scratch(struct sk_buff *skb)
{
return 0;
}
static inline void
__qdf_nbuf_set_dev_scratch(struct sk_buff *skb, unsigned long value)
{
}
#endif /* KERNEL_VERSION(4, 14, 0) */
/** /**
* __qdf_nbuf_head() - return the pointer the skb's head pointer * __qdf_nbuf_head() - return the pointer the skb's head pointer
* @skb: Pointer to network buffer * @skb: Pointer to network buffer