.. | .. |
---|
115 | 115 | #define FIRMWARE_8168FP_3 "rtl_nic/rtl8168fp-3.fw" |
---|
116 | 116 | #define FIRMWARE_8168FP_4 "rtl_nic/rtl8168fp-4.fw" |
---|
117 | 117 | |
---|
| 118 | +static int my_id=1; |
---|
| 119 | + |
---|
118 | 120 | /* Maximum number of multicast addresses to filter (vs. Rx-all-multicast). |
---|
119 | 121 | The RTL chips use a 64 element hash table based on the Ethernet CRC. */ |
---|
120 | 122 | static const int multicast_filter_limit = 32; |
---|
.. | .. |
---|
24055 | 24057 | free_netdev(dev); |
---|
24056 | 24058 | } |
---|
24057 | 24059 | |
---|
| 24060 | +extern ssize_t at24_mac1_read(unsigned char* mac); |
---|
| 24061 | +extern ssize_t at24_mac2_read(unsigned char* mac); |
---|
| 24062 | +extern ssize_t at24_mac3_read(unsigned char* mac); |
---|
| 24063 | + |
---|
| 24064 | + |
---|
24058 | 24065 | static int |
---|
24059 | 24066 | rtl8168_get_mac_address(struct net_device *dev) |
---|
24060 | 24067 | { |
---|
24061 | 24068 | struct rtl8168_private *tp = netdev_priv(dev); |
---|
24062 | 24069 | int i; |
---|
24063 | 24070 | u8 mac_addr[MAC_ADDR_LEN]; |
---|
| 24071 | + unsigned char mac[6]; |
---|
24064 | 24072 | |
---|
24065 | 24073 | for (i = 0; i < MAC_ADDR_LEN; i++) |
---|
24066 | 24074 | mac_addr[i] = RTL_R8(tp, MAC0 + i); |
---|
.. | .. |
---|
24115 | 24123 | } |
---|
24116 | 24124 | } |
---|
24117 | 24125 | } |
---|
| 24126 | + |
---|
| 24127 | + |
---|
| 24128 | + if (my_id == 1) |
---|
| 24129 | + at24_mac1_read(mac); |
---|
| 24130 | + if (my_id == 2) |
---|
| 24131 | + at24_mac2_read(mac); |
---|
| 24132 | + if (my_id == 3) |
---|
| 24133 | + at24_mac3_read(mac); |
---|
| 24134 | + if ((mac[0] == 0x68) && (mac[1] == 0xed)) |
---|
| 24135 | + { |
---|
| 24136 | + for (i = 0; i < ETH_ALEN; i++) |
---|
| 24137 | + mac_addr[i] = mac[i]; |
---|
| 24138 | + my_id+=1; |
---|
| 24139 | + netif_err(tp, probe, dev, "Get ether addr form at24 %pM\n", |
---|
| 24140 | + mac_addr); |
---|
| 24141 | + } |
---|
| 24142 | + else{ |
---|
| 24143 | + printk("rtl811h mac read from eeprom error!! \n"); |
---|
| 24144 | + mac_addr[0] = 0x66; |
---|
| 24145 | + mac_addr[1] = 0xED; |
---|
| 24146 | + mac_addr[2] = 0xB5; |
---|
| 24147 | + mac_addr[3] = 0x64; |
---|
| 24148 | + mac_addr[4] = 0x72; |
---|
| 24149 | + mac_addr[5] = my_id; |
---|
| 24150 | + my_id+=1; |
---|
| 24151 | + } |
---|
24118 | 24152 | |
---|
24119 | 24153 | if (!is_valid_ether_addr(mac_addr)) { |
---|
24120 | 24154 | netif_err(tp, probe, dev, "Invalid ether addr %pM\n", |
---|
.. | .. |
---|
28739 | 28773 | #endif |
---|
28740 | 28774 | } |
---|
28741 | 28775 | |
---|
28742 | | -module_init(rtl8168_init_module); |
---|
| 28776 | +//module_init(rtl8168_init_module); |
---|
| 28777 | +late_initcall(rtl8168_init_module); |
---|
28743 | 28778 | module_exit(rtl8168_cleanup_module); |
---|