Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

atp: remove set_rx_mode_8012()

Building atp.o triggers this GCC warning:
drivers/net/ethernet/realtek/atp.c: In function ‘set_rx_mode’:
drivers/net/ethernet/realtek/atp.c:871:26: warning: ‘mc_filter[0]’ may be used uninitialized in this function [-Wuninitialized]

GCC is correct. In promiscuous mode 'mc_filter' will be used
uninitialized in set_rx_mode_8012(), which is apparently inlined into
set_rx_mode().

But it turns out set_rx_mode_8012() will never be called, since
net_local.chip_type will always be RTL8002. So we can just remove
set_rx_mode_8012() and do some related cleanups.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Paul Bolle and committed by
David S. Miller
bb263e18 5250c969

+2 -58
+2 -56
drivers/net/ethernet/realtek/atp.c
··· 175 175 unsigned int tx_unit_busy:1; 176 176 unsigned char re_tx, /* Number of packet retransmissions. */ 177 177 addr_mode, /* Current Rx filter e.g. promiscuous, etc. */ 178 - pac_cnt_in_tx_buf, 179 - chip_type; 178 + pac_cnt_in_tx_buf; 180 179 }; 181 180 182 181 /* This code, written by wwc@super.org, resets the adapter every ··· 338 339 write_reg_high(ioaddr, CMR1, CMR1h_RESET | CMR1h_MUX); 339 340 340 341 lp = netdev_priv(dev); 341 - lp->chip_type = RTL8002; 342 342 lp->addr_mode = CMR2h_Normal; 343 343 spin_lock_init(&lp->lock); 344 344 ··· 850 852 * Set or clear the multicast filter for this adapter. 851 853 */ 852 854 853 - static void set_rx_mode_8002(struct net_device *dev) 855 + static void set_rx_mode(struct net_device *dev) 854 856 { 855 857 struct net_local *lp = netdev_priv(dev); 856 858 long ioaddr = dev->base_addr; ··· 861 863 lp->addr_mode = CMR2h_Normal; 862 864 write_reg_high(ioaddr, CMR2, lp->addr_mode); 863 865 } 864 - 865 - static void set_rx_mode_8012(struct net_device *dev) 866 - { 867 - struct net_local *lp = netdev_priv(dev); 868 - long ioaddr = dev->base_addr; 869 - unsigned char new_mode, mc_filter[8]; /* Multicast hash filter */ 870 - int i; 871 - 872 - if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */ 873 - new_mode = CMR2h_PROMISC; 874 - } else if ((netdev_mc_count(dev) > 1000) || 875 - (dev->flags & IFF_ALLMULTI)) { 876 - /* Too many to filter perfectly -- accept all multicasts. */ 877 - memset(mc_filter, 0xff, sizeof(mc_filter)); 878 - new_mode = CMR2h_Normal; 879 - } else { 880 - struct netdev_hw_addr *ha; 881 - 882 - memset(mc_filter, 0, sizeof(mc_filter)); 883 - netdev_for_each_mc_addr(ha, dev) { 884 - int filterbit = ether_crc_le(ETH_ALEN, ha->addr) & 0x3f; 885 - mc_filter[filterbit >> 5] |= 1 << (filterbit & 31); 886 - } 887 - new_mode = CMR2h_Normal; 888 - } 889 - lp->addr_mode = new_mode; 890 - write_reg(ioaddr, CMR2, CMR2_IRQOUT | 0x04); /* Switch to page 1. */ 891 - for (i = 0; i < 8; i++) 892 - write_reg_byte(ioaddr, i, mc_filter[i]); 893 - if (net_debug > 2 || 1) { 894 - lp->addr_mode = 1; 895 - printk(KERN_DEBUG "%s: Mode %d, setting multicast filter to", 896 - dev->name, lp->addr_mode); 897 - for (i = 0; i < 8; i++) 898 - printk(" %2.2x", mc_filter[i]); 899 - printk(".\n"); 900 - } 901 - 902 - write_reg_high(ioaddr, CMR2, lp->addr_mode); 903 - write_reg(ioaddr, CMR2, CMR2_IRQOUT); /* Switch back to page 0 */ 904 - } 905 - 906 - static void set_rx_mode(struct net_device *dev) 907 - { 908 - struct net_local *lp = netdev_priv(dev); 909 - 910 - if (lp->chip_type == RTL8002) 911 - return set_rx_mode_8002(dev); 912 - else 913 - return set_rx_mode_8012(dev); 914 - } 915 - 916 866 917 867 static int __init atp_init_module(void) { 918 868 if (debug) /* Emit version even if no cards detected. */
-2
drivers/net/ethernet/realtek/atp.h
··· 16 16 #define PAR_STATUS 1 17 17 #define PAR_CONTROL 2 18 18 19 - enum chip_type { RTL8002, RTL8012 }; 20 - 21 19 #define Ctrl_LNibRead 0x08 /* LP_PSELECP */ 22 20 #define Ctrl_HNibRead 0 23 21 #define Ctrl_LNibWrite 0x08 /* LP_PSELECP */