qcacmn: Register separate function pointer to receive EAPOL frames

Add changes to register separate function pointer to receive EAPOL
frames instead of using regular RX path and adding export symbol
for __qdf_nbuf_data_get_eapol_subtype() to access in it multiple
modules

Change-Id: Id05b982d31a7e008536d10dd5281e88cceba96db
This commit is contained in:
Shiva Sankar Gajula
2021-08-21 09:09:56 +05:30
committed by Madan Koyyalamudi
parent ef337fbe1f
commit dcbdb29d04
8 changed files with 177 additions and 15 deletions

View File

@@ -1582,13 +1582,23 @@ static void dp_rx_check_delivery_to_stack(struct dp_soc *soc,
}
#endif /* ifdef DELIVERY_TO_STACK_STATUS_CHECK */
void dp_rx_deliver_to_stack(struct dp_soc *soc,
/*
* dp_rx_validate_rx_callbacks() - validate rx callbacks
* @soc DP soc
* @vdev: DP vdev handle
* @peer: pointer to the peer object
* nbuf_head: skb list head
*
* Return: QDF_STATUS - QDF_STATUS_SUCCESS
* QDF_STATUS_E_FAILURE
*/
static inline QDF_STATUS
dp_rx_validate_rx_callbacks(struct dp_soc *soc,
struct dp_vdev *vdev,
struct dp_peer *peer,
qdf_nbuf_t nbuf_head,
qdf_nbuf_t nbuf_tail)
qdf_nbuf_t nbuf_head)
{
int num_nbuf = 0;
int num_nbuf;
if (qdf_unlikely(!vdev || vdev->delete.pending)) {
num_nbuf = dp_rx_drop_nbuf_list(NULL, nbuf_head);
@@ -1598,7 +1608,7 @@ void dp_rx_deliver_to_stack(struct dp_soc *soc,
* belonged. Hence we update the soc rx error stats.
*/
DP_STATS_INC(soc, rx.err.invalid_vdev, num_nbuf);
return;
return QDF_STATUS_E_FAILURE;
}
/*
@@ -1613,9 +1623,22 @@ void dp_rx_deliver_to_stack(struct dp_soc *soc,
nbuf_head);
DP_STATS_DEC(peer, rx.to_stack.num, num_nbuf);
}
return;
return QDF_STATUS_E_FAILURE;
}
return QDF_STATUS_SUCCESS;
}
QDF_STATUS dp_rx_deliver_to_stack(struct dp_soc *soc,
struct dp_vdev *vdev,
struct dp_peer *peer,
qdf_nbuf_t nbuf_head,
qdf_nbuf_t nbuf_tail)
{
if (dp_rx_validate_rx_callbacks(soc, vdev, peer, nbuf_head) !=
QDF_STATUS_SUCCESS)
return QDF_STATUS_E_FAILURE;
if (qdf_unlikely(vdev->rx_decap_type == htt_cmn_pkt_type_raw) ||
(vdev->rx_decap_type == htt_cmn_pkt_type_native_wifi)) {
vdev->osif_rsim_rx_decap(vdev->osif_vdev, &nbuf_head,
@@ -1623,8 +1646,27 @@ void dp_rx_deliver_to_stack(struct dp_soc *soc,
}
dp_rx_check_delivery_to_stack(soc, vdev, peer, nbuf_head);
return QDF_STATUS_SUCCESS;
}
#ifdef QCA_SUPPORT_EAPOL_OVER_CONTROL_PORT
QDF_STATUS dp_rx_eapol_deliver_to_stack(struct dp_soc *soc,
struct dp_vdev *vdev,
struct dp_peer *peer,
qdf_nbuf_t nbuf_head,
qdf_nbuf_t nbuf_tail)
{
if (dp_rx_validate_rx_callbacks(soc, vdev, peer, nbuf_head) !=
QDF_STATUS_SUCCESS)
return QDF_STATUS_E_FAILURE;
vdev->osif_rx_eapol(vdev->osif_vdev, nbuf_head);
return QDF_STATUS_SUCCESS;
}
#endif
#ifndef QCA_HOST_MODE_WIFI_DISABLED
#ifdef VDEV_PEER_PROTOCOL_COUNT
#define dp_rx_msdu_stats_update_prot_cnts(vdev_hdl, nbuf, peer) \