You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by GitBox <gi...@apache.org> on 2022/06/28 06:14:45 UTC

[GitHub] [incubator-nuttx] anchao opened a new pull request, #6533: wireless/bcm43xxx: enable tx flow control to improve performance

anchao opened a new pull request, #6533:
URL: https://github.com/apache/incubator-nuttx/pull/6533

   ## Summary
   
   1. wireless/bcm43xxx: enable tx flow control to improve performance
   
   RX/TX shared free queue on bcmf implementation, if TX occupies the
   free queue completely, RX will trigger read abort because it cannot
   successfully alloc buffer for the shared free queue. This commit will
   limit the sending entries of tx and prevent rx triggering abort
   
   2. Revert "wireless/bcm43xxx: remove unused tx_queue_count"
   
   
   ## Impact
   
   N/A
   
   ## Testing
   
   bcm43013 iperf test


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [incubator-nuttx] pkarashchenko commented on a diff in pull request #6533: wireless/bcm43xxx: enable tx flow control to improve performance

Posted by GitBox <gi...@apache.org>.
pkarashchenko commented on code in PR #6533:
URL: https://github.com/apache/incubator-nuttx/pull/6533#discussion_r908270303


##########
drivers/wireless/ieee80211/bcm43xxx/bcmf_sdio.c:
##########
@@ -1108,5 +1118,10 @@ void bcmf_sdio_free_frame(FAR struct bcmf_dev_s *priv,
 
   bcmf_dqueue_push(&sbus->free_queue, &sframe->list_entry);
 
+  if (sframe->tx)
+    {
+      sbus->tx_queue_count -= 1;

Review Comment:
   ```suggestion
         sbus->tx_queue_count--;
   ```



##########
drivers/wireless/ieee80211/bcm43xxx/bcmf_sdio.c:
##########
@@ -1065,10 +1065,20 @@ struct bcmf_sdio_frame *bcmf_sdio_allocate_frame(FAR struct bcmf_dev_s *priv,
           DEBUGPANIC();
         }
 
-      if ((entry = bcmf_dqueue_pop_tail(&sbus->free_queue)) != NULL)
+      if (!tx ||
+          sbus->tx_queue_count <
+            CONFIG_IEEE80211_BROADCOM_FRAME_POOL_SIZE / 2)
         {
-          nxsem_post(&sbus->queue_mutex);
-          break;
+          if ((entry = bcmf_dqueue_pop_tail(&sbus->free_queue)) != NULL)
+            {
+              if (tx)
+                {
+                  sbus->tx_queue_count += 1;

Review Comment:
   ```suggestion
                     sbus->tx_queue_count++;
   ```



##########
drivers/wireless/ieee80211/bcm43xxx/bcmf_sdio.c:
##########
@@ -1065,10 +1065,20 @@ struct bcmf_sdio_frame *bcmf_sdio_allocate_frame(FAR struct bcmf_dev_s *priv,
           DEBUGPANIC();
         }
 
-      if ((entry = bcmf_dqueue_pop_tail(&sbus->free_queue)) != NULL)
+      if (!tx ||
+          sbus->tx_queue_count <

Review Comment:
   do we need set to zero `tx_queue_count` during init, or `struct bcmf_sdio_dev_s` use `zalloc` / static allocation?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [incubator-nuttx] anchao commented on a diff in pull request #6533: wireless/bcm43xxx: enable tx flow control to improve performance

Posted by GitBox <gi...@apache.org>.
anchao commented on code in PR #6533:
URL: https://github.com/apache/incubator-nuttx/pull/6533#discussion_r909168740


##########
drivers/wireless/ieee80211/bcm43xxx/bcmf_sdio.c:
##########
@@ -1065,10 +1065,20 @@ struct bcmf_sdio_frame *bcmf_sdio_allocate_frame(FAR struct bcmf_dev_s *priv,
           DEBUGPANIC();
         }
 
-      if ((entry = bcmf_dqueue_pop_tail(&sbus->free_queue)) != NULL)
+      if (!tx ||
+          sbus->tx_queue_count <
+            CONFIG_IEEE80211_BROADCOM_FRAME_POOL_SIZE / 2)
         {
-          nxsem_post(&sbus->queue_mutex);
-          break;
+          if ((entry = bcmf_dqueue_pop_tail(&sbus->free_queue)) != NULL)
+            {
+              if (tx)
+                {
+                  sbus->tx_queue_count += 1;

Review Comment:
   Done



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [incubator-nuttx] pkarashchenko merged pull request #6533: wireless/bcm43xxx: enable tx flow control to improve performance

Posted by GitBox <gi...@apache.org>.
pkarashchenko merged PR #6533:
URL: https://github.com/apache/incubator-nuttx/pull/6533


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [incubator-nuttx] anchao commented on a diff in pull request #6533: wireless/bcm43xxx: enable tx flow control to improve performance

Posted by GitBox <gi...@apache.org>.
anchao commented on code in PR #6533:
URL: https://github.com/apache/incubator-nuttx/pull/6533#discussion_r909168643


##########
drivers/wireless/ieee80211/bcm43xxx/bcmf_sdio.c:
##########
@@ -1065,10 +1065,20 @@ struct bcmf_sdio_frame *bcmf_sdio_allocate_frame(FAR struct bcmf_dev_s *priv,
           DEBUGPANIC();
         }
 
-      if ((entry = bcmf_dqueue_pop_tail(&sbus->free_queue)) != NULL)
+      if (!tx ||
+          sbus->tx_queue_count <

Review Comment:
   tx_queue_count has been initialized to 0
   https://github.com/apache/incubator-nuttx/blob/master/drivers/wireless/ieee80211/bcm43xxx/bcmf_sdio.c#L816



##########
drivers/wireless/ieee80211/bcm43xxx/bcmf_sdio.c:
##########
@@ -1108,5 +1118,10 @@ void bcmf_sdio_free_frame(FAR struct bcmf_dev_s *priv,
 
   bcmf_dqueue_push(&sbus->free_queue, &sframe->list_entry);
 
+  if (sframe->tx)
+    {
+      sbus->tx_queue_count -= 1;

Review Comment:
   Done



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org