Minor corrections to Ethernet driver skeleton
This commit is contained in:
parent
6d1a79ed40
commit
2317da4192
@ -56,7 +56,7 @@
|
|||||||
#include <nuttx/net/arp.h>
|
#include <nuttx/net/arp.h>
|
||||||
#include <nuttx/net/netdev.h>
|
#include <nuttx/net/netdev.h>
|
||||||
|
|
||||||
#ifndef CONFIG_NET_NOINTS
|
#ifdef CONFIG_NET_NOINTS
|
||||||
# include <nuttx/wqueue.h>
|
# include <nuttx/wqueue.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -141,17 +141,17 @@ static int skel_interrupt(int irq, FAR void *context);
|
|||||||
|
|
||||||
/* Watchdog timer expirations */
|
/* Watchdog timer expirations */
|
||||||
|
|
||||||
static inline void skel_poll_process(FAR struct skel_driver_s *skel);
|
|
||||||
#ifdef CONFIG_NET_NOINTS
|
|
||||||
static void skel_poll_work(FAR void *arg);
|
|
||||||
#endif
|
|
||||||
static void skel_polltimer(int argc, uint32_t arg, ...);
|
|
||||||
|
|
||||||
static inline void skel_txtimeout_process(FAR struct skel_driver_s *skel);
|
static inline void skel_txtimeout_process(FAR struct skel_driver_s *skel);
|
||||||
#ifdef CONFIG_NET_NOINTS
|
#ifdef CONFIG_NET_NOINTS
|
||||||
static void skel_txtimeout_work(FAR void *arg);
|
static void skel_txtimeout_work(FAR void *arg);
|
||||||
#endif
|
#endif
|
||||||
static void skel_txtimeout(int argc, uint32_t arg, ...);
|
static void skel_txtimeout_expiry(int argc, uint32_t arg, ...);
|
||||||
|
|
||||||
|
static inline void skel_poll_process(FAR struct skel_driver_s *skel);
|
||||||
|
#ifdef CONFIG_NET_NOINTS
|
||||||
|
static void skel_poll_work(FAR void *arg);
|
||||||
|
#endif
|
||||||
|
static void skel_poll_expiry(int argc, uint32_t arg, ...);
|
||||||
|
|
||||||
/* NuttX callback functions */
|
/* NuttX callback functions */
|
||||||
|
|
||||||
@ -202,7 +202,7 @@ static int skel_transmit(FAR struct skel_driver_s *skel)
|
|||||||
|
|
||||||
/* Setup the TX timeout watchdog (perhaps restarting the timer) */
|
/* Setup the TX timeout watchdog (perhaps restarting the timer) */
|
||||||
|
|
||||||
(void)wd_start(skel->sk_txtimeout, skeleton_TXTIMEOUT, skel_txtimeout, 1, (uint32_t)skel);
|
(void)wd_start(skel->sk_txtimeout, skeleton_TXTIMEOUT, skel_txtimeout_expiry, 1, (uint32_t)skel);
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,7 +410,7 @@ static inline void skel_interrupt_process(FAR struct skel_driver_s *skel)
|
|||||||
#ifdef CONFIG_NET_NOINTS
|
#ifdef CONFIG_NET_NOINTS
|
||||||
static void skel_interrupt_work(FAR void *arg)
|
static void skel_interrupt_work(FAR void *arg)
|
||||||
{
|
{
|
||||||
FAR struct skel_driver_s *skel = ( FAR struct skel_driver_s *)arg;
|
FAR struct skel_driver_s *skel = (FAR struct skel_driver_s *)arg;
|
||||||
|
|
||||||
/* Process pending Ethernet interrupts */
|
/* Process pending Ethernet interrupts */
|
||||||
|
|
||||||
@ -460,7 +460,7 @@ static int skel_interrupt(int irq, FAR void *context)
|
|||||||
|
|
||||||
/* Cancel any pending poll work */
|
/* Cancel any pending poll work */
|
||||||
|
|
||||||
work_cancel(HPWORK, skel->sk_work);
|
work_cancel(HPWORK, &skel->sk_work);
|
||||||
|
|
||||||
/* Schedule to perform the interrupt processing on the worker thread. */
|
/* Schedule to perform the interrupt processing on the worker thread. */
|
||||||
|
|
||||||
@ -480,7 +480,7 @@ static int skel_interrupt(int irq, FAR void *context)
|
|||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Process a TX timeout. Called from the either the watchdog timer
|
* Process a TX timeout. Called from the either the watchdog timer
|
||||||
* expiration logic or from the worker thread, depeding upon the
|
* expiration logic or from the worker thread, depending upon the
|
||||||
* configuration. The timeout means that the last TX never completed.
|
* configuration. The timeout means that the last TX never completed.
|
||||||
* Reset the hardware and start again.
|
* Reset the hardware and start again.
|
||||||
*
|
*
|
||||||
@ -526,16 +526,16 @@ static inline void skel_txtimeout_process(FAR struct skel_driver_s *skel)
|
|||||||
#ifdef CONFIG_NET_NOINTS
|
#ifdef CONFIG_NET_NOINTS
|
||||||
static void skel_txtimeout_work(FAR void *arg)
|
static void skel_txtimeout_work(FAR void *arg)
|
||||||
{
|
{
|
||||||
FAR struct skel_driver_s *skel = ( FAR struct skel_driver_s *)arg;
|
FAR struct skel_driver_s *skel = (FAR struct skel_driver_s *)arg;
|
||||||
|
|
||||||
/* Process pending Ethernet interrupts */
|
/* Process pending Ethernet interrupts */
|
||||||
|
|
||||||
skel_txtimetout_process(skel);
|
skel_txtimeout_process(skel);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: skel_txtimeout
|
* Function: skel_txtimeout_expiry
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Our TX watchdog timed out. Called from the timer interrupt handler.
|
* Our TX watchdog timed out. Called from the timer interrupt handler.
|
||||||
@ -553,7 +553,7 @@ static void skel_txtimeout_work(FAR void *arg)
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void skel_txtimeout(int argc, uint32_t arg, ...)
|
static void skel_txtimeout_expiry(int argc, uint32_t arg, ...)
|
||||||
{
|
{
|
||||||
FAR struct skel_driver_s *skel = (FAR struct skel_driver_s *)arg;
|
FAR struct skel_driver_s *skel = (FAR struct skel_driver_s *)arg;
|
||||||
|
|
||||||
@ -563,11 +563,11 @@ static void skel_txtimeout(int argc, uint32_t arg, ...)
|
|||||||
* condition with interrupt work that is already queued and in progress.
|
* condition with interrupt work that is already queued and in progress.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Cancel any pending poll or interrupt work. This will have not effect
|
/* Cancel any pending poll or interrupt work. This will have no effect
|
||||||
* on work that has already been started.
|
* on work that has already been started.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
work_cancel(HPWORK, skel->sk_work);
|
work_cancel(HPWORK, &skel->sk_work);
|
||||||
|
|
||||||
/* Schedule to perform the TX timeout processing on the worker thread.
|
/* Schedule to perform the TX timeout processing on the worker thread.
|
||||||
* TODO: Assure that no there is not pending interrupt or poll work.
|
* TODO: Assure that no there is not pending interrupt or poll work.
|
||||||
@ -575,7 +575,7 @@ static void skel_txtimeout(int argc, uint32_t arg, ...)
|
|||||||
|
|
||||||
work_queue(HPWORK, &skel->sk_work, skel_txtimeout_work, skel, 0);
|
work_queue(HPWORK, &skel->sk_work, skel_txtimeout_work, skel, 0);
|
||||||
#else
|
#else
|
||||||
/* Process the interrupt now */
|
/* Process the timeout now */
|
||||||
|
|
||||||
skel_txtimeout_process(skel);
|
skel_txtimeout_process(skel);
|
||||||
#endif
|
#endif
|
||||||
@ -613,7 +613,7 @@ static inline void skel_poll_process(FAR struct skel_driver_s *skel)
|
|||||||
|
|
||||||
/* Setup the watchdog poll timer again */
|
/* Setup the watchdog poll timer again */
|
||||||
|
|
||||||
(void)wd_start(skel->sk_txpoll, skeleton_WDDELAY, skel_polltimer, 1, arg);
|
(void)wd_start(skel->sk_txpoll, skeleton_WDDELAY, skel_poll_expiry, 1, skel);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -636,7 +636,7 @@ static inline void skel_poll_process(FAR struct skel_driver_s *skel)
|
|||||||
#ifdef CONFIG_NET_NOINTS
|
#ifdef CONFIG_NET_NOINTS
|
||||||
static void skel_poll_work(FAR void *arg)
|
static void skel_poll_work(FAR void *arg)
|
||||||
{
|
{
|
||||||
FAR struct skel_driver_s *skel = ( FAR struct skel_driver_s *)arg;
|
FAR struct skel_driver_s *skel = (FAR struct skel_driver_s *)arg;
|
||||||
|
|
||||||
/* Perform the poll */
|
/* Perform the poll */
|
||||||
|
|
||||||
@ -645,7 +645,7 @@ static void skel_poll_work(FAR void *arg)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: skel_polltimer
|
* Function: skel_poll_expiry
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Periodic timer handler. Called from the timer interrupt handler.
|
* Periodic timer handler. Called from the timer interrupt handler.
|
||||||
@ -662,7 +662,7 @@ static void skel_poll_work(FAR void *arg)
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void skel_polltimer(int argc, uint32_t arg, ...)
|
static void skel_poll_expiry(int argc, uint32_t arg, ...)
|
||||||
{
|
{
|
||||||
FAR struct skel_driver_s *skel = (FAR struct skel_driver_s *)arg;
|
FAR struct skel_driver_s *skel = (FAR struct skel_driver_s *)arg;
|
||||||
|
|
||||||
@ -671,7 +671,7 @@ static void skel_polltimer(int argc, uint32_t arg, ...)
|
|||||||
* pending interrupt actions.
|
* pending interrupt actions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (work_available(&skel->sk_work)
|
if (work_available(&skel->sk_work))
|
||||||
{
|
{
|
||||||
/* Schedule to perform the interrupt processing on the worker thread.
|
/* Schedule to perform the interrupt processing on the worker thread.
|
||||||
* TODO: Make sure that there can be no pending interrupt work.
|
* TODO: Make sure that there can be no pending interrupt work.
|
||||||
@ -685,7 +685,7 @@ static void skel_polltimer(int argc, uint32_t arg, ...)
|
|||||||
* cycle.
|
* cycle.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(void)wd_start(skel->sk_txpoll, skeleton_WDDELAY, skel_polltimer, 1, arg);
|
(void)wd_start(skel->sk_txpoll, skeleton_WDDELAY, skel_poll_expiry, 1, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@ -693,8 +693,6 @@ static void skel_polltimer(int argc, uint32_t arg, ...)
|
|||||||
|
|
||||||
skel_poll_process(skel);
|
skel_poll_process(skel);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -726,7 +724,7 @@ static int skel_ifup(struct net_driver_s *dev)
|
|||||||
|
|
||||||
/* Set and activate a timer process */
|
/* Set and activate a timer process */
|
||||||
|
|
||||||
(void)wd_start(skel->sk_txpoll, skeleton_WDDELAY, skel_polltimer, 1, (uint32_t)skel);
|
(void)wd_start(skel->sk_txpoll, skeleton_WDDELAY, skel_poll_expiry, 1, (uint32_t)skel);
|
||||||
|
|
||||||
/* Enable the Ethernet interrupt */
|
/* Enable the Ethernet interrupt */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user