static int stp_dbg_add_pkt ( MTKSTP_DBG_T*stp_dbg, struct stp_dbg_pkt_hdr *hdr, const unsigned char *body ) { //fix the frame size large issues. static struct stp_dbg_pkt stp_pkt; uint32_t hdr_sz = sizeof(struct stp_dbg_pkt_hdr); uint32_t body_sz = 0; BUG_ON(!stp_dbg); if(hdr->dbg_type == STP_DBG_PKT) { body_sz = (hdr->len <= STP_PKT_SZ)?(hdr->len):(STP_PKT_SZ); } else { body_sz = (hdr->len <= STP_DMP_SZ)?(hdr->len):(STP_DMP_SZ); } hdr->no = stp_dbg->pkt_trace_no++; memcpy((uint8_t *)&stp_pkt.hdr, (uint8_t*)hdr, hdr_sz); if(body != NULL) { memcpy((uint8_t *)&stp_pkt.raw[0], body, body_sz); } _stp_dbg_dmp_in(stp_dbg, (char *) &stp_pkt, hdr_sz + body_sz); //Only FW DMP MSG should inform BTM-CORE to dump packet to native process if(hdr->dbg_type == STP_DBG_FW_DMP) { stp_gdb_notify_btm_dmp_wq(stp_dbg); } return 0; }
static INT32 stp_dbg_add_pkt ( MTKSTP_DBG_T*stp_dbg, struct stp_dbg_pkt_hdr *hdr, const UINT8 *body ) { struct stp_dbg_pkt stp_pkt; UINT32 hdr_sz = osal_sizeof(struct stp_dbg_pkt_hdr); UINT32 body_sz = 0; osal_assert(stp_dbg); if (hdr->dbg_type == STP_DBG_PKT){ body_sz = (hdr->len <= STP_PKT_SZ)?(hdr->len):(STP_PKT_SZ); }else{ body_sz = (hdr->len <= STP_DMP_SZ)?(hdr->len):(STP_DMP_SZ); } hdr->no = stp_dbg->pkt_trace_no++; osal_memcpy((UINT8 *)&stp_pkt.hdr, (UINT8 *)hdr, hdr_sz); if (body != NULL){ osal_memcpy((UINT8 *)&stp_pkt.raw[0], body, body_sz); } stp_gdb_notify_btm_dmp_wq(stp_dbg,(CHAR *) &stp_pkt, hdr_sz + body_sz); return 0; }