Main Page   Modules   Alphabetical List   Data Structures   File List   Data Fields   Globals  

IXP425 USB RNDIS End Driver Codelet (IxUSBRNDIS) API
[IXP425 USB RNDIS Codelet (IxUSBRNDIS) API]

IXP425 codelet for RNDIS End API. More...

Defines

#define RNDIS_END_INET_ADDR
 RNDIS END driver with inet address.

#define RNDIS_END_MAC_ADDRESS
 RNDIS END driver with MAC address.


Functions

PUBLIC STATUS ixUSBRNDISStart (void)
 Starts the RNDIS component.

PUBLIC void rndisInt (void *pDrvCtrl, int packet)
 RNDIS END hook for receiving packets.


Detailed Description

IXP425 codelet for RNDIS End API.

Description of the RNDIS End driver

Running the codelet in Linux.

  • insmod lib/linuxbe/ixp400.o
  • insmod lib/linuxbe/ixp400_codelets_usb.o
  • ifconfig usb0 x.x.x.x (Where x.x.x.x is the desired ip address of the interface)

Running the codelet in VxWorks big endian.

  • Load module that was built
    • ld < lib/vxbe/codelets_usbTest.out
  • Run the codelet
    • ixUSBRNDISStart
    • ifAddrSet "usb0", "x.x.x.x" (Where x.x.x.x is the desired ip address of the interface)

Running the codelet in VxWorks little endian.

  • Load module that was built
    • ld < lib/vxle/codelets_usbTest.out
  • Run the codelet
    • ixUSBRNDISStart
    • ifAddrSet "usb0", "x.x.x.x" (Where x.x.x.x is the desired ip address of the interface)

The codelet is executed by calling the ixUSBRNDISStart function. No parameters are needed to be passed in. The start function first loads and initializes the device driver. It then goes on to load the device driver into the MUX. The function then goes on to call muxDevStart() passing in the called earlier. muxDevStart start the device that has already been initialized and handles registering the driver's interrupt service routine and anything else necessary to handle receiving and transmitting. The function finally assigns an IP address to the RNDIS interface.

Overview of IxRNDISEnd.c

Description of macros.

In this example driver the macros RNDIS_OUT_SHORT and RNDIS_IN_SHORT are sample macros to read/write data to a mock device. If a device communicates through formatted control blocks in shared memory, the accesses to those control blocks should also be through redefinable macros.

The macros SYS_INT_CONNECT, SYS_INT_DISCONNECT, and SYS_INT_ENABLE allow the driver to be customized for BSPs that use special versions of these routines.

The macro SYS_INT_CONNECT is used to connect the interrupt handler to the appropriate vector. By default it is the routine intConnect().

The macro SYS_INT_DISCONNECT is used to disconnect the interrupt handler prior to unloading the module. By default this is a dummy routine that returns OK.

The macro SYS_INT_ENABLE is used to enable the interrupt level for the end device. It is called once during initialization. By default this is the routine sysLanIntEnable(), defined in the module sysLib.o.

The macro SYS_ENET_ADDR_GET is used to get the ethernet address (MAC) for the device. The single argument to this routine is the END_DEVICE pointer. By default this routine copies the ethernet address stored in the global variable sysTemplateEnetAddr into the END_DEVICE structure.

Brief overview of the APIs. ixUSBRNDISStart()

  • Initializes and starts the end driver. Called to run the codelet.

END_OBJ* rndisLoad ( char* initString, void *unused )

  • This routine initializes the driver and the device to the operational state. All of the device specific parameters are passed in the initString.

rndisParse ( END_DEVICE * pDrvCtrl, char * initString )

  • Parse the input string. Fill in values in the driver control structure.

rndisMemInit ( END_DEVICE * pDrvCtrl )

  • Initialize memory for the chip.

rndisStart ( END_OBJ * pDrvCtrl )

  • Handle controller interrupt.

rndisRecv ( END_DEVICE *pDrvCtrl, M_BLK_ID packet )

  • Process the next incoming packet.

rndisHandleRcvInt ( END_DEVICE *pDrvCtrl, M_BLK_ID packet )

  • Task level interrupt service for input packets.

rndisSend ( END_DEVICE * pDrvCtrl, M_BLK_ID pMblk )

  • The driver send routine.

rndisIoctl ( END_DEVICE * pDrvCtrl, int cmd, caddr_t data )

  • The driver I/O control routine.

rndisConfig ( END_DEVICE *pDrvCtrl )

  • Reconfigure the interface under us.

rndisAddrFilterSet ( END_DEVICE *pDrvCtrl )

  • Set the address filter for multicast addresses.

rndisPollRcv ( END_DEVICE * pDrvCtrl, M_BLK_ID pMblk )

  • Routine to receive a packet in polled mode.

rndisPollSend ( END_DEVICE* pDrvCtrl, M_BLK_ID pMblk )

  • Routine to send a packet in polled mode.

rndisMCastAdd ( END_DEVICE *pDrvCtrl char* pAddress )

  • Add a multicast address for the device.

rndisMCastDel ( END_DEVICE *pDrvCtrl, char* pAddress )

  • Delete a multicast address for the device.

rndisMCastGet ( END_DEVICE *pDrvCtrl, MULTI_TABLE* pTable )

  • Get the multicast address list for the device.

rndisStop ( END_DEVICE *pDrvCtrl )

  • Stop the device.

rndisUnload ( END_DEVICE* pDrvCtrl )

  • Unload a driver from the system.

rndisPollStart ( END_DEVICE * pDrvCtrl )

  • Start polled mode operations.

rndisPollStop ( END_DEVICE * pDrvCtrl )

  • Stop polled mode operations.

rndisReset ( END_DEVICE *pDrvCtrl )

  • Reset device.

Define Documentation

#define RNDIS_END_INET_ADDR
 

RNDIS END driver with inet address.

Definition at line 260 of file IxUSBRNDISEnd.h.

#define RNDIS_END_MAC_ADDRESS
 

RNDIS END driver with MAC address.

Definition at line 267 of file IxUSBRNDISEnd.h.


Function Documentation

PUBLIC STATUS ixUSBRNDISStart void   ) 
 

Starts the RNDIS component.

Parameters:
None 
Returns:
  • OK - Succesfully start RNDIS component

  • ERROR - Failed to start RNDIS component

PUBLIC void rndisInt void *  pDrvCtrl,
int  packet
 

RNDIS END hook for receiving packets.

Parameters:
pDrvCtrl - pointer to END device
packet - received packet
Returns:
None

Automatically generated from sources. © Intel Corp. 2003