qcacmn: SmartMesh add support for multi radio

Add support for multi-radio  to smart mesh feature

Change-Id: I21f1a59be419cf68b3c038a08c58f17c82df33bb
CRs-Fixed: 2017269
This commit is contained in:
Pratik Gandhi 2017-07-28 19:18:02 +05:30 • committed by Nandini Suresh
commit 7613908cb9
3 changed files with 15 additions and 11 deletions

View file

@ -646,8 +646,8 @@ uint8_t dp_rx_process_invalid_peer(struct dp_soc *soc, qdf_nbuf_t mpdu)
vdev = dp_rx_nac_filter(pdev, rx_pkt_hdr);
if (vdev) {
dp_rx_mon_deliver(soc, i,
soc->invalid_peer_head_msdu,
soc->invalid_peer_tail_msdu);
pdev->invalid_peer_head_msdu,
pdev->invalid_peer_tail_msdu);
return 0;
}
}

View file

@ -209,18 +209,18 @@ dp_rx_2k_jump_handle(struct dp_soc *soc, void *ring_desc,
static bool
dp_rx_chain_msdus(struct dp_soc *soc, qdf_nbuf_t nbuf,
struct dp_rx_desc *rx_desc)
struct dp_rx_desc *rx_desc, uint8_t mac_id)
{
bool mpdu_done = false;
/* TODO: Currently only single radio is supported, hence
* pdev hard coded to '0' index
*/
struct dp_pdev *dp_pdev = soc->pdev_list[0];
struct dp_pdev *dp_pdev = soc->pdev_list[mac_id];
if (hal_rx_msdu_end_first_msdu_get(rx_desc->rx_buf_start)) {
qdf_nbuf_set_chfrag_start(rx_desc->nbuf, 1);
soc->invalid_peer_head_msdu = NULL;
soc->invalid_peer_tail_msdu = NULL;
dp_pdev->invalid_peer_head_msdu = NULL;
dp_pdev->invalid_peer_tail_msdu = NULL;
hal_rx_mon_hw_desc_get_mpdu_status(rx_desc->rx_buf_start,
&(dp_pdev->ppdu_info.rx_status));
@ -232,8 +232,8 @@ dp_rx_chain_msdus(struct dp_soc *soc, qdf_nbuf_t nbuf,
mpdu_done = true;
}
DP_RX_LIST_APPEND(soc->invalid_peer_head_msdu,
soc->invalid_peer_tail_msdu,
DP_RX_LIST_APPEND(dp_pdev->invalid_peer_head_msdu,
dp_pdev->invalid_peer_tail_msdu,
nbuf);
return mpdu_done;
@ -277,6 +277,7 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc, struct dp_rx_desc *rx_desc,
struct dp_ast_entry *ase;
uint16_t sa_idx;
uint8_t *data;
uint8_t pool_id;
rx_bufs_used++;
@ -287,6 +288,8 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc, struct dp_rx_desc *rx_desc,
rx_desc->rx_buf_start = qdf_nbuf_data(nbuf);
pool_id = rx_desc->pool_id;
l2_hdr_offset =
hal_rx_msdu_end_l3_hdr_padding_get(rx_desc->rx_buf_start);
@ -319,7 +322,7 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc, struct dp_rx_desc *rx_desc,
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
FL("peer is NULL"));
mpdu_done = dp_rx_chain_msdus(soc, nbuf, rx_desc);
mpdu_done = dp_rx_chain_msdus(soc, nbuf, rx_desc, pool_id);
if (mpdu_done)
dp_rx_process_invalid_peer(soc, nbuf);

View file

@ -754,8 +754,6 @@ struct dp_soc {
/* Obj Mgr SoC */
struct wlan_objmgr_psoc *psoc;
qdf_nbuf_t invalid_peer_head_msdu;
qdf_nbuf_t invalid_peer_tail_msdu;
#ifdef QCA_SUPPORT_SON
/* The timer to check station's inactivity status */
os_timer_t pdev_bs_inact_timer;
@ -966,6 +964,9 @@ struct dp_pdev {
qdf_spinlock_t neighbour_peer_mutex;
/* Neighnour peer list */
TAILQ_HEAD(, dp_neighbour_peer) neighbour_peers_list;
/* msdu chain head & tail */
qdf_nbuf_t invalid_peer_head_msdu;
qdf_nbuf_t invalid_peer_tail_msdu;
/* Band steering */
/* TBD */