diff options
author | Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> | 2012-04-12 04:27:25 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-04-13 11:37:36 -0400 |
commit | ece367d53a5bf46cc357163c7074a6546a0ec01c (patch) | |
tree | 741193e49df32040d03c9258c342a75eecfae9f1 /include/net/caif | |
parent | 447648128ec22e294604674ffe1064aa3ec3b767 (diff) |
caif-hsi: robust frame aggregation for HSI
Implement aggregation algorithm, combining more data into a single
HSI transfer. 4 different traffic categories are supported:
1. TC_PRIO_CONTROL .. TC_PRIO_MAX (CTL)
2. TC_PRIO_INTERACTIVE (VO)
3. TC_PRIO_INTERACTIVE_BULK (VI)
4. TC_PRIO_BESTEFFORT, TC_PRIO_BULK, TC_PRIO_FILLER (BEBK)
Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/caif')
-rw-r--r-- | include/net/caif/caif_hsi.h | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/include/net/caif/caif_hsi.h b/include/net/caif/caif_hsi.h index 6db8ecf52aa..439dadc8102 100644 --- a/include/net/caif/caif_hsi.h +++ b/include/net/caif/caif_hsi.h | |||
@@ -123,12 +123,21 @@ struct cfhsi_rx_state { | |||
123 | bool piggy_desc; | 123 | bool piggy_desc; |
124 | }; | 124 | }; |
125 | 125 | ||
126 | /* Priority mapping */ | ||
127 | enum { | ||
128 | CFHSI_PRIO_CTL = 0, | ||
129 | CFHSI_PRIO_VI, | ||
130 | CFHSI_PRIO_VO, | ||
131 | CFHSI_PRIO_BEBK, | ||
132 | CFHSI_PRIO_LAST, | ||
133 | }; | ||
134 | |||
126 | /* Structure implemented by CAIF HSI drivers. */ | 135 | /* Structure implemented by CAIF HSI drivers. */ |
127 | struct cfhsi { | 136 | struct cfhsi { |
128 | struct caif_dev_common cfdev; | 137 | struct caif_dev_common cfdev; |
129 | struct net_device *ndev; | 138 | struct net_device *ndev; |
130 | struct platform_device *pdev; | 139 | struct platform_device *pdev; |
131 | struct sk_buff_head qhead; | 140 | struct sk_buff_head qhead[CFHSI_PRIO_LAST]; |
132 | struct cfhsi_drv drv; | 141 | struct cfhsi_drv drv; |
133 | struct cfhsi_dev *dev; | 142 | struct cfhsi_dev *dev; |
134 | int tx_state; | 143 | int tx_state; |
@@ -151,8 +160,14 @@ struct cfhsi { | |||
151 | wait_queue_head_t wake_up_wait; | 160 | wait_queue_head_t wake_up_wait; |
152 | wait_queue_head_t wake_down_wait; | 161 | wait_queue_head_t wake_down_wait; |
153 | wait_queue_head_t flush_fifo_wait; | 162 | wait_queue_head_t flush_fifo_wait; |
154 | struct timer_list timer; | 163 | struct timer_list inactivity_timer; |
155 | struct timer_list rx_slowpath_timer; | 164 | struct timer_list rx_slowpath_timer; |
165 | |||
166 | /* TX aggregation */ | ||
167 | unsigned long aggregation_timeout; | ||
168 | int aggregation_len; | ||
169 | struct timer_list aggregation_timer; | ||
170 | |||
156 | unsigned long bits; | 171 | unsigned long bits; |
157 | }; | 172 | }; |
158 | 173 | ||