qcacld-3.0: Do not take wakelock if ip multicast packet

Currently, wakelock is taken for all unicast packets.
Do not take wakelock if packet is IP multicast packet.

Change-Id: If197cbb58d1414adedb1d29f9c2bd67be83e95b4
CRs-Fixed: 3807621
This commit is contained in:
Ananya Gupta 2024-05-14 10:26:43 +05:30 committed by Ravindra Konda
parent 50422eee58
commit b74a18ea3f

View File

@ -1669,7 +1669,7 @@ QDF_STATUS dp_rx_packet_cbk(void *dp_link_context,
bool is_arp_req;
enum qdf_proto_subtype subtype = QDF_PROTO_INVALID;
bool is_eapol, send_over_nl;
bool is_dhcp;
bool is_dhcp, is_ip_mcast;
struct dp_tx_rx_stats *stats;
QDF_STATUS status;
uint8_t pkt_type;
@ -1696,6 +1696,7 @@ QDF_STATUS dp_rx_packet_cbk(void *dp_link_context,
is_arp_req = false;
is_eapol = false;
is_dhcp = false;
is_ip_mcast = false;
send_over_nl = false;
if (qdf_nbuf_is_ipv4_arp_pkt(nbuf)) {
@ -1735,6 +1736,9 @@ QDF_STATUS dp_rx_packet_cbk(void *dp_link_context,
dhcp_ack_count;
is_dhcp = true;
}
} else if (qdf_nbuf_data_is_ipv4_mcast_pkt(nbuf->data) ||
qdf_nbuf_data_is_ipv6_mcast_pkt(nbuf->data)) {
is_ip_mcast = true;
}
wlan_dp_pkt_add_timestamp(dp_intf, QDF_PKT_RX_DRIVER_EXIT,
@ -1812,7 +1816,7 @@ QDF_STATUS dp_rx_packet_cbk(void *dp_link_context,
/* hold configurable wakelock for unicast traffic */
if (!dp_is_current_high_throughput(dp_ctx) &&
dp_ctx->dp_cfg.rx_wakelock_timeout &&
dp_link->conn_info.is_authenticated)
dp_link->conn_info.is_authenticated && !is_ip_mcast)
wake_lock = dp_is_rx_wake_lock_needed(nbuf, is_arp_req);
if (wake_lock) {