[rtems commit] bsp/mpc55xx: Implement network interface off
Sebastian Huber
sebh at rtems.org
Wed Jul 18 07:44:02 UTC 2012
Module: rtems
Branch: master
Commit: 356c9285e3303371af78bf7fdabebccf713d238f
Changeset: http://git.rtems.org/rtems/commit/?id=356c9285e3303371af78bf7fdabebccf713d238f
Author: Christian Mauderer <Christian.Mauderer at embedded-brains.de>
Date: Tue Apr 3 14:35:55 2012 +0200
bsp/mpc55xx: Implement network interface off
---
.../libbsp/powerpc/mpc55xxevb/network/smsc9218i.c | 32 ++++++++++++++++++--
1 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/network/smsc9218i.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/network/smsc9218i.c
index 3ec27b5..c32486c 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/network/smsc9218i.c
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/network/smsc9218i.c
@@ -1788,6 +1788,33 @@ static void smsc9218i_interface_stats(smsc9218i_driver_entry *e)
printf("frame compact count: %u\n", jc->frame_compact_count);
}
+static void smsc9218i_interface_off(struct ifnet *ifp)
+{
+ smsc9218i_driver_entry *e = (smsc9218i_driver_entry *) ifp->if_softc;
+ rtems_status_code sc = RTEMS_SUCCESSFUL;
+ rtems_interrupt_level level;
+ union SIU_DIRER_tag direr = MPC55XX_ZERO_FLAGS;
+
+ /* remove interrupt handler */
+ sc = rtems_interrupt_handler_remove(
+ MPC55XX_IRQ_SIU_EXTERNAL_0,
+ smsc9218i_interrupt_handler,
+ e
+ );
+ ASSERT_SC(sc);
+
+ mpc55xx_edma_release_channel(
+ &e->edma_receive
+ );
+
+ mpc55xx_edma_release_channel(
+ &e->edma_transmit
+ );
+
+ /* set in reset state */
+ smsc9218i_reset_signal(false);
+}
+
static int smsc9218i_interface_ioctl(
struct ifnet *ifp,
ioctl_command_t command,
@@ -1808,12 +1835,11 @@ static int smsc9218i_interface_ioctl(
ether_ioctl(ifp, command, data);
break;
case SIOCSIFFLAGS:
- if (ifp->if_flags & IFF_RUNNING) {
- /* TODO: off */
- }
if (ifp->if_flags & IFF_UP) {
ifp->if_flags |= IFF_RUNNING;
/* TODO: init */
+ } else {
+ smsc9218i_interface_off(ifp);
}
break;
case SIO_RTEMS_SHOW_STATS:
More information about the vc
mailing list