diff --git a/core/dp/txrx3.0/dp_fisa_rx.c b/core/dp/txrx3.0/dp_fisa_rx.c index b891c6c33de2..77b52763775c 100644 --- a/core/dp/txrx3.0/dp_fisa_rx.c +++ b/core/dp/txrx3.0/dp_fisa_rx.c @@ -1001,6 +1001,22 @@ static int dp_add_nbuf_to_fisa_flow(struct dp_rx_fst *fisa_hdl, return FISA_AGGR_DONE; } +/** + * dp_is_nbuf_bypass_fisa() - FISA bypass check for RX frame + * @nbuf: RX nbuf pointer + * + * Return: true if FISA should be bypassed else false + */ +static bool dp_is_nbuf_bypass_fisa(qdf_nbuf_t nbuf) +{ + /* RX frame from non-regular path or DHCP packet */ + if (qdf_nbuf_is_exc_frame(nbuf) || + qdf_nbuf_is_ipv4_dhcp_pkt(nbuf)) + return true; + + return false; +} + /** * dp_fisa_rx() - Entry function to FISA to handle aggregation * @soc: core txrx main context @@ -1023,8 +1039,9 @@ QDF_STATUS dp_fisa_rx(struct dp_soc *soc, struct dp_vdev *vdev, while (head_nbuf) { next_nbuf = head_nbuf->next; qdf_nbuf_set_next(head_nbuf, NULL); - /* bypass FISA for non-regular RX frame */ - if (qdf_nbuf_is_exc_frame(head_nbuf)) + + /* bypass FISA check */ + if (dp_is_nbuf_bypass_fisa(head_nbuf)) goto deliver_nbuf; qdf_nbuf_push_head(head_nbuf, RX_PKT_TLVS_LEN +