Print this page
3014 Intel X540 Support (fix lint)
        
*** 430,527 ****
  {
          u16 i = 0;
  
          DEBUGFUNC("ixgbe_clear_hw_cntrs_generic");
  
!         IXGBE_READ_REG(hw, IXGBE_CRCERRS);
!         IXGBE_READ_REG(hw, IXGBE_ILLERRC);
!         IXGBE_READ_REG(hw, IXGBE_ERRBC);
!         IXGBE_READ_REG(hw, IXGBE_MSPDC);
          for (i = 0; i < 8; i++)
!                 IXGBE_READ_REG(hw, IXGBE_MPC(i));
  
!         IXGBE_READ_REG(hw, IXGBE_MLFC);
!         IXGBE_READ_REG(hw, IXGBE_MRFC);
!         IXGBE_READ_REG(hw, IXGBE_RLEC);
!         IXGBE_READ_REG(hw, IXGBE_LXONTXC);
!         IXGBE_READ_REG(hw, IXGBE_LXOFFTXC);
          if (hw->mac.type >= ixgbe_mac_82599EB) {
!                 IXGBE_READ_REG(hw, IXGBE_LXONRXCNT);
!                 IXGBE_READ_REG(hw, IXGBE_LXOFFRXCNT);
          } else {
!                 IXGBE_READ_REG(hw, IXGBE_LXONRXC);
!                 IXGBE_READ_REG(hw, IXGBE_LXOFFRXC);
          }
  
          for (i = 0; i < 8; i++) {
!                 IXGBE_READ_REG(hw, IXGBE_PXONTXC(i));
!                 IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i));
                  if (hw->mac.type >= ixgbe_mac_82599EB) {
!                         IXGBE_READ_REG(hw, IXGBE_PXONRXCNT(i));
!                         IXGBE_READ_REG(hw, IXGBE_PXOFFRXCNT(i));
                  } else {
!                         IXGBE_READ_REG(hw, IXGBE_PXONRXC(i));
!                         IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i));
                  }
          }
          if (hw->mac.type >= ixgbe_mac_82599EB)
                  for (i = 0; i < 8; i++)
!                         IXGBE_READ_REG(hw, IXGBE_PXON2OFFCNT(i));
!         IXGBE_READ_REG(hw, IXGBE_PRC64);
!         IXGBE_READ_REG(hw, IXGBE_PRC127);
!         IXGBE_READ_REG(hw, IXGBE_PRC255);
!         IXGBE_READ_REG(hw, IXGBE_PRC511);
!         IXGBE_READ_REG(hw, IXGBE_PRC1023);
!         IXGBE_READ_REG(hw, IXGBE_PRC1522);
!         IXGBE_READ_REG(hw, IXGBE_GPRC);
!         IXGBE_READ_REG(hw, IXGBE_BPRC);
!         IXGBE_READ_REG(hw, IXGBE_MPRC);
!         IXGBE_READ_REG(hw, IXGBE_GPTC);
!         IXGBE_READ_REG(hw, IXGBE_GORCL);
!         IXGBE_READ_REG(hw, IXGBE_GORCH);
!         IXGBE_READ_REG(hw, IXGBE_GOTCL);
!         IXGBE_READ_REG(hw, IXGBE_GOTCH);
          if (hw->mac.type == ixgbe_mac_82598EB)
                  for (i = 0; i < 8; i++)
