[arm:mcbin 32/52] drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_ethtool.c:171:32: warning: integer overflow in expression
kbuild test robot
fengguang.wu at intel.com
Fri Dec 9 17:41:19 PST 2016
tree: git://git.armlinux.org.uk/~rmk/linux-arm.git mcbin
head: 9c14c9238518271b6f94c9d5a0210ae9154ec27b
commit: 56413dbd2c3aa08a1e3f0cfd66c539227278e7d2 [32/52] net: marvell: add mvpp2x driver
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 56413dbd2c3aa08a1e3f0cfd66c539227278e7d2
# save the attached .config to linux build tree
make.cross ARCH=arm
All warnings (new ones prefixed by >>):
In file included from include/linux/kernel.h:13:0,
from drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_ethtool.c:19:
drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_ethtool.c: In function 'mv_pp2x_ethtool_valid_coalesce':
>> drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_ethtool.c:171:32: warning: integer overflow in expression [-Woverflow]
(MVPP2_MAX_ISR_RX_THRESHOLD * USEC_PER_SEC)
^
include/linux/printk.h:277:33: note: in definition of macro 'pr_err'
printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~
drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_ethtool.c:177:33: warning: integer overflow in expression [-Woverflow]
(MVPP22_MAX_ISR_TX_THRESHOLD * USEC_PER_SEC)
^
include/linux/printk.h:277:33: note: in definition of macro 'pr_err'
printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~
drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_ethtool.c:180:33: warning: integer overflow in expression [-Woverflow]
(MVPP22_MAX_ISR_TX_THRESHOLD * USEC_PER_SEC)
^
--
drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_hw.c: In function 'mv_pp2x_rx_time_coal_set':
>> drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_hw.c:3486:48: warning: integer overflow in expression [-Woverflow]
rxq->time_coal = (MVPP2_MAX_ISR_RX_THRESHOLD *
^
--
drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_main.c: In function 'mv_pp2x_bm_pools_init':
drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_main.c:510:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
for (i = i - 1; i >= 0; i--)
^~~
drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_main.c:512:3: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'for'
return err;
^~~~~~
drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_main.c: In function 'mv_pp2x_buff_hdr_rx':
>> drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_main.c:2265:9: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
skb = (struct sk_buff *)(u64)buff_virt_addr;
^
vim +171 drivers/net/ethernet/marvell/mvpp2x/mv_pp2x_ethtool.c
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 * ***************************************************************************
17 */
18
> 19 #include <linux/kernel.h>
20 #include <linux/netdevice.h>
21 #include <linux/etherdevice.h>
22 #include <linux/platform_device.h>
23 #include <linux/skbuff.h>
24 #include <linux/inetdevice.h>
25 #include <linux/mbus.h>
26 #include <linux/module.h>
27 #include <linux/interrupt.h>
28 #include <linux/cpumask.h>
29 #include <linux/version.h>
30 #include <linux/of.h>
31 #include <linux/of_irq.h>
32 #include <linux/of_mdio.h>
33 #include <linux/of_net.h>
34 #include <linux/of_address.h>
35 #include <linux/phy.h>
36 #include <linux/clk.h>
37 #include <uapi/linux/ppp_defs.h>
38 #include <net/ip.h>
39 #include <net/ipv6.h>
40 #include <linux/phy/phy.h>
41 #ifdef CONFIG_PHY_MVEBU_COMPHY
42 #include <dt-bindings/phy/phy-mvebu-comphy.h>
43 #endif
44
45 #include "mv_pp2x.h"
46 #include "mv_pp2x_hw.h"
47 #include "mv_gop110_hw.h"
48
49 #define MV_PP2_STATS_LEN ARRAY_SIZE(mv_pp2x_gstrings_stats)
50 #define MV_PP2_TEST_LEN ARRAY_SIZE(mv_pp2x_gstrings_test)
51 #define MV_PP2_REGS_GMAC_LEN 54
52 #define MV_PP2_REGS_XLG_LEN 25
53 #define MV_PP2_TEST_MASK1 0xFFFF
54 #define MV_PP2_TEST_MASK2 0x00FE
55 #define MV_PP2_TEST_MASK3 0x0
56 #define MV_PP2_TEST_PATTERN1 0xFFFF
57 #define MV_PP2_TEST_PATTERN2 0x00FE
58 #define MV_PP2_TEST_PATTERN3 0x0
59
60 static const char mv_pp2x_gstrings_test[][ETH_GSTRING_LEN] = {
61 "Link test (on/offline)",
62 "register test (on/offline)",
63 };
64
65 static const char mv_pp2x_gstrings_stats[][ETH_GSTRING_LEN] = {
66 /* device-specific stats */
67 "rx_bytes", "rx_frames", "rx_unicast", "rx_mcast", "rx_bcast",
68 "tx_bytes", "tx_frames", "tx_unicast", "tx_mcast", "tx_bcast",
69 "rx_pause", "tx_pause", "rx_overrun", "rx_crc", "rx_runt", "rx_giant",
70 "rx_fragments_err", "rx_mac_err", "rx_jabber", "rx_sw_drop", "rx_total_err",
71 "tx_drop", "tx_crc_sent", "collision", "late_collision",
72 };
73
74 static int mv_pp2x_check_speed_duplex_valid(struct ethtool_cmd *cmd,
75 struct mv_port_link_status *pstatus)
76 {
77 switch (cmd->duplex) {
78 case DUPLEX_FULL:
79 pstatus->duplex = MV_PORT_DUPLEX_FULL;
80 break;
81 case DUPLEX_HALF:
82 pstatus->duplex = MV_PORT_DUPLEX_HALF;
83 break;
84 case DUPLEX_UNKNOWN:
85 if (cmd->speed == SPEED_1000)
86 pstatus->duplex = MV_PORT_DUPLEX_FULL;
87 else {
88 pstatus->duplex = MV_PORT_DUPLEX_FULL;
89 pr_err("Unknown duplex configuration, full duplex set\n");
90 }
91 break;
92 default:
93 pr_err("Wrong duplex configuration\n");
94 return -1;
95 }
96
97 switch (cmd->speed) {
98 case SPEED_100:
99 pstatus->speed = MV_PORT_SPEED_100;
100 return 0;
101 case SPEED_10:
102 pstatus->speed = MV_PORT_SPEED_10;
103 return 0;
104 case SPEED_1000:
105 pstatus->speed = MV_PORT_SPEED_1000;
106 if (cmd->duplex)
107 return 0;
108 pr_err("1G port doesn't support half duplex\n");
109 return -1;
110 default:
111 pr_err("Wrong speed configuration\n");
112 return -1;
113 }
114 }
115
116 static int mv_pp2x_autoneg_gmac_check_valid(struct mv_mac_data *mac, struct gop_hw *gop,
117 struct ethtool_cmd *cmd, struct mv_port_link_status *pstatus)
118 {
119
120 int port_num = mac->gop_index;
121 int err;
122
123 err = mv_gop110_check_port_type(gop, port_num);
124 if (err) {
125 if (cmd->autoneg) {
126 pr_err("GOP %d set to 1000Base-X and doesn't support autonegotiation\n", port_num);
127 return -EINVAL;
128 }
129 return 0;
130 }
131 if (!cmd->autoneg) {
132 err = mv_pp2x_check_speed_duplex_valid(cmd, pstatus);
133 if (err)
134 return -EINVAL;
135 }
136
137 return 0;
138 }
139
140 static int mv_pp2x_autoneg_xlg_check_valid(struct mv_mac_data *mac, struct ethtool_cmd *cmd)
141 {
142
143 int port_num = mac->gop_index;
144
145 if (cmd->autoneg) {
146 pr_err("XLG GOP %d doesn't support autonegotiation\n", port_num);
147 return -EINVAL;
148 }
149
150 return 0;
151 }
152
153 void mv_pp2x_ethtool_valid_coalesce(struct ethtool_coalesce *c,
154 struct mv_pp2x_port *port)
155 {
156 u64 val;
157
158 if (c->rx_max_coalesced_frames > MVPP2_MAX_OCCUPIED_THRESH)
159 pr_err("RX coalesced frames value too high, rounded to %d\n",
160 MVPP2_MAX_OCCUPIED_THRESH);
161
162 if (c->tx_max_coalesced_frames > MVPP2_MAX_TRANSMITTED_THRESH) {
163 pr_err("TX coalesced frames value too high, rounded to %d\n",
164 MVPP2_MAX_TRANSMITTED_THRESH);
165 c->tx_max_coalesced_frames = MVPP2_MAX_TRANSMITTED_THRESH;
166 }
167
168 val = (port->priv->hw.tclk / USEC_PER_SEC) * c->rx_coalesce_usecs;
169 if (val > MVPP2_MAX_ISR_RX_THRESHOLD)
170 pr_err("RX coalesced time value too high, rounded to %ld usecs\n",
> 171 (MVPP2_MAX_ISR_RX_THRESHOLD * USEC_PER_SEC)
172 / port->priv->hw.tclk);
173
174 val = (port->priv->hw.tclk / USEC_PER_SEC) * c->tx_coalesce_usecs;
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 59440 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20161210/90e95cf0/attachment-0001.gz>
More information about the linux-arm-kernel
mailing list