diff --git a/include/nuttx/net/net.h b/include/nuttx/net/net.h index 3ea3459d70..0543dc0ee9 100644 --- a/include/nuttx/net/net.h +++ b/include/nuttx/net/net.h @@ -243,6 +243,9 @@ struct socket_conn_s #ifdef CONFIG_NET_SOLINGER socktimeo_t s_linger; /* Linger timeout value (in deciseconds) */ #endif +#ifdef CONFIG_NET_TIMESTAMP + int32_t s_timestamp; /* Socket timestamp enabled/disabled */ +#endif #endif /* Connection-specific content may follow */ @@ -259,15 +262,6 @@ struct socket uint8_t s_domain; /* IP domain */ uint8_t s_type; /* Protocol type */ uint8_t s_proto; /* Socket Protocol */ - - /* Socket options */ - -#ifdef CONFIG_NET_SOCKOPTS -#ifdef CONFIG_NET_TIMESTAMP - int32_t s_timestamp; /* Socket timestamp enabled/disabled */ -#endif -#endif - FAR void *s_conn; /* Connection inherits from struct socket_conn_s */ /* Socket interface */ diff --git a/net/can/can_callback.c b/net/can/can_callback.c index dfca174384..d91e67e0e1 100644 --- a/net/can/can_callback.c +++ b/net/can/can_callback.c @@ -123,7 +123,7 @@ uint16_t can_callback(FAR struct net_driver_s *dev, #ifdef CONFIG_NET_TIMESTAMP /* TIMESTAMP sockopt is activated, create timestamp and copy to iob */ - if (conn->psock->s_timestamp) + if (conn->sconn.s_timestamp) { struct timespec *ts = (struct timespec *) &dev->d_appdata[dev->d_len]; diff --git a/net/can/can_recvmsg.c b/net/can/can_recvmsg.c index 5f091946d1..6ea11900f3 100644 --- a/net/can/can_recvmsg.c +++ b/net/can/can_recvmsg.c @@ -438,9 +438,9 @@ static uint16_t can_recvfrom_eventhandler(FAR struct net_driver_s *dev, #endif { #if defined(CONFIG_NET_TIMESTAMP) - if ((conn->psock->s_timestamp && (dev->d_len > + if ((conn->sconn.s_timestamp && (dev->d_len > sizeof(struct can_frame) + sizeof(struct timeval))) - || (!conn->psock->s_timestamp && (dev->d_len > + || (!conn->sconn.s_timestamp && (dev->d_len > sizeof(struct can_frame)))) #else if (dev->d_len > sizeof(struct can_frame)) @@ -458,7 +458,7 @@ static uint16_t can_recvfrom_eventhandler(FAR struct net_driver_s *dev, can_newdata(dev, pstate); #ifdef CONFIG_NET_TIMESTAMP - if (pstate->pr_sock->s_timestamp) + if (conn->sconn.s_timestamp) { if (pstate->pr_msglen == sizeof(struct timeval)) { @@ -597,7 +597,7 @@ ssize_t can_recvmsg(FAR struct socket *psock, FAR struct msghdr *msg, state.pr_buffer = msg->msg_iov->iov_base; #ifdef CONFIG_NET_TIMESTAMP - if (psock->s_timestamp && msg->msg_controllen >= + if (conn->sconn.s_timestamp && msg->msg_controllen >= (sizeof(struct cmsghdr) + sizeof(struct timeval))) { struct cmsghdr *cmsg = CMSG_FIRSTHDR(msg); @@ -629,7 +629,7 @@ ssize_t can_recvmsg(FAR struct socket *psock, FAR struct msghdr *msg, if (ret > 0) { #ifdef CONFIG_NET_TIMESTAMP - if (psock->s_timestamp) + if (conn->sconn.s_timestamp) { if (state.pr_msglen == sizeof(struct timeval)) { diff --git a/net/socket/getsockopt.c b/net/socket/getsockopt.c index ec610f466b..37594e06f1 100644 --- a/net/socket/getsockopt.c +++ b/net/socket/getsockopt.c @@ -255,7 +255,7 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option, return -EINVAL; } - *(FAR int *)value = (int)psock->s_timestamp; + *(FAR int *)value = (int)conn->s_timestamp; } break; #endif diff --git a/net/socket/setsockopt.c b/net/socket/setsockopt.c index 50659ce526..a0add14116 100644 --- a/net/socket/setsockopt.c +++ b/net/socket/setsockopt.c @@ -392,7 +392,7 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option, net_lock(); - psock->s_timestamp = *((FAR int32_t *)value); + conn->s_timestamp = *((FAR int32_t *)value); net_unlock(); }