Skip to content

Commit 183380e

Browse files
committed
Restore perf counter TLV width
1 parent ebe3aa0 commit 183380e

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

lltdDaemon/lltdTlvOps.c

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,20 @@ size_t setCharacteristicsTLV(void *buffer, uint64_t offset, void *networkInterfa
146146
size_t setPerfCounterTLV(void *buffer, uint64_t offset){
147147
generic_tlv_t *perf = (generic_tlv_t *) (buffer+offset);
148148
perf->TLVType = tlv_perfCounterFrequency;
149-
perf->TLVLength = sizeof(uint32_t);
150-
151-
// Write 32-bit value in big-endian (network) order
152-
uint32_t freq = 1000000; // 1 MHz performance counter frequency
153-
uint32_t *value = (uint32_t *)(buffer + offset + sizeof(generic_tlv_t));
154-
*value = htonl(freq);
155-
return sizeof(generic_tlv_t) + sizeof(uint32_t);
149+
perf->TLVLength = sizeof(uint64_t);
150+
151+
// Write 64-bit value in big-endian (network) order
152+
uint64_t freq = 1000000; // 1 MHz performance counter frequency
153+
uint8_t *bytes = (uint8_t *)(buffer + offset + sizeof(generic_tlv_t));
154+
bytes[0] = (freq >> 56) & 0xFF;
155+
bytes[1] = (freq >> 48) & 0xFF;
156+
bytes[2] = (freq >> 40) & 0xFF;
157+
bytes[3] = (freq >> 32) & 0xFF;
158+
bytes[4] = (freq >> 24) & 0xFF;
159+
bytes[5] = (freq >> 16) & 0xFF;
160+
bytes[6] = (freq >> 8) & 0xFF;
161+
bytes[7] = freq & 0xFF;
162+
return sizeof(generic_tlv_t) + sizeof(uint64_t);
156163
}
157164

158165
size_t setIconImageTLV(void *buffer, uint64_t offset){

0 commit comments

Comments
 (0)