!                         IXGBE_READ_REG(hw, IXGBE_RNBC(i));
!         IXGBE_READ_REG(hw, IXGBE_RUC);
!         IXGBE_READ_REG(hw, IXGBE_RFC);
!         IXGBE_READ_REG(hw, IXGBE_ROC);
!         IXGBE_READ_REG(hw, IXGBE_RJC);
!         IXGBE_READ_REG(hw, IXGBE_MNGPRC);
!         IXGBE_READ_REG(hw, IXGBE_MNGPDC);
!         IXGBE_READ_REG(hw, IXGBE_MNGPTC);
!         IXGBE_READ_REG(hw, IXGBE_TORL);
!         IXGBE_READ_REG(hw, IXGBE_TORH);
!         IXGBE_READ_REG(hw, IXGBE_TPR);
!         IXGBE_READ_REG(hw, IXGBE_TPT);
!         IXGBE_READ_REG(hw, IXGBE_PTC64);
!         IXGBE_READ_REG(hw, IXGBE_PTC127);
!         IXGBE_READ_REG(hw, IXGBE_PTC255);
!         IXGBE_READ_REG(hw, IXGBE_PTC511);
!         IXGBE_READ_REG(hw, IXGBE_PTC1023);
!         IXGBE_READ_REG(hw, IXGBE_PTC1522);
!         IXGBE_READ_REG(hw, IXGBE_MPTC);
!         IXGBE_READ_REG(hw, IXGBE_BPTC);
          for (i = 0; i < 16; i++) {
!                 IXGBE_READ_REG(hw, IXGBE_QPRC(i));
!                 IXGBE_READ_REG(hw, IXGBE_QPTC(i));
                  if (hw->mac.type >= ixgbe_mac_82599EB) {
!                         IXGBE_READ_REG(hw, IXGBE_QBRC_L(i));
!                         IXGBE_READ_REG(hw, IXGBE_QBRC_H(i));
!                         IXGBE_READ_REG(hw, IXGBE_QBTC_L(i));
!                         IXGBE_READ_REG(hw, IXGBE_QBTC_H(i));
!                         IXGBE_READ_REG(hw, IXGBE_QPRDC(i));
                  } else {
!                         IXGBE_READ_REG(hw, IXGBE_QBRC(i));
!                         IXGBE_READ_REG(hw, IXGBE_QBTC(i));
                  }
          }
  
          if (hw->mac.type == ixgbe_mac_X540) {
                  if (hw->phy.id == 0)
!                         ixgbe_identify_phy(hw);
                  hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECL,
                                       IXGBE_MDIO_PCS_DEV_TYPE, &i);
                  hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECH,
                                       IXGBE_MDIO_PCS_DEV_TYPE, &i);
                  hw->phy.ops.read_reg(hw, IXGBE_LDPCECL,
--- 430,527 ----
  {
          u16 i = 0;
  
          DEBUGFUNC("ixgbe_clear_hw_cntrs_generic");
  
!         (void) IXGBE_READ_REG(hw, IXGBE_CRCERRS);
!         (void) IXGBE_READ_REG(hw, IXGBE_ILLERRC);
!         (void) IXGBE_READ_REG(hw, IXGBE_ERRBC);
!         (void) IXGBE_READ_REG(hw, IXGBE_MSPDC);
          for (i = 0; i < 8; i++)
!                 (void) IXGBE_READ_REG(hw, IXGBE_MPC(i));
  
!         (void) IXGBE_READ_REG(hw, IXGBE_MLFC);
!         (void) IXGBE_READ_REG(hw, IXGBE_MRFC);
!         (void) IXGBE_READ_REG(hw, IXGBE_RLEC);
!         (void) IXGBE_READ_REG(hw, IXGBE_LXONTXC);
!         (void) IXGBE_READ_REG(hw, IXGBE_LXOFFTXC);
          if (hw->mac.type >= ixgbe_mac_82599EB) {
!                 (void) IXGBE_READ_REG(hw, IXGBE_LXONRXCNT);
!                 (void) IXGBE_READ_REG(hw, IXGBE_LXOFFRXCNT);
          } else {
!                 (void) IXGBE_READ_REG(hw, IXGBE_LXONRXC);
!                 (void) IXGBE_READ_REG(hw, IXGBE_LXOFFRXC);
          }
  
          for (i = 0; i < 8; i++) {
!                 (void) IXGBE_READ_REG(hw, IXGBE_PXONTXC(i));
!                 (void) IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i));
                  if (hw->mac.type >= ixgbe_mac_82599EB) {
!                         (void) IXGBE_READ_REG(hw, IXGBE_PXONRXCNT(i));
!                         (void) IXGBE_READ_REG(hw, IXGBE_PXOFFRXCNT(i));
                  } else {
!                         (void) IXGBE_READ_REG(hw, IXGBE_PXONRXC(i));
!                         (void) IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i));
                  }
          }
          if (hw->mac.type >= ixgbe_mac_82599EB)
                  for (i = 0; i < 8; i++)
