@@ -1027,14 +1027,20 @@ impl<'a> Interface<'a> {
1027
1027
#[ cfg( feature = "proto-ipv4-fragmentation" ) ]
1028
1028
match self . ipv4_egress ( device) {
1029
1029
Ok ( true ) => return Ok ( true ) ,
1030
- Err ( e) => return Err ( e) ,
1030
+ Err ( e) => {
1031
+ net_debug ! ( "failed to transmit: {}" , e) ;
1032
+ return Err ( e) ;
1033
+ }
1031
1034
_ => ( ) ,
1032
1035
}
1033
1036
1034
1037
#[ cfg( feature = "proto-sixlowpan-fragmentation" ) ]
1035
1038
match self . sixlowpan_egress ( device) {
1036
1039
Ok ( true ) => return Ok ( true ) ,
1037
- Err ( e) => return Err ( e) ,
1040
+ Err ( e) => {
1041
+ net_debug ! ( "failed to transmit: {}" , e) ;
1042
+ return Err ( e) ;
1043
+ }
1038
1044
_ => ( ) ,
1039
1045
}
1040
1046
@@ -1333,6 +1339,11 @@ impl<'a> Interface<'a> {
1333
1339
}
1334
1340
}
1335
1341
1342
+ /// Process fragments that still need to be sent for IPv4 packets.
1343
+ ///
1344
+ /// This function returns a boolean value indicating whether any packets were
1345
+ /// processed or emitted, and thus, whether the readiness of any socket might
1346
+ /// have changed.
1336
1347
#[ cfg( feature = "proto-ipv4-fragmentation" ) ]
1337
1348
fn ipv4_egress < D > ( & mut self , device : & mut D ) -> Result < bool >
1338
1349
where
@@ -1354,25 +1365,23 @@ impl<'a> Interface<'a> {
1354
1365
} = & self . out_packets . ipv4_out_packet ;
1355
1366
1356
1367
if * packet_len > * sent_bytes {
1357
- match device. transmit ( ) . ok_or ( Error :: Exhausted ) {
1358
- Ok ( tx_token) => {
1359
- if let Err ( e) = self
1360
- . inner
1361
- . dispatch_ipv4_out_packet ( tx_token, & mut self . out_packets . ipv4_out_packet )
1362
- {
1363
- net_debug ! ( "failed to transmit: {}" , e) ;
1364
- }
1365
- }
1366
- Err ( e) => {
1367
- net_debug ! ( "failed to transmit: {}" , e) ;
1368
- }
1368
+ match device. transmit ( ) {
1369
+ Some ( tx_token) => self
1370
+ . inner
1371
+ . dispatch_ipv4_out_packet ( tx_token, & mut self . out_packets . ipv4_out_packet ) ,
1372
+ None => Err ( Error :: Exhausted ) ,
1369
1373
}
1370
- Ok ( true )
1374
+ . map ( |_| true )
1371
1375
} else {
1372
1376
Ok ( false )
1373
1377
}
1374
1378
}
1375
1379
1380
+ /// Process fragments that still need to be sent for 6LoWPAN packets.
1381
+ ///
1382
+ /// This function returns a boolean value indicating whether any packets were
1383
+ /// processed or emitted, and thus, whether the readiness of any socket might
1384
+ /// have changed.
1376
1385
#[ cfg( feature = "proto-sixlowpan-fragmentation" ) ]
1377
1386
fn sixlowpan_egress < D > ( & mut self , device : & mut D ) -> Result < bool >
1378
1387
where
@@ -1393,25 +1402,15 @@ impl<'a> Interface<'a> {
1393
1402
..
1394
1403
} = & self . out_packets . sixlowpan_out_packet ;
1395
1404
1396
- if * packet_len == 0 {
1397
- return Ok ( false ) ;
1398
- }
1399
-
1400
1405
if * packet_len > * sent_bytes {
1401
- match device. transmit ( ) . ok_or ( Error :: Exhausted ) {
1402
- Ok ( tx_token) => {
1403
- if let Err ( e) = self . inner . dispatch_ieee802154_out_packet (
1404
- tx_token,
1405
- & mut self . out_packets . sixlowpan_out_packet ,
1406
- ) {
1407
- net_debug ! ( "failed to transmit: {}" , e) ;
1408
- }
1409
- }
1410
- Err ( e) => {
1411
- net_debug ! ( "failed to transmit: {}" , e) ;
1412
- }
1406
+ match device. transmit ( ) {
1407
+ Some ( tx_token) => self . inner . dispatch_ieee802154_out_packet (
1408
+ tx_token,
1409
+ & mut self . out_packets . sixlowpan_out_packet ,
1410
+ ) ,
1411
+ None => Err ( Error :: Exhausted ) ,
1413
1412
}
1414
- Ok ( true )
1413
+ . map ( |_| true )
1415
1414
} else {
1416
1415
Ok ( false )
1417
1416
}
0 commit comments