qcacmn: Add rawmode tx support for lithium
Added raw mode descriptor preparation support in tx path when packet is in Interface configured in raw mode. Change-Id: I3159bce9ec6f3cd86ccfb157c51d1cb5f6412b89
This commit is contained in:

committed by
qcabuildsw

parent
bfbef4f48d
commit
99075965f8
@@ -443,17 +443,51 @@ failure:
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_tx_prepare_send_raw() - Prepare RAW packet TX
|
||||
* dp_tx_prepare_raw() - Prepare RAW packet TX
|
||||
* @vdev: DP vdev handle
|
||||
* @nbuf: buffer pointer
|
||||
* @seg_info: Pointer to Segment info Descriptor to be prepared
|
||||
* @msdu_info: MSDU info to be setup in MSDU descriptor and MSDU extension
|
||||
* descriptor
|
||||
*
|
||||
* Return:
|
||||
*/
|
||||
static qdf_nbuf_t dp_tx_prepare_raw(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
||||
struct dp_tx_msdu_info_s *msdu_info)
|
||||
struct dp_tx_seg_info_s *seg_info, struct dp_tx_msdu_info_s *msdu_info)
|
||||
{
|
||||
qdf_nbuf_t curr_nbuf = NULL;
|
||||
uint16_t total_len = 0;
|
||||
int32_t i;
|
||||
|
||||
struct dp_tx_sg_info_s *sg_info = &msdu_info->u.sg_info;
|
||||
|
||||
if (QDF_STATUS_SUCCESS != qdf_nbuf_map_nbytes_single(vdev->osdev, nbuf,
|
||||
QDF_DMA_TO_DEVICE,
|
||||
qdf_nbuf_len(nbuf))) {
|
||||
qdf_print("dma map error\n");
|
||||
qdf_nbuf_free(nbuf);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (curr_nbuf = nbuf, i = 0; curr_nbuf;
|
||||
curr_nbuf = qdf_nbuf_next(nbuf), i++) {
|
||||
seg_info->frags[i].paddr_lo =
|
||||
qdf_nbuf_get_frag_paddr(curr_nbuf, 0);
|
||||
seg_info->frags[i].paddr_hi = 0x0;
|
||||
seg_info->frags[i].len = qdf_nbuf_len(curr_nbuf);
|
||||
seg_info->frags[i].vaddr = (void *) curr_nbuf;
|
||||
total_len += qdf_nbuf_len(curr_nbuf);
|
||||
}
|
||||
|
||||
seg_info->frag_cnt = i;
|
||||
seg_info->total_len = total_len;
|
||||
seg_info->next = NULL;
|
||||
|
||||
sg_info->curr_seg = seg_info;
|
||||
|
||||
msdu_info->frm_type = dp_tx_frm_raw;
|
||||
msdu_info->num_seg = 1;
|
||||
|
||||
return nbuf;
|
||||
}
|
||||
|
||||
@@ -913,7 +947,9 @@ qdf_nbuf_t dp_tx_send(void *vap_dev, qdf_nbuf_t nbuf)
|
||||
|
||||
/* RAW */
|
||||
if (qdf_unlikely(vdev->tx_encap_type == htt_pkt_type_raw)) {
|
||||
nbuf = dp_tx_prepare_raw(vdev, nbuf, &msdu_info);
|
||||
nbuf = dp_tx_prepare_raw(vdev, nbuf, &seg_info, &msdu_info);
|
||||
if (nbuf == NULL)
|
||||
return NULL;
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
||||
"%s Raw frame %p\n", __func__, vdev);
|
||||
|
Reference in New Issue
Block a user