Преглед на файлове

qcacld-3.0: Relocate wlan_hdd_set_filter()

Function wlan_hdd_set_filter() is currently located in
wlan_hdd_wext.c, but this function is independent of wireless
extensions, so relocate it as part of the plan to omit wlan_hdd_wext.c
from the build when wireless extensions is not enabled.

Change-Id: I7377806ad27ec8d6fa361523d290156a7facacac
CRs-Fixed: 2228938
Jeff Johnson преди 7 години
родител
ревизия
11ba331f28
променени са 2 файла, в които са добавени 161 реда и са изтрити 169 реда
  1. 161 1
      core/hdd/src/wlan_hdd_packet_filter.c
  2. 0 168
      core/hdd/src/wlan_hdd_wext.c

+ 161 - 1
core/hdd/src/wlan_hdd_packet_filter.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -99,3 +99,163 @@ int hdd_disable_default_pkt_filters(struct hdd_adapter *adapter)
 
 	return 0;
 }
+
+int wlan_hdd_set_filter(struct hdd_context *hdd_ctx,
+				struct pkt_filter_cfg *request,
+				uint8_t sessionId)
+{
+	struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req = NULL;
+	struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param = NULL;
+	int i = 0;
+	QDF_STATUS status = QDF_STATUS_SUCCESS;
+
+	if (hdd_ctx->config->disablePacketFilter) {
+		hdd_warn("Packet filtering disabled in ini");
+		return 0;
+	}
+
+	/* Debug display of request components. */
+	hdd_debug("Packet Filter Request : FA %d params %d",
+		request->filter_action, request->num_params);
+
+	switch (request->filter_action) {
+	case HDD_RCV_FILTER_SET:
+		hdd_debug("Set Packet Filter Request for Id: %d",
+			request->filter_id);
+
+		pmo_set_pkt_fltr_req =
+			qdf_mem_malloc(sizeof(*pmo_set_pkt_fltr_req));
+		if (!pmo_set_pkt_fltr_req) {
+			hdd_err("unable to allocate pmo_set_pkt_fltr_req");
+			return QDF_STATUS_E_NOMEM;
+		}
+
+		pmo_set_pkt_fltr_req->filter_id = request->filter_id;
+		if (request->num_params >= HDD_MAX_CMP_PER_PACKET_FILTER) {
+			hdd_err("Number of Params exceed Max limit %d",
+				request->num_params);
+			status = QDF_STATUS_E_INVAL;
+			goto out;
+		}
+		pmo_set_pkt_fltr_req->num_params = request->num_params;
+		pmo_set_pkt_fltr_req->coalesce_time = 0;
+		pmo_set_pkt_fltr_req->filter_type = PMO_RCV_FILTER_TYPE_FILTER_PKT;
+		for (i = 0; i < request->num_params; i++) {
+			pmo_set_pkt_fltr_req->params_data[i].protocol_layer =
+				request->params_data[i].protocol_layer;
+			pmo_set_pkt_fltr_req->params_data[i].compare_flag =
+				request->params_data[i].compare_flag;
+			pmo_set_pkt_fltr_req->params_data[i].data_offset =
+				request->params_data[i].data_offset;
+			pmo_set_pkt_fltr_req->params_data[i].data_length =
+				request->params_data[i].data_length;
+			pmo_set_pkt_fltr_req->params_data[i].reserved = 0;
+
+			if (request->params_data[i].data_offset >
+			    SIR_MAX_FILTER_TEST_DATA_OFFSET) {
+				hdd_err("Invalid data offset %u for param %d (max = %d)",
+					request->params_data[i].data_offset,
+					i,
+					SIR_MAX_FILTER_TEST_DATA_OFFSET);
+				status = QDF_STATUS_E_INVAL;
+				goto out;
+			}
+
+			if (request->params_data[i].data_length >
+				SIR_MAX_FILTER_TEST_DATA_LEN) {
+				hdd_err("Error invalid data length %d",
+					request->params_data[i].data_length);
+				status = QDF_STATUS_E_INVAL;
+				goto out;
+			}
+
+			hdd_debug("Proto %d Comp Flag %d Filter Type %d",
+				request->params_data[i].protocol_layer,
+				request->params_data[i].compare_flag,
+				pmo_set_pkt_fltr_req->filter_type);
+
+			hdd_debug("Data Offset %d Data Len %d",
+				request->params_data[i].data_offset,
+				request->params_data[i].data_length);
+
+			if (sizeof(
+			    pmo_set_pkt_fltr_req->params_data[i].compare_data)
+				< (request->params_data[i].data_length)) {
+				hdd_err("Error invalid data length %d",
+					request->params_data[i].data_length);
+				status = QDF_STATUS_E_INVAL;
+				goto out;
+			}
+
+			memcpy(
+			    &pmo_set_pkt_fltr_req->params_data[i].compare_data,
+			       request->params_data[i].compare_data,
+			       request->params_data[i].data_length);
+			memcpy(&pmo_set_pkt_fltr_req->params_data[i].data_mask,
+			       request->params_data[i].data_mask,
+			       request->params_data[i].data_length);
+
+			hdd_debug("CData %d CData %d CData %d CData %d CData %d CData %d",
+				request->params_data[i].compare_data[0],
+				request->params_data[i].compare_data[1],
+				request->params_data[i].compare_data[2],
+				request->params_data[i].compare_data[3],
+				request->params_data[i].compare_data[4],
+				request->params_data[i].compare_data[5]);
+
+			hdd_debug("MData %d MData %d MData %d MData %d MData %d MData %d",
+				request->params_data[i].data_mask[0],
+				request->params_data[i].data_mask[1],
+				request->params_data[i].data_mask[2],
+				request->params_data[i].data_mask[3],
+				request->params_data[i].data_mask[4],
+				request->params_data[i].data_mask[5]);
+		}
+
+		if (QDF_STATUS_SUCCESS !=
+			pmo_ucfg_set_pkt_filter(hdd_ctx->hdd_psoc,
+				pmo_set_pkt_fltr_req,
+				sessionId)) {
+			hdd_err("Failure to execute Set Filter");
+			status = QDF_STATUS_E_INVAL;
+			goto out;
+		}
+
+		break;
+
+	case HDD_RCV_FILTER_CLEAR:
+		hdd_debug("Clear Packet Filter Request for Id: %d",
+			request->filter_id);
+
+		pmo_clr_pkt_fltr_param = qdf_mem_malloc(
+					sizeof(*pmo_clr_pkt_fltr_param));
+		if (!pmo_clr_pkt_fltr_param) {
+			hdd_err("unable to allocate pmo_clr_pkt_fltr_param");
+			return QDF_STATUS_E_NOMEM;
+		}
+
+		pmo_clr_pkt_fltr_param->filter_id = request->filter_id;
+		if (QDF_STATUS_SUCCESS !=
+			pmo_ucfg_clear_pkt_filter(hdd_ctx->hdd_psoc,
+			    pmo_clr_pkt_fltr_param,
+			    sessionId)) {
+			hdd_err("Failure to execute Clear Filter");
+			status = QDF_STATUS_E_INVAL;
+			goto out;
+		}
+		break;
+
+	default:
+		hdd_err("Packet Filter Request: Invalid %d",
+		       request->filter_action);
+		return -EINVAL;
+	}
+
+out:
+	if (pmo_set_pkt_fltr_req)
+		qdf_mem_free(pmo_set_pkt_fltr_req);
+	if (pmo_clr_pkt_fltr_param)
+		qdf_mem_free(pmo_clr_pkt_fltr_param);
+
+	return status;
+}