!                         (void) IXGBE_READ_REG(hw, IXGBE_PXON2OFFCNT(i));
!         (void) IXGBE_READ_REG(hw, IXGBE_PRC64);
!         (void) IXGBE_READ_REG(hw, IXGBE_PRC127);
!         (void) IXGBE_READ_REG(hw, IXGBE_PRC255);
!         (void) IXGBE_READ_REG(hw, IXGBE_PRC511);
!         (void) IXGBE_READ_REG(hw, IXGBE_PRC1023);
!         (void) IXGBE_READ_REG(hw, IXGBE_PRC1522);
!         (void) IXGBE_READ_REG(hw, IXGBE_GPRC);
!         (void) IXGBE_READ_REG(hw, IXGBE_BPRC);
!         (void) IXGBE_READ_REG(hw, IXGBE_MPRC);
!         (void) IXGBE_READ_REG(hw, IXGBE_GPTC);
!         (void) IXGBE_READ_REG(hw, IXGBE_GORCL);
!         (void) IXGBE_READ_REG(hw, IXGBE_GORCH);
!         (void) IXGBE_READ_REG(hw, IXGBE_GOTCL);
!         (void) IXGBE_READ_REG(hw, IXGBE_GOTCH);
          if (hw->mac.type == ixgbe_mac_82598EB)
                  for (i = 0; i < 8; i++)
