On Fri Oct 24, 2008 at 07:58:49AM +0530, Linu Cherian wrote: > > Caleb, > I would like to help on this. I have worked on the management > driver of similar chip. Probably we need two seperate drivers, CMIIW. > - management driver with a char interface for switch management > - network driver for managing the data packets > > and Iam interested to work on the management driver if you agree with > the above. Or do we have a better way of doing it? Caleb, iam posting the top level design to the list for feedbacks. The processor interface provides three basic operations 1. read/write configuration register 2. send/receive Contorl command frames - for reading port statistics, manipulating the MAC table etc. 3. send/receive Ethernet frame This is the case in which the CPU management interface is used as a switch data port. In this case, CPU has to be assigned a MAC address. Obviously, the driver for the ZL50408, should provide mechanisms to carry out the above three operations. * Operations 1 & 2 can be exported using two char dev interfaces, say /dev/zlreg and /dev/zlctrlfrm. User space applications can make use of read/write system calls to do configuration register access or to send/receive control frames. * Operation 1(configuration register access) through /dev/zlreg: Congiguration registes are accessed through the memory mapped index register and data register. /* Cofiguration register write */ uint16_t address; uint8_t data; address = 0x10; data = 0xaa; ioctl(fd, SET_CONFIGADDR, &address); write(fd, &data, 1); /* write to single register */ /* Configuraton register read */ uint16_t address; uint8_t data; address = 0x10; ioctl(fd, SET_CONFIGADDR, &address); read(fd, &data, 1); /* read from single register */ Since the interface supports consecutive reads/writes, user space can request for multiple register read/write using a single system call. * Operation 2(send/receive control command frames) through /dev/zlctrlfrm. Framing and decoding of control frames need to be handled in a user space library. * Operation 3(sending and receiving ethernet frames) can be exported using the network interface say eth1. So, the driver should have (say)eth_frame_tx and eth_frame_rx functions exported to the network layer. Processor interface document is available here. http://agata.pd.infn.it/LLP_Carrier/New_ATCA_Carrier_web/Appnotes_And_Reference_Designs/Zarlink_Application_Notes/ZLAN_026_AppNote_Jun06.pdf Is this the right design to move forward? -- Linu cherian