And also, use ratp_send_ack() instead of manually constructing an ACK
if no data is pending to be sent.

The current barebox implementation doesn't allow any queueing of data
until the connection is established, so this is probably not a case
that would get run anyway.

Signed-off-by: Aleksander Morgado <aleksan...@aleksander.es>
---
 lib/ratp.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/ratp.c b/lib/ratp.c
index c7f3f4171..e810a9e54 100644
--- a/lib/ratp.c
+++ b/lib/ratp.c
@@ -622,11 +622,11 @@ static void ratp_behaviour_b(struct ratp_internal *ri, 
void *pkt)
                ri->sn_received = ratp_sn(hdr);
 
                if (hdr->control & RATP_CONTROL_ACK) {
-                       control = ratp_set_sn(ratp_an(hdr)) |
-                               ratp_set_an(!ratp_sn(hdr)) |
-                               RATP_CONTROL_ACK;
-                       ratp_send_hdr(ri, control);
                        ratp_state_change(ri, RATP_STATE_ESTABLISHED);
+                       if (list_empty(&ri->sendmsg) || ri->sendmsg_current)
+                               ratp_send_ack(ri, hdr);
+                       else
+                               ratp_send_next_data(ri);
                } else {
                        struct ratp_header synack = {};
 
-- 
2.13.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to