!                         (void) IXGBE_READ_REG(hw, IXGBE_RNBC(i));
!         (void) IXGBE_READ_REG(hw, IXGBE_RUC);
!         (void) IXGBE_READ_REG(hw, IXGBE_RFC);
!         (void) IXGBE_READ_REG(hw, IXGBE_ROC);
!         (void) IXGBE_READ_REG(hw, IXGBE_RJC);
!         (void) IXGBE_READ_REG(hw, IXGBE_MNGPRC);
!         (void) IXGBE_READ_REG(hw, IXGBE_MNGPDC);
!         (void) IXGBE_READ_REG(hw, IXGBE_MNGPTC);
!         (void) IXGBE_READ_REG(hw, IXGBE_TORL);
!         (void) IXGBE_READ_REG(hw, IXGBE_TORH);
!         (void) IXGBE_READ_REG(hw, IXGBE_TPR);
!         (void) IXGBE_READ_REG(hw, IXGBE_TPT);
!         (void) IXGBE_READ_REG(hw, IXGBE_PTC64);
!         (void) IXGBE_READ_REG(hw, IXGBE_PTC127);
!         (void) IXGBE_READ_REG(hw, IXGBE_PTC255);
!         (void) IXGBE_READ_REG(hw, IXGBE_PTC511);
!         (void) IXGBE_READ_REG(hw, IXGBE_PTC1023);
!         (void) IXGBE_READ_REG(hw, IXGBE_PTC1522);
!         (void) IXGBE_READ_REG(hw, IXGBE_MPTC);
!         (void) IXGBE_READ_REG(hw, IXGBE_BPTC);
          for (i = 0; i < 16; i++) {
!                 (void) IXGBE_READ_REG(hw, IXGBE_QPRC(i));
!                 (void) IXGBE_READ_REG(hw, IXGBE_QPTC(i));
                  if (hw->mac.type >= ixgbe_mac_82599EB) {
!                         (void) IXGBE_READ_REG(hw, IXGBE_QBRC_L(i));
!                         (void) IXGBE_READ_REG(hw, IXGBE_QBRC_H(i));
!                         (void) IXGBE_READ_REG(hw, IXGBE_QBTC_L(i));
!                         (void) IXGBE_READ_REG(hw, IXGBE_QBTC_H(i));
!                         (void) IXGBE_READ_REG(hw, IXGBE_QPRDC(i));
                  } else {
!                         (void) IXGBE_READ_REG(hw, IXGBE_QBRC(i));
!                         (void) IXGBE_READ_REG(hw, IXGBE_QBTC(i));
                  }
          }
  
          if (hw->mac.type == ixgbe_mac_X540) {
                  if (hw->phy.id == 0)
!                         (void) ixgbe_identify_phy(hw);
                  hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECL,
                                       IXGBE_MDIO_PCS_DEV_TYPE, &i);
                  hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECH,
                                       IXGBE_MDIO_PCS_DEV_TYPE, &i);
                  hw->phy.ops.read_reg(hw, IXGBE_LDPCECL,
*** 814,824 ****
  
          /* Clear interrupt mask to stop interrupts from being generated */
          IXGBE_WRITE_REG(hw, IXGBE_EIMC, IXGBE_IRQ_CLEAR_MASK);
  
          /* Clear any pending interrupts, flush previous writes */
!         IXGBE_READ_REG(hw, IXGBE_EICR);
  
          /* Disable the transmit unit.  Each queue must be disabled. */
          for (i = 0; i < hw->mac.max_tx_queues; i++)
                  IXGBE_WRITE_REG(hw, IXGBE_TXDCTL(i), IXGBE_TXDCTL_SWFLSH);
  
--- 814,824 ----
  
          /* Clear interrupt mask to stop interrupts from being generated */
          IXGBE_WRITE_REG(hw, IXGBE_EIMC, IXGBE_IRQ_CLEAR_MASK);
  
          /* Clear any pending interrupts, flush previous writes */
!         (void) IXGBE_READ_REG(hw, IXGBE_EICR);
  
          /* Disable the transmit unit.  Each queue must be disabled. */
          for (i = 0; i < hw->mac.max_tx_queues; i++)
                  IXGBE_WRITE_REG(hw, IXGBE_TXDCTL(i), IXGBE_TXDCTL_SWFLSH);
  
*** 967,977 ****
           * The EEPROM page size cannot be queried from the chip. We do lazy
           * initialization. It is worth to do that when we write large buffer.
           */
          if ((hw->eeprom.word_page_size == 0) &&
              (words > IXGBE_EEPROM_PAGE_SIZE_MAX))
!                 ixgbe_detect_eeprom_page_size_generic(hw, offset);
  
          /*
           * We cannot hold synchronization semaphores for too long
           * to avoid other entity starvation. However it is more efficient
           * to read in bursts than synchronizing access for each word.
--- 967,979 ----
           * The EEPROM page size cannot be queried from the chip. We do lazy
           * initialization. It is worth to do that when we write large buffer.
           */
          if ((hw->eeprom.word_page_size == 0) &&
              (words > IXGBE_EEPROM_PAGE_SIZE_MAX))
!                 status = ixgbe_detect_eeprom_page_size_generic(hw, offset);
!         if (status != IXGBE_SUCCESS)
!                 goto out;
  
          /*
           * We cannot hold synchronization semaphores for too long
           * to avoid other entity starvation. However it is more efficient
           * to read in bursts than synchronizing access for each word.
*** 2134,2146 ****
  
          DEBUGOUT(" Clearing MTA\n");
          for (i = 0; i < hw->mac.mcft_size; i++)
                  IXGBE_WRITE_REG(hw, IXGBE_MTA(i), 0);
  
!         ixgbe_init_uta_tables(hw);
! 
!         return IXGBE_SUCCESS;
  }
  
  /**
   *  ixgbe_add_uc_addr - Adds a secondary unicast address.
   *  @hw: pointer to hardware structure
--- 2136,2147 ----
  
          DEBUGOUT(" Clearing MTA\n");
          for (i = 0; i < hw->mac.mcft_size; i++)
                  IXGBE_WRITE_REG(hw, IXGBE_MTA(i), 0);
  
!         /* Should always be IXGBE_SUCCESS. */
!         return ixgbe_init_uta_tables(hw);
  }
  
  /**
   *  ixgbe_add_uc_addr - Adds a secondary unicast address.
   *  @hw: pointer to hardware structure
*** 2348,2358 ****
          hw->addr_ctrl.mta_in_use = 0;
  
          /* Clear mta_shadow */
          if (clear) {
                  DEBUGOUT(" Clearing MTA\n");
!                 memset(&hw->mac.mta_shadow, 0, sizeof(hw->mac.mta_shadow));
          }
  
          /* Update mta_shadow */
          for (i = 0; i < mc_addr_count; i++) {
                  DEBUGOUT(" Adding the multicast addresses:\n");
--- 2349,2360 ----
          hw->addr_ctrl.mta_in_use = 0;
  
          /* Clear mta_shadow */
          if (clear) {
                  DEBUGOUT(" Clearing MTA\n");
!                 (void) memset(&hw->mac.mta_shadow, 0,
!                     sizeof(hw->mac.mta_shadow));
          }
  
          /* Update mta_shadow */
          for (i = 0; i < mc_addr_count; i++) {
                  DEBUGOUT(" Adding the multicast addresses:\n");
*** 2868,2878 ****
          u32 gssr;
          u32 swmask = mask;
  
          DEBUGFUNC("ixgbe_release_swfw_sync");
  
!         ixgbe_get_eeprom_semaphore(hw);
  
          gssr = IXGBE_READ_REG(hw, IXGBE_GSSR);
          gssr &= ~swmask;
          IXGBE_WRITE_REG(hw, IXGBE_GSSR, gssr);
  
--- 2870,2880 ----
          u32 gssr;
          u32 swmask = mask;
  
          DEBUGFUNC("ixgbe_release_swfw_sync");
  
!         (void) ixgbe_get_eeprom_semaphore(hw);
  
          gssr = IXGBE_READ_REG(hw, IXGBE_GSSR);
          gssr &= ~swmask;
          IXGBE_WRITE_REG(hw, IXGBE_GSSR, gssr);
  
*** 3056,3066 ****
  
          /*
           * First read the EEPROM pointer to see if the MAC addresses are
           * available.  If they're not, no point in calling set_lan_id() here.
           */
!         ixgbe_get_san_mac_addr_offset(hw, &san_mac_offset);
  
          if ((san_mac_offset == 0) || (san_mac_offset == 0xFFFF)) {
                  /*
                   * No addresses available in this EEPROM.  It's not an
                   * error though, so just wipe the local address and return.
--- 3058,3068 ----
  
          /*
           * First read the EEPROM pointer to see if the MAC addresses are
           * available.  If they're not, no point in calling set_lan_id() here.
           */
!         (void) ixgbe_get_san_mac_addr_offset(hw, &san_mac_offset);
  
          if ((san_mac_offset == 0) || (san_mac_offset == 0xFFFF)) {
                  /*
                   * No addresses available in this EEPROM.  It's not an
                   * error though, so just wipe the local address and return.
*** 3101,3111 ****
          u8 i;
  
          DEBUGFUNC("ixgbe_set_san_mac_addr_generic");
  
          /* Look for SAN mac address pointer.  If not defined, return */
!         ixgbe_get_san_mac_addr_offset(hw, &san_mac_offset);
  
          if ((san_mac_offset == 0) || (san_mac_offset == 0xFFFF)) {
                  status = IXGBE_ERR_NO_SAN_ADDR_PTR;
                  goto san_mac_addr_out;
          }
--- 3103,3113 ----
          u8 i;
  
          DEBUGFUNC("ixgbe_set_san_mac_addr_generic");
  
          /* Look for SAN mac address pointer.  If not defined, return */
!         (void) ixgbe_get_san_mac_addr_offset(hw, &san_mac_offset);
  
          if ((san_mac_offset == 0) || (san_mac_offset == 0xFFFF)) {
                  status = IXGBE_ERR_NO_SAN_ADDR_PTR;
                  goto san_mac_addr_out;
          }
*** 3211,3228 ****
                  }
          }
  
          if (rar < hw->mac.rar_highwater) {
                  /* already there so just add to the pool bits */
!                 ixgbe_set_vmdq(hw, rar, vmdq);
          } else if (first_empty_rar != NO_EMPTY_RAR_FOUND) {
                  /* stick it into first empty RAR slot we found */
                  rar = first_empty_rar;
!                 ixgbe_set_rar(hw, rar, addr, vmdq, IXGBE_RAH_AV);
          } else if (rar == hw->mac.rar_highwater) {
                  /* add it to the top of the list and inc the highwater mark */
!                 ixgbe_set_rar(hw, rar, addr, vmdq, IXGBE_RAH_AV);
                  hw->mac.rar_highwater++;
          } else if (rar >= hw->mac.num_rar_entries) {
                  return IXGBE_ERR_INVALID_MAC_ADDR;
          }
  
--- 3213,3230 ----
                  }
          }
  
          if (rar < hw->mac.rar_highwater) {
                  /* already there so just add to the pool bits */
!                 (void) ixgbe_set_vmdq(hw, rar, vmdq);
          } else if (first_empty_rar != NO_EMPTY_RAR_FOUND) {
                  /* stick it into first empty RAR slot we found */
                  rar = first_empty_rar;
!                 (void) ixgbe_set_rar(hw, rar, addr, vmdq, IXGBE_RAH_AV);
          } else if (rar == hw->mac.rar_highwater) {
                  /* add it to the top of the list and inc the highwater mark */
!                 (void) ixgbe_set_rar(hw, rar, addr, vmdq, IXGBE_RAH_AV);
                  hw->mac.rar_highwater++;
          } else if (rar >= hw->mac.num_rar_entries) {
                  return IXGBE_ERR_INVALID_MAC_ADDR;
          }
  
