16#include "TCP_Header.h"
18void set_window_scaling(PNETSIM_SOCKET s, PWsopt opt)
22 s->tcb->isWindowScaling =
true;
23 s->tcb->Snd.Wind_Shift = opt->Shift_cnt;
24 s->tcb->Rcv.Wind_Shift = opt->Shift_cnt;
25 s->tcb->RCV.WND = s->tcb->get_RCVWND(s);
29 s->tcb->isWindowScaling =
false;
30 s->tcb->Snd.Wind_Shift = 0;
31 s->tcb->Rcv.Wind_Shift = 0;
35UINT8 get_shift_count(PNETSIM_SOCKET s)
37 return s->tcb->isWindowScaling ? s->tcb->Snd.Wind_Shift : 0;
40void set_window_scaling_option(PNETSIM_SOCKET s, PTCP_DEV_VAR tcp)
42 if (tcp->isWindowScaling)
44 s->tcb->isWindowScaling =
true;
45 s->tcb->Snd.Wind_Shift = tcp->shiftCount;
46 s->tcb->Rcv.Wind_Shift = tcp->shiftCount;
50UINT32 window_scale_get_cwnd(PNETSIM_SOCKET s)
52 UINT32 c = (UINT32)s->tcb->get_WND(s);
53 if (s->tcb->isWindowScaling)
55 UINT32 r = c << s->tcb->Snd.Wind_Shift;
56 UINT32 mss = s->tcb->get_MSS(s);
63UINT16 window_scale_get_wnd(PNETSIM_SOCKET s)
65 if (s->tcb->isWindowScaling)
66 return (UINT16)(s->tcb->SND.WND >> s->tcb->Snd.Wind_Shift);
68 return (UINT16)(s->tcb->SND.WND);