diff options
author | Malcolm Priestley <tvboxspy@gmail.com> | 2014-02-12 19:18:26 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-02-14 09:20:51 -0800 |
commit | 0ca3e288ddd5b9a42728cdb984a68d86d45dd09a (patch) | |
tree | 469b1db39d24cded8c674b1f88d627499f4638d1 /drivers/staging/vt6656/mac.c | |
parent | bacb6de62cce0af3be40248c89f980b604b8a54f (diff) |
staging: vt6656: device_set_multi: covert mc_filter to u64
Convert mc_filter to u64, preform netdev_for_each_mc_addr
mask filtering.
In MACvWriteMultiAddr endian correct mc_filter and write
the entire multicast once.
Reported-by: Joe Perches <joe@perches.com>
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/vt6656/mac.c')
-rw-r--r-- | drivers/staging/vt6656/mac.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/staging/vt6656/mac.c b/drivers/staging/vt6656/mac.c index 54414ed27191..3ce19ddbc569 100644 --- a/drivers/staging/vt6656/mac.c +++ b/drivers/staging/vt6656/mac.c @@ -47,25 +47,19 @@ static int msglevel =MSG_LEVEL_INFO; * * Parameters: * In: - * uByteidx - Index of Mask - * byData - Mask Value to write + * mc_filter (mac filter) * Out: * none * * Return Value: none * */ -void MACvWriteMultiAddr(struct vnt_private *pDevice, u32 uByteIdx, u8 byData) +void MACvWriteMultiAddr(struct vnt_private *pDevice, u64 mc_filter) { - u8 byData1; + __le64 le_mc = cpu_to_le64(mc_filter); - byData1 = byData; - CONTROLnsRequestOut(pDevice, - MESSAGE_TYPE_WRITE, - (u16) (MAC_REG_MAR0 + uByteIdx), - MESSAGE_REQUEST_MACREG, - 1, - &byData1); + CONTROLnsRequestOut(pDevice, MESSAGE_TYPE_WRITE, MAC_REG_MAR0, + MESSAGE_REQUEST_MACREG, sizeof(le_mc), (u8 *)&le_mc); } /* |