Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3077c099 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge 755a434a on remote branch

Change-Id: Id9b818c844864c4e2280aa5d5caa9ea50ae7ea64
parents a7242512 755a434a
Loading
Loading
Loading
Loading
+21 −3
Original line number Diff line number Diff line
@@ -2139,6 +2139,7 @@ struct cdp_rx_indication_msdu {
 * @lro_enable: Enable/Disable LRO
 * @gro_enable: Enable/Disable GRO
 * @flow_steering_enable: Enable/Disable Rx Hash based flow steering
 * @p2p_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for P2P
 * @nan_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for NAN
 * @tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload
 * @napi_enable: Enable/Disable Napi
@@ -2155,6 +2156,7 @@ struct cdp_config_params {
	unsigned int lro_enable:1;
	unsigned int gro_enable:1;
	unsigned int flow_steering_enable:1;
	unsigned int p2p_tcp_udp_checksumoffload:1;
	unsigned int nan_tcp_udp_checksumoffload:1;
	unsigned int tcp_udp_checksumoffload:1;
	unsigned int napi_enable:1;
@@ -2211,13 +2213,29 @@ struct cdp_monitor_filter {
};

/**
 * cdp_dp_cfg - dp ini config enum
 * enum cdp_dp_cfg - CDP ENUMs to get to DP configation
 * @cfg_dp_enable_data_stall: context passed to be used by consumer
 * @cfg_dp_enable_p2p_ip_tcp_udp_checksum_offload: get P2P checksum config
 * @cfg_dp_enable_nan_ip_tcp_udp_checksum_offload: get NAN TX checksum config
 * @cfg_dp_enable_ip_tcp_udp_checksum_offload: get TX checksum config for others
 * @cfg_dp_tso_enable: get TSO enable config
 * @cfg_dp_lro_enable: get LRO enable config
 * @cfg_dp_gro_enable: get GRP enable config
 * @cfg_dp_tx_flow_start_queue_offset: get DP TX flow start queue offset
 * @cfg_dp_tx_flow_stop_queue_threshold: get DP TX flow stop queue threshold
 * @cfg_dp_ipa_uc_tx_buf_size: get IPA TX buf size config
 * @cfg_dp_ipa_uc_tx_partition_base: get IPA UC TX partition base config
 * @cfg_dp_ipa_uc_rx_ind_ring_count: get IPA rx indication ring count config
 * @cfg_dp_enable_flow_steering: get flow steerint enable config
 * @cfg_dp_reorder_offload_supported: get reorder offload support config
 * @cfg_dp_ce_classify_enable: get CE classify enable config
 * @cfg_dp_disable_intra_bss_fwd: get intra bss fwd config
 * @cfg_dp_pktlog_buffer_size: get packet log buffer size config
 */
enum cdp_dp_cfg {
	cfg_dp_enable_data_stall,
	/* checksum offload for NAN interface */
	cfg_dp_enable_p2p_ip_tcp_udp_checksum_offload,
	cfg_dp_enable_nan_ip_tcp_udp_checksum_offload,
	/* generic checksum offload for other interfaces */
	cfg_dp_enable_ip_tcp_udp_checksum_offload,
	cfg_dp_tso_enable,
	cfg_dp_lro_enable,
+2 −0
Original line number Diff line number Diff line
@@ -286,6 +286,8 @@ struct txrx_pdev_cfg_param_t {
	bool ip_tcp_udp_checksum_offload;
	/* IP, TCP and UDP checksum offload for NAN Mode*/
	bool nan_ip_tcp_udp_checksum_offload;
	/* IP, TCP and UDP checksum offload for P2P Mode*/
	bool p2p_ip_tcp_udp_checksum_offload;
	/* Rx processing in thread from TXRX */
	bool enable_rxthread;
	/* CE classification enabled through INI */
+7 −7
Original line number Diff line number Diff line
@@ -1775,20 +1775,20 @@ bool dp_ipa_rx_intrabss_fwd(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
	if (!qdf_mem_cmp(eh->h_dest, vdev->mac_addr.raw, QDF_MAC_ADDR_SIZE))
		return false;

	da_peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev, eh->h_dest);
	da_peer = dp_find_peer_by_addr_and_vdev(dp_pdev_to_cdp_pdev(pdev),
						dp_vdev_to_cdp_vdev(vdev),
						eh->h_dest);

	if (!da_peer)
		return false;

	if (da_peer->vdev != vdev)
		return false;
	sa_peer = dp_find_peer_by_addr_and_vdev(dp_pdev_to_cdp_pdev(pdev),
						dp_vdev_to_cdp_vdev(vdev),
						eh->h_source);

	sa_peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev, eh->h_source);
	if (!sa_peer)
		return false;

	if (sa_peer->vdev != vdev)
		return false;

	/*
	 * In intra-bss forwarding scenario, skb is allocated by IPA driver.
	 * Need to add skb to internal tracking table to avoid nbuf memory
+5 −0
Original line number Diff line number Diff line
@@ -9220,6 +9220,8 @@ QDF_STATUS dp_update_config_parameters(struct cdp_soc *psoc,
	soc->wlan_cfg_ctx->tso_enabled = params->tso_enable;
	soc->wlan_cfg_ctx->lro_enabled = params->lro_enable;
	soc->wlan_cfg_ctx->rx_hash = params->flow_steering_enable;
	soc->wlan_cfg_ctx->p2p_tcp_udp_checksumoffload =
				params->p2p_tcp_udp_checksumoffload;
	soc->wlan_cfg_ctx->nan_tcp_udp_checksumoffload =
				params->nan_tcp_udp_checksumoffload;
	soc->wlan_cfg_ctx->tcp_udp_checksumoffload =
@@ -9852,6 +9854,9 @@ static uint32_t dp_get_cfg(struct cdp_soc_t *soc, enum cdp_dp_cfg cfg)
	case cfg_dp_enable_data_stall:
		value = dpsoc->wlan_cfg_ctx->enable_data_stall_detection;
		break;
	case cfg_dp_enable_p2p_ip_tcp_udp_checksum_offload:
		value = dpsoc->wlan_cfg_ctx->p2p_tcp_udp_checksumoffload;
		break;
	case cfg_dp_enable_nan_ip_tcp_udp_checksum_offload:
		value = dpsoc->wlan_cfg_ctx->nan_tcp_udp_checksumoffload;
		break;
+10 −10
Original line number Diff line number Diff line
@@ -2216,7 +2216,13 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,
			tid = qdf_nbuf_get_tid_val(nbuf);

		peer_id =  QDF_NBUF_CB_RX_PEER_ID(nbuf);

		if (qdf_unlikely(!peer)) {
			peer = dp_peer_find_by_id(soc, peer_id);
		} else if (peer && peer->peer_ids[0] != peer_id) {
			dp_peer_unref_del_find_by_id(peer);
			peer = dp_peer_find_by_id(soc, peer_id);
		}

		if (peer) {
			QDF_NBUF_CB_DP_TRACE_PRINT(nbuf) = false;
@@ -2241,7 +2247,6 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,
			qdf_nbuf_free(nbuf);
			nbuf = next;
			DP_STATS_INC(soc, rx.err.invalid_vdev, 1);
			dp_peer_unref_del_find_by_id(peer);
			continue;
		}

@@ -2329,7 +2334,6 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,
				dp_info_rl("scatter msdu len %d, dropped",
					   msdu_len);
				nbuf = next;
				dp_peer_unref_del_find_by_id(peer);
				continue;
			}
		} else {
@@ -2351,7 +2355,6 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,
				DP_STATS_INC(peer, rx.multipass_rx_pkt_drop, 1);
				qdf_nbuf_free(nbuf);
				nbuf = next;
				dp_peer_unref_del_find_by_id(peer);
				continue;
			}
		}
@@ -2365,7 +2368,6 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,
			qdf_nbuf_free(nbuf);
			/* Statistics */
			nbuf = next;
			dp_peer_unref_del_find_by_id(peer);
			continue;
		}

@@ -2378,7 +2380,6 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,
			DP_STATS_INC(peer, rx.nawds_mcast_drop, 1);
			qdf_nbuf_free(nbuf);
			nbuf = next;
			dp_peer_unref_del_find_by_id(peer);
			continue;
		}

@@ -2407,7 +2408,6 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,

				qdf_nbuf_free(nbuf);
				nbuf = next;
				dp_peer_unref_del_find_by_id(peer);
				continue;
			}
			dp_rx_fill_mesh_stats(vdev, nbuf, rx_tlv_hdr, peer);
@@ -2434,7 +2434,6 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,
				qdf_nbuf_free(nbuf);
				nbuf = next;
				DP_STATS_INC(soc, rx.err.invalid_sa_da_idx, 1);
				dp_peer_unref_del_find_by_id(peer);
				continue;
			}
			/* WDS Source Port Learning */
@@ -2453,7 +2452,6 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,
							nbuf,
							msdu_metadata)) {
					nbuf = next;
					dp_peer_unref_del_find_by_id(peer);
					tid_stats->intrabss_cnt++;
					continue; /* Get next desc */
				}
@@ -2469,7 +2467,6 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,

		tid_stats->delivered_to_stack++;
		nbuf = next;
		dp_peer_unref_del_find_by_id(peer);
	}

	if (qdf_likely(deliver_list_head)) {
@@ -2488,6 +2485,9 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,
		}
	}

	if (qdf_likely(peer))
		dp_peer_unref_del_find_by_id(peer);

	if (dp_rx_enable_eol_data_check(soc) && rx_bufs_used) {
		if (quota) {
			num_pending =
Loading