summaryrefslogtreecommitdiffstats
path: root/net/smc/smc.h
diff options
context:
space:
mode:
authorStefan Raspl <raspl@linux.ibm.com>2018-05-23 10:38:11 -0400
committerDavid S. Miller <davem@davemloft.net>2018-05-23 16:02:35 -0400
commitde8474eb9d50fd47b8c73816f34739dec5e96754 (patch)
tree4d8c4d02508896fefba4c7172162ebf1b8333798 /net/smc/smc.h
parentb9f227c37071d1115cec791b328b684e2c4ba414 (diff)
net/smc: urgent data support
Add support for out of band data send and receive. Signed-off-by: Stefan Raspl <raspl@linux.ibm.com> Signed-off-by: Ursula Braun <ubraun@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc/smc.h')
-rw-r--r--net/smc/smc.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/net/smc/smc.h b/net/smc/smc.h
index a1467e411645..51ae1f10d81a 100644
--- a/net/smc/smc.h
+++ b/net/smc/smc.h
@@ -114,6 +114,12 @@ struct smc_host_cdc_msg { /* Connection Data Control message */
114 u8 reserved[18]; 114 u8 reserved[18];
115} __aligned(8); 115} __aligned(8);
116 116
117enum smc_urg_state {
118 SMC_URG_VALID, /* data present */
119 SMC_URG_NOTYET, /* data pending */
120 SMC_URG_READ /* data was already read */
121};
122
117struct smc_connection { 123struct smc_connection {
118 struct rb_node alert_node; 124 struct rb_node alert_node;
119 struct smc_link_group *lgr; /* link group of connection */ 125 struct smc_link_group *lgr; /* link group of connection */
@@ -160,6 +166,15 @@ struct smc_connection {
160 union smc_host_cursor rx_curs_confirmed; /* confirmed to peer 166 union smc_host_cursor rx_curs_confirmed; /* confirmed to peer
161 * source of snd_una ? 167 * source of snd_una ?
162 */ 168 */
169 union smc_host_cursor urg_curs; /* points at urgent byte */
170 enum smc_urg_state urg_state;
171 bool urg_tx_pend; /* urgent data staged */
172 bool urg_rx_skip_pend;
173 /* indicate urgent oob data
174 * read, but previous regular
175 * data still pending
176 */
177 char urg_rx_byte; /* urgent byte */
163 atomic_t bytes_to_rcv; /* arrived data, 178 atomic_t bytes_to_rcv; /* arrived data,
164 * not yet received 179 * not yet received
165 */ 180 */