You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/03/15 10:01:09 UTC

[incubator-nuttx-apps] branch master updated (61007bc -> e0e41c5)

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git.


    from 61007bc  system/adb: Update to microADB to the latest version
     new 6c2a487  feature: pointer of netdev ioctl support cross-core access via clean dcache
     new f1d5d6e  fix: ap socket can not accept twice
     new 5e22b6f  fix: iperf can not exit when stop
     new e0e41c5  feature: wapi add encode parse when scan

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 include/wireless/wapi.h                       | 17 ++++++++++
 netutils/iperf/iperf.c                        |  2 ++
 netutils/usrsock_rpmsg/usrsock_rpmsg.h        | 15 +++++++++
 netutils/usrsock_rpmsg/usrsock_rpmsg_client.c | 45 +++++++++++++++++++++++++++
 netutils/usrsock_rpmsg/usrsock_rpmsg_server.c | 18 +++++++++++
 wireless/wapi/src/wapi.c                      |  8 ++---
 wireless/wapi/src/wireless.c                  |  9 ++++++
 7 files changed, 110 insertions(+), 4 deletions(-)

[incubator-nuttx-apps] 03/04: fix: iperf can not exit when stop

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git

commit 5e22b6f5649a54872ddff9f93e8cfb3f0ae883ff
Author: zhanghongyu <zh...@xiaomi.com>
AuthorDate: Mon Feb 28 21:22:25 2022 +0800

    fix: iperf can not exit when stop
    
    Signed-off-by: zhanghongyu <zh...@xiaomi.com>
---
 netutils/iperf/iperf.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/netutils/iperf/iperf.c b/netutils/iperf/iperf.c
index 44b362c..5261c63 100644
--- a/netutils/iperf/iperf.c
+++ b/netutils/iperf/iperf.c
@@ -388,6 +388,7 @@ static int iperf_run_tcp_server(void)
           iperf_start_report();
 
           t.tv_sec = IPERF_SOCKET_RX_TIMEOUT;
+          t.tv_usec = 0;
           setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &t, sizeof(t));
         }
 
@@ -476,6 +477,7 @@ static int iperf_run_udp_server(void)
   printf("want recv=%d", want_recv);
 
   t.tv_sec = IPERF_SOCKET_RX_TIMEOUT;
+  t.tv_usec = 0;
   setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &t, sizeof(t));
 
   while (!s_iperf_ctrl.finish)

[incubator-nuttx-apps] 04/04: feature: wapi add encode parse when scan

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git

commit e0e41c5d7f58ef6542f6fd732a3b97a47c2a59dc
Author: zhanghongyu <zh...@xiaomi.com>
AuthorDate: Wed Jan 12 17:51:40 2022 +0800

    feature: wapi add encode parse when scan
    
    Signed-off-by: zhanghongyu <zh...@xiaomi.com>
---
 include/wireless/wapi.h      | 17 +++++++++++++++++
 wireless/wapi/src/wapi.c     |  8 ++++----
 wireless/wapi/src/wireless.c |  9 +++++++++
 3 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/include/wireless/wapi.h b/include/wireless/wapi.h
index 062291d..75b1325 100644
--- a/include/wireless/wapi.h
+++ b/include/wireless/wapi.h
@@ -147,6 +147,21 @@ enum wapi_mode_e
   WAPI_MODE_MESH    = IW_MODE_MESH     /* Mesh (IEEE 802.11s) network */
 };
 
+/* Flags for encoding */
+
+enum wapi_encode_e
+{
+  WAPI_ENCODE_INDEX      = IW_ENCODE_INDEX,       /* Token index (if needed) */
+  WAPI_ENCODE_FLAGS      = IW_ENCODE_FLAGS,       /* Flags defined below */
+  WAPI_ENCODE_MODE       = IW_ENCODE_MODE,        /* Modes defined below */
+  WAPI_ENCODE_DISABLED   = IW_ENCODE_DISABLED,    /* Encoding disabled */
+  WAPI_ENCODE_ENABLED    = IW_ENCODE_ENABLED,     /* Encoding enabled */
+  WAPI_ENCODE_RESTRICTED = IW_ENCODE_RESTRICTED,  /* Refuse non-encoded packets */
+  WAPI_ENCODE_OPEN       = IW_ENCODE_OPEN,        /* Accept non-encoded packets */
+  WAPI_ENCODE_NOKEY      = IW_ENCODE_NOKEY,       /* Key is write only, so not present */
+  WAPI_ENCODE_TEMP       = IW_ENCODE_TEMP         /* Temporary key */
+};
+
 /* Bitrate flags.
  *
  * At the moment, unicast (IW_BITRATE_UNICAST) and broadcast
@@ -193,6 +208,8 @@ struct wapi_scan_info_s
   int bitrate;
   int has_rssi;
   int rssi;
+  int has_encode;
+  int encode;
 };
 
 /* Linked list container for routing table rows. */
