Hi Srinivasan,

I love your patch! Perhaps something to improve:

[auto build test WARNING on wireless-drivers-next/master]
[also build test WARNING on wireless-drivers/master net-next/master net/master 
linus/master v5.9 next-20201013]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Srinivasan-Raju/wireless-Initial-driver-submission-for-pureLiFi-STA-devices/20201014-142216
base:   
https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git 
master
config: arc-allyesconfig (attached as .config)
compiler: arceb-elf-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # 
https://github.com/0day-ci/linux/commit/2f1cd7604f364eba9428b88e2ab38c2a42272fcd
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Srinivasan-Raju/wireless-Initial-driver-submission-for-pureLiFi-STA-devices/20201014-142216
        git checkout 2f1cd7604f364eba9428b88e2ab38c2a42272fcd
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All warnings (new ones prefixed by >>):

>> drivers/net/wireless/purelifi/usb.c:74:6: warning: no previous prototype for 
>> 'send_packet_from_data_queue' [-Wmissing-prototypes]
      74 | void send_packet_from_data_queue(struct purelifi_usb *usb)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/purelifi/usb.c: In function 'rx_urb_complete':
>> drivers/net/wireless/purelifi/usb.c:124:26: warning: variable 'rx' set but 
>> not used [-Wunused-but-set-variable]
     124 |  struct purelifi_usb_rx *rx;
         |                          ^~
   drivers/net/wireless/purelifi/usb.c: In function 'tx_urb_complete':
>> drivers/net/wireless/purelifi/usb.c:416:26: warning: variable 'tx' set but 
>> not used [-Wunused-but-set-variable]
     416 |  struct purelifi_usb_tx *tx;
         |                          ^~
   drivers/net/wireless/purelifi/usb.c: In function 'purelifi_store_frequency':
>> drivers/net/wireless/purelifi/usb.c:1101:9: warning: variable 'r' set but 
>> not used [-Wunused-but-set-variable]
    1101 |  int i, r, row, col, predivider, feedback_divider, output_div_0;
         |         ^
   drivers/net/wireless/purelifi/usb.c: At top level:
