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));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @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));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @buf: buffer
|
||||
|
@@ -82,6 +82,11 @@ typedef struct sk_buff_head __qdf_nbuf_queue_head_t;
|
||||
/* mark the first packet after wow wakeup */
|
||||
#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
|
||||
*/
|
||||
@@ -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);
|
||||
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_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_ack(uint8_t *data);
|
||||
bool __qdf_nbuf_data_is_tcp_rst(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_dst_port(uint8_t *data);
|
||||
|
@@ -1810,6 +1810,50 @@ bool __qdf_nbuf_data_is_dns_response(uint8_t *data)
|
||||
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
|
||||
* @data: Pointer to network data buffer
|
||||
@@ -1852,6 +1896,28 @@ bool __qdf_nbuf_data_is_tcp_syn_ack(uint8_t *data)
|
||||
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
|
||||
* @data: Pointer to network data buffer
|
||||
|
Reference in New Issue
Block a user