Просмотр исходного кода

qcacmn: Fix double memfree issue in MCAST2UCAST

Fix the condition check for return value in DP transmit path
for MCAST2UCAST

Change-Id: I81220838ce1c867afdab6447a30d7d7076f0c094
CRs-Fixed: 2164244
Pamidipati, Vijay 7 лет назад
Родитель
Сommit
aeff44499d
3 измененных файлов с 12 добавлено и 6 удалено
  1. 2 1
      dp/wifi3.0/dp_tx.c
  2. 1 1
      dp/wifi3.0/dp_tx.h
  3. 9 4
      dp/wifi3.0/dp_tx_me.c

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

@@ -1744,7 +1744,8 @@ qdf_nbuf_t dp_tx_send(void *vap_dev, qdf_nbuf_t nbuf)
 			DP_STATS_INC_PKT(vdev,
 					tx_i.mcast_en.mcast_pkt, 1,
 					qdf_nbuf_len(nbuf));
-			if (dp_tx_prepare_send_me(vdev, nbuf) > 0) {
+			if (dp_tx_prepare_send_me(vdev, nbuf) !=
+					QDF_STATUS_SUCCESS) {
 				qdf_nbuf_free(nbuf);
 				return NULL;
 			}

+ 1 - 1
dp/wifi3.0/dp_tx.h

@@ -151,7 +151,7 @@ qdf_nbuf_t dp_tx_non_std(struct cdp_vdev *vdev_handle,
 
 uint32_t dp_tx_comp_handler(struct dp_soc *soc, void *hal_srng, uint32_t quota);
 
-int32_t
+QDF_STATUS
 dp_tx_prepare_send_me(struct dp_vdev *vdev, qdf_nbuf_t nbuf);
 
 #ifndef CONVERGED_TDLS_ENABLE

+ 9 - 4
dp/wifi3.0/dp_tx_me.c

@@ -181,11 +181,16 @@ dp_tx_me_free_descriptor(struct cdp_pdev *pdev_handle)
  *
  * Return: no of packets transmitted
  */
-int32_t
+QDF_STATUS
 dp_tx_prepare_send_me(struct dp_vdev *vdev, qdf_nbuf_t nbuf)
 {
-	if (vdev->me_convert)
-		return vdev->me_convert(vdev->osif_vdev, nbuf);
-	return 0;
+	if (vdev->me_convert) {
+		 if (vdev->me_convert(vdev->osif_vdev, nbuf) < 0)
+			return QDF_STATUS_E_FAILURE;
+
+		 return QDF_STATUS_SUCCESS;
+	}
+
+	return QDF_STATUS_E_FAILURE;
 }
 #endif