[RFC v2 06/10] ath10k: htt: High latency RX support

Peter Oh peter.oh at bowerswilkins.com
Tue Jun 13 10:39:46 PDT 2017


On 06/12/2017 08:03 AM, Erik Stromdahl wrote:
> Special HTT RX handling for high latency interfaces.
>
> Since no DMA physical addresses are used in the RX ring
> config message (this is not supported by the high latency
> devices), no RX ring is allocated.
> All RX skb's are allocated by the driver and passed directly
> to mac80211 in the HTT RX indication handler.
>
> A nice side effect of this is that no huge buffer will be
> allocated with dma_alloc_coherent. On embedded systems with
> limited memory resources, the allocation of the RX ring is
> prone to fail.
>
> Some tweaks made to "make it work":
>
> Removal of protected bit in 802.11 header frame control field.
> The chipset seems to do hw decryption but the frame_control
> protected bit is still set.
>
> This is necessary for mac80211 not to drop the frame.
>
> Signed-off-by: Erik Stromdahl <erik.stromdahl at gmail.com>
> ---
>
> +static void ath10k_htt_rx_proc_rx_ind_ll(struct ath10k_htt *htt,
> +					 struct htt_rx_indication *rx)
>   {
>   	struct ath10k *ar = htt->ar;
>   	struct htt_rx_indication_mpdu_range *mpdu_ranges;
> @@ -2356,7 +2442,12 @@ bool ath10k_htt_t2h_msg_handler(struct ath10k *ar, struct sk_buff *skb)
>   		break;
>   	}
>   	case HTT_T2H_MSG_TYPE_RX_IND:
> -		ath10k_htt_rx_proc_rx_ind(htt, &resp->rx_ind);
> +		if (ar->is_high_latency)
Can we use function pointers at initial time to avoid condition check at 
hot path?
I'm afraid adding more lines on hot path.
> +			return ath10k_htt_rx_proc_rx_ind_hl(htt,
> +							    &resp->rx_ind_hl,
> +							    skb);
> +		else
> +			ath10k_htt_rx_proc_rx_ind_ll(htt, &resp->rx_ind);
>   		break;
>   	case HTT_T2H_MSG_TYPE_PEER_MAP: {
>   		struct htt_peer_map_event ev = {
>




More information about the ath10k mailing list