diff --git a/wireless/wapi/src/wapi.c b/wireless/wapi/src/wapi.c
index 43a00ec..89bcf08 100644
--- a/wireless/wapi/src/wapi.c
+++ b/wireless/wapi/src/wapi.c
@@ -708,14 +708,14 @@ static int wapi_scan_results_cmd(int sock, int argc, FAR char **argv)
 
   /* Print found aps */
 
-  printf("bssid / frequency / signal level / ssid\n");
+  printf("bssid / frequency / signal level / encode / ssid\n");
   for (info = list.head.scan; info; info = info->next)
     {
-      printf("%02x:%02x:%02x:%02x:%02x:%02x\t%g\t%d\t%s\n",
+      printf("%02x:%02x:%02x:%02x:%02x:%02x\t%g\t%d\t%04x\t%s\n",
              info->ap.ether_addr_octet[0], info->ap.ether_addr_octet[1],
              info->ap.ether_addr_octet[2], info->ap.ether_addr_octet[3],
-             info->ap.ether_addr_octet[4],  info->ap.ether_addr_octet[5],
-             info->freq, info->rssi, info->essid);
+             info->ap.ether_addr_octet[4], info->ap.ether_addr_octet[5],
+             info->freq, info->rssi, info->encode, info->essid);
     }
 
   /* Free ap list */
diff --git a/wireless/wapi/src/wireless.c b/wireless/wapi/src/wireless.c
index cf3f2c2..ecba875 100644
--- a/wireless/wapi/src/wireless.c
+++ b/wireless/wapi/src/wireless.c
@@ -263,6 +263,7 @@ static int wapi_event_stream_extract(FAR struct wapi_event_stream_s *stream,
   switch (iwe_stream->cmd)
     {
       case SIOCGIWESSID:
+      case SIOCGIWENCODE:
       case IWEVGENIE:
         iwe->cmd = iwe_stream->cmd;
         iwe->len = offsetof(struct iw_event, u) + sizeof(struct iw_point);
@@ -329,6 +330,7 @@ static int wapi_scan_event(FAR struct iw_event *event,
         /* Reset it. */
 
         bzero(temp, sizeof(struct wapi_scan_info_s));
+        temp->encode = 0xffff;
 
         /* Save cell identifier. */
 
@@ -438,6 +440,13 @@ static int wapi_scan_event(FAR struct iw_event *event,
 
         break;
       }
+
+    case SIOCGIWENCODE:
+      {
+        info->has_encode = 1;
+        info->encode = event->u.data.flags;
+        break;
+      }
     }
 
   return 0;

[incubator-nuttx-apps] 01/04: feature: pointer of netdev ioctl support cross-core access via clean dcache

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git

commit 6c2a487f85df3b58119867096a829bd3416f9923
Author: zhanghongyu <zh...@xiaomi.com>
AuthorDate: Tue Dec 14 17:31:53 2021 +0800

    feature: pointer of netdev ioctl support cross-core access via clean dcache
    
    Signed-off-by: zhanghongyu <zh...@xiaomi.com>
---
 netutils/usrsock_rpmsg/usrsock_rpmsg.h        | 15 +++++++++
 netutils/usrsock_rpmsg/usrsock_rpmsg_client.c | 45 +++++++++++++++++++++++++++
 netutils/usrsock_rpmsg/usrsock_rpmsg_server.c | 17 ++++++++++
 3 files changed, 77 insertions(+)

diff --git a/netutils/usrsock_rpmsg/usrsock_rpmsg.h b/netutils/usrsock_rpmsg/usrsock_rpmsg.h
index 4c0b1bd..3ca4493 100644
--- a/netutils/usrsock_rpmsg/usrsock_rpmsg.h
+++ b/netutils/usrsock_rpmsg/usrsock_rpmsg.h
@@ -27,6 +27,11 @@
 
 #include <nuttx/net/usrsock.h>
 
+#ifdef CONFIG_NETDEV_WIRELESS_IOCTL
+#  include <nuttx/wireless/wireless.h>
+#  include <metal/cache.h>
+#endif
+
 /****************************************************************************
  * Pre-processor definitions
  ****************************************************************************/
@@ -35,6 +40,16 @@
 
 #define USRSOCK_RPMSG_DNS_EVENT      127
 
+#ifdef CONFIG_NETDEV_WIRELESS_IOCTL
+#  define WL_IS80211POINTERCMD(cmd)  ((cmd) == SIOCGIWSCAN || \
+                                      (cmd) == SIOCSIWCOUNTRY || \
+                                      (cmd) == SIOCGIWRANGE || \
+                                      (cmd) == SIOCSIWENCODEEXT || \
+                                      (cmd) == SIOCGIWENCODEEXT || \
+                                      (cmd) == SIOCGIWESSID || \
+                                      (cmd) == SIOCSIWESSID)
+#endif
+
 /****************************************************************************
  * Public Types
  ****************************************************************************/
diff --git a/netutils/usrsock_rpmsg/usrsock_rpmsg_client.c b/netutils/usrsock_rpmsg/usrsock_rpmsg_client.c
index a33fff8..2d608e6 100644
--- a/netutils/usrsock_rpmsg/usrsock_rpmsg_client.c
+++ b/netutils/usrsock_rpmsg/usrsock_rpmsg_client.c
@@ -49,6 +49,12 @@ struct usrsock_rpmsg_s
   struct file           file;
 };
 
