| Electronic Components Datasheet Search |
|
UM0851 Datasheet(PDF) 116 Page - STMicroelectronics |
|
|
|||||||||||||||||||||||||||||
UM0851 Datasheet(HTML) 116 Page - STMicroelectronics |
|
116 / 245 page ![]() Communication device drivers UM0851 116/245 Doc ID 16604 Rev 2 Once the net_device structure has been initialized, the registration process is completed by passing the structure to register_hdlcdev(). Open HDLC channels channel_open() is called if the application opens the HDLC channel. It resets the DMA buffer ring and starts the DMA engine to begin receiving HDLC frames. Then it calls net_start_queue() to enable transmitting packages. Finally it calls hdlc_open() to let Generic HDLC Layer finish the device opening. int channel_open(net_device *dev) { struct channel_t *ch = dev_to_hdlc(dev)->priv; reset_ring(ch); /* start DMA */ ...... net_start_queue(dev); return hdlc_open(dev); } Close HDLC channels channel_close() is called if the application closes the HDLC channel. It first calls net_stop_queue() to stop the transmit queue. Then, it writes the STOP command to the DMA engine and waits for it to be stopped. Finally it calls hdlc_close() to let the generic HDLC layer finish the device closing. int channel_close(net_device *dev) { struct channel_t *ch = dev_to_hdlc(dev)->priv; net_stop_queue(dev); /* stop DMA */ ...... /* wait DMA stopped */ ...... return hdlc_close(dev); } Xmit over HDLC channels channel_xmit() is called when there is data ready to be sent out. It will append the buffer to the transmit buffer ring. And if Tx DMA is not running, it will start Tx DMA to transmit the package. This function is non-blocked. It doesn't wait the transmitting to be completed. Transmitting status is checked in bottom half of Tx interrupt handler. int channel_xmit(struct sk_buff *skb, struct net_device *dev) { struct channel_t *ch = dev_to_hdlc(dev)->priv; if (Tx buffer ring full) return -EBUSY; |
|
Link URL |
| Does ALLDATASHEET help your business so far? [ DONATE ] |
About Alldatasheet | Advertisement | Contact us | Privacy Policy | Link to Datasheet | Link Exchange | Manufacturer List All Rights Reserved©Alldatasheet.com |
| Russian : Alldatasheetru.com | Korean : Alldatasheet.co.kr | Spanish : Alldatasheet.es | French : Alldatasheet.fr | Italian : Alldatasheetit.com Portuguese : Alldatasheetpt.com | Polish : Alldatasheet.pl | Vietnamese : Alldatasheet.vn Indian : Alldatasheet.in | Mexican : Alldatasheet.com.mx | British : Alldatasheet.co.uk | New Zealand : Alldatasheet.co.nz |
|
Family Site : ic2ic.com |
icmetro.com |