e1000e: fix sparse warnings
Subsystems (2)
PATCH 1/4 e1000e: fix sparse warnings
From: Stephen Hemminger <[email protected]>
Fix sparse warnings from e1000e driver in net-2.6.24.
Added a sparse fix for module param arrays which can have int values but only the array index needs to be unsigned. --Auke
---
drivers/net/e1000e/ethtool.c | 4 ++-- drivers/net/e1000e/param.c | 35 ++++++++++++++++++----------------- 2 files changed, 20 insertions(+), 19 deletions(-)
drivers/net/e1000e/ethtool.c +2 -2
@@ -1680,8 +1680,8 @@ static int e1000_phys_id(struct net_device *netdev, u32 data) {struct e1000_adapter *adapter =netdev_priv (netdev); -if (!data || data > (u32)(MAX_SCHEDULE_TIMEOUT /HZ )) - data = (u32)(MAX_SCHEDULE_TIMEOUT /HZ ); +if (!data) + data =INT_MAX ;if (adapter->hw.phy.type == e1000_phy_ife) {if (!adapter->blink_timer.function) {
drivers/net/e1000e/param.c +18 -17
@@ -52,10 +52,11 @@ MODULE_PARM_DESC(copybreak,*/ #define E1000_PARAM_INIT { [0 ... E1000_MAX_NIC] = OPTION_UNSET } -#define E1000_PARAM (X , desc) \ - static int __devinitdata X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \ - static int num_##X; \ - module_param_array_named(X, X, int, &num_##X, 0); \ +#define E1000_PARAM (X , desc) \ + static int __devinitdata X[E1000_MAX_NIC+1] \ + = E1000_PARAM_INIT; \ + static unsigned int num_##X; \ + module_param_array_named(X, X, int, &num_##X, 0); \ MODULE_PARM_DESC(X, desc);
@@ -124,9 +125,9 @@ E1000_PARAM(KumeranLockLoss, "Enable Kumeran lock loss workaround"); struct e1000_option { enum { enable_option, range_option, list_option } type; - char *name; - char *err; - int def; + const char *name; + const char *err; + int def; union { struct { /* range_option info */ int min;
@@ -139,8 +140,8 @@ struct e1000_option { } arg; }; -static int __devinit e1000_validate_option (int *value, -struct e1000_option *opt, +static int __devinit e1000_validate_option (unsigned int *value, +const struct e1000_option *opt,struct e1000_adapter *adapter) {if (*value ==OPTION_UNSET ) {
@@ -213,7 +214,7 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter) } {/* Transmit Interrupt Delay */ -struct e1000_option opt = { +const struct e1000_option opt = { .type = range_option, .name ="Transmit Interrupt Delay" , .err ="using default of "
@@ -232,7 +233,7 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter) } } {/* Transmit Absolute Interrupt Delay */ -struct e1000_option opt = { +const struct e1000_option opt = { .type = range_option, .name ="Transmit Absolute Interrupt Delay" , .err ="using default of "
@@ -277,7 +278,7 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter) } } {/* Receive Absolute Interrupt Delay */ -struct e1000_option opt = { +const struct e1000_option opt = { .type = range_option, .name ="Receive Absolute Interrupt Delay" , .err ="using default of "
@@ -296,7 +297,7 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter) } } {/* Interrupt Throttling Rate */ -struct e1000_option opt = { +const struct e1000_option opt = { .type = range_option, .name ="Interrupt Throttling Rate (ints/sec)" , .err ="using default of "
@@ -344,7 +345,7 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter) } } {/* Smart Power Down */ -struct e1000_option opt = { +const struct e1000_option opt = { .type = enable_option, .name ="PHY Smart Power Down" , .err ="defaulting to Disabled" ,
@@ -352,7 +353,7 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter) };if (num_SmartPowerDownEnable > bd) { -int spd = SmartPowerDownEnable[bd]; +unsigned int spd = SmartPowerDownEnable[bd];e1000_validate_option (&spd, &opt, adapter);if ((adapter->flags &FLAG_HAS_SMART_POWER_DOWN ) && spd)
@@ -360,7 +361,7 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter) } } {/* Kumeran Lock Loss Workaround */ -struct e1000_option opt = { +const struct e1000_option opt = { .type = enable_option, .name ="Kumeran Lock Loss Workaround" , .err ="defaulting to Enabled" ,
@@ -368,7 +369,7 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter) };if (num_KumeranLockLoss > bd) { -int kmrn_lock_loss = KumeranLockLoss[bd]; +unsigned int kmrn_lock_loss = KumeranLockLoss[bd];e1000_validate_option (&kmrn_lock_loss, &opt, adapter);if (hw->mac.type == e1000_ich8lan) e1000e_set_kmrn_lock_loss_workaround_ich8lan(hw,
PATCH 2/4 ixgb: fix sparse warnings
From: Stephen Hemminger <[email protected]>
Fix sparse warnings in ixgb driver for net-2.6.24.
Added a sparse fix for invalid declaration using non-constant value in ixgb_set_multi. Added a fix for the module param array index and allows int params in the array. --Auke
---
drivers/net/ixgb/ixgb.h | 7 ++++++ drivers/net/ixgb/ixgb_ethtool.c | 7 ++---- drivers/net/ixgb/ixgb_hw.c | 4 ++-- drivers/net/ixgb/ixgb_main.c | 11 ++++------ drivers/net/ixgb/ixgb_param.c | 43 ++++++++++++++++++++------------------- 5 files changed, 37 insertions(+), 35 deletions(-)
drivers/net/ixgb/ixgb.h +7 -0
@@ -196,4 +196,11 @@ struct ixgb_adapter {uint32_t alloc_rx_buff_failed; boolean_t have_msi; }; + +/* Exported from other modules */ +extern void ixgb_check_options (struct ixgb_adapter *adapter); +extern void ixgb_set_ethtool_ops (struct net_device *netdev); +extern char ixgb_driver_name[]; +extern const char ixgb_driver_version[]; +#endif /* _IXGB_H_ */
drivers/net/ixgb/ixgb_ethtool.c +2 -5
@@ -32,9 +32,6 @@#include <asm/uaccess.h> -extern char ixgb_driver_name[]; -extern char ixgb_driver_version[]; -extern int ixgb_up (struct ixgb_adapter *adapter);extern void ixgb_down (struct ixgb_adapter *adapter,boolean_t kill_watchdog);extern void ixgb_reset (struct ixgb_adapter *adapter);
@@ -639,8 +636,8 @@ ixgb_phys_id(struct net_device *netdev, uint32_t data) {struct ixgb_adapter *adapter =netdev_priv (netdev); -if (!data || data > (uint32_t )(MAX_SCHEDULE_TIMEOUT /HZ )) - data = (uint32_t )(MAX_SCHEDULE_TIMEOUT /HZ ); +if (!data) + data =INT_MAX ;if (!adapter->blink_timer.function) {init_timer (&adapter->blink_timer);
drivers/net/ixgb/ixgb_hw.c +2 -2
@@ -1174,7 +1174,7 @@ mac_addr_valid(uint8_t *mac_addr)* * hw - Struct containing variables accessed by shared code *****************************************************************************/ -boolean_t +static boolean_t ixgb_link_reset (struct ixgb_hw *hw) {boolean_t link_status = FALSE;
@@ -1205,7 +1205,7 @@ ixgb_link_reset(struct ixgb_hw *hw)* * hw - Struct containing variables accessed by shared code *****************************************************************************/ -void +static void ixgb_optics_reset (struct ixgb_hw *hw) {if (hw->phy_type == ixgb_phy_type_txn17401) {
drivers/net/ixgb/ixgb_main.c +4 -7
@@ -37,8 +37,8 @@ static char ixgb_driver_string[] = "Intel(R) PRO/10GbE Network Driver";#define DRIVERNAPI "-NAPI"#endif #define DRV_VERSION "1.0.126-k2"DRIVERNAPI -char ixgb_driver_version[] =DRV_VERSION ; -static char ixgb_copyright[] ="Copyright (c) 1999-2006 Intel Corporation." ; +const char ixgb_driver_version[] =DRV_VERSION ; +static const char ixgb_copyright[] ="Copyright (c) 1999-2006 Intel Corporation." ;/* ixgb_pci_tbl - PCI Device ID Table *
@@ -104,7 +104,6 @@ static boolean_t ixgb_clean_rx_irq(struct ixgb_adapter *adapter,static boolean_t ixgb_clean_rx_irq (struct ixgb_adapter *adapter);#endif static void ixgb_alloc_rx_buffers (struct ixgb_adapter *adapter); -void ixgb_set_ethtool_ops (struct net_device *netdev);static void ixgb_tx_timeout (struct net_device *dev);static void ixgb_tx_timeout_task (struct work_struct *work); static void ixgb_vlan_rx_register(struct net_device *netdev,
@@ -123,9 +122,6 @@ static pci_ers_result_t ixgb_io_error_detected (struct pci_dev *pdev,static pci_ers_result_t ixgb_io_slot_reset (struct pci_dev *pdev);static void ixgb_io_resume (struct pci_dev *pdev); -/* Exported from other modules */ -extern void ixgb_check_options (struct ixgb_adapter *adapter); -static struct pci_error_handlers ixgb_err_handler = { .error_detected = ixgb_io_error_detected, .slot_reset = ixgb_io_slot_reset,
@@ -1085,7 +1081,8 @@ ixgb_set_multi(struct net_device *netdev) rctl |=IXGB_RCTL_MPE ;IXGB_WRITE_REG (hw,RCTL , rctl); }else { -uint8_t mta[netdev->mc_count *IXGB_ETH_LENGTH_OF_ADDRESS ]; +uint8_t mta[IXGB_MAX_NUM_MULTICAST_ADDRESSES * +IXGB_ETH_LENGTH_OF_ADDRESS ];IXGB_WRITE_REG (hw,RCTL , rctl);
drivers/net/ixgb/ixgb_param.c +22 -21
145 lines not on this page · raw message
PATCH 3/4 e1000: sparse warnings fixes
In reply to Auke KokFrom: Stephen Hemminger <[email protected]>
Fix sparse warnings and problems from e1000 driver.
Added a sparse fix for the module param array index -- Auke
---
drivers/net/e1000/e1000.h | 8 ++++++++ drivers/net/e1000/e1000_ethtool.c | 29 ++++++++++++----------------- drivers/net/e1000/e1000_hw.c | 4 ++-- drivers/net/e1000/e1000_main.c | 7 ++----- drivers/net/e1000/e1000_param.c | 23 ++++++++++++----------- 5 files changed, 36 insertions(+), 35 deletions(-)
drivers/net/e1000/e1000.h +8 -0
@@ -351,4 +351,12 @@ enum e1000_state_t {__E1000_DOWN }; +extern char e1000_driver_name[]; +extern const char e1000_driver_version[]; + +extern void e1000_power_up_phy (struct e1000_adapter *); +extern void e1000_set_ethtool_ops (struct net_device *netdev); +extern void e1000_check_options (struct e1000_adapter *adapter); + +#endif /* _E1000_H_ */
drivers/net/e1000/e1000_ethtool.c +12 -17
@@ -32,9 +32,6 @@#include <asm/uaccess.h> -extern char e1000_driver_name[]; -extern char e1000_driver_version[]; -extern int e1000_up (struct e1000_adapter *adapter);extern void e1000_down (struct e1000_adapter *adapter);extern void e1000_reinit_locked (struct e1000_adapter *adapter);
@@ -733,16 +730,16 @@ err_setup:#define REG_PATTERN_TEST (R ,M ,W ) \ { \ - uint32_t pat, value; \ - uint32_t test[] = \ + uint32_t pat, val; \ + const uint32_t test[] = \ {0x5A5A5A5A, 0xA5A5A5A5, 0x00000000, 0xFFFFFFFF}; \ - for (pat = 0; pat < ARRAY_SIZE(test); pat++) { \ + for (pat = 0; pat < ARRAY_SIZE(test); pat++) { \ E1000_WRITE_REG(&adapter->hw, R, (test[pat] & W)); \ - value = E1000_READ_REG(&adapter->hw, R); \ - if (value != (test[pat] & W & M)) { \ + val = E1000_READ_REG(&adapter->hw, R); \ + if (val != (test[pat] & W & M)) { \ DPRINTK(DRV, ERR, "pattern test reg %04X failed: got " \ "0x%08X expected 0x%08X\n", \ - E1000_##R, value, (test[pat] & W & M)); \ + E1000_##R, val, (test[pat] & W & M)); \ *data = (adapter->hw.mac_type < e1000_82543) ? \ E1000_82542_##R : E1000_##R; \ return 1; \
@@ -752,12 +749,12 @@ err_setup:#define REG_SET_AND_CHECK (R ,M ,W ) \ { \ - uint32_t value; \ + uint32_t val; \ E1000_WRITE_REG(&adapter->hw, R, W & M); \ - value = E1000_READ_REG(&adapter->hw, R); \ - if ((W & M) != (value & M)) { \ + val = E1000_READ_REG(&adapter->hw, R); \ + if ((W & M) != (val & M)) { \ DPRINTK(DRV, ERR, "set/check reg %04X test failed: got 0x%08X "\ - "expected 0x%08X\n", E1000_##R, (value & M), (W & M)); \ + "expected 0x%08X\n", E1000_##R, (val & M), (W & M)); \ *data = (adapter->hw.mac_type < e1000_82543) ? \ E1000_82542_##R : E1000_##R; \ return 1; \
@@ -1621,8 +1618,6 @@ e1000_get_sset_count(struct net_device *netdev, int sset) } } -extern void e1000_power_up_phy (struct e1000_adapter *); -static void e1000_diag_test (struct net_device *netdev,struct ethtool_test *eth_test,uint64_t *data)
@@ -1859,8 +1854,8 @@ e1000_phys_id(struct net_device *netdev, uint32_t data) {struct e1000_adapter *adapter =netdev_priv (netdev); -if (!data || data > (uint32_t )(MAX_SCHEDULE_TIMEOUT /HZ )) - data = (uint32_t )(MAX_SCHEDULE_TIMEOUT /HZ ); +if (!data) + data =INT_MAX ;if (adapter->hw.mac_type < e1000_82571) {if (!adapter->blink_timer.function) {
drivers/net/e1000/e1000_hw.c +2 -2
@@ -8607,7 +8607,7 @@ e1000_read_ich8_data(struct e1000_hw *hw, uint32_t index,DEBUGFUNC ("e1000_read_ich8_data" ); -if (size <1 || size >2 || data ==0x0 || +if (size <1 || size >2 || data ==NULL || index >ICH_FLASH_LINEAR_ADDR_MASK )return error;
@@ -8841,7 +8841,7 @@ e1000_read_ich8_word(struct e1000_hw *hw, uint32_t index, uint16_t *data)* amount of NVM used in each bank is a *minimum* of 4 KBytes, but in fact the * bank size may be 4, 8 or 64 KBytes *****************************************************************************/ -int32_t +static int32_t e1000_erase_ich8_4k_segment (struct e1000_hw *hw,uint32_t bank) {union ich8_hws_flash_status hsfsts;
drivers/net/e1000/e1000_main.c +2 -5
@@ -37,8 +37,8 @@ static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";#define DRIVERNAPI "-NAPI"#endif #define DRV_VERSION "7.3.20-k2"DRIVERNAPI -char e1000_driver_version[] =DRV_VERSION ; -static char e1000_copyright[] ="Copyright (c) 1999-2006 Intel Corporation." ; +const char e1000_driver_version[] =DRV_VERSION ; +static const char e1000_copyright[] ="Copyright (c) 1999-2006 Intel Corporation." ;/* e1000_pci_tbl - PCI Device ID Table *
@@ -188,7 +188,6 @@ static void e1000_alloc_rx_buffers_ps(struct e1000_adapter *adapter,static int e1000_ioctl (struct net_device *netdev,struct ifreq *ifr,int cmd);static int e1000_mii_ioctl (struct net_device *netdev,struct ifreq *ifr,int cmd); -void e1000_set_ethtool_ops (struct net_device *netdev);static void e1000_enter_82542_rst (struct e1000_adapter *adapter);static void e1000_leave_82542_rst (struct e1000_adapter *adapter);static void e1000_tx_timeout (struct net_device *dev);
@@ -213,8 +212,6 @@ static void e1000_shutdown(struct pci_dev *pdev);static void e1000_netpoll (struct net_device *netdev);#endif -extern void e1000_check_options (struct e1000_adapter *adapter); -#define COPYBREAK_DEFAULT 256static unsigned int copybreak__read_mostly =COPYBREAK_DEFAULT ;module_param (copybreak, uint,0644 );
drivers/net/e1000/e1000_param.c +12 -11
@@ -46,7 +46,7 @@#define E1000_PARAM_INIT { [0 ... E1000_MAX_NIC] = OPTION_UNSET }#define E1000_PARAM (X , desc) \ static int __devinitdata X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \ - static int num_##X = 0; \ + static unsigned int num_##X; \ module_param_array_named(X, X, int, &num_##X, 0); \ MODULE_PARM_DESC(X, desc);
@@ -198,9 +198,9 @@ E1000_PARAM(KumeranLockLoss, "Enable Kumeran lock loss workaround"); struct e1000_option { enum { enable_option, range_option, list_option } type; - char *name; - char *err; - int def; + const char *name; + const char *err; + int def; union { struct { /* range_option info */ int min;
@@ -214,8 +214,9 @@ struct e1000_option { };static int __devinit -e1000_validate_option (int *value,struct e1000_option *opt, -struct e1000_adapter *adapter) +e1000_validate_option (unsigned int *value, +const struct e1000_option *opt, +struct e1000_adapter *adapter) {if (*value ==OPTION_UNSET ) { *value = opt->def;
@@ -348,7 +349,7 @@ e1000_check_options(struct e1000_adapter *adapter) };if (num_XsumRX > bd) { -int rx_csum = XsumRX[bd]; +unsigned int rx_csum = XsumRX[bd];e1000_validate_option (&rx_csum, &opt, adapter); adapter->rx_csum = rx_csum; }else {
@@ -374,7 +375,7 @@ e1000_check_options(struct e1000_adapter *adapter) };if (num_FlowControl > bd) { -int fc = FlowControl[bd]; +unsigned int fc = FlowControl[bd];e1000_validate_option (&fc, &opt, adapter); adapter->hw.fc = adapter->hw.original_fc = fc; }else {
@@ -506,7 +507,7 @@ e1000_check_options(struct e1000_adapter *adapter) };if (num_SmartPowerDownEnable > bd) { -int spd = SmartPowerDownEnable[bd]; +unsigned int spd = SmartPowerDownEnable[bd];e1000_validate_option (&spd, &opt, adapter); adapter->smart_power_down = spd; }else {
@@ -522,7 +523,7 @@ e1000_check_options(struct e1000_adapter *adapter) };if (num_KumeranLockLoss > bd) { -int kmrn_lock_loss = KumeranLockLoss[bd]; +unsigned int kmrn_lock_loss = KumeranLockLoss[bd];e1000_validate_option (&kmrn_lock_loss, &opt, adapter); adapter->hw.kmrn_lock_loss_workaround_disabled = !kmrn_lock_loss; }else {
@@ -581,7 +582,7 @@ e1000_check_fiber_options(struct e1000_adapter *adapter)static void __devinit e1000_check_copper_options (struct e1000_adapter *adapter) { -int speed, dplx, an; +unsigned int speed, dplx, an;int bd = adapter->bd_number; {/* Speed */
PATCH 4/4 ixgbe: minor sparse fixes
In reply to Auke KokFrom: Stephen Hemminger <[email protected]>
Make strings const if possible, and fix includes so forward definitions are seen.
---
drivers/net/ixgbe/ixgbe.h | 2 +- drivers/net/ixgbe/ixgbe_82598.c | 3 +-- drivers/net/ixgbe/ixgbe_main.c | 9 +++++---- 3 files changed, 7 insertions(+), 7 deletions(-)
drivers/net/ixgbe/ixgbe.h +1 -1
@@ -244,7 +244,7 @@ extern struct ixgbe_info ixgbe_82598EB_info;extern struct ixgbe_info ixgbe_82598AT_info;extern char ixgbe_driver_name[]; -extern char ixgbe_driver_version[]; +extern const char ixgbe_driver_version[];extern int ixgbe_up (struct ixgbe_adapter *adapter);extern void ixgbe_down (struct ixgbe_adapter *adapter);
drivers/net/ixgbe/ixgbe_82598.c +1 -2
@@ -30,8 +30,7 @@#include <linux/delay.h> #include <linux/sched.h> -#include "ixgbe_type.h" -#include "ixgbe_common.h" +#include "ixgbe.h" #include "ixgbe_phy.h" #define IXGBE_82598_MAX_TX_QUEUES 32
drivers/net/ixgbe/ixgbe_main.c +5 -4
@@ -45,12 +45,13 @@#include "ixgbe_common.h" char ixgbe_driver_name[] ="ixgbe" ; -static char ixgbe_driver_string[] = -"Intel(R) 10 Gigabit PCI Express Network Driver" ; +static const char ixgbe_driver_string[] = +"Intel(R) 10 Gigabit PCI Express Network Driver" ;#define DRV_VERSION "1.1.18" -char ixgbe_driver_version[] =DRV_VERSION ; -static char ixgbe_copyright[] ="Copyright (c) 1999-2007 Intel Corporation." ; +const char ixgbe_driver_version[] =DRV_VERSION ; +static const char ixgbe_copyright[] = +"Copyright (c) 1999-2007 Intel Corporation." ;static const struct ixgbe_info *ixgbe_info_tbl[] = { [board_82598AF] = &ixgbe_82598AF_info,
Re: [PATCH 4/4] ixgbe: minor sparse fixes
Quoted 5 lines · Auke Kok
From: Stephen Hemminger <[email protected]>
Make strings const if possible, and fix includes so forward definitions are seen.
Quoted 8 lines
Signed-off-by Stephen Hemminger <[email protected]>Signed-off-by Auke Kok <[email protected]>---
drivers/net/ixgbe/ixgbe.h | 2 +- drivers/net/ixgbe/ixgbe_82598.c | 3 +-- drivers/net/ixgbe/ixgbe_main.c | 9 +++++---- 3 files changed, 7 insertions(+), 7 deletions(-)
applied 1-4