qcacmn: Add APIs to get data packets info
Add APIs to get TCP fin/fin-ack/rst packets information. Change-Id: Ia1150c81076fa47ae7f34d14bc73efc82003258a CRs-Fixed: 3046235
This commit is contained in:

committed by
Madan Koyyalamudi

parent
ef5ccaa3e1
commit
2da40899eb
@@ -3011,6 +3011,32 @@ bool qdf_nbuf_data_is_dns_response(qdf_nbuf_t buf)
|
|||||||
return __qdf_nbuf_data_is_dns_response(qdf_nbuf_data(buf));
|
return __qdf_nbuf_data_is_dns_response(qdf_nbuf_data(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* qdf_nbuf_data_is_tcp_fin() - check if skb data is a tcp fin
|
||||||
|
* @buf: buffer
|
||||||
|
*
|
||||||
|
* Return: true if packet is tcp fin packet.
|
||||||
|
* false otherwise.
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
bool qdf_nbuf_data_is_tcp_fin(qdf_nbuf_t buf)
|
||||||
|
{
|
||||||
|
return __qdf_nbuf_data_is_tcp_fin(qdf_nbuf_data(buf));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* qdf_nbuf_data_is_tcp_fin_ack() - check if skb data is a tcp fin ack
|
||||||
|
* @buf: buffer
|
||||||
|
*
|
||||||
|
* Return: true if packet is tcp fin ack packet.
|
||||||
|
* false otherwise.
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
bool qdf_nbuf_data_is_tcp_fin_ack(qdf_nbuf_t buf)
|
||||||
|
{
|
||||||
|
return __qdf_nbuf_data_is_tcp_fin_ack(qdf_nbuf_data(buf));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* qdf_nbuf_data_is_tcp_syn() - check if skb data is a tcp syn
|
* qdf_nbuf_data_is_tcp_syn() - check if skb data is a tcp syn
|
||||||
* @buf: buffer
|
* @buf: buffer
|
||||||
@@ -3037,6 +3063,19 @@ bool qdf_nbuf_data_is_tcp_syn_ack(qdf_nbuf_t buf)
|
|||||||
return __qdf_nbuf_data_is_tcp_syn_ack(qdf_nbuf_data(buf));
|
return __qdf_nbuf_data_is_tcp_syn_ack(qdf_nbuf_data(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* qdf_nbuf_data_is_tcp_rst() - check if skb data is a tcp rst
|
||||||
|
* @buf: buffer
|
||||||
|
*
|
||||||
|
* Return: true if packet is tcp rst packet.
|
||||||
|
* false otherwise.
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
bool qdf_nbuf_data_is_tcp_rst(qdf_nbuf_t buf)
|
||||||
|
{
|
||||||
|
return __qdf_nbuf_data_is_tcp_rst(qdf_nbuf_data(buf));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* qdf_nbuf_data_is_tcp_ack() - check if skb data is a tcp ack
|
* qdf_nbuf_data_is_tcp_ack() - check if skb data is a tcp ack
|
||||||
* @buf: buffer
|
* @buf: buffer
|
||||||
|
@@ -82,6 +82,11 @@ typedef struct sk_buff_head __qdf_nbuf_queue_head_t;
|
|||||||
/* mark the first packet after wow wakeup */
|
/* mark the first packet after wow wakeup */
|
||||||
#define QDF_MARK_FIRST_WAKEUP_PACKET 0x80000000
|
#define QDF_MARK_FIRST_WAKEUP_PACKET 0x80000000
|
||||||
|
|
||||||
|
/* TCP Related MASK */
|
||||||
|
#define QDF_NBUF_PKT_TCPOP_FIN 0x01
|
||||||
|
#define QDF_NBUF_PKT_TCPOP_FIN_ACK 0x11
|
||||||
|
#define QDF_NBUF_PKT_TCPOP_RST 0x04
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make sure that qdf_dma_addr_t in the cb block is always 64 bit aligned
|
* Make sure that qdf_dma_addr_t in the cb block is always 64 bit aligned
|
||||||
*/
|
*/
|
||||||
@@ -862,8 +867,11 @@ uint32_t __qdf_nbuf_get_arp_tgt_ip(uint8_t *data);
|
|||||||
uint8_t *__qdf_nbuf_get_dns_domain_name(uint8_t *data, uint32_t len);
|
uint8_t *__qdf_nbuf_get_dns_domain_name(uint8_t *data, uint32_t len);
|
||||||
bool __qdf_nbuf_data_is_dns_query(uint8_t *data);
|
bool __qdf_nbuf_data_is_dns_query(uint8_t *data);
|
||||||
bool __qdf_nbuf_data_is_dns_response(uint8_t *data);
|
bool __qdf_nbuf_data_is_dns_response(uint8_t *data);
|
||||||
|
bool __qdf_nbuf_data_is_tcp_fin(uint8_t *data);
|
||||||
|
bool __qdf_nbuf_data_is_tcp_fin_ack(uint8_t *data);
|
||||||
bool __qdf_nbuf_data_is_tcp_syn(uint8_t *data);
|
bool __qdf_nbuf_data_is_tcp_syn(uint8_t *data);
|
||||||
bool __qdf_nbuf_data_is_tcp_syn_ack(uint8_t *data);
|
bool __qdf_nbuf_data_is_tcp_syn_ack(uint8_t *data);
|
||||||
|
bool __qdf_nbuf_data_is_tcp_rst(uint8_t *data);
|
||||||
bool __qdf_nbuf_data_is_tcp_ack(uint8_t *data);
|
bool __qdf_nbuf_data_is_tcp_ack(uint8_t *data);
|
||||||
uint16_t __qdf_nbuf_data_get_tcp_src_port(uint8_t *data);
|
uint16_t __qdf_nbuf_data_get_tcp_src_port(uint8_t *data);
|
||||||
uint16_t __qdf_nbuf_data_get_tcp_dst_port(uint8_t *data);
|
uint16_t __qdf_nbuf_data_get_tcp_dst_port(uint8_t *data);
|
||||||
|
@@ -1810,6 +1810,50 @@ bool __qdf_nbuf_data_is_dns_response(uint8_t *data)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* __qdf_nbuf_data_is_tcp_fin() - check if skb data is a tcp fin
|
||||||
|
* @data: Pointer to network data buffer
|
||||||
|
*
|
||||||
|
* This api is to check if the packet is tcp fin.
|
||||||
|
*
|
||||||
|
* Return: true if packet is tcp fin packet.
|
||||||
|
* false otherwise.
|
||||||
|
*/
|
||||||
|
bool __qdf_nbuf_data_is_tcp_fin(uint8_t *data)
|
||||||
|
{
|
||||||
|
uint8_t op_code;
|
||||||
|
|
||||||
|
op_code = (uint8_t)(*(uint8_t *)(data +
|
||||||
|
QDF_NBUF_PKT_TCP_OPCODE_OFFSET));
|
||||||
|
|
||||||
|
if (op_code == QDF_NBUF_PKT_TCPOP_FIN)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* __qdf_nbuf_data_is_tcp_fin_ack() - check if skb data is a tcp fin ack
|
||||||
|
* @data: Pointer to network data buffer
|
||||||
|
*
|
||||||
|
* This api is to check if the tcp packet is fin ack.
|
||||||
|
*
|
||||||
|
* Return: true if packet is tcp fin ack packet.
|
||||||
|
* false otherwise.
|
||||||
|
*/
|
||||||
|
bool __qdf_nbuf_data_is_tcp_fin_ack(uint8_t *data)
|
||||||
|
{
|
||||||
|
uint8_t op_code;
|
||||||
|
|
||||||
|
op_code = (uint8_t)(*(uint8_t *)(data +
|
||||||
|
QDF_NBUF_PKT_TCP_OPCODE_OFFSET));
|
||||||
|
|
||||||
|
if (op_code == QDF_NBUF_PKT_TCPOP_FIN_ACK)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* __qdf_nbuf_data_is_tcp_syn() - check if skb data is a tcp syn
|
* __qdf_nbuf_data_is_tcp_syn() - check if skb data is a tcp syn
|
||||||
* @data: Pointer to network data buffer
|
* @data: Pointer to network data buffer
|
||||||
@@ -1852,6 +1896,28 @@ bool __qdf_nbuf_data_is_tcp_syn_ack(uint8_t *data)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* __qdf_nbuf_data_is_tcp_rst() - check if skb data is a tcp rst
|
||||||
|
* @data: Pointer to network data buffer
|
||||||
|
*
|
||||||
|
* This api is to check if the tcp packet is rst.
|
||||||
|
*
|
||||||
|
* Return: true if packet is tcp rst packet.
|
||||||
|
* false otherwise.
|
||||||
|
*/
|
||||||
|
bool __qdf_nbuf_data_is_tcp_rst(uint8_t *data)
|
||||||
|
{
|
||||||
|
uint8_t op_code;
|
||||||
|
|
||||||
|
op_code = (uint8_t)(*(uint8_t *)(data +
|
||||||
|
QDF_NBUF_PKT_TCP_OPCODE_OFFSET));
|
||||||
|
|
||||||
|
if (op_code == QDF_NBUF_PKT_TCPOP_RST)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* __qdf_nbuf_data_is_tcp_ack() - check if skb data is a tcp ack
|
* __qdf_nbuf_data_is_tcp_ack() - check if skb data is a tcp ack
|
||||||
* @data: Pointer to network data buffer
|
* @data: Pointer to network data buffer
|
||||||
|
Reference in New Issue
Block a user