|
@@ -658,7 +658,7 @@ int net_rx ( struct io_buffer *iobuf, struct net_device *netdev,
|
658
|
658
|
DBGC ( netdev, "NETDEV %p unknown network protocol %04x\n",
|
659
|
659
|
netdev, ntohs ( net_proto ) );
|
660
|
660
|
free_iob ( iobuf );
|
661
|
|
- return 0;
|
|
661
|
+ return -ENOTSUP;
|
662
|
662
|
}
|
663
|
663
|
|
664
|
664
|
/**
|
|
@@ -705,7 +705,12 @@ static void net_step ( struct process *process __unused ) {
|
705
|
705
|
continue;
|
706
|
706
|
}
|
707
|
707
|
|
708
|
|
- net_rx ( iobuf, netdev, net_proto, ll_source );
|
|
708
|
+ /* Hand packet to network layer */
|
|
709
|
+ if ( ( rc = net_rx ( iob_disown ( iobuf ), netdev,
|
|
710
|
+ net_proto, ll_source ) ) != 0 ) {
|
|
711
|
+ /* Record error for diagnosis */
|
|
712
|
+ netdev_rx_err ( netdev, NULL, rc );
|
|
713
|
+ }
|
709
|
714
|
}
|
710
|
715
|
}
|
711
|
716
|
}
|