diff --git a/bcm/bcm.c b/bcm/bcm.c
index b507e250c06410f93c00cdbbe39d0b88c36f3481..e475dd053150d61b847ded16d2f6253da281c23d 100644
--- a/bcm/bcm.c
+++ b/bcm/bcm.c
@@ -76,7 +76,7 @@ static int bcm_eth_get_unit_port(const char *ifname, int *unit, int *port)
 		unsigned int portmap = data.port_map;
 
 		for (i = 0; i < 8 * sizeof(portmap); i++) {
-			if (!!(portmap & (1 << i))) {
+			if (!!(portmap & (1UL << i))) {
 				*port = i;
 				break;
 			}
@@ -293,7 +293,7 @@ static int read_eth_stats(const char *ifname, struct eth_stats *s)
 	memset(&data, 0, sizeof(struct ethswctl_data));
 	ret = bcm_eth_get_unit_port(ifname, &unit, &port);
 	if (ret)
-		return ret_proc == 0 ? 0 : -1;
+		return -1;
 
 	data.op = ETHSWEMACGET;
 	data.port = port;
@@ -304,7 +304,7 @@ static int read_eth_stats(const char *ifname, struct eth_stats *s)
 						sizeof(struct ethswctl_data));
 	if (ret != 0) {
 		libethernet_err("ioctl failed! ret = %d\n", ret);
-		return ret_proc == 0 ? 0 : -1;
+		return -1;
 	}
 
 	s->tx_bytes = data.emac_stats_s.tx_byte;