Disclaimer: I will not comment on the whole subject. All my comments are only based on following code.
On Thursday 24 February 2011 10:58:02 hlabishi kobo wrote:
int weighted_bit_packet_count(TYPE_OF_WORD *seq_bits) { int i, count = 0; TYPE_OF_WORD word;
for (i = 0; i < NUM_WORDS; i++) { //word = seq_bits[i]; if (seq_bits[i] == 1) count += i; } return count;
}
You only gave us the following code and no other information. I must assume that other parts of the code weren't modified. The part of the code seems to be derived from following function:
int bit_packet_count(unsigned long *seq_bits) { int i, hamming = 0;
for (i = 0; i < NUM_WORDS; i++) hamming += hweight_long(seq_bits[i]);
return hamming; }
It is easy to notice that the original function is aware that many bits inside a word (unsigned long) are set either to zero or to one. The sum of all bits inside all words (sum of the hamming weights) is complete set of information the routing algorithm needs to make any decision.
Your function is also operating on the same data, but only tests if the last bit in every word is 1. Lets assume that a unsigned long is 64 bit long and we have 8 of them. That means that we are only allowed to have received every 8th ogm and that we are currently shifted these bits to the lsb position of each word. Something tells me that I should not start to calculate the probability of such an event.
I would suggest that you check your originator and global/local translation tables.
Best regards, Sven