Эх сурвалжийг харах

qcacmn: Add fix to support proxy arp function call

a call to osif_proxy_arp need to be invoked inside UMAC_SUPPORT_PROXY_ARP
as it was protected under build macro UMAC_SUPPORT_PROXY_ARP.

Change-Id: I6e165a328ac65fb659cb9fbc3a0ce39fcbb6744b
nobelj 4 жил өмнө
parent
commit
20a3940590
1 өөрчлөгдсөн 43 нэмэгдсэн , 2 устгасан
  1. 43 2
      dp/wifi3.0/dp_tx.c

+ 43 - 2
dp/wifi3.0/dp_tx.c

@@ -3268,6 +3268,47 @@ qdf_nbuf_t dp_tx_send_vdev_id_check(struct cdp_soc_t *soc_hdl,
 	return dp_tx_send(soc_hdl, vdev_id, nbuf);
 }
 
+#ifdef UMAC_SUPPORT_PROXY_ARP
+/**
+ * dp_tx_proxy_arp() - Tx proxy arp handler
+ * @vdev: datapath vdev handle
+ * @buf: sk buffer
+ *
+ * Return: status
+ */
+static inline
+int dp_tx_proxy_arp(struct dp_vdev *vdev, qdf_nbuf_t nbuf)
+{
+	if (vdev->osif_proxy_arp)
+		return vdev->osif_proxy_arp(vdev->osif_vdev, nbuf);
+
+	/*
+	 * when UMAC_SUPPORT_PROXY_ARP is defined, we expect
+	 * osif_proxy_arp has a valid function pointer assigned
+	 * to it
+	 */
+	dp_tx_err("valid function pointer for osif_proxy_arp is expected!!\n");
+
+	return QDF_STATUS_NOT_INITIALIZED;
+}
+#else
+/**
+ * dp_tx_proxy_arp() - Tx proxy arp handler
+ * @vdev: datapath vdev handle
+ * @buf: sk buffer
+ *
+ * This function always return 0 when UMAC_SUPPORT_PROXY_ARP
+ * is not defined.
+ *
+ * Return: status
+ */
+static inline
+int dp_tx_proxy_arp(struct dp_vdev *vdev, qdf_nbuf_t nbuf)
+{
+	return QDF_STATUS_SUCCESS;
+}
+#endif
+
 /**
  * dp_tx_reinject_handler() - Tx Reinject Handler
  * @soc: datapath soc handle
@@ -3355,8 +3396,8 @@ void dp_tx_reinject_handler(struct dp_soc *soc,
 				  ((is_mcast && peer->wds_ecm.wds_tx_mcast_4addr) ||
 				   (is_ucast && peer->wds_ecm.wds_tx_ucast_4addr))))) {
 #else
-			((peer->bss_peer && vdev->osif_proxy_arp &&
-			  !(vdev->osif_proxy_arp(vdev->osif_vdev, nbuf))))) {
+			(peer->bss_peer &&
+			 (dp_tx_proxy_arp(vdev, nbuf) == QDF_STATUS_SUCCESS))) {
 #endif
 				peer_id = DP_INVALID_PEER;