aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-05-08 22:01:44 +0200
committerDario Nieuwenhuis <[email protected]>2023-05-08 22:01:44 +0200
commit6b5d9642d583bc034ee35b88c903545e7f423b4e (patch)
treeb921f526c7a4a612fb8933c0f6b0d324ae0df847
parent881e9d07d2e1107b27952c8bfe1d5afeef172165 (diff)
Rename BCD -> BDC. That's what Broadcom calls it. Still no idea what it means.
-rw-r--r--src/runner.rs24
-rw-r--r--src/structs.rs20
2 files changed, 22 insertions, 22 deletions
diff --git a/src/runner.rs b/src/runner.rs
index 1d8ec4359..5706696b4 100644
--- a/src/runner.rs
+++ b/src/runner.rs
@@ -249,7 +249,7 @@ where
249 let mut buf = [0; 512]; 249 let mut buf = [0; 512];
250 let buf8 = slice8_mut(&mut buf); 250 let buf8 = slice8_mut(&mut buf);
251 251
252 // There MUST be 2 bytes of padding between the SDPCM and BCD headers. 252 // There MUST be 2 bytes of padding between the SDPCM and BDC headers.
253 // And ONLY for data packets! 253 // And ONLY for data packets!
254 // No idea why, but the firmware will append two zero bytes to the tx'd packets 254 // No idea why, but the firmware will append two zero bytes to the tx'd packets
255 // otherwise. If the packet is exactly 1514 bytes (the max MTU), this makes it 255 // otherwise. If the packet is exactly 1514 bytes (the max MTU), this makes it
@@ -258,7 +258,7 @@ where
258 // and adds it to the header size her https://github.com/Infineon/wifi-host-driver/blob/c04fcbb6b0d049304f376cf483fd7b1b570c8cd5/WiFi_Host_Driver/src/whd_sdpcm.c#L597 258 // and adds it to the header size her https://github.com/Infineon/wifi-host-driver/blob/c04fcbb6b0d049304f376cf483fd7b1b570c8cd5/WiFi_Host_Driver/src/whd_sdpcm.c#L597
259 // ¯\_(ツ)_/¯ 259 // ¯\_(ツ)_/¯
260 const PADDING_SIZE: usize = 2; 260 const PADDING_SIZE: usize = 2;
261 let total_len = SdpcmHeader::SIZE + PADDING_SIZE + BcdHeader::SIZE + packet.len(); 261 let total_len = SdpcmHeader::SIZE + PADDING_SIZE + BdcHeader::SIZE + packet.len();
262 262
263 let seq = self.sdpcm_seq; 263 let seq = self.sdpcm_seq;
264 self.sdpcm_seq = self.sdpcm_seq.wrapping_add(1); 264 self.sdpcm_seq = self.sdpcm_seq.wrapping_add(1);
@@ -275,19 +275,19 @@ where
275 reserved: [0, 0], 275 reserved: [0, 0],
276 }; 276 };
277 277
278 let bcd_header = BcdHeader { 278 let bdc_header = BdcHeader {
279 flags: BDC_VERSION << BDC_VERSION_SHIFT, 279 flags: BDC_VERSION << BDC_VERSION_SHIFT,
280 priority: 0, 280 priority: 0,
281 flags2: 0, 281 flags2: 0,
282 data_offset: 0, 282 data_offset: 0,
283 }; 283 };
284 trace!("tx {:?}", sdpcm_header); 284 trace!("tx {:?}", sdpcm_header);
285 trace!(" {:?}", bcd_header); 285 trace!(" {:?}", bdc_header);
286 286
287 buf8[0..SdpcmHeader::SIZE].copy_from_slice(&sdpcm_header.to_bytes()); 287 buf8[0..SdpcmHeader::SIZE].copy_from_slice(&sdpcm_header.to_bytes());
288 buf8[SdpcmHeader::SIZE + PADDING_SIZE..][..BcdHeader::SIZE] 288 buf8[SdpcmHeader::SIZE + PADDING_SIZE..][..BdcHeader::SIZE]
289 .copy_from_slice(&bcd_header.to_bytes()); 289 .copy_from_slice(&bdc_header.to_bytes());
290 buf8[SdpcmHeader::SIZE + PADDING_SIZE + BcdHeader::SIZE..][..packet.len()] 290 buf8[SdpcmHeader::SIZE + PADDING_SIZE + BdcHeader::SIZE..][..packet.len()]
291 .copy_from_slice(packet); 291 .copy_from_slice(packet);
292 292
293 let total_len = (total_len + 3) & !3; // round up to 4byte 293 let total_len = (total_len + 3) & !3; // round up to 4byte
@@ -366,13 +366,13 @@ where
366 } 366 }
367 } 367 }
368 CHANNEL_TYPE_EVENT => { 368 CHANNEL_TYPE_EVENT => {
369 let Some((_, bcd_packet)) = BcdHeader::parse(payload) else { 369 let Some((_, bdc_packet)) = BdcHeader::parse(payload) else {
370 warn!("BCD event, incomplete header"); 370 warn!("BDC event, incomplete header");
371 return; 371 return;
372 }; 372 };
373 373
374 let Some((event_packet, evt_data)) = EventPacket::parse(bcd_packet) else { 374 let Some((event_packet, evt_data)) = EventPacket::parse(bdc_packet) else {
375 warn!("BCD event, incomplete data"); 375 warn!("BDC event, incomplete data");
376 return; 376 return;
377 }; 377 };
378 378
@@ -439,7 +439,7 @@ where
439 } 439 }
440 } 440 }
441 CHANNEL_TYPE_DATA => { 441 CHANNEL_TYPE_DATA => {
442 let Some((_, packet)) = BcdHeader::parse(payload) else { return }; 442 let Some((_, packet)) = BdcHeader::parse(payload) else { return };
443 trace!("rx pkt {:02x}", Bytes(&packet[..packet.len().min(48)])); 443 trace!("rx pkt {:02x}", Bytes(&packet[..packet.len().min(48)]));
444 444
445 match self.ch.try_rx_buf() { 445 match self.ch.try_rx_buf() {
diff --git a/src/structs.rs b/src/structs.rs
index 3b646e1a8..5ba633c74 100644
--- a/src/structs.rs
+++ b/src/structs.rs
@@ -165,7 +165,7 @@ pub const BDC_VERSION_SHIFT: u8 = 4;
165#[derive(Debug, Clone, Copy)] 165#[derive(Debug, Clone, Copy)]
166#[cfg_attr(feature = "defmt", derive(defmt::Format))] 166#[cfg_attr(feature = "defmt", derive(defmt::Format))]
167#[repr(C)] 167#[repr(C)]
168pub struct BcdHeader { 168pub struct BdcHeader {
169 pub flags: u8, 169 pub flags: u8,
170 /// 802.1d Priority (low 3 bits) 170 /// 802.1d Priority (low 3 bits)
171 pub priority: u8, 171 pub priority: u8,
@@ -173,24 +173,24 @@ pub struct BcdHeader {
173 /// Offset from end of BDC header to packet data, in 4-uint8_t words. Leaves room for optional headers. 173 /// Offset from end of BDC header to packet data, in 4-uint8_t words. Leaves room for optional headers.
174 pub data_offset: u8, 174 pub data_offset: u8,
175} 175}
176impl_bytes!(BcdHeader); 176impl_bytes!(BdcHeader);
177 177
178impl BcdHeader { 178impl BdcHeader {
179 pub fn parse(packet: &mut [u8]) -> Option<(&mut Self, &mut [u8])> { 179 pub fn parse(packet: &mut [u8]) -> Option<(&mut Self, &mut [u8])> {
180 if packet.len() < Self::SIZE { 180 if packet.len() < Self::SIZE {
181 return None; 181 return None;
182 } 182 }
183 183
184 let (bcd_header, bcd_packet) = packet.split_at_mut(Self::SIZE); 184 let (bdc_header, bdc_packet) = packet.split_at_mut(Self::SIZE);
185 let bcd_header = Self::from_bytes_mut(bcd_header.try_into().unwrap()); 185 let bdc_header = Self::from_bytes_mut(bdc_header.try_into().unwrap());
186 trace!(" {:?}", bcd_header); 186 trace!(" {:?}", bdc_header);
187 187
188 let packet_start = 4 * bcd_header.data_offset as usize; 188 let packet_start = 4 * bdc_header.data_offset as usize;
189 189
190 let bcd_packet = bcd_packet.get_mut(packet_start..)?; 190 let bdc_packet = bdc_packet.get_mut(packet_start..)?;
191 trace!(" {:02x}", Bytes(&bcd_packet[..bcd_packet.len().min(36)])); 191 trace!(" {:02x}", Bytes(&bdc_packet[..bdc_packet.len().min(36)]));
192 192
193 Some((bcd_header, bcd_packet)) 193 Some((bdc_header, bdc_packet))
194 } 194 }
195} 195}
196 196