aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/caif
diff options
context:
space:
mode:
authorDmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>2012-04-12 04:27:25 -0400
committerDavid S. Miller <davem@davemloft.net>2012-04-13 11:37:36 -0400
commitece367d53a5bf46cc357163c7074a6546a0ec01c (patch)
tree741193e49df32040d03c9258c342a75eecfae9f1 /include/net/caif
parent447648128ec22e294604674ffe1064aa3ec3b767 (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.h19
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 */
127enum {
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. */
127struct cfhsi { 136struct 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