+ 0 - 168
core/hdd/src/wlan_hdd_wext.c

@@ -8245,174 +8245,6 @@ static int iw_set_keepalive_params(struct net_device *dev,
 }
 
 #ifdef WLAN_FEATURE_PACKET_FILTERING
-/**
- * wlan_hdd_set_filter() - Set packet filter
- * @hdd_ctx: Global HDD context
- * @request: Packet filter request struct
- * @sessionId: Target session for the request
- *
- * Return: 0 on success, non-zero on error
- */
-int wlan_hdd_set_filter(struct hdd_context *hdd_ctx,
-				struct pkt_filter_cfg *request,
-				uint8_t sessionId)
-{
-	struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req = NULL;
-	struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param = NULL;
-	int i = 0;
-	QDF_STATUS status = QDF_STATUS_SUCCESS;
-
-	if (hdd_ctx->config->disablePacketFilter) {
-		hdd_warn("Packet filtering disabled in ini");
-		return 0;
-	}
-
-	/* Debug display of request components. */
-	hdd_debug("Packet Filter Request : FA %d params %d",
-		request->filter_action, request->num_params);
-
-	switch (request->filter_action) {
-	case HDD_RCV_FILTER_SET:
-		hdd_debug("Set Packet Filter Request for Id: %d",
-			request->filter_id);
-
-		pmo_set_pkt_fltr_req =
-			qdf_mem_malloc(sizeof(*pmo_set_pkt_fltr_req));
-		if (!pmo_set_pkt_fltr_req) {
-			hdd_err("unable to allocate pmo_set_pkt_fltr_req");
-			return QDF_STATUS_E_NOMEM;
-		}
-
-		pmo_set_pkt_fltr_req->filter_id = request->filter_id;
-		if (request->num_params >= HDD_MAX_CMP_PER_PACKET_FILTER) {
-			hdd_err("Number of Params exceed Max limit %d",
-				request->num_params);
-			status = QDF_STATUS_E_INVAL;
-			goto out;
-		}
-		pmo_set_pkt_fltr_req->num_params = request->num_params;
-		pmo_set_pkt_fltr_req->coalesce_time = 0;
-		pmo_set_pkt_fltr_req->filter_type = PMO_RCV_FILTER_TYPE_FILTER_PKT;
-		for (i = 0; i < request->num_params; i++) {
-			pmo_set_pkt_fltr_req->params_data[i].protocol_layer =
-				request->params_data[i].protocol_layer;
-			pmo_set_pkt_fltr_req->params_data[i].compare_flag =
-				request->params_data[i].compare_flag;
-			pmo_set_pkt_fltr_req->params_data[i].data_offset =
-				request->params_data[i].data_offset;
-			pmo_set_pkt_fltr_req->params_data[i].data_length =
-				request->params_data[i].data_length;
-			pmo_set_pkt_fltr_req->params_data[i].reserved = 0;
-
-			if (request->params_data[i].data_offset >
-			    SIR_MAX_FILTER_TEST_DATA_OFFSET) {
-				hdd_err("Invalid data offset %u for param %d (max = %d)",
-					request->params_data[i].data_offset,
-					i,
-					SIR_MAX_FILTER_TEST_DATA_OFFSET);
-				status = QDF_STATUS_E_INVAL;
-				goto out;
-			}
-
-			if (request->params_data[i].data_length >
-				SIR_MAX_FILTER_TEST_DATA_LEN) {
-				hdd_err("Error invalid data length %d",
-					request->params_data[i].data_length);
-				status = QDF_STATUS_E_INVAL;
-				goto out;
-			}
-
-			hdd_debug("Proto %d Comp Flag %d Filter Type %d",
-				request->params_data[i].protocol_layer,
-				request->params_data[i].compare_flag,
-				pmo_set_pkt_fltr_req->filter_type);
-
-			hdd_debug("Data Offset %d Data Len %d",
-				request->params_data[i].data_offset,
-				request->params_data[i].data_length);
-
-			if (sizeof(
-			    pmo_set_pkt_fltr_req->params_data[i].compare_data)
-				< (request->params_data[i].data_length)) {
-				hdd_err("Error invalid data length %d",
-					request->params_data[i].data_length);
-				status = QDF_STATUS_E_INVAL;
-				goto out;
-			}
-
-			memcpy(
-			    &pmo_set_pkt_fltr_req->params_data[i].compare_data,
-			       request->params_data[i].compare_data,
-			       request->params_data[i].data_length);
-			memcpy(&pmo_set_pkt_fltr_req->params_data[i].data_mask,
-			       request->params_data[i].data_mask,
-			       request->params_data[i].data_length);
-
-			hdd_debug("CData %d CData %d CData %d CData %d CData %d CData %d",
-				request->params_data[i].compare_data[0],
-				request->params_data[i].compare_data[1],
-				request->params_data[i].compare_data[2],
-				request->params_data[i].compare_data[3],
-				request->params_data[i].compare_data[4],
-				request->params_data[i].compare_data[5]);
-
-			hdd_debug("MData %d MData %d MData %d MData %d MData %d MData %d",
-				request->params_data[i].data_mask[0],
-				request->params_data[i].data_mask[1],
-				request->params_data[i].data_mask[2],
-				request->params_data[i].data_mask[3],
-				request->params_data[i].data_mask[4],
-				request->params_data[i].data_mask[5]);
-		}
-
-		if (QDF_STATUS_SUCCESS !=
-			pmo_ucfg_set_pkt_filter(hdd_ctx->hdd_psoc,
-				pmo_set_pkt_fltr_req,
-				sessionId)) {
-			hdd_err("Failure to execute Set Filter");
-			status = QDF_STATUS_E_INVAL;
-			goto out;
-		}
-
-		break;
-
-	case HDD_RCV_FILTER_CLEAR:
-		hdd_debug("Clear Packet Filter Request for Id: %d",
-			request->filter_id);
-
-		pmo_clr_pkt_fltr_param = qdf_mem_malloc(
-					sizeof(*pmo_clr_pkt_fltr_param));
-		if (!pmo_clr_pkt_fltr_param) {
-			hdd_err("unable to allocate pmo_clr_pkt_fltr_param");
-			return QDF_STATUS_E_NOMEM;
-		}
-
-		pmo_clr_pkt_fltr_param->filter_id = request->filter_id;
-		if (QDF_STATUS_SUCCESS !=
-			pmo_ucfg_clear_pkt_filter(hdd_ctx->hdd_psoc,
-			    pmo_clr_pkt_fltr_param,
-			    sessionId)) {
-			hdd_err("Failure to execute Clear Filter");
-			status = QDF_STATUS_E_INVAL;
-			goto out;
-		}
-		break;
-
-	default:
-		hdd_err("Packet Filter Request: Invalid %d",
-		       request->filter_action);
-		return -EINVAL;
-	}
-
-out:
-	if (pmo_set_pkt_fltr_req)
-		qdf_mem_free(pmo_set_pkt_fltr_req);
-	if (pmo_clr_pkt_fltr_param)
-		qdf_mem_free(pmo_clr_pkt_fltr_param);
-
-	return status;
-}
-
 /**
  * __iw_set_packet_filter_params() - set packet filter parameters in target
  * @dev: Pointer to netdev