qcacld-3.0: Featurize DSRC(802.11p) implementation
Featurize DSRC(802.11p) implementation Change-Id: I64baee9d26b2300b7a7282ad2eff031c0b02b0b2 CRs-Fixed: 2287352
This commit is contained in:
@@ -1568,10 +1568,12 @@ int htt_get_channel_freq(enum extension_header_type type,
|
|||||||
*
|
*
|
||||||
* Return: none
|
* Return: none
|
||||||
*/
|
*/
|
||||||
|
#ifdef WLAN_FEATURE_DSRC
|
||||||
static
|
static
|
||||||
void htt_fill_ocb_ext_header(qdf_nbuf_t msdu,
|
void htt_fill_ocb_ext_header(qdf_nbuf_t msdu,
|
||||||
struct htt_tx_msdu_desc_ext_t *local_desc_ext,
|
struct htt_tx_msdu_desc_ext_t *local_desc_ext,
|
||||||
enum extension_header_type type, void *ext_header_data)
|
enum extension_header_type type,
|
||||||
|
void *ext_header_data)
|
||||||
{
|
{
|
||||||
struct ocb_tx_ctrl_hdr_t *tx_ctrl =
|
struct ocb_tx_ctrl_hdr_t *tx_ctrl =
|
||||||
(struct ocb_tx_ctrl_hdr_t *)ext_header_data;
|
(struct ocb_tx_ctrl_hdr_t *)ext_header_data;
|
||||||
@@ -1606,6 +1608,15 @@ void htt_fill_ocb_ext_header(qdf_nbuf_t msdu,
|
|||||||
sizeof(struct htt_tx_msdu_desc_ext_t));
|
sizeof(struct htt_tx_msdu_desc_ext_t));
|
||||||
QDF_NBUF_CB_TX_EXTRA_FRAG_FLAGS_EXT_HEADER(msdu) = 1;
|
QDF_NBUF_CB_TX_EXTRA_FRAG_FLAGS_EXT_HEADER(msdu) = 1;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
void htt_fill_ocb_ext_header(qdf_nbuf_t msdu,
|
||||||
|
struct htt_tx_msdu_desc_ext_t *local_desc_ext,
|
||||||
|
enum extension_header_type type,
|
||||||
|
void *ext_header_data)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* htt_fill_wisa_ext_header() - fill WiSA extension header
|
* htt_fill_wisa_ext_header() - fill WiSA extension header
|
||||||
|
@@ -471,12 +471,42 @@ static void process_reorder(ol_txrx_pdev_handle pdev,
|
|||||||
}
|
}
|
||||||
} /* process_reorder */
|
} /* process_reorder */
|
||||||
|
|
||||||
|
#ifdef WLAN_FEATURE_DSRC
|
||||||
|
static void
|
||||||
|
ol_rx_ocb_update_peer(ol_txrx_pdev_handle pdev, qdf_nbuf_t rx_ind_msg,
|
||||||
|
struct ol_txrx_peer_t *peer)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
htt_rx_ind_legacy_rate(pdev->htt_pdev, rx_ind_msg,
|
||||||
|
&peer->last_pkt_legacy_rate,
|
||||||
|
&peer->last_pkt_legacy_rate_sel);
|
||||||
|
peer->last_pkt_rssi_cmb = htt_rx_ind_rssi_dbm(
|
||||||
|
pdev->htt_pdev, rx_ind_msg);
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
peer->last_pkt_rssi[i] =
|
||||||
|
htt_rx_ind_rssi_dbm_chain(pdev->htt_pdev, rx_ind_msg, i);
|
||||||
|
|
||||||
|
htt_rx_ind_timestamp(pdev->htt_pdev, rx_ind_msg,
|
||||||
|
&peer->last_pkt_timestamp_microsec,
|
||||||
|
&peer->last_pkt_timestamp_submicrosec);
|
||||||
|
peer->last_pkt_tsf = htt_rx_ind_tsf32(pdev->htt_pdev, rx_ind_msg);
|
||||||
|
peer->last_pkt_tid = htt_rx_ind_ext_tid(pdev->htt_pdev, rx_ind_msg);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static void
|
||||||
|
ol_rx_ocb_update_peer(ol_txrx_pdev_handle pdev, qdf_nbuf_t rx_ind_msg,
|
||||||
|
struct ol_txrx_peer_t *peer)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
ol_rx_indication_handler(ol_txrx_pdev_handle pdev,
|
ol_rx_indication_handler(ol_txrx_pdev_handle pdev,
|
||||||
qdf_nbuf_t rx_ind_msg,
|
qdf_nbuf_t rx_ind_msg,
|
||||||
uint16_t peer_id, uint8_t tid, int num_mpdu_ranges)
|
uint16_t peer_id, uint8_t tid, int num_mpdu_ranges)
|
||||||
{
|
{
|
||||||
int mpdu_range, i;
|
int mpdu_range;
|
||||||
unsigned int seq_num_start = 0, seq_num_end = 0;
|
unsigned int seq_num_start = 0, seq_num_end = 0;
|
||||||
bool rx_ind_release = false;
|
bool rx_ind_release = false;
|
||||||
struct ol_txrx_vdev_t *vdev = NULL;
|
struct ol_txrx_vdev_t *vdev = NULL;
|
||||||
@@ -504,24 +534,8 @@ ol_rx_indication_handler(ol_txrx_pdev_handle pdev,
|
|||||||
vdev = peer->vdev;
|
vdev = peer->vdev;
|
||||||
ol_rx_ind_rssi_update(peer, rx_ind_msg);
|
ol_rx_ind_rssi_update(peer, rx_ind_msg);
|
||||||
|
|
||||||
if (vdev->opmode == wlan_op_mode_ocb) {
|
if (vdev->opmode == wlan_op_mode_ocb)
|
||||||
htt_rx_ind_legacy_rate(pdev->htt_pdev, rx_ind_msg,
|
ol_rx_ocb_update_peer(pdev, rx_ind_msg, peer);
|
||||||
&peer->last_pkt_legacy_rate,
|
|
||||||
&peer->last_pkt_legacy_rate_sel);
|
|
||||||
peer->last_pkt_rssi_cmb = htt_rx_ind_rssi_dbm(
|
|
||||||
pdev->htt_pdev, rx_ind_msg);
|
|
||||||
for (i = 0; i < 4; i++)
|
|
||||||
peer->last_pkt_rssi[i] =
|
|
||||||
htt_rx_ind_rssi_dbm_chain(
|
|
||||||
pdev->htt_pdev, rx_ind_msg, i);
|
|
||||||
htt_rx_ind_timestamp(pdev->htt_pdev, rx_ind_msg,
|
|
||||||
&peer->last_pkt_timestamp_microsec,
|
|
||||||
&peer->last_pkt_timestamp_submicrosec);
|
|
||||||
peer->last_pkt_tsf = htt_rx_ind_tsf32(pdev->htt_pdev,
|
|
||||||
rx_ind_msg);
|
|
||||||
peer->last_pkt_tid = htt_rx_ind_ext_tid(pdev->htt_pdev,
|
|
||||||
rx_ind_msg);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TXRX_STATS_INCR(pdev, priv.rx.normal.ppdus);
|
TXRX_STATS_INCR(pdev, priv.rx.normal.ppdus);
|
||||||
@@ -1187,6 +1201,91 @@ static inline void ol_rx_timestamp(struct cdp_cfg *cfg_pdev,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WLAN_FEATURE_DSRC
|
||||||
|
static inline
|
||||||
|
void ol_rx_ocb_prepare_rx_stats_header(struct ol_txrx_vdev_t *vdev,
|
||||||
|
struct ol_txrx_peer_t *peer,
|
||||||
|
qdf_nbuf_t msdu)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
struct ol_txrx_ocb_chan_info *chan_info = 0;
|
||||||
|
int packet_freq = peer->last_pkt_center_freq;
|
||||||
|
|
||||||
|
for (i = 0; i < vdev->ocb_channel_count; i++) {
|
||||||
|
if (vdev->ocb_channel_info[i].chan_freq == packet_freq) {
|
||||||
|
chan_info = &vdev->ocb_channel_info[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!chan_info || !chan_info->disable_rx_stats_hdr) {
|
||||||
|
struct ether_header eth_header = { {0} };
|
||||||
|
struct ocb_rx_stats_hdr_t rx_header = {0};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Construct the RX stats header and
|
||||||
|
* push that to the frontof the packet.
|
||||||
|
*/
|
||||||
|
rx_header.version = 1;
|
||||||
|
rx_header.length = sizeof(rx_header);
|
||||||
|
rx_header.channel_freq = peer->last_pkt_center_freq;
|
||||||
|
rx_header.rssi_cmb = peer->last_pkt_rssi_cmb;
|
||||||
|
qdf_mem_copy(rx_header.rssi, peer->last_pkt_rssi,
|
||||||
|
sizeof(rx_header.rssi));
|
||||||
|
|
||||||
|
if (peer->last_pkt_legacy_rate_sel)
|
||||||
|
rx_header.datarate = 0xFF;
|
||||||
|
else if (peer->last_pkt_legacy_rate == 0x8)
|
||||||
|
rx_header.datarate = 6;
|
||||||
|
else if (peer->last_pkt_legacy_rate == 0x9)
|
||||||
|
rx_header.datarate = 4;
|
||||||
|
else if (peer->last_pkt_legacy_rate == 0xA)
|
||||||
|
rx_header.datarate = 2;
|
||||||
|
else if (peer->last_pkt_legacy_rate == 0xB)
|
||||||
|
rx_header.datarate = 0;
|
||||||
|
else if (peer->last_pkt_legacy_rate == 0xC)
|
||||||
|
rx_header.datarate = 7;
|
||||||
|
else if (peer->last_pkt_legacy_rate == 0xD)
|
||||||
|
rx_header.datarate = 5;
|
||||||
|
else if (peer->last_pkt_legacy_rate == 0xE)
|
||||||
|
rx_header.datarate = 3;
|
||||||
|
else if (peer->last_pkt_legacy_rate == 0xF)
|
||||||
|
rx_header.datarate = 1;
|
||||||
|
else
|
||||||
|
rx_header.datarate = 0xFF;
|
||||||
|
|
||||||
|
rx_header.timestamp_microsec =
|
||||||
|
peer->last_pkt_timestamp_microsec;
|
||||||
|
rx_header.timestamp_submicrosec =
|
||||||
|
peer->last_pkt_timestamp_submicrosec;
|
||||||
|
rx_header.tsf32 = peer->last_pkt_tsf;
|
||||||
|
rx_header.ext_tid = peer->last_pkt_tid;
|
||||||
|
|
||||||
|
qdf_nbuf_push_head(msdu, sizeof(rx_header));
|
||||||
|
qdf_mem_copy(qdf_nbuf_data(msdu),
|
||||||
|
&rx_header, sizeof(rx_header));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Construct the ethernet header with
|
||||||
|
* type 0x8152 and push that to the
|
||||||
|
* front of the packet to indicate the
|
||||||
|
* RX stats header.
|
||||||
|
*/
|
||||||
|
eth_header.ether_type = QDF_SWAP_U16(ETHERTYPE_OCB_RX);
|
||||||
|
qdf_nbuf_push_head(msdu, sizeof(eth_header));
|
||||||
|
qdf_mem_copy(qdf_nbuf_data(msdu), ð_header,
|
||||||
|
sizeof(eth_header));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline
|
||||||
|
void ol_rx_ocb_prepare_rx_stats_header(struct ol_txrx_vdev_t *vdev,
|
||||||
|
struct ol_txrx_peer_t *peer,
|
||||||
|
qdf_nbuf_t msdu)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef WLAN_PARTIAL_REORDER_OFFLOAD
|
#ifdef WLAN_PARTIAL_REORDER_OFFLOAD
|
||||||
void
|
void
|
||||||
ol_rx_deliver(struct ol_txrx_vdev_t *vdev,
|
ol_rx_deliver(struct ol_txrx_vdev_t *vdev,
|
||||||
@@ -1276,95 +1375,10 @@ DONE:
|
|||||||
* If this is for OCB,
|
* If this is for OCB,
|
||||||
* then prepend the RX stats header.
|
* then prepend the RX stats header.
|
||||||
*/
|
*/
|
||||||
if (vdev->opmode == wlan_op_mode_ocb) {
|
if (vdev->opmode == wlan_op_mode_ocb)
|
||||||
int i;
|
ol_rx_ocb_prepare_rx_stats_header(vdev, peer,
|
||||||
struct ol_txrx_ocb_chan_info *chan_info = 0;
|
msdu);
|
||||||
int packet_freq = peer->last_pkt_center_freq;
|
|
||||||
|
|
||||||
for (i = 0; i < vdev->ocb_channel_count; i++) {
|
|
||||||
if (vdev->ocb_channel_info[i].
|
|
||||||
chan_freq == packet_freq) {
|
|
||||||
chan_info = &vdev->
|
|
||||||
ocb_channel_info[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!chan_info || !chan_info->
|
|
||||||
disable_rx_stats_hdr) {
|
|
||||||
struct ether_header eth_header = {
|
|
||||||
{0} };
|
|
||||||
struct ocb_rx_stats_hdr_t rx_header = {
|
|
||||||
0};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Construct the RX stats header and
|
|
||||||
* push that to the frontof the packet.
|
|
||||||
*/
|
|
||||||
rx_header.version = 1;
|
|
||||||
rx_header.length = sizeof(rx_header);
|
|
||||||
rx_header.channel_freq =
|
|
||||||
peer->last_pkt_center_freq;
|
|
||||||
rx_header.rssi_cmb =
|
|
||||||
peer->last_pkt_rssi_cmb;
|
|
||||||
qdf_mem_copy(rx_header.rssi,
|
|
||||||
peer->last_pkt_rssi,
|
|
||||||
sizeof(rx_header.rssi));
|
|
||||||
if (peer->last_pkt_legacy_rate_sel)
|
|
||||||
rx_header.datarate = 0xFF;
|
|
||||||
else if (peer->last_pkt_legacy_rate ==
|
|
||||||
0x8)
|
|
||||||
rx_header.datarate = 6;
|
|
||||||
else if (peer->last_pkt_legacy_rate ==
|
|
||||||
0x9)
|
|
||||||
rx_header.datarate = 4;
|
|
||||||
else if (peer->last_pkt_legacy_rate ==
|
|
||||||
0xA)
|
|
||||||
rx_header.datarate = 2;
|
|
||||||
else if (peer->last_pkt_legacy_rate ==
|
|
||||||
0xB)
|
|
||||||
rx_header.datarate = 0;
|
|
||||||
else if (peer->last_pkt_legacy_rate ==
|
|
||||||
0xC)
|
|
||||||
rx_header.datarate = 7;
|
|
||||||
else if (peer->last_pkt_legacy_rate ==
|
|
||||||
0xD)
|
|
||||||
rx_header.datarate = 5;
|
|
||||||
else if (peer->last_pkt_legacy_rate ==
|
|
||||||
0xE)
|
|
||||||
rx_header.datarate = 3;
|
|
||||||
else if (peer->last_pkt_legacy_rate ==
|
|
||||||
0xF)
|
|
||||||
rx_header.datarate = 1;
|
|
||||||
else
|
|
||||||
rx_header.datarate = 0xFF;
|
|
||||||
|
|
||||||
rx_header.timestamp_microsec = peer->
|
|
||||||
last_pkt_timestamp_microsec;
|
|
||||||
rx_header.timestamp_submicrosec = peer->
|
|
||||||
last_pkt_timestamp_submicrosec;
|
|
||||||
rx_header.tsf32 = peer->last_pkt_tsf;
|
|
||||||
rx_header.ext_tid = peer->last_pkt_tid;
|
|
||||||
|
|
||||||
qdf_nbuf_push_head(msdu,
|
|
||||||
sizeof(rx_header));
|
|
||||||
qdf_mem_copy(qdf_nbuf_data(msdu),
|
|
||||||
&rx_header, sizeof(rx_header));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Construct the ethernet header with
|
|
||||||
* type 0x8152 and push that to the
|
|
||||||
* front of the packet to indicate the
|
|
||||||
* RX stats header.
|
|
||||||
*/
|
|
||||||
eth_header.ether_type = QDF_SWAP_U16(
|
|
||||||
ETHERTYPE_OCB_RX);
|
|
||||||
qdf_nbuf_push_head(msdu,
|
|
||||||
sizeof(eth_header));
|
|
||||||
qdf_mem_copy(qdf_nbuf_data(msdu),
|
|
||||||
ð_header,
|
|
||||||
sizeof(eth_header));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
OL_RX_PEER_STATS_UPDATE(peer, msdu);
|
OL_RX_PEER_STATS_UPDATE(peer, msdu);
|
||||||
OL_RX_ERR_STATISTICS_1(pdev, vdev, peer, rx_desc,
|
OL_RX_ERR_STATISTICS_1(pdev, vdev, peer, rx_desc,
|
||||||
OL_RX_ERR_NONE);
|
OL_RX_ERR_NONE);
|
||||||
|
@@ -352,6 +352,7 @@ static inline int ol_tx_encap_wrapper(struct ol_txrx_pdev_t *pdev,
|
|||||||
*
|
*
|
||||||
* Return: true if ocb parsing is successful
|
* Return: true if ocb parsing is successful
|
||||||
*/
|
*/
|
||||||
|
#ifdef WLAN_FEATURE_DSRC
|
||||||
#define OCB_HEADER_VERSION 1
|
#define OCB_HEADER_VERSION 1
|
||||||
static bool parse_ocb_tx_header(qdf_nbuf_t msdu,
|
static bool parse_ocb_tx_header(qdf_nbuf_t msdu,
|
||||||
struct ocb_tx_ctrl_hdr_t *tx_ctrl)
|
struct ocb_tx_ctrl_hdr_t *tx_ctrl)
|
||||||
@@ -384,6 +385,13 @@ static bool parse_ocb_tx_header(qdf_nbuf_t msdu,
|
|||||||
qdf_nbuf_pull_head(msdu, tx_ctrl_hdr->length);
|
qdf_nbuf_pull_head(msdu, tx_ctrl_hdr->length);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
static bool parse_ocb_tx_header(qdf_nbuf_t msdu,
|
||||||
|
struct ocb_tx_ctrl_hdr_t *tx_ctrl)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ol_txrx_mgmt_tx_desc_alloc() - Allocate and initialize a tx descriptor
|
* ol_txrx_mgmt_tx_desc_alloc() - Allocate and initialize a tx descriptor
|
||||||
|
@@ -2556,6 +2556,7 @@ ol_txrx_remove_peers_for_vdev_no_lock(struct cdp_vdev *pvdev,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef WLAN_FEATURE_DSRC
|
||||||
/**
|
/**
|
||||||
* ol_txrx_set_ocb_chan_info() - set OCB channel info to vdev.
|
* ol_txrx_set_ocb_chan_info() - set OCB channel info to vdev.
|
||||||
* @vdev: vdev handle
|
* @vdev: vdev handle
|
||||||
@@ -2585,6 +2586,7 @@ ol_txrx_get_ocb_chan_info(struct cdp_vdev *pvdev)
|
|||||||
|
|
||||||
return vdev->ocb_channel_info;
|
return vdev->ocb_channel_info;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief specify the peer's authentication state
|
* @brief specify the peer's authentication state
|
||||||
@@ -5563,10 +5565,12 @@ static struct cdp_bus_ops ol_ops_bus = {
|
|||||||
.bus_resume = ol_txrx_bus_resume
|
.bus_resume = ol_txrx_bus_resume
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef WLAN_FEATURE_DSRC
|
||||||
static struct cdp_ocb_ops ol_ops_ocb = {
|
static struct cdp_ocb_ops ol_ops_ocb = {
|
||||||
.set_ocb_chan_info = ol_txrx_set_ocb_chan_info,
|
.set_ocb_chan_info = ol_txrx_set_ocb_chan_info,
|
||||||
.get_ocb_chan_info = ol_txrx_get_ocb_chan_info
|
.get_ocb_chan_info = ol_txrx_get_ocb_chan_info
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct cdp_throttle_ops ol_ops_throttle = {
|
static struct cdp_throttle_ops ol_ops_throttle = {
|
||||||
#ifdef QCA_SUPPORT_TX_THROTTLE
|
#ifdef QCA_SUPPORT_TX_THROTTLE
|
||||||
@@ -5684,7 +5688,9 @@ static struct cdp_ops ol_txrx_ops = {
|
|||||||
.rx_offld_ops = &ol_rx_offld_ops,
|
.rx_offld_ops = &ol_rx_offld_ops,
|
||||||
#endif
|
#endif
|
||||||
.bus_ops = &ol_ops_bus,
|
.bus_ops = &ol_ops_bus,
|
||||||
|
#ifdef WLAN_FEATURE_DSRC
|
||||||
.ocb_ops = &ol_ops_ocb,
|
.ocb_ops = &ol_ops_ocb,
|
||||||
|
#endif
|
||||||
.peer_ops = &ol_ops_peer,
|
.peer_ops = &ol_ops_peer,
|
||||||
.throttle_ops = &ol_ops_throttle,
|
.throttle_ops = &ol_ops_throttle,
|
||||||
.mob_stats_ops = &ol_ops_mob_stats,
|
.mob_stats_ops = &ol_ops_mob_stats,
|
||||||
|
@@ -2255,6 +2255,7 @@ QDF_STATUS sme_process_msg(tpAniSirGlobal pMac, struct scheduler_msg *pMsg)
|
|||||||
sme_err("Empty message for: %d", pMsg->type);
|
sme_err("Empty message for: %d", pMsg->type);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#ifdef WLAN_FEATURE_DSRC
|
||||||
case eWNI_SME_OCB_SET_CONFIG_RSP:
|
case eWNI_SME_OCB_SET_CONFIG_RSP:
|
||||||
if (pMac->sme.ocb_set_config_callback)
|
if (pMac->sme.ocb_set_config_callback)
|
||||||
pMac->sme.ocb_set_config_callback(
|
pMac->sme.ocb_set_config_callback(
|
||||||
@@ -2308,6 +2309,7 @@ QDF_STATUS sme_process_msg(tpAniSirGlobal pMac, struct scheduler_msg *pMsg)
|
|||||||
sme_err("No callback for Msg type: %d", pMsg->type);
|
sme_err("No callback for Msg type: %d", pMsg->type);
|
||||||
qdf_mem_free(pMsg->bodyptr);
|
qdf_mem_free(pMsg->bodyptr);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case eWNI_SME_SET_DUAL_MAC_CFG_RESP:
|
case eWNI_SME_SET_DUAL_MAC_CFG_RESP:
|
||||||
if (pMsg->bodyptr) {
|
if (pMsg->bodyptr) {
|
||||||
status = sme_process_dual_mac_config_resp(pMac,
|
status = sme_process_dual_mac_config_resp(pMac,
|
||||||
|
Reference in New Issue
Block a user