Browse Source

qcacld-3.0: Use appropriate mac addr when fetching sta info

In SAP mode, as part of dhcp inspection, sta info is fetched
using the source address of the packet irrespective of
direction. This results in sta info fetch failure in case
of dhcp tx frames where source address is self mac address
which is not registered as part of SAP start. Due to this,
when sending dhcp ack frame, tx comp flag is not set in nbuf
cb causing dhcp stop ind to be not sent to firmware.

Fix is to use dhcp client mac address to fetch sta info.

Change-Id: Ia61b93d24f3d069b40fe8ffa5ee7b6ba1e30e7c5
CRs-Fixed: 2632275
Yeshwanth Sriram Guntuka 5 years ago
parent
commit
c35cf29a42
1 changed files with 2 additions and 4 deletions
  1. 2 4
      core/hdd/src/wlan_hdd_softap_tx_rx.c

+ 2 - 4
core/hdd/src/wlan_hdd_softap_tx_rx.c

@@ -319,8 +319,7 @@ int hdd_softap_inspect_dhcp_packet(struct hdd_adapter *adapter,
 	enum qdf_proto_subtype subtype = QDF_PROTO_INVALID;
 	struct hdd_station_info *hdd_sta_info;
 	int errno = 0;
-	struct qdf_mac_addr *src_mac, *macaddr =
-		(struct qdf_mac_addr *)(skb->data + QDF_NBUF_SRC_MAC_OFFSET);
+	struct qdf_mac_addr *src_mac;
 
 	if (((adapter->device_mode == QDF_SAP_MODE) ||
 	     (adapter->device_mode == QDF_P2P_GO_MODE)) &&
@@ -333,8 +332,7 @@ int hdd_softap_inspect_dhcp_packet(struct hdd_adapter *adapter,
 
 		subtype = qdf_nbuf_get_dhcp_subtype(skb);
 		hdd_sta_info = hdd_get_sta_info_by_mac(&adapter->sta_info_list,
-						       macaddr->bytes);
-
+						       src_mac->bytes);
 		if (!hdd_sta_info) {
 			hdd_debug("Station not found");
 			return -EINVAL;