frame and packet counters for the delay was buggy, not looking at lsb and msb, fixed

This commit is contained in:
Dhanya Maliakal 2017-03-23 12:38:19 +01:00
parent aae4e3f993
commit 5dcacaae2a
3 changed files with 50 additions and 30 deletions

View File

@ -180,24 +180,31 @@ void Beb_GetModuleConfiguration(int* master, int* top, int* normal){
void Beb_EndofDataSend(int tengiga){ void Beb_EndofDataSend(int tengiga){
//mapping new memory //mapping new memory
u_int32_t* csp0base=0; u_int32_t* csp0base=0;
int l_framepktcounter2, l_txndelaycounter, l_framedelaycounter, r_framepktcounter2, r_txndelaycounter, r_framedelaycounter; int l_framepktLsbcounter, l_framepktMsbcounter, l_txndelaycounter, l_framedelaycounter;
int l_framepktcounter2_new, l_txndelaycounter_new, l_framedelaycounter_new, r_framepktcounter2_new, r_txndelaycounter_new, r_framedelaycounter_new; int r_framepktLsbcounter, r_framepktMsbcounter, r_txndelaycounter, r_framedelaycounter;
int addr_l_framepktcounter2, addr_l_txndelaycounter, addr_l_framedelaycounter, addr_r_framepktcounter2, addr_r_txndelaycounter, addr_r_framedelaycounter; int l_framepktLsbcounter_new, l_framepktMsbcounter_new, l_txndelaycounter_new, l_framedelaycounter_new;
int r_framepktLsbcounter_new, r_framepktMsbcounter_new, r_txndelaycounter_new, r_framedelaycounter_new;
int addr_l_framepktLsbcounter, addr_l_framepktMsbcounter, addr_l_txndelaycounter, addr_l_framedelaycounter;
int addr_r_framepktLsbcounter, addr_r_framepktMsbcounter, addr_r_txndelaycounter, addr_r_framedelaycounter;
switch(tengiga){ switch(tengiga){
case 0: case 0:
addr_l_framepktcounter2 = ONE_GIGA_LEFT_PKT_SEND_COUNTER; addr_l_framepktLsbcounter = ONE_GIGA_LEFT_INDEX_LSB_COUNTER;
addr_l_framepktMsbcounter = ONE_GIGA_LEFT_INDEX_MSB_COUNTER;
addr_l_txndelaycounter = ONE_GIGA_LEFT_TXN_DELAY_COUNTER; addr_l_txndelaycounter = ONE_GIGA_LEFT_TXN_DELAY_COUNTER;
addr_l_framedelaycounter = ONE_GIGA_LEFT_FRAME_DELAY_COUNTER; addr_l_framedelaycounter = ONE_GIGA_LEFT_FRAME_DELAY_COUNTER;
addr_r_framepktcounter2 = ONE_GIGA_RIGHT_PKT_SEND_COUNTER; addr_r_framepktLsbcounter = ONE_GIGA_RIGHT_INDEX_LSB_COUNTER;
addr_r_framepktMsbcounter = ONE_GIGA_RIGHT_INDEX_MSB_COUNTER;
addr_r_txndelaycounter = ONE_GIGA_RIGHT_TXN_DELAY_COUNTER; addr_r_txndelaycounter = ONE_GIGA_RIGHT_TXN_DELAY_COUNTER;
addr_r_framedelaycounter = ONE_GIGA_RIGHT_FRAME_DELAY_COUNTER; addr_r_framedelaycounter = ONE_GIGA_RIGHT_FRAME_DELAY_COUNTER;
break; break;
case 1: case 1:
addr_l_framepktcounter2 = TEN_GIGA_LEFT_PKT_SEND_COUNTER; addr_l_framepktLsbcounter = TEN_GIGA_LEFT_INDEX_LSB_COUNTER;
addr_l_framepktMsbcounter = TEN_GIGA_LEFT_INDEX_MSB_COUNTER;
addr_l_txndelaycounter = TEN_GIGA_LEFT_TXN_DELAY_COUNTER; addr_l_txndelaycounter = TEN_GIGA_LEFT_TXN_DELAY_COUNTER;
addr_l_framedelaycounter = TEN_GIGA_LEFT_FRAME_DELAY_COUNTER; addr_l_framedelaycounter = TEN_GIGA_LEFT_FRAME_DELAY_COUNTER;
addr_r_framepktcounter2 = TEN_GIGA_RIGHT_PKT_SEND_COUNTER; addr_r_framepktLsbcounter = TEN_GIGA_RIGHT_INDEX_LSB_COUNTER;
addr_r_framepktMsbcounter = TEN_GIGA_RIGHT_INDEX_MSB_COUNTER;
addr_r_txndelaycounter = TEN_GIGA_RIGHT_TXN_DELAY_COUNTER; addr_r_txndelaycounter = TEN_GIGA_RIGHT_TXN_DELAY_COUNTER;
addr_r_framedelaycounter = TEN_GIGA_RIGHT_FRAME_DELAY_COUNTER; addr_r_framedelaycounter = TEN_GIGA_RIGHT_FRAME_DELAY_COUNTER;
break; break;
@ -211,23 +218,27 @@ void Beb_EndofDataSend(int tengiga){
return; return;
}else{ }else{
//read data first time //read data first time
l_framepktcounter2 = Beb_Read32(csp0base, addr_l_framepktcounter2); l_framepktLsbcounter = Beb_Read32(csp0base, addr_l_framepktLsbcounter);
l_framepktMsbcounter = Beb_Read32(csp0base, addr_l_framepktMsbcounter);
l_txndelaycounter = Beb_Read32(csp0base, addr_l_txndelaycounter); l_txndelaycounter = Beb_Read32(csp0base, addr_l_txndelaycounter);
l_framedelaycounter = Beb_Read32(csp0base, addr_l_framedelaycounter); l_framedelaycounter = Beb_Read32(csp0base, addr_l_framedelaycounter);
r_framepktcounter2 = Beb_Read32(csp0base, addr_r_framepktcounter2); r_framepktLsbcounter = Beb_Read32(csp0base, addr_r_framepktLsbcounter);
r_framepktMsbcounter = Beb_Read32(csp0base, addr_r_framepktMsbcounter);
r_txndelaycounter = Beb_Read32(csp0base, addr_r_txndelaycounter); r_txndelaycounter = Beb_Read32(csp0base, addr_r_txndelaycounter);
r_framedelaycounter = Beb_Read32(csp0base, addr_r_framedelaycounter); r_framedelaycounter = Beb_Read32(csp0base, addr_r_framedelaycounter);
//#ifdef VERBOSE //#ifdef VERBOSE
printf("\nLeft\n" printf("\nLeft\n"
"Framepacketcounter: %d\n" "FramepacketLsbcounter: %d\n"
"FramepacketMsbcounter: %d\n"
"Txndelaycounter:%d\n" "Txndelaycounter:%d\n"
"Framedelaycounter:%d\n" "Framedelaycounter:%d\n"
"\nRight\n" "\nRight\n"
"Framepacketcounter: %d\n" "FramepacketLsbcounter: %d\n"
"FramepacketMsbcounter: %d\n"
"Txndelaycounter:%d\n" "Txndelaycounter:%d\n"
"Framedelaycounter:%d\n\n", "Framedelaycounter:%d\n\n",
l_framepktcounter2,l_txndelaycounter,l_framedelaycounter, l_framepktLsbcounter,l_framepktMsbcounter,l_txndelaycounter,l_framedelaycounter,
r_framepktcounter2,r_txndelaycounter,r_framedelaycounter); r_framepktLsbcounter,r_framepktMsbcounter,r_txndelaycounter,r_framedelaycounter);
//#endif //#endif
//keep comparing with previous values //keep comparing with previous values
@ -239,33 +250,42 @@ void Beb_EndofDataSend(int tengiga){
usleep(maxtimer); usleep(maxtimer);
//read new values //read new values
l_framepktcounter2_new = Beb_Read32(csp0base, addr_l_framepktcounter2); l_framepktLsbcounter_new = Beb_Read32(csp0base, addr_l_framepktLsbcounter);
l_framepktMsbcounter_new = Beb_Read32(csp0base, addr_l_framepktMsbcounter);
l_txndelaycounter_new = Beb_Read32(csp0base, addr_l_txndelaycounter); l_txndelaycounter_new = Beb_Read32(csp0base, addr_l_txndelaycounter);
l_framedelaycounter_new = Beb_Read32(csp0base, addr_l_framedelaycounter); l_framedelaycounter_new = Beb_Read32(csp0base, addr_l_framedelaycounter);
r_framepktcounter2_new = Beb_Read32(csp0base, addr_r_framepktcounter2); r_framepktLsbcounter_new = Beb_Read32(csp0base, addr_r_framepktLsbcounter);
r_framepktMsbcounter_new = Beb_Read32(csp0base, addr_r_framepktMsbcounter);
r_txndelaycounter_new = Beb_Read32(csp0base, addr_r_txndelaycounter); r_txndelaycounter_new = Beb_Read32(csp0base, addr_r_txndelaycounter);
r_framedelaycounter_new = Beb_Read32(csp0base, addr_r_framedelaycounter); r_framedelaycounter_new = Beb_Read32(csp0base, addr_r_framedelaycounter);
//#ifdef VERBOSE //#ifdef VERBOSE
printf("\nLeft\n" printf("\nLeft\n"
"Framepacketcounter: %d\n" "FramepacketLsbcounter: %d\n"
"FramepacketMsbcounter: %d\n"
"Txndelaycounter:%d\n" "Txndelaycounter:%d\n"
"Framedelaycounter:%d\n" "Framedelaycounter:%d\n"
"\nRight\n" "\nRight\n"
"Framepacketcounter: %d\n" "FramepacketLsbcounter: %d\n"
"FramepacketMsbcounter: %d\n"
"Txndelaycounter:%d\n" "Txndelaycounter:%d\n"
"Framedelaycounter:%d\n\n", "Framedelaycounter:%d\n\n",
l_framepktcounter2_new,l_txndelaycounter_new,l_framedelaycounter_new, l_framepktLsbcounter_new,l_framepktMsbcounter_new,l_txndelaycounter_new,l_framedelaycounter_new,
r_framepktcounter2_new,r_txndelaycounter_new,r_framedelaycounter_new); r_framepktLsbcounter_new,r_framepktMsbcounter_new,r_txndelaycounter_new,r_framedelaycounter_new);
//#endif //#endif
if ((l_framepktcounter2 == l_framepktcounter2_new) && (r_framepktcounter2 == r_framepktcounter2_new)) if ((l_framepktLsbcounter == l_framepktLsbcounter_new) &&
(l_framepktMsbcounter == l_framepktMsbcounter_new) &&
(r_framepktLsbcounter == r_framepktLsbcounter_new) &&
(r_framepktMsbcounter == r_framepktMsbcounter_new))
break; break;
//update old values //update old values
l_framepktcounter2 = l_framepktcounter2_new; l_framepktLsbcounter = l_framepktLsbcounter_new;
l_framepktMsbcounter = l_framepktMsbcounter_new;
l_txndelaycounter = l_txndelaycounter_new; l_txndelaycounter = l_txndelaycounter_new;
l_framedelaycounter = l_framedelaycounter_new; l_framedelaycounter = l_framedelaycounter_new;
r_framepktcounter2 = r_framepktcounter2_new; r_framepktLsbcounter = r_framepktLsbcounter_new;
r_framepktMsbcounter = r_framepktMsbcounter_new;
r_txndelaycounter = r_txndelaycounter_new; r_txndelaycounter = r_txndelaycounter_new;
r_framedelaycounter = r_framedelaycounter_new; r_framedelaycounter = r_framedelaycounter_new;

View File

@ -156,27 +156,27 @@
#define FEB_REG_STATUS 0xa #define FEB_REG_STATUS 0xa
//1g counters //1g counters
#define ONE_GIGA_LEFT_FRAME_SEND_COUNTER 0x04 #define ONE_GIGA_LEFT_INDEX_LSB_COUNTER 0x04
#define ONE_GIGA_LEFT_PKT_SEND_COUNTER 0x24 #define ONE_GIGA_LEFT_INDEX_MSB_COUNTER 0x24
#define ONE_GIGA_LEFT_TXN_DELAY_COUNTER 0x104 #define ONE_GIGA_LEFT_TXN_DELAY_COUNTER 0x104
#define ONE_GIGA_LEFT_FRAME_DELAY_COUNTER 0x124 #define ONE_GIGA_LEFT_FRAME_DELAY_COUNTER 0x124
#define ONE_GIGA_RIGHT_FRAME_SEND_COUNTER 0x44 #define ONE_GIGA_RIGHT_INDEX_LSB_COUNTER 0x44
#define ONE_GIGA_RIGHT_PKT_SEND_COUNTER 0x64 #define ONE_GIGA_RIGHT_INDEX_MSB_COUNTER 0x64
#define ONE_GIGA_RIGHT_TXN_DELAY_COUNTER 0x144 #define ONE_GIGA_RIGHT_TXN_DELAY_COUNTER 0x144
#define ONE_GIGA_RIGHT_FRAME_DELAY_COUNTER 0x164 #define ONE_GIGA_RIGHT_FRAME_DELAY_COUNTER 0x164
//10g counters //10g counters
#define TEN_GIGA_LEFT_FRAME_SEND_COUNTER 0x84 #define TEN_GIGA_LEFT_INDEX_LSB_COUNTER 0x84
#define TEN_GIGA_LEFT_PKT_SEND_COUNTER 0xa4 #define TEN_GIGA_LEFT_INDEX_MSB_COUNTER 0xa4
#define TEN_GIGA_LEFT_TXN_DELAY_COUNTER 0x184 #define TEN_GIGA_LEFT_TXN_DELAY_COUNTER 0x184
#define TEN_GIGA_LEFT_FRAME_DELAY_COUNTER 0x1a4 #define TEN_GIGA_LEFT_FRAME_DELAY_COUNTER 0x1a4
#define TEN_GIGA_RIGHT_FRAME_SEND_COUNTER 0xc4 #define TEN_GIGA_RIGHT_INDEX_LSB_COUNTER 0xc4
#define TEN_GIGA_RIGHT_PKT_SEND_COUNTER 0xe4 #define TEN_GIGA_RIGHT_INDEX_MSB_COUNTER 0xe4
#define TEN_GIGA_RIGHT_TXN_DELAY_COUNTER 0x1c4 #define TEN_GIGA_RIGHT_TXN_DELAY_COUNTER 0x1c4
#define TEN_GIGA_RIGHT_FRAME_DELAY_COUNTER 0x1e4 #define TEN_GIGA_RIGHT_FRAME_DELAY_COUNTER 0x1e4