+enum usrsock_cache_action_e
+{
+  USRSOCK_COHERENT_BEFORE,
+  USRSOCK_COHERENT_AFTER,
+};
+
 /****************************************************************************
  * Private Function Prototypes
  ****************************************************************************/
@@ -155,6 +161,41 @@ static int usrsock_rpmsg_ept_cb(struct rpmsg_endpoint *ept, void *data,
   return ret;
 }
 
+#ifdef CONFIG_NETDEV_WIRELESS_IOCTL
+
+static void usersock_coherent_cache(FAR void *buf,
+                                    enum usrsock_cache_action_e action)
+{
+  FAR struct usrsock_request_ioctl_s *req = buf;
+  FAR struct iwreq *wlreq;
+
+  if (req->head.reqid == USRSOCK_REQUEST_IOCTL)
+    {
+      if (WL_IS80211POINTERCMD(req->cmd))
+        {
+          wlreq = (FAR struct iwreq *)(req + 1);
+          if (action == USRSOCK_COHERENT_BEFORE)
+            {
+              metal_cache_flush(wlreq->u.data.pointer,
+                                wlreq->u.data.length);
+            }
+
+          if (action == USRSOCK_COHERENT_AFTER)
+            {
+              metal_cache_invalidate(wlreq->u.data.pointer,
+                                    wlreq->u.data.length);
+            }
+        }
+    }
+}
+
+#else
+static void usersock_coherent_cache(FAR void *buf,
+                                    enum usrsock_cache_action_e action)
+{
+}
+#endif
+
 /****************************************************************************
  * Public Functions
  ****************************************************************************/
@@ -251,6 +292,8 @@ int main(int argc, char *argv[])
               break;
             }
 
+          usersock_coherent_cache(buf, USRSOCK_COHERENT_BEFORE);
+
           /* Send the packet to remote */
 
           ret = rpmsg_send_nocopy(&priv.ept, buf, ret);
@@ -258,6 +301,8 @@ int main(int argc, char *argv[])
             {
               break;
             }
+
+          usersock_coherent_cache(buf, USRSOCK_COHERENT_AFTER);
         }
 
       /* Reclaim the resource */
diff --git a/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c b/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c
index fb4625a..e8daddd 100644
--- a/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c
+++ b/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c
@@ -716,9 +716,26 @@ static int usrsock_rpmsg_ioctl_handler(struct rpmsg_endpoint *ept,
   if (req->usockid >= 0 &&
       req->usockid < CONFIG_NETUTILS_USRSOCK_NSOCK_DESCRIPTORS)
     {
+#ifdef CONFIG_NETDEV_WIRELESS_IOCTL
+      FAR struct iwreq *wlreq = (FAR struct iwreq *)(req + 1);
+      if (WL_IS80211POINTERCMD(req->cmd))
+        {
+          metal_cache_invalidate(wlreq->u.data.pointer,
+                                 wlreq->u.data.length);
+        }
+#endif
+
       memcpy(ack + 1, req + 1, req->arglen);
       ret = psock_ioctl(&priv->socks[req->usockid],
               req->cmd, (unsigned long)(ack + 1));
+
+#ifdef CONFIG_NETDEV_WIRELESS_IOCTL
+      if (WL_IS80211POINTERCMD(req->cmd))
+        {
+          metal_cache_flush(wlreq->u.data.pointer,
+                            wlreq->u.data.length);
+        }
+#endif
     }
 
   return usrsock_rpmsg_send_data_ack(ept,

[incubator-nuttx-apps] 02/04: fix: ap socket can not accept twice

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git

commit f1d5d6e671f904f83730d006a6b5d8ea2413e5ae
Author: zhanghongyu <zh...@xiaomi.com>
AuthorDate: Thu Feb 24 21:57:41 2022 +0800

    fix: ap socket can not accept twice
    
    Signed-off-by: zhanghongyu <zh...@xiaomi.com>
---
 netutils/usrsock_rpmsg/usrsock_rpmsg_server.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c b/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c
index e8daddd..d3c9abc 100644
--- a/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c
+++ b/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c
@@ -694,6 +694,7 @@ static int usrsock_rpmsg_accept_handler(struct rpmsg_endpoint *ept,
       pthread_mutex_lock(&priv->mutex);
       priv->pfds[i].ptr = &priv->socks[i];
       priv->pfds[i].events = POLLIN;
+      priv->pfds[req->usockid].events |= POLLIN;
       usrsock_rpmsg_notify_poll(priv);
       pthread_mutex_unlock(&priv->mutex);
       usrsock_rpmsg_send_event(ept, i, USRSOCK_EVENT_SENDTO_READY);