diff --git a/hls/toe/rx_engine/rx_engine.cpp b/hls/toe/rx_engine/rx_engine.cpp
index 9d16f75f90d4a3250d094dc5db1034ad847d622b..88b91985ca34d71edb3d33eae77ab5ee8934738d 100755
--- a/hls/toe/rx_engine/rx_engine.cpp
+++ b/hls/toe/rx_engine/rx_engine.cpp
@@ -1121,7 +1121,7 @@ void rxTcpFSM(			stream<rxFsmMetaData>&					fsmMetaDataFifo,
 
 						ap_uint<32> newRecvd = 0;
 						ap_uint<32> newHead = 0;
-						ap_uint<WINDOW_BITS> newOffset = 0;
+						ap_uint<32> newOffset = 0;
 						// ### No gap, packet comes in order
 						if (!rxSar.gap && (fsm_meta.meta.seqNumb == rxSar.recvd) && (free_space > fsm_meta.meta.length))
 						{
@@ -1159,7 +1159,7 @@ void rxTcpFSM(			stream<rxFsmMetaData>&					fsmMetaDataFifo,
 							std::cout<<" free_space:"<<free_space<<std::endl;
 							//increment head pointer, set offset to ooo sequence number
 							newHead = fsm_meta.meta.seqNumb+fsm_meta.meta.length;
-							newOffset = fsm_meta.meta.seqNumb(WINDOW_BITS-1, 0);
+							newOffset = fsm_meta.meta.seqNumb;
 							//update head and offset pointer, set gap to true
 							rxEng2rxSar_upd_req.write(rxSarRecvd(fsm_meta.sessionID, rxSar.recvd, newHead, newOffset, true));
 							//notification for matching the mem write status in notificationDelayer
@@ -1203,7 +1203,7 @@ void rxTcpFSM(			stream<rxFsmMetaData>&					fsmMetaDataFifo,
 							std::cout<<" gap:"<<rxSar.gap;
 							std::cout<<" free_space:"<<free_space<<std::endl;
 							//fill the gap
-							if ((fsm_meta.meta.seqNumb + fsm_meta.meta.length)(WINDOW_BITS-1, 0) == rxSar.offset)
+							if ((fsm_meta.meta.seqNumb + fsm_meta.meta.length) == rxSar.offset)
 							{
 								newRecvd = rxSar.head;
 								rxEng2rxSar_upd_req.write(rxSarRecvd(fsm_meta.sessionID, newRecvd, rxSar.head, rxSar.offset, false));
@@ -1214,7 +1214,7 @@ void rxTcpFSM(			stream<rxFsmMetaData>&					fsmMetaDataFifo,
 								dropDataFifoOut.write(false);
 							}
 							//gap can not be filled
-							else if ((fsm_meta.meta.seqNumb + fsm_meta.meta.length)(WINDOW_BITS-1, 0) < rxSar.offset)
+							else if ((fsm_meta.meta.seqNumb + fsm_meta.meta.length) < rxSar.offset)
 							{
 								newRecvd = fsm_meta.meta.seqNumb + fsm_meta.meta.length;
 								rxEng2rxSar_upd_req.write(rxSarRecvd(fsm_meta.sessionID, newRecvd, rxSar.head, rxSar.offset, rxSar.gap));
@@ -1229,6 +1229,15 @@ void rxTcpFSM(			stream<rxFsmMetaData>&					fsmMetaDataFifo,
 						else 
 						{
 							dropDataFifoOut.write(true);
+							std::cout<<"RX_DROP";
+							std::cout<<std::dec<<" session id:"<<fsm_meta.sessionID;
+							std::cout<<" seqNum:"<<fsm_meta.meta.seqNumb;
+							std::cout<<" recvd:"<<rxSar.recvd;
+							std::cout<<" head:"<<rxSar.head;
+							std::cout<<" offset:"<<rxSar.offset;
+							std::cout<<" length:"<<fsm_meta.meta.length;		
+							std::cout<<" gap:"<<rxSar.gap;
+							std::cout<<" free_space:"<<free_space<<std::endl;
 						}
 
 					}
diff --git a/hls/toe/toe_internals.hpp b/hls/toe/toe_internals.hpp
index 78a14a520e87f5b6628fa9bde3be48ba6cfaf14b..d12dee381942f908fa1416ff53c8f31e9cabfdbc 100755
--- a/hls/toe/toe_internals.hpp
+++ b/hls/toe/toe_internals.hpp
@@ -119,7 +119,7 @@ struct rxSarEntry
 	ap_uint<4>	win_shift;
 #endif
 	ap_uint<32> head;
-	ap_uint<16> offset;
+	ap_uint<32> offset;
 	bool gap;
 };
 
@@ -148,7 +148,7 @@ struct rxSarRecvd
 	ap_uint<1> write;
 	ap_uint<1> init;
 	ap_uint<32> head;
-	ap_uint<WINDOW_BITS> offset;
+	ap_uint<32> offset;
 	bool gap;
 	rxSarRecvd() {}
 	rxSarRecvd(ap_uint<16> id)
@@ -158,9 +158,9 @@ struct rxSarRecvd
 	// rxSarRecvd(ap_uint<16> id, ap_uint<32> recvd, ap_uint<4> win_shift)
 	// 				:sessionID(id), recvd(recvd), win_shift(win_shift), write(1), init(1) {}
 
-	rxSarRecvd(ap_uint<16> id, ap_uint<32> recvd, ap_uint<32> head, ap_uint<WINDOW_BITS>offset, bool gap)
+	rxSarRecvd(ap_uint<16> id, ap_uint<32> recvd, ap_uint<32> head, ap_uint<32>offset, bool gap)
 				:sessionID(id), recvd(recvd), head(head), offset(offset), gap(gap), write(1), init(0) {}
-	rxSarRecvd(ap_uint<16> id, ap_uint<32> recvd, ap_uint<32> head, ap_uint<WINDOW_BITS>offset, bool gap, ap_uint<4> win_shift)
+	rxSarRecvd(ap_uint<16> id, ap_uint<32> recvd, ap_uint<32> head, ap_uint<32>offset, bool gap, ap_uint<4> win_shift)
 				:sessionID(id), recvd(recvd), head(head), offset(offset), gap(gap), win_shift(win_shift), write(1), init(1) {}
 };