|
@@ -1368,6 +1368,12 @@ static void update_cr6(u32 cr6_data, unsigned long ioaddr)
|
|
* This setup frame initialize ULI526X address filter mode
|
|
* This setup frame initialize ULI526X address filter mode
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
+#ifdef __BIG_ENDIAN
|
|
|
|
+#define FLT_SHIFT 16
|
|
|
|
+#else
|
|
|
|
+#define FLT_SHIFT 0
|
|
|
|
+#endif
|
|
|
|
+
|
|
static void send_filter_frame(struct net_device *dev, int mc_cnt)
|
|
static void send_filter_frame(struct net_device *dev, int mc_cnt)
|
|
{
|
|
{
|
|
struct uli526x_board_info *db = netdev_priv(dev);
|
|
struct uli526x_board_info *db = netdev_priv(dev);
|
|
@@ -1384,27 +1390,27 @@ static void send_filter_frame(struct net_device *dev, int mc_cnt)
|
|
|
|
|
|
/* Node address */
|
|
/* Node address */
|
|
addrptr = (u16 *) dev->dev_addr;
|
|
addrptr = (u16 *) dev->dev_addr;
|
|
- *suptr++ = addrptr[0];
|
|
|
|
- *suptr++ = addrptr[1];
|
|
|
|
- *suptr++ = addrptr[2];
|
|
|
|
|
|
+ *suptr++ = addrptr[0] << FLT_SHIFT;
|
|
|
|
+ *suptr++ = addrptr[1] << FLT_SHIFT;
|
|
|
|
+ *suptr++ = addrptr[2] << FLT_SHIFT;
|
|
|
|
|
|
/* broadcast address */
|
|
/* broadcast address */
|
|
- *suptr++ = 0xffff;
|
|
|
|
- *suptr++ = 0xffff;
|
|
|
|
- *suptr++ = 0xffff;
|
|
|
|
|
|
+ *suptr++ = 0xffff << FLT_SHIFT;
|
|
|
|
+ *suptr++ = 0xffff << FLT_SHIFT;
|
|
|
|
+ *suptr++ = 0xffff << FLT_SHIFT;
|
|
|
|
|
|
/* fit the multicast address */
|
|
/* fit the multicast address */
|
|
for (mcptr = dev->mc_list, i = 0; i < mc_cnt; i++, mcptr = mcptr->next) {
|
|
for (mcptr = dev->mc_list, i = 0; i < mc_cnt; i++, mcptr = mcptr->next) {
|
|
addrptr = (u16 *) mcptr->dmi_addr;
|
|
addrptr = (u16 *) mcptr->dmi_addr;
|
|
- *suptr++ = addrptr[0];
|
|
|
|
- *suptr++ = addrptr[1];
|
|
|
|
- *suptr++ = addrptr[2];
|
|
|
|
|
|
+ *suptr++ = addrptr[0] << FLT_SHIFT;
|
|
|
|
+ *suptr++ = addrptr[1] << FLT_SHIFT;
|
|
|
|
+ *suptr++ = addrptr[2] << FLT_SHIFT;
|
|
}
|
|
}
|
|
|
|
|
|
for (; i<14; i++) {
|
|
for (; i<14; i++) {
|
|
- *suptr++ = 0xffff;
|
|
|
|
- *suptr++ = 0xffff;
|
|
|
|
- *suptr++ = 0xffff;
|
|
|
|
|
|
+ *suptr++ = 0xffff << FLT_SHIFT;
|
|
|
|
+ *suptr++ = 0xffff << FLT_SHIFT;
|
|
|
|
+ *suptr++ = 0xffff << FLT_SHIFT;
|
|
}
|
|
}
|
|
|
|
|
|
/* prepare the setup frame */
|
|
/* prepare the setup frame */
|