>> drivers/net/wireless/purelifi/usb.c:1544:9: warning: no previous prototype 
>> for 'modulation_write' [-Wmissing-prototypes]
    1544 | ssize_t modulation_write(struct file *file_p,
         |         ^~~~~~~~~~~~~~~~
--
   drivers/net/wireless/purelifi/mac.c: In function 'purelifi_restore_settings':
>> drivers/net/wireless/purelifi/mac.c:137:26: warning: variable 
>> 'multicast_hash' set but not used [-Wunused-but-set-variable]
     137 |  struct purelifi_mc_hash multicast_hash;
         |                          ^~~~~~~~~~~~~~
   drivers/net/wireless/purelifi/mac.c: In function 'purelifi_mac_tx_status':
>> drivers/net/wireless/purelifi/mac.c:190:19: warning: variable 'retry' set 
>> but not used [-Wunused-but-set-variable]
     190 |  int success = 1, retry = 1;
         |                   ^~~~~
   drivers/net/wireless/purelifi/mac.c: In function 
'purelifi_op_configure_filter':
>> drivers/net/wireless/purelifi/mac.c:656:6: warning: variable 'r' set but not 
>> used [-Wunused-but-set-variable]
     656 |  int r;
         |      ^

vim +/send_packet_from_data_queue +74 drivers/net/wireless/purelifi/usb.c

    73  
  > 74  void send_packet_from_data_queue(struct purelifi_usb *usb)
    75  {
    76          struct sk_buff *skb = NULL;
    77          unsigned long flags;
    78          static u8 sidx;
    79          u8 last_served_sidx;
    80  
    81          spin_lock_irqsave(&usb->tx.lock, flags);
    82          last_served_sidx = sidx;
    83          do {
    84                  sidx = (sidx + 1) % MAX_STA_NUM;
    85                  if ((usb->tx.station[sidx].flag &
    86                                          STATION_CONNECTED_FLAG)) {
    87                          if (!(usb->tx.station[sidx].flag &
    88                                                  
STATION_FIFO_FULL_FLAG)) {
    89                                  skb = skb_peek(&usb->tx.station
    90                                                  [sidx].data_list);
    91                          }
    92                  }
    93          } while ((sidx != last_served_sidx) && (!skb));
    94  
    95          if (skb) {
    96                  skb = skb_dequeue(&usb->tx.station[sidx].data_list);
    97                  usb_write_req_async(usb, skb->data, skb->len, 
USB_REQ_DATA_TX,
    98                                      tx_urb_complete, skb);
    99                  if (skb_queue_len(&usb->tx.station[sidx].data_list)
   100                                  <= 60) {
   101                          block_queue(usb, usb->tx.station[sidx].mac,
   102                                      false);
   103                  }
   104          }
   105          spin_unlock_irqrestore(&usb->tx.lock, flags);
   106  }
   107  
   108  static void handle_rx_packet(struct purelifi_usb *usb, const u8 *buffer,
   109                               unsigned int length)
   110  {
   111          purelifi_mac_rx(purelifi_usb_to_hw(usb), buffer, length);
   112  }
   113  
   114  #define STATION_FIFO_ALMOST_FULL_MESSAGE     0
   115  #define STATION_FIFO_ALMOST_FULL_NOT_MESSAGE 1
   116  #define STATION_CONNECT_MESSAGE              2
   117  #define STATION_DISCONNECT_MESSAGE           3
   118  
   119  int rx_usb_enabled;
   120  static void rx_urb_complete(struct urb *urb)
   121  {
   122          int r;
   123          struct purelifi_usb *usb;
 > 124          struct purelifi_usb_rx *rx;
   125          struct purelifi_usb_tx *tx;
   126          const u8 *buffer;
   127          static u8 fpga_link_connection_f;
   128          unsigned int length;
   129          u16 status;
   130          u8 sidx;
   131  
   132          if (!urb) {
   133                  dev_err(purelifi_usb_dev(usb), "urb is NULL.\n");
   134                  return;
   135          } else if (!urb->context) {
   136                  dev_err(purelifi_usb_dev(usb), "urb ctx is NULL.\n");
   137                  return;
   138          }
   139          usb = urb->context;
   140  
   141          if (usb->initialized != 1)
   142                  return;
   143  
   144          switch (urb->status) {
   145          case 0:
   146                  break;
   147          case -ESHUTDOWN:
   148          case -EINVAL:
   149          case -ENODEV:
   150          case -ENOENT:
   151          case -ECONNRESET:
   152          case -EPIPE:
   153                  dev_dbg(urb_dev(urb), "urb %p error %d\n", urb, 
urb->status);
   154                  return;
   155          default:
   156                  dev_dbg(urb_dev(urb), "urb %p error %d\n", urb, 
urb->status);
   157                  goto resubmit;
   158          }
   159  
   160          buffer = urb->transfer_buffer;
   161          length = (*(u32 *)(buffer + sizeof(struct rx_status))) + 
sizeof(u32);
   162  
   163          rx = &usb->rx;
   164          tx = &usb->tx;
   165  
   166          if (urb->actual_length != 8) {
   167                  if (usb->initialized && fpga_link_connection_f)
   168                          handle_rx_packet(usb, buffer, length);
   169                  goto resubmit;
   170          }
   171  
   172          status = buffer[7];
   173  
   174          dev_info(&usb->intf->dev, "Recv status=%u\n", status);
   175          dev_info(&usb->intf->dev, "Tx packet MAC=%x:%x:%x:%x:%x:%x\n",
   176                   buffer[0], buffer[1], buffer[2], buffer[3],
   177                   buffer[4], buffer[5]);
   178  
   179          switch (status) {
   180          case STATION_FIFO_ALMOST_FULL_NOT_MESSAGE:
   181                  dev_info(&usb->intf->dev,
   182                           "FIFO full not packet receipt.\n");
   183                  tx->mac_fifo_full = 1;
   184                  for (sidx = 0; sidx < MAX_STA_NUM; sidx++) {
   185                          usb->tx.station[sidx].flag |=
   186                                  STATION_FIFO_FULL_FLAG;
   187                  }
   188                  break;
   189          case STATION_FIFO_ALMOST_FULL_MESSAGE:
   190                  dev_info(&usb->intf->dev, "FIFO full packet 
receipt.\n");
   191  
   192                  for (sidx = 0; sidx < MAX_STA_NUM; sidx++)
   193                          usb->tx.station[sidx].flag &= 0xFD;
   194  
   195                  send_packet_from_data_queue(usb);
   196                  break;
   197          case STATION_CONNECT_MESSAGE:
   198                  fpga_link_connection_f = 1;
   199                  dev_info(&usb->intf->dev, "ST_CONNECT_MSG packet 
receipt.\n");
   200                  break;
   201          case STATION_DISCONNECT_MESSAGE:
   202                  fpga_link_connection_f = 0;
   203                  dev_info(&usb->intf->dev, "ST_DISCONN_MSG packet 
receipt.\n");
   204                  break;
   205          default:
   206                  dev_info(&usb->intf->dev, "Unknown packet receipt.\n");
   207                  break;
   208          }
   209  
   210  resubmit:
   211          r = usb_submit_urb(urb, GFP_ATOMIC);
   212          if (r)
   213                  dev_dbg(urb_dev(urb), "urb %p resubmit error %d\n", 
urb, r);
   214  }
   215  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

Reply via email to