mirror of
				https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
				synced 2025-10-30 23:58:51 +01:00 
			
		
		
		
	Fixed MTP to work with TWRP
This commit is contained in:
		
						commit
						f6dfaef42e
					
				
					 50820 changed files with 20846062 additions and 0 deletions
				
			
		
							
								
								
									
										103
									
								
								drivers/net/wireless/ath/ath9k/dynack.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								drivers/net/wireless/ath/ath9k/dynack.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,103 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2014, Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
|  * copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||
|  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||
|  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef DYNACK_H | ||||
| #define DYNACK_H | ||||
| 
 | ||||
| #define ATH_DYN_BUF	64 | ||||
| 
 | ||||
| struct ath_hw; | ||||
| struct ath_node; | ||||
| 
 | ||||
| /**
 | ||||
|  * struct ath_dyn_rxbuf - ACK frame ring buffer | ||||
|  * @h_rb: ring buffer head | ||||
|  * @t_rb: ring buffer tail | ||||
|  * @tstamp: ACK RX timestamp buffer | ||||
|  */ | ||||
| struct ath_dyn_rxbuf { | ||||
| 	u16 h_rb, t_rb; | ||||
| 	u32 tstamp[ATH_DYN_BUF]; | ||||
| }; | ||||
| 
 | ||||
| struct ts_info { | ||||
| 	u32 tstamp; | ||||
| 	u32 dur; | ||||
| }; | ||||
| 
 | ||||
| struct haddr_pair { | ||||
| 	u8 h_dest[ETH_ALEN]; | ||||
| 	u8 h_src[ETH_ALEN]; | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  * struct ath_dyn_txbuf - tx frame ring buffer | ||||
|  * @h_rb: ring buffer head | ||||
|  * @t_rb: ring buffer tail | ||||
|  * @addr: dest/src address pair for a given TX frame | ||||
|  * @ts: TX frame timestamp buffer | ||||
|  */ | ||||
| struct ath_dyn_txbuf { | ||||
| 	u16 h_rb, t_rb; | ||||
| 	struct haddr_pair addr[ATH_DYN_BUF]; | ||||
| 	struct ts_info ts[ATH_DYN_BUF]; | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  * struct ath_dynack - dynack processing info | ||||
|  * @enabled: enable dyn ack processing | ||||
|  * @ackto: current ACK timeout | ||||
|  * @lto: last ACK timeout computation | ||||
|  * @nodes: ath_node linked list | ||||
|  * @qlock: ts queue spinlock | ||||
|  * @ack_rbf: ACK ts ring buffer | ||||
|  * @st_rbf: status ts ring buffer | ||||
|  */ | ||||
| struct ath_dynack { | ||||
| 	bool enabled; | ||||
| 	int ackto; | ||||
| 	unsigned long lto; | ||||
| 
 | ||||
| 	struct list_head nodes; | ||||
| 
 | ||||
| 	/* protect timestamp queue access */ | ||||
| 	spinlock_t qlock; | ||||
| 	struct ath_dyn_rxbuf ack_rbf; | ||||
| 	struct ath_dyn_txbuf st_rbf; | ||||
| }; | ||||
| 
 | ||||
| #if defined(CONFIG_ATH9K_DYNACK) | ||||
| void ath_dynack_reset(struct ath_hw *ah); | ||||
| void ath_dynack_node_init(struct ath_hw *ah, struct ath_node *an); | ||||
| void ath_dynack_node_deinit(struct ath_hw *ah, struct ath_node *an); | ||||
| void ath_dynack_init(struct ath_hw *ah); | ||||
| void ath_dynack_sample_ack_ts(struct ath_hw *ah, struct sk_buff *skb, u32 ts); | ||||
| void ath_dynack_sample_tx_ts(struct ath_hw *ah, struct sk_buff *skb, | ||||
| 			     struct ath_tx_status *ts); | ||||
| #else | ||||
| static inline void ath_dynack_init(struct ath_hw *ah) {} | ||||
| static inline void ath_dynack_node_init(struct ath_hw *ah, | ||||
| 					struct ath_node *an) {} | ||||
| static inline void ath_dynack_node_deinit(struct ath_hw *ah, | ||||
| 					  struct ath_node *an) {} | ||||
| static inline void ath_dynack_sample_ack_ts(struct ath_hw *ah, | ||||
| 					    struct sk_buff *skb, u32 ts) {} | ||||
| static inline void ath_dynack_sample_tx_ts(struct ath_hw *ah, | ||||
| 					   struct sk_buff *skb, | ||||
| 					   struct ath_tx_status *ts) {} | ||||
| #endif | ||||
| 
 | ||||
| #endif /* DYNACK_H */ | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 awab228
						awab228