*** 3229,3239 ****
          /*
           * If we found rar[0], make sure the default pool bit (we use pool 0)
           * remains cleared to be sure default pool packets will get delivered
           */
          if (rar == 0)
!                 ixgbe_clear_vmdq(hw, rar, 0);
  
          return rar;
  }
  
  /**
--- 3231,3241 ----
          /*
           * If we found rar[0], make sure the default pool bit (we use pool 0)
           * remains cleared to be sure default pool packets will get delivered
           */
          if (rar == 0)
!                 (void) ixgbe_clear_vmdq(hw, rar, 0);
  
          return rar;
  }
  
  /**
*** 4035,4044 ****
--- 4037,4047 ----
                                  (FW_CEM_HDR_LEN + fw_cmd.hdr.buf_len));
          fw_cmd.pad = 0;
          fw_cmd.pad2 = 0;
  
          for (i = 0; i <= FW_CEM_MAX_RETRIES; i++) {
+                 /* LINTED */
                  ret_val = ixgbe_host_interface_command(hw, (u32 *)&fw_cmd,
                                                         sizeof(fw_cmd));
                  if (ret_val != IXGBE_SUCCESS)
                          continue;
  
*** 4088,4097 ****
--- 4091,4101 ----
                  pbsize -= rxpktsize * (num_pb / 2);
                  rxpktsize <<= IXGBE_RXPBSIZE_SHIFT;
                  for (; i < (num_pb / 2); i++)
                          IXGBE_WRITE_REG(hw, IXGBE_RXPBSIZE(i), rxpktsize);
                  /* Fall through to configure remaining packet buffers */
+                 /* FALLTHRU */
          case PBA_STRATEGY_EQUAL:
                  rxpktsize = (pbsize / (num_pb - i)) << IXGBE_RXPBSIZE_SHIFT;
                  for (; i < num_pb; i++)
                          IXGBE_WRITE_REG(hw, IXGBE_RXPBSIZE(i), rxpktsize);
                  break;