qcacmn: Support RX MPDU sequence logging from DP
tcp_seq_num and tcp_ack_num in qdf_nbuf_cb is not used for Beryllium, repurpose them to store RX MPDU sequence number. get RX mpdu sequence number from DP and store it in qdf_nbuf_cb for logging later. Change-Id: I3c21b383d827f12a1e1ec6202a5fc17804dddc1b CRs-Fixed: 3610468
This commit is contained in:

committed by
Rahul Choudhary

parent
3102185ee2
commit
ebc572b89c
@@ -516,6 +516,7 @@ done:
|
||||
rx_tlv_hdr = qdf_nbuf_data(nbuf);
|
||||
vdev_id = QDF_NBUF_CB_RX_VDEV_ID(nbuf);
|
||||
peer_id = dp_rx_get_peer_id_be(nbuf);
|
||||
dp_rx_set_mpdu_seq_number_be(nbuf, rx_tlv_hdr);
|
||||
|
||||
if (dp_rx_is_list_ready(deliver_list_head, vdev, txrx_peer,
|
||||
peer_id, vdev_id)) {
|
||||
|
@@ -666,6 +666,13 @@ dp_rx_peer_mdata_link_id_get_be(uint32_t peer_metadata)
|
||||
}
|
||||
#endif /* DP_MLO_LINK_STATS_SUPPORT */
|
||||
|
||||
static inline void
|
||||
dp_rx_set_mpdu_seq_number_be(qdf_nbuf_t nbuf, uint8_t *rx_tlv_hdr)
|
||||
{
|
||||
QDF_NBUF_CB_RX_MPDU_SEQ_NUM(nbuf) =
|
||||
hal_rx_mpdu_sequence_number_get_be(rx_tlv_hdr);
|
||||
}
|
||||
|
||||
static inline void
|
||||
dp_rx_set_link_id_be(qdf_nbuf_t nbuf, uint32_t peer_mdata)
|
||||
{
|
||||
@@ -792,6 +799,11 @@ dp_rx_set_link_id_be(qdf_nbuf_t nbuf, uint32_t peer_mdata)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
dp_rx_set_mpdu_seq_number_be(qdf_nbuf_t nbuf, uint8_t *rx_tlv_hdr)
|
||||
{
|
||||
}
|
||||
|
||||
static inline uint16_t
|
||||
dp_rx_get_peer_id_be(qdf_nbuf_t nbuf)
|
||||
{
|
||||
|
@@ -1706,19 +1706,21 @@ void dp_rx_process_invalid_peer_wrapper(struct dp_soc *soc,
|
||||
* dp_rx_print_offload_info() - Print offload info from RX TLV
|
||||
* @soc: dp soc handle
|
||||
* @msdu: MSDU for which the offload info is to be printed
|
||||
* @ofl_info: offload info saved in hal_offload_info structure
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void dp_rx_print_offload_info(struct dp_soc *soc,
|
||||
qdf_nbuf_t msdu)
|
||||
qdf_nbuf_t msdu,
|
||||
struct hal_offload_info *ofl_info)
|
||||
{
|
||||
dp_verbose_debug("----------------------RX DESC LRO/GRO----------------------");
|
||||
dp_verbose_debug("lro_eligible 0x%x",
|
||||
QDF_NBUF_CB_RX_LRO_ELIGIBLE(msdu));
|
||||
dp_verbose_debug("pure_ack 0x%x", QDF_NBUF_CB_RX_TCP_PURE_ACK(msdu));
|
||||
dp_verbose_debug("chksum 0x%x", QDF_NBUF_CB_RX_TCP_CHKSUM(msdu));
|
||||
dp_verbose_debug("TCP seq num 0x%x", QDF_NBUF_CB_RX_TCP_SEQ_NUM(msdu));
|
||||
dp_verbose_debug("TCP ack num 0x%x", QDF_NBUF_CB_RX_TCP_ACK_NUM(msdu));
|
||||
dp_verbose_debug("TCP seq num 0x%x", ofl_info->tcp_seq_num);
|
||||
dp_verbose_debug("TCP ack num 0x%x", ofl_info->tcp_ack_num);
|
||||
dp_verbose_debug("TCP window 0x%x", QDF_NBUF_CB_RX_TCP_WIN(msdu));
|
||||
dp_verbose_debug("TCP protocol 0x%x", QDF_NBUF_CB_RX_TCP_PROTO(msdu));
|
||||
dp_verbose_debug("TCP offset 0x%x", QDF_NBUF_CB_RX_TCP_OFFSET(msdu));
|
||||
@@ -1744,15 +1746,13 @@ void dp_rx_fill_gro_info(struct dp_soc *soc, uint8_t *rx_tlv,
|
||||
QDF_NBUF_CB_RX_TCP_CHKSUM(msdu) =
|
||||
hal_rx_tlv_get_tcp_chksum(soc->hal_soc,
|
||||
rx_tlv);
|
||||
QDF_NBUF_CB_RX_TCP_SEQ_NUM(msdu) = offload_info.tcp_seq_num;
|
||||
QDF_NBUF_CB_RX_TCP_ACK_NUM(msdu) = offload_info.tcp_ack_num;
|
||||
QDF_NBUF_CB_RX_TCP_WIN(msdu) = offload_info.tcp_win;
|
||||
QDF_NBUF_CB_RX_TCP_PROTO(msdu) = offload_info.tcp_proto;
|
||||
QDF_NBUF_CB_RX_IPV6_PROTO(msdu) = offload_info.ipv6_proto;
|
||||
QDF_NBUF_CB_RX_TCP_OFFSET(msdu) = offload_info.tcp_offset;
|
||||
QDF_NBUF_CB_RX_FLOW_ID(msdu) = offload_info.flow_id;
|
||||
|
||||
dp_rx_print_offload_info(soc, msdu);
|
||||
dp_rx_print_offload_info(soc, msdu, &offload_info);
|
||||
}
|
||||
#endif /* RECEIVE_OFFLOAD */
|
||||
|
||||
|
@@ -154,6 +154,17 @@ static inline uint8_t qdf_nbuf_get_lmac_id(qdf_nbuf_t buf)
|
||||
return QDF_NBUF_CB_RX_PACKET_LMAC_ID(buf);
|
||||
}
|
||||
|
||||
/**
|
||||
* qdf_nbuf_get_mpdu_seq_num() - get MPDU sequence number
|
||||
* @buf: Network buffer
|
||||
*
|
||||
* Return: mpdu sequence number value
|
||||
*/
|
||||
static inline uint16_t qdf_nbuf_get_mpdu_seq_num(qdf_nbuf_t buf)
|
||||
{
|
||||
return QDF_NBUF_CB_RX_MPDU_SEQ_NUM(buf);
|
||||
}
|
||||
|
||||
/**
|
||||
* qdf_nbuf_set_rx_ipa_smmu_map() - set ipa smmu mapped flag
|
||||
* @buf: Network buffer
|
||||
|
@@ -265,6 +265,11 @@ static inline uint8_t qdf_nbuf_get_lmac_id(qdf_nbuf_t buf)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline uint16_t qdf_nbuf_get_mpdu_seq_num(qdf_nbuf_t buf)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* qdf_nbuf_tx_set_band() - Set band in nbuf cb
|
||||
* @nbuf: nbuf pointer
|
||||
|
@@ -75,8 +75,12 @@
|
||||
* @u.rx.dev.priv_cb_m.to_ds: to DS bit in RX packet
|
||||
* @u.rx.dev.priv_cb_m.logical_link_id: link id of RX packet
|
||||
* @u.rx.dev.priv_cb_m.reserved1: reserved bits
|
||||
* @u.rx.dev.priv_cb_m.tcp_seq_num: TCP sequence number
|
||||
* @u.rx.dev.priv_cb_m.tcp_ack_num: TCP ACK number
|
||||
* @u.rx.dev.priv_cb_m.dp_ext: Union of tcp and ext structs
|
||||
* @u.rx.dev.priv_cb_m.dp_ext.tcp: TCP structs
|
||||
* @u.rx.dev.priv_cb_m.dp_ext.tcp.tcp_seq_num: TCP sequence number
|
||||
* @u.rx.dev.priv_cb_m.dp_ext.tcp.tcp_ack_num: TCP ACK number
|
||||
* @u.rx.dev.priv_cb_m.dp_ext.ext: Extension struct for other usage
|
||||
* @u.rx.dev.priv_cb_m.dp_ext.ext.mpdu_seq: wifi MPDU sequence number
|
||||
* @u.rx.dev.priv_cb_m.dp: Union of wifi3 and wifi2 structs
|
||||
* @u.rx.dev.priv_cb_m.dp.wifi3: wifi3 data
|
||||
* @u.rx.dev.priv_cb_m.dp.wifi3.msdu_len: length of RX packet
|
||||
@@ -219,8 +223,17 @@ struct qdf_nbuf_cb {
|
||||
logical_link_id:4,
|
||||
band:3,
|
||||
reserved1:7;
|
||||
uint32_t tcp_seq_num;
|
||||
uint32_t tcp_ack_num;
|
||||
union {
|
||||
struct {
|
||||
uint32_t tcp_seq_num;
|
||||
uint32_t tcp_ack_num;
|
||||
} tcp;
|
||||
struct {
|
||||
uint32_t mpdu_seq:12,
|
||||
reserved:20;
|
||||
uint32_t reserved1;
|
||||
} ext;
|
||||
} dp_ext;
|
||||
union {
|
||||
struct {
|
||||
uint16_t msdu_len;
|
||||
@@ -542,9 +555,15 @@ QDF_COMPILE_TIME_ASSERT(qdf_nbuf_cb_size,
|
||||
(QDF_NBUF_CB_TX_NUM_EXTRA_FRAGS(skb) = 0)
|
||||
|
||||
#define QDF_NBUF_CB_RX_TCP_SEQ_NUM(skb) \
|
||||
(((struct qdf_nbuf_cb *)((skb)->cb))->u.rx.dev.priv_cb_m.tcp_seq_num)
|
||||
(((struct qdf_nbuf_cb *)((skb)->cb))->u.rx.dev.priv_cb_m. \
|
||||
dp_ext.tcp.tcp_seq_num)
|
||||
#define QDF_NBUF_CB_RX_TCP_ACK_NUM(skb) \
|
||||
(((struct qdf_nbuf_cb *)((skb)->cb))->u.rx.dev.priv_cb_m.tcp_ack_num)
|
||||
(((struct qdf_nbuf_cb *)((skb)->cb))->u.rx.dev.priv_cb_m. \
|
||||
dp_ext.tcp.tcp_ack_num)
|
||||
#define QDF_NBUF_CB_RX_MPDU_SEQ_NUM(skb) \
|
||||
(((struct qdf_nbuf_cb *)((skb)->cb))->u.rx.dev.priv_cb_m. \
|
||||
dp_ext.ext.mpdu_seq)
|
||||
|
||||
#define QDF_NBUF_CB_RX_LRO_CTX(skb) \
|
||||
(((struct qdf_nbuf_cb *)((skb)->cb))->u.rx.dev.priv_cb_m.lro_ctx)
|
||||
|
||||
|
@@ -1524,7 +1524,7 @@ static bool qdf_log_icmpv6_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
||||
cmn_info.type = QDF_PROTO_TYPE_ICMPv6;
|
||||
cmn_info.subtype = subtype;
|
||||
cmn_info.proto_priv_data = 0;
|
||||
cmn_info.mpdu_seq = 0xFF;
|
||||
cmn_info.mpdu_seq = qdf_nbuf_get_mpdu_seq_num(skb);
|
||||
DPTRACE(qdf_dp_trace_proto_pkt(
|
||||
QDF_DP_TRACE_ICMPv6_PACKET_RECORD,
|
||||
(skb->data + QDF_NBUF_SRC_MAC_OFFSET),
|
||||
@@ -1590,7 +1590,7 @@ static bool qdf_log_icmp_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
||||
cmn_info.proto_priv_data |= (uint32_t)seq_num;
|
||||
cmn_info.type = QDF_PROTO_TYPE_ICMP;
|
||||
cmn_info.vdev_id = vdev_id;
|
||||
cmn_info.mpdu_seq = 0xFF;
|
||||
cmn_info.mpdu_seq = qdf_nbuf_get_mpdu_seq_num(skb);
|
||||
|
||||
if (QDF_TX == dir)
|
||||
QDF_NBUF_CB_TX_DP_TRACE(skb) = 1;
|
||||
@@ -1894,7 +1894,7 @@ static bool qdf_log_eapol_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
||||
cmn_info.type = QDF_PROTO_TYPE_EAPOL;
|
||||
cmn_info.subtype = subtype;
|
||||
cmn_info.proto_priv_data = 0;
|
||||
cmn_info.mpdu_seq = 0xFF;
|
||||
cmn_info.mpdu_seq = qdf_nbuf_get_mpdu_seq_num(skb);
|
||||
DPTRACE(qdf_dp_trace_proto_pkt(QDF_DP_TRACE_EAPOL_PACKET_RECORD,
|
||||
skb->data +
|
||||
QDF_NBUF_SRC_MAC_OFFSET,
|
||||
@@ -1979,7 +1979,7 @@ static bool qdf_log_dhcp_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
||||
cmn_info.type = QDF_PROTO_TYPE_DHCP;
|
||||
cmn_info.subtype = subtype;
|
||||
cmn_info.proto_priv_data = 0;
|
||||
cmn_info.mpdu_seq = 0xFF;
|
||||
cmn_info.mpdu_seq = qdf_nbuf_get_mpdu_seq_num(skb);
|
||||
DPTRACE(qdf_dp_trace_proto_pkt(QDF_DP_TRACE_DHCP_PACKET_RECORD,
|
||||
skb->data +
|
||||
QDF_NBUF_SRC_MAC_OFFSET,
|
||||
@@ -2043,7 +2043,7 @@ static bool qdf_log_arp_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
||||
cmn_info.type = QDF_PROTO_TYPE_ARP;
|
||||
cmn_info.subtype = proto_subtype;
|
||||
cmn_info.proto_priv_data = 0;
|
||||
cmn_info.mpdu_seq = 0xFF;
|
||||
cmn_info.mpdu_seq = qdf_nbuf_get_mpdu_seq_num(skb);
|
||||
DPTRACE(qdf_dp_trace_proto_pkt(QDF_DP_TRACE_ARP_PACKET_RECORD,
|
||||
skb->data +
|
||||
QDF_NBUF_SRC_MAC_OFFSET,
|
||||
|
Reference in New Issue
Block a user