Clean-up packet socket naming
This commit is contained in:
parent
621097b6c8
commit
579ee6f573
@ -1595,7 +1595,7 @@ static void stm32_receive(FAR struct stm32_ethmac_s *priv)
|
|||||||
#ifdef CONFIG_NET_PKT
|
#ifdef CONFIG_NET_PKT
|
||||||
/* When packet sockets are enabled, feed the frame into the packet tap */
|
/* When packet sockets are enabled, feed the frame into the packet tap */
|
||||||
|
|
||||||
uip_pktinput(&priv->dev);
|
pkt_input(&priv->dev);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Check if the packet is a valid size for the uIP buffer configuration
|
/* Check if the packet is a valid size for the uIP buffer configuration
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
|
|
||||||
/* Representation of a uIP packet socket connection */
|
/* Representation of a uIP packet socket connection */
|
||||||
|
|
||||||
struct uip_pkt_conn
|
struct pkt_conn_s
|
||||||
{
|
{
|
||||||
dq_entry_t node; /* Supports a double linked list */
|
dq_entry_t node; /* Supports a double linked list */
|
||||||
uint8_t lmac[6]; /* The local Ethernet address in network byte order */
|
uint8_t lmac[6]; /* The local Ethernet address in network byte order */
|
||||||
@ -86,21 +86,19 @@ struct uip_pkt_conn
|
|||||||
* normally something done by the implementation of the socket() API
|
* normally something done by the implementation of the socket() API
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct uip_pkt_conn *uip_pktalloc(void);
|
FAR struct pkt_conn_s *pkt_alloc(void);
|
||||||
|
|
||||||
/* Allocate a new packet socket data callback */
|
/* Allocate a new packet socket data callback */
|
||||||
|
|
||||||
#define uip_pktcallbackalloc(conn) uip_callbackalloc(&conn->list)
|
#define pkt_callbackalloc(conn) uip_callbackalloc(&conn->list)
|
||||||
#define uip_pktcallbackfree(conn,cb) uip_callbackfree(cb, &conn->list)
|
#define pkt_callbackfree(conn,cb) uip_callbackfree(cb, &conn->list)
|
||||||
|
|
||||||
/* Free a connection structure that is no longer in use. This should
|
/* Free a connection structure that is no longer in use. This should
|
||||||
* be done by the implementation of close()
|
* be done by the implementation of close()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void uip_pktfree(struct uip_pkt_conn *conn);
|
void pkt_free(FAR struct pkt_conn_s *conn);
|
||||||
|
void pkt_poll(FAR struct uip_driver_s *dev, FAR struct pkt_conn_s *conn);
|
||||||
void uip_pktpoll(struct uip_driver_s *dev, struct uip_pkt_conn *conn);
|
int pkt_input(FAR struct uip_driver_s *dev);
|
||||||
|
|
||||||
int uip_pktinput(struct uip_driver_s *dev);
|
|
||||||
|
|
||||||
#endif /* __INCLUDE_NUTTX_NET_PKT_H */
|
#endif /* __INCLUDE_NUTTX_NET_PKT_H */
|
||||||
|
@ -370,41 +370,6 @@ int uip_lockedwait(sem_t *sem);
|
|||||||
* data, etc.
|
* data, etc.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Send data on the current connection.
|
|
||||||
*
|
|
||||||
* This function is used to send out a single segment of TCP
|
|
||||||
* data. Only applications that have been invoked by uIP for event
|
|
||||||
* processing can send data.
|
|
||||||
*
|
|
||||||
* The amount of data that actually is sent out after a call to this
|
|
||||||
* funcion is determined by the maximum amount of data TCP allows. uIP
|
|
||||||
* will automatically crop the data so that only the appropriate
|
|
||||||
* amount of data is sent. The function uip_mss() can be used to query
|
|
||||||
* uIP for the amount of data that actually will be sent.
|
|
||||||
*
|
|
||||||
* Note: This function does not guarantee that the sent data will
|
|
||||||
* arrive at the destination. If the data is lost in the network, the
|
|
||||||
* application will be invoked with the UIP_REXMIT flag set. The
|
|
||||||
* application will then have to resend the data using this function.
|
|
||||||
*
|
|
||||||
* data A pointer to the data which is to be sent.
|
|
||||||
*
|
|
||||||
* len The maximum amount of data bytes to be sent.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void uip_send(FAR struct uip_driver_s *dev, FAR const void *buf, int len);
|
|
||||||
|
|
||||||
#ifdef CONFIG_NET_IOB
|
|
||||||
struct iob_s;
|
|
||||||
void uip_iobsend(FAR struct uip_driver_s *dev, FAR struct iob_s *buf,
|
|
||||||
unsigned int len, unsigned int offset);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_NET_PKT
|
|
||||||
void uip_pktsend(FAR struct uip_driver_s *dev, FAR const void *buf,
|
|
||||||
unsigned int len);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* uIP convenience and converting functions.
|
/* uIP convenience and converting functions.
|
||||||
*
|
*
|
||||||
* These functions can be used for converting between different data
|
* These functions can be used for converting between different data
|
||||||
|
@ -73,7 +73,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifdef CONFIG_NET_PKT
|
#ifdef CONFIG_NET_PKT
|
||||||
static int pkt_bind(FAR struct uip_pkt_conn *conn,
|
static int pkt_bind(FAR struct pkt_conn_s *conn,
|
||||||
FAR const struct sockaddr_ll *addr)
|
FAR const struct sockaddr_ll *addr)
|
||||||
{
|
{
|
||||||
int ifindex;
|
int ifindex;
|
||||||
|
@ -56,6 +56,7 @@
|
|||||||
|
|
||||||
#include "net.h"
|
#include "net.h"
|
||||||
#include "uip/uip.h"
|
#include "uip/uip.h"
|
||||||
|
#include "pkt/pkt.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Pre-processor Definitions
|
* Pre-processor Definitions
|
||||||
@ -436,7 +437,7 @@ int psock_close(FAR struct socket *psock)
|
|||||||
#ifdef CONFIG_NET_PKT
|
#ifdef CONFIG_NET_PKT
|
||||||
case SOCK_RAW:
|
case SOCK_RAW:
|
||||||
{
|
{
|
||||||
struct uip_pkt_conn *conn = psock->s_conn;
|
FAR struct pkt_conn_s *conn = psock->s_conn;
|
||||||
|
|
||||||
/* Is this the last reference to the connection structure (there
|
/* Is this the last reference to the connection structure (there
|
||||||
* could be more if the socket was dup'ed).
|
* could be more if the socket was dup'ed).
|
||||||
@ -446,8 +447,8 @@ int psock_close(FAR struct socket *psock)
|
|||||||
{
|
{
|
||||||
/* Yes... free the connection structure */
|
/* Yes... free the connection structure */
|
||||||
|
|
||||||
conn->crefs = 0; /* No more references on the connection */
|
conn->crefs = 0; /* No more references on the connection */
|
||||||
uip_pktfree(psock->s_conn); /* Free uIP resources */
|
pkt_free(psock->s_conn); /* Free uIP resources */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -69,6 +69,26 @@ extern "C"
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Function Prototypes
|
* Public Function Prototypes
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
struct eth_hdr_s; /* Forward reference */
|
||||||
|
|
||||||
|
/* Defined in pkt_conn.c ****************************************************/
|
||||||
|
|
||||||
|
void pkt_initialize(void);
|
||||||
|
struct pkt_conn_s *pkt_alloc(void);
|
||||||
|
void pkt_free(FAR struct pkt_conn_s *conn);
|
||||||
|
struct pkt_conn_s *pkt_active(FAR struct eth_hdr_s *buf);
|
||||||
|
struct pkt_conn_s *uip_nextpktconn(FAR struct pkt_conn_s *conn);
|
||||||
|
|
||||||
|
/* Defined in pkt_callback.c ************************************************/
|
||||||
|
|
||||||
|
uint16_t pkt_callback(FAR struct uip_driver_s *dev,
|
||||||
|
FAR struct pkt_conn_s *conn, uint16_t flags);
|
||||||
|
|
||||||
|
/* Defined in pkt_input.c ***************************************************/
|
||||||
|
|
||||||
|
/* Defined in pkt_poll.c ****************************************************/
|
||||||
|
|
||||||
|
void pkt_poll(FAR struct uip_driver_s *dev, FAR struct pkt_conn_s *conn);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: psock_pkt_send
|
* Function: psock_pkt_send
|
||||||
|
@ -48,6 +48,7 @@
|
|||||||
#include <nuttx/net/netdev.h>
|
#include <nuttx/net/netdev.h>
|
||||||
|
|
||||||
#include "uip/uip.h"
|
#include "uip/uip.h"
|
||||||
|
#include "pkt/pkt.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Data
|
* Private Data
|
||||||
@ -62,7 +63,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: uip_pktcallback
|
* Function: pkt_callback
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Inform the application holding the packet socket of a change in state.
|
* Inform the application holding the packet socket of a change in state.
|
||||||
@ -75,8 +76,8 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
uint16_t uip_pktcallback(FAR struct uip_driver_s *dev,
|
uint16_t pkt_callback(FAR struct uip_driver_s *dev,
|
||||||
FAR struct uip_pkt_conn *conn, uint16_t flags)
|
FAR struct pkt_conn_s *conn, uint16_t flags)
|
||||||
{
|
{
|
||||||
nllvdbg("flags: %04x\n", flags);
|
nllvdbg("flags: %04x\n", flags);
|
||||||
|
|
||||||
|
@ -56,6 +56,7 @@
|
|||||||
#include <nuttx/net/arp.h>
|
#include <nuttx/net/arp.h>
|
||||||
|
|
||||||
#include "uip/uip.h"
|
#include "uip/uip.h"
|
||||||
|
#include "pkt/pkt.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Data
|
* Private Data
|
||||||
@ -63,7 +64,7 @@
|
|||||||
|
|
||||||
/* The array containing all packet socket connections */
|
/* The array containing all packet socket connections */
|
||||||
|
|
||||||
static struct uip_pkt_conn g_pkt_connections[CONFIG_NET_PKT_CONNS];
|
static struct pkt_conn_s g_pkt_connections[CONFIG_NET_PKT_CONNS];
|
||||||
|
|
||||||
/* A list of all free packet socket connections */
|
/* A list of all free packet socket connections */
|
||||||
|
|
||||||
@ -107,7 +108,7 @@ static inline void _uip_semtake(sem_t *sem)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: uip_pktinit()
|
* Name: pkt_initialize()
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Initialize the packet socket connection structures. Called once and
|
* Initialize the packet socket connection structures. Called once and
|
||||||
@ -115,7 +116,7 @@ static inline void _uip_semtake(sem_t *sem)
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void uip_pktinit(void)
|
void pkt_initialize(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -134,23 +135,23 @@ void uip_pktinit(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: uip_pktpalloc()
|
* Name: pkt_palloc()
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Alloc a new, uninitialized packet socket connection structure.
|
* Alloc a new, uninitialized packet socket connection structure.
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
struct uip_pkt_conn *uip_pktalloc(void)
|
FAR struct pkt_conn_s *pkt_alloc(void)
|
||||||
{
|
{
|
||||||
struct uip_pkt_conn *conn;
|
FAR struct pkt_conn_s *conn;
|
||||||
|
|
||||||
/* The free list is only accessed from user, non-interrupt level and
|
/* The free list is only accessed from user, non-interrupt level and
|
||||||
* is protected by a semaphore (that behaves like a mutex).
|
* is protected by a semaphore (that behaves like a mutex).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
_uip_semtake(&g_free_sem);
|
_uip_semtake(&g_free_sem);
|
||||||
conn = (struct uip_pkt_conn *)dq_remfirst(&g_free_pkt_connections);
|
conn = (FAR struct pkt_conn_s *)dq_remfirst(&g_free_pkt_connections);
|
||||||
if (conn)
|
if (conn)
|
||||||
{
|
{
|
||||||
/* Make sure that the connection is marked as uninitialized */
|
/* Make sure that the connection is marked as uninitialized */
|
||||||
@ -167,7 +168,7 @@ struct uip_pkt_conn *uip_pktalloc(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: uip_pktfree()
|
* Name: pkt_free()
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Free a packet socket connection structure that is no longer in use.
|
* Free a packet socket connection structure that is no longer in use.
|
||||||
@ -175,7 +176,7 @@ struct uip_pkt_conn *uip_pktalloc(void)
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void uip_pktfree(struct uip_pkt_conn *conn)
|
void pkt_free(FAR struct pkt_conn_s *conn)
|
||||||
{
|
{
|
||||||
/* The free list is only accessed from user, non-interrupt level and
|
/* The free list is only accessed from user, non-interrupt level and
|
||||||
* is protected by a semaphore (that behaves like a mutex).
|
* is protected by a semaphore (that behaves like a mutex).
|
||||||
@ -196,7 +197,7 @@ void uip_pktfree(struct uip_pkt_conn *conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: uip_pktactive()
|
* Name: pkt_active()
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Find a connection structure that is the appropriate
|
* Find a connection structure that is the appropriate
|
||||||
@ -207,15 +208,15 @@ void uip_pktfree(struct uip_pkt_conn *conn)
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
struct uip_pkt_conn *uip_pktactive(struct eth_hdr_s *buf)
|
FAR struct pkt_conn_s *pkt_active(struct eth_hdr_s *buf)
|
||||||
{
|
{
|
||||||
#define uip_ethaddr_cmp(addr1, addr2) \
|
#define uip_ethaddr_cmp(addr1, addr2) \
|
||||||
((addr1[0] == addr2[0]) && (addr1[1] == addr2[1]) && \
|
((addr1[0] == addr2[0]) && (addr1[1] == addr2[1]) && \
|
||||||
(addr1[2] == addr2[2]) && (addr1[3] == addr2[3]) && \
|
(addr1[2] == addr2[2]) && (addr1[3] == addr2[3]) && \
|
||||||
(addr1[4] == addr2[4]) && (addr1[5] == addr2[5]))
|
(addr1[4] == addr2[4]) && (addr1[5] == addr2[5]))
|
||||||
|
|
||||||
FAR struct uip_pkt_conn *conn =
|
FAR struct pkt_conn_s *conn =
|
||||||
(struct uip_pkt_conn *)g_active_pkt_connections.head;
|
(FAR struct pkt_conn_s *)g_active_pkt_connections.head;
|
||||||
|
|
||||||
while (conn)
|
while (conn)
|
||||||
{
|
{
|
||||||
@ -230,7 +231,7 @@ struct uip_pkt_conn *uip_pktactive(struct eth_hdr_s *buf)
|
|||||||
|
|
||||||
/* Look at the next active connection */
|
/* Look at the next active connection */
|
||||||
|
|
||||||
conn = (struct uip_pkt_conn *)conn->node.flink;
|
conn = (FAR struct pkt_conn_s *)conn->node.flink;
|
||||||
}
|
}
|
||||||
|
|
||||||
return conn;
|
return conn;
|
||||||
@ -248,15 +249,15 @@ struct uip_pkt_conn *uip_pktactive(struct eth_hdr_s *buf)
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
struct uip_pkt_conn *uip_nextpktconn(struct uip_pkt_conn *conn)
|
FAR struct pkt_conn_s *uip_nextpktconn(FAR struct pkt_conn_s *conn)
|
||||||
{
|
{
|
||||||
if (!conn)
|
if (!conn)
|
||||||
{
|
{
|
||||||
return (struct uip_pkt_conn *)g_active_pkt_connections.head;
|
return (FAR struct pkt_conn_s *)g_active_pkt_connections.head;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return (struct uip_pkt_conn *)conn->node.flink;
|
return (FAR struct pkt_conn_s *)conn->node.flink;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,6 +53,7 @@
|
|||||||
#include <nuttx/net/arp.h>
|
#include <nuttx/net/arp.h>
|
||||||
|
|
||||||
#include "uip/uip.h"
|
#include "uip/uip.h"
|
||||||
|
#include "pkt/pkt.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Pre-processor Definitions
|
* Pre-processor Definitions
|
||||||
@ -77,7 +78,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: uip_pktinput
|
* Name: pkt_input
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Handle incoming packet input
|
* Handle incoming packet input
|
||||||
@ -95,13 +96,13 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int uip_pktinput(struct uip_driver_s *dev)
|
int pkt_input(struct uip_driver_s *dev)
|
||||||
{
|
{
|
||||||
struct uip_pkt_conn *conn;
|
FAR struct pkt_conn_s *conn;
|
||||||
struct eth_hdr_s *pbuf = (struct eth_hdr_s *)dev->d_buf;
|
FAR struct eth_hdr_s *pbuf = (struct eth_hdr_s *)dev->d_buf;
|
||||||
int ret = OK;
|
int ret = OK;
|
||||||
|
|
||||||
conn = uip_pktactive(pbuf);
|
conn = pkt_active(pbuf);
|
||||||
if (conn)
|
if (conn)
|
||||||
{
|
{
|
||||||
uint16_t flags;
|
uint16_t flags;
|
||||||
@ -114,7 +115,7 @@ int uip_pktinput(struct uip_driver_s *dev)
|
|||||||
|
|
||||||
/* Perform the application callback */
|
/* Perform the application callback */
|
||||||
|
|
||||||
flags = uip_pktcallback(dev, conn, UIP_NEWDATA);
|
flags = pkt_callback(dev, conn, UIP_NEWDATA);
|
||||||
|
|
||||||
/* If the operation was successful, the UIP_NEWDATA flag is removed
|
/* If the operation was successful, the UIP_NEWDATA flag is removed
|
||||||
* and thus the packet can be deleted (OK will be returned).
|
* and thus the packet can be deleted (OK will be returned).
|
||||||
|
@ -53,6 +53,7 @@
|
|||||||
#include <nuttx/net/pkt.h>
|
#include <nuttx/net/pkt.h>
|
||||||
|
|
||||||
#include "uip/uip.h"
|
#include "uip/uip.h"
|
||||||
|
#include "pkt/pkt.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Pre-processor Definitions
|
* Pre-processor Definitions
|
||||||
@ -75,7 +76,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: uip_pktpoll
|
* Name: pkt_poll
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Poll a packet "connection" structure for availability of TX data
|
* Poll a packet "connection" structure for availability of TX data
|
||||||
@ -92,7 +93,7 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void uip_pktpoll(struct uip_driver_s *dev, struct uip_pkt_conn *conn)
|
void pkt_poll(FAR struct uip_driver_s *dev, FAR struct pkt_conn_s *conn)
|
||||||
{
|
{
|
||||||
nlldbg("IN\n");
|
nlldbg("IN\n");
|
||||||
|
|
||||||
@ -110,7 +111,7 @@ void uip_pktpoll(struct uip_driver_s *dev, struct uip_pkt_conn *conn)
|
|||||||
|
|
||||||
/* Perform the application callback */
|
/* Perform the application callback */
|
||||||
|
|
||||||
(void)uip_pktcallback(dev, conn, UIP_POLL);
|
(void)pkt_callback(dev, conn, UIP_POLL);
|
||||||
|
|
||||||
/* If the application has data to send, setup the UDP/IP header */
|
/* If the application has data to send, setup the UDP/IP header */
|
||||||
|
|
||||||
|
@ -57,6 +57,7 @@
|
|||||||
|
|
||||||
#include "net.h"
|
#include "net.h"
|
||||||
#include "uip/uip.h"
|
#include "uip/uip.h"
|
||||||
|
#include "pkt/pkt.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Pre-processor Definitions
|
* Pre-processor Definitions
|
||||||
@ -237,11 +238,11 @@ ssize_t psock_pkt_send(FAR struct socket *psock, FAR const void *buf,
|
|||||||
|
|
||||||
if (len > 0)
|
if (len > 0)
|
||||||
{
|
{
|
||||||
struct uip_pkt_conn *conn = (struct uip_pkt_conn*)psock->s_conn;
|
FAR struct pkt_conn_s *conn = (FAR struct pkt_conn_s *)psock->s_conn;
|
||||||
|
|
||||||
/* Allocate resource to receive a callback */
|
/* Allocate resource to receive a callback */
|
||||||
|
|
||||||
state.snd_cb = uip_pktcallbackalloc(conn);
|
state.snd_cb = pkt_callbackalloc(conn);
|
||||||
if (state.snd_cb)
|
if (state.snd_cb)
|
||||||
{
|
{
|
||||||
FAR struct uip_driver_s *dev;
|
FAR struct uip_driver_s *dev;
|
||||||
@ -279,7 +280,7 @@ ssize_t psock_pkt_send(FAR struct socket *psock, FAR const void *buf,
|
|||||||
|
|
||||||
/* Make sure that no further interrupts are processed */
|
/* Make sure that no further interrupts are processed */
|
||||||
|
|
||||||
uip_pktcallbackfree(conn, state.snd_cb);
|
pkt_callbackfree(conn, state.snd_cb);
|
||||||
|
|
||||||
/* Clear the no-ARP bit in the device flags */
|
/* Clear the no-ARP bit in the device flags */
|
||||||
|
|
||||||
|
@ -60,6 +60,7 @@
|
|||||||
#include "uip/uip.h"
|
#include "uip/uip.h"
|
||||||
#include "tcp/tcp.h"
|
#include "tcp/tcp.h"
|
||||||
#include "udp/udp.h"
|
#include "udp/udp.h"
|
||||||
|
#include "pkt/pkt.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Definitions
|
* Definitions
|
||||||
@ -1038,9 +1039,9 @@ static ssize_t recvfrom_result(int result, struct recvfrom_s *pstate)
|
|||||||
|
|
||||||
#ifdef CONFIG_NET_PKT
|
#ifdef CONFIG_NET_PKT
|
||||||
static ssize_t pkt_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len,
|
static ssize_t pkt_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len,
|
||||||
FAR struct sockaddr_ll *from)
|
FAR struct sockaddr_ll *from)
|
||||||
{
|
{
|
||||||
struct uip_pkt_conn *conn = (struct uip_pkt_conn *)psock->s_conn;
|
FAR struct pkt_conn_s *conn = (FAR struct pkt_conn_s *)psock->s_conn;
|
||||||
struct recvfrom_s state;
|
struct recvfrom_s state;
|
||||||
uip_lock_t save;
|
uip_lock_t save;
|
||||||
int ret;
|
int ret;
|
||||||
@ -1060,7 +1061,7 @@ static ssize_t pkt_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
ret = uip_pktconnect(conn, NULL);
|
ret = pkt_connect(conn, NULL);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
goto errout_with_state;
|
goto errout_with_state;
|
||||||
@ -1069,7 +1070,7 @@ static ssize_t pkt_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len,
|
|||||||
|
|
||||||
/* Set up the callback in the connection */
|
/* Set up the callback in the connection */
|
||||||
|
|
||||||
state.rf_cb = uip_pktcallbackalloc(conn);
|
state.rf_cb = pkt_callbackalloc(conn);
|
||||||
if (state.rf_cb)
|
if (state.rf_cb)
|
||||||
{
|
{
|
||||||
state.rf_cb->flags = UIP_NEWDATA|UIP_POLL;
|
state.rf_cb->flags = UIP_NEWDATA|UIP_POLL;
|
||||||
@ -1090,7 +1091,7 @@ static ssize_t pkt_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len,
|
|||||||
|
|
||||||
/* Make sure that no further interrupts are processed */
|
/* Make sure that no further interrupts are processed */
|
||||||
|
|
||||||
uip_pktcallbackfree(conn, state.rf_cb);
|
pkt_callbackfree(conn, state.rf_cb);
|
||||||
ret = recvfrom_result(ret, &state);
|
ret = recvfrom_result(ret, &state);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -48,6 +48,7 @@
|
|||||||
#include "net.h"
|
#include "net.h"
|
||||||
#include "tcp/tcp.h"
|
#include "tcp/tcp.h"
|
||||||
#include "udp/udp.h"
|
#include "udp/udp.h"
|
||||||
|
#include "pkt/pkt.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Global Functions
|
* Global Functions
|
||||||
@ -170,7 +171,7 @@ int psock_socket(int domain, int type, int protocol, FAR struct socket *psock)
|
|||||||
* in the new socket instance.
|
* in the new socket instance.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct uip_pkt_conn *conn = uip_pktalloc();
|
FAR struct pkt_conn_s *conn = pkt_alloc();
|
||||||
if (!conn)
|
if (!conn)
|
||||||
{
|
{
|
||||||
/* Failed to reserve a connection structure */
|
/* Failed to reserve a connection structure */
|
||||||
|
@ -58,7 +58,6 @@ config NET_TCP_WRITE_BUFFERS
|
|||||||
bool "Enable TCP/IP write buffering"
|
bool "Enable TCP/IP write buffering"
|
||||||
default n
|
default n
|
||||||
select NET_IOB
|
select NET_IOB
|
||||||
depends on !NET_PKT
|
|
||||||
---help---
|
---help---
|
||||||
Write buffers allows buffering of ongoing TCP/IP packets, providing
|
Write buffers allows buffering of ongoing TCP/IP packets, providing
|
||||||
for higher performance, streamed output.
|
for higher performance, streamed output.
|
||||||
|
@ -70,7 +70,6 @@ extern "C"
|
|||||||
* Public Function Prototypes
|
* Public Function Prototypes
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifdef CONFIG_NET_TCP
|
|
||||||
/* Defined in tcp_conn.c ****************************************************/
|
/* Defined in tcp_conn.c ****************************************************/
|
||||||
|
|
||||||
void tcp_initialize(void);
|
void tcp_initialize(void);
|
||||||
@ -130,7 +129,6 @@ uint16_t tcp_callback(FAR struct uip_driver_s *dev,
|
|||||||
uint16_t tcp_datahandler(FAR struct tcp_conn_s *conn,
|
uint16_t tcp_datahandler(FAR struct tcp_conn_s *conn,
|
||||||
FAR uint8_t *buffer, uint16_t nbytes);
|
FAR uint8_t *buffer, uint16_t nbytes);
|
||||||
#endif
|
#endif
|
||||||
#endif /* CONFIG_NET_TCP */
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: psock_tcp_send
|
* Function: psock_tcp_send
|
||||||
|
@ -662,7 +662,7 @@ static uint16_t psock_send_interrupt(FAR struct uip_driver_s *dev,
|
|||||||
* Function: psock_tcp_send
|
* Function: psock_tcp_send
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* The psock_tcp_send() call may be used only when the TCP socket is in a
|
* psock_tcp_send() call may be used only when the TCP socket is in a
|
||||||
* connected state (so that the intended recipient is known).
|
* connected state (so that the intended recipient is known).
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
|
@ -57,6 +57,7 @@
|
|||||||
|
|
||||||
#include "net.h"
|
#include "net.h"
|
||||||
#include "uip/uip.h"
|
#include "uip/uip.h"
|
||||||
|
#include "tcp/tcp.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Pre-processor Definitions
|
* Pre-processor Definitions
|
||||||
@ -443,10 +444,10 @@ end_wait:
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: tcp_send
|
* Function: psock_tcp_send
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* The tcp_send() call may be used only when the TCP socket is in a
|
* psock_tcp_send() call may be used only when the TCP socket is in a
|
||||||
* connected state (so that the intended recipient is known).
|
* connected state (so that the intended recipient is known).
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
@ -499,7 +500,8 @@ end_wait:
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
ssize_t tcp_send(FAR struct socket *psock, FAR const void *buf, size_t len)
|
ssize_t psock_tcp_send(FAR struct socket *psock,
|
||||||
|
FAR const void *buf, size_t len)
|
||||||
{
|
{
|
||||||
struct send_s state;
|
struct send_s state;
|
||||||
uip_lock_t save;
|
uip_lock_t save;
|
||||||
|
117
net/uip/uip.h
117
net/uip/uip.h
@ -96,35 +96,104 @@ extern "C"
|
|||||||
#define EXTERN extern
|
#define EXTERN extern
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Defined in uip_callback.c ************************************************/
|
/****************************************************************************
|
||||||
|
* Function: uip_callbackinit
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Configure the pre-allocated callback structures into a free list.
|
||||||
|
* This is called internally as part of uIP initialization and should not
|
||||||
|
* be accessed from the application or socket layer.
|
||||||
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* This function is called with interrupts disabled.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
void uip_callbackinit(void);
|
void uip_callbackinit(void);
|
||||||
FAR struct uip_callback_s *uip_callbackalloc(struct uip_callback_s **list);
|
|
||||||
void uip_callbackfree(FAR struct uip_callback_s *cb, struct uip_callback_s **list);
|
/****************************************************************************
|
||||||
uint16_t uip_callbackexecute(FAR struct uip_driver_s *dev, void *pvconn,
|
* Function: uip_callbackalloc
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Allocate a callback container from the free list.
|
||||||
|
* This is called internally as part of uIP initialization and should not
|
||||||
|
* be accessed from the application or socket layer.
|
||||||
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* This function is called with interrupts disabled.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
FAR struct uip_callback_s *uip_callbackalloc(FAR struct uip_callback_s **list);
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Function: uip_callbackfree
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Return a callback container to the free list.
|
||||||
|
* This is called internally as part of uIP initialization and should not
|
||||||
|
* be accessed from the application or socket layer.
|
||||||
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* This function is called with interrupts disabled.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void uip_callbackfree(FAR struct uip_callback_s *cb,
|
||||||
|
FAR struct uip_callback_s **list);
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Function: uip_callbackexecute
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Execute a list of callbacks.
|
||||||
|
* This is called internally as part of uIP initialization and should not
|
||||||
|
* be accessed from the application or socket layer.
|
||||||
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* This function is called with interrupts disabled.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
uint16_t uip_callbackexecute(FAR struct uip_driver_s *dev, FAR void *pvconn,
|
||||||
uint16_t flags, FAR struct uip_callback_s *list);
|
uint16_t flags, FAR struct uip_callback_s *list);
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Send data on the current connection.
|
||||||
|
*
|
||||||
|
* This function is used to send out a single segment of TCP
|
||||||
|
* data. Only applications that have been invoked by uIP for event
|
||||||
|
* processing can send data.
|
||||||
|
*
|
||||||
|
* The amount of data that actually is sent out after a call to this
|
||||||
|
* function is determined by the maximum amount of data TCP allows. uIP
|
||||||
|
* will automatically crop the data so that only the appropriate
|
||||||
|
* amount of data is sent. The function uip_mss() can be used to query
|
||||||
|
* uIP for the amount of data that actually will be sent.
|
||||||
|
*
|
||||||
|
* Note: This function does not guarantee that the sent data will
|
||||||
|
* arrive at the destination. If the data is lost in the network, the
|
||||||
|
* application will be invoked with the UIP_REXMIT flag set. The
|
||||||
|
* application will then have to resend the data using this function.
|
||||||
|
*
|
||||||
|
* data A pointer to the data which is to be sent.
|
||||||
|
*
|
||||||
|
* len The maximum amount of data bytes to be sent.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void uip_send(FAR struct uip_driver_s *dev, FAR const void *buf, int len);
|
||||||
|
|
||||||
|
#ifdef CONFIG_NET_IOB
|
||||||
|
struct iob_s;
|
||||||
|
void uip_iobsend(FAR struct uip_driver_s *dev, FAR struct iob_s *buf,
|
||||||
|
unsigned int len, unsigned int offset);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_NET_PKT
|
#ifdef CONFIG_NET_PKT
|
||||||
/* Defined in uip_pktconn.c *************************************************/
|
void uip_pktsend(FAR struct uip_driver_s *dev, FAR const void *buf,
|
||||||
|
unsigned int len);
|
||||||
void uip_pktinit(void);
|
#endif
|
||||||
struct uip_pkt_conn *uip_pktalloc(void);
|
|
||||||
void uip_pktfree(struct uip_pkt_conn *conn);
|
|
||||||
struct uip_pkt_conn *uip_pktactive(struct eth_hdr_s *buf);
|
|
||||||
struct uip_pkt_conn *uip_nextpktconn(struct uip_pkt_conn *conn);
|
|
||||||
|
|
||||||
/* Defined in uip_pktcallback.c *********************************************/
|
|
||||||
|
|
||||||
uint16_t uip_pktcallback(struct uip_driver_s *dev, struct uip_pkt_conn *conn,
|
|
||||||
uint16_t flags);
|
|
||||||
|
|
||||||
/* Defined in uip_pktinput.c ************************************************/
|
|
||||||
|
|
||||||
/* Defined in uip_pktpoll.c *************************************************/
|
|
||||||
|
|
||||||
void uip_pktpoll(struct uip_driver_s *dev, struct uip_pkt_conn *conn);
|
|
||||||
|
|
||||||
#endif /* CONFIG_NET_PKT */
|
|
||||||
|
|
||||||
#undef EXTERN
|
#undef EXTERN
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -50,6 +50,7 @@
|
|||||||
#include "uip/uip.h"
|
#include "uip/uip.h"
|
||||||
#include "tcp/tcp.h"
|
#include "tcp/tcp.h"
|
||||||
#include "udp/udp.h"
|
#include "udp/udp.h"
|
||||||
|
#include "pkt/pkt.h"
|
||||||
#include "igmp/igmp.h"
|
#include "igmp/igmp.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -129,7 +130,7 @@ void uip_initialize(void)
|
|||||||
/* Initialize packet socket suport */
|
/* Initialize packet socket suport */
|
||||||
|
|
||||||
#ifdef CONFIG_NET_PKT
|
#ifdef CONFIG_NET_PKT
|
||||||
uip_pktinit();
|
pkt_initialize();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize the listening port structures */
|
/* Initialize the listening port structures */
|
||||||
|
@ -96,6 +96,7 @@
|
|||||||
#include "uip/uip.h"
|
#include "uip/uip.h"
|
||||||
#include "tcp/tcp.h"
|
#include "tcp/tcp.h"
|
||||||
#include "udp/udp.h"
|
#include "udp/udp.h"
|
||||||
|
#include "pkt/pkt.h"
|
||||||
#include "icmp/icmp.h"
|
#include "icmp/icmp.h"
|
||||||
#include "igmp/igmp.h"
|
#include "igmp/igmp.h"
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
#include "uip/uip.h"
|
#include "uip/uip.h"
|
||||||
#include "tcp/tcp.h"
|
#include "tcp/tcp.h"
|
||||||
#include "udp/udp.h"
|
#include "udp/udp.h"
|
||||||
|
#include "pkt/pkt.h"
|
||||||
#include "icmp/icmp.h"
|
#include "icmp/icmp.h"
|
||||||
#include "igmp/igmp.h"
|
#include "igmp/igmp.h"
|
||||||
|
|
||||||
@ -76,7 +77,7 @@
|
|||||||
static int uip_pollpktconnections(struct uip_driver_s *dev,
|
static int uip_pollpktconnections(struct uip_driver_s *dev,
|
||||||
uip_poll_callback_t callback)
|
uip_poll_callback_t callback)
|
||||||
{
|
{
|
||||||
struct uip_pkt_conn *pkt_conn = NULL;
|
FAR struct pkt_conn_s *pkt_conn = NULL;
|
||||||
int bstop = 0;
|
int bstop = 0;
|
||||||
|
|
||||||
/* Traverse all of the allocated packet connections and perform the poll action */
|
/* Traverse all of the allocated packet connections and perform the poll action */
|
||||||
@ -85,7 +86,7 @@ static int uip_pollpktconnections(struct uip_driver_s *dev,
|
|||||||
{
|
{
|
||||||
/* Perform the packet TX poll */
|
/* Perform the packet TX poll */
|
||||||
|
|
||||||
uip_pktpoll(dev, pkt_conn);
|
pkt_poll(dev, pkt_conn);
|
||||||
|
|
||||||
/* Call back into the driver */
|
/* Call back into the driver */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user