git: b3d4891af03d - main - enetc: Fix VID/mcast address hash calculation
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 08 Dec 2021 08:34:48 UTC
The branch main has been updated by wma: URL: https://cgit.FreeBSD.org/src/commit/?id=b3d4891af03d1d4fe497b537519ed4995630aa08 commit b3d4891af03d1d4fe497b537519ed4995630aa08 Author: Kornel Duleba <mindal@semihalf.com> AuthorDate: 2021-11-30 08:23:29 +0000 Commit: Wojciech Macek <wma@FreeBSD.org> CommitDate: 2021-12-08 08:32:51 +0000 enetc: Fix VID/mcast address hash calculation The hash is calculated by XOR-ing together bits of the VID. Prepend a statement with "!!" to make sure that we're get bit 0 on both sides of the equation. Obtained from: Semihalf Sponsored by: Alstom Group --- sys/dev/enetc/if_enetc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/enetc/if_enetc.c b/sys/dev/enetc/if_enetc.c index abdb527760f6..e05e551ff48f 100644 --- a/sys/dev/enetc/if_enetc.c +++ b/sys/dev/enetc/if_enetc.c @@ -811,7 +811,7 @@ enetc_hash_mac(void *arg, struct sockaddr_dl *sdl, u_int cnt) for (i = 0; i < 6; i++) { bit = 0; for (j = 0; j < 8; j++) - bit ^= address & BIT(i + j*6); + bit ^= !!(address & BIT(i + j*6)); hash |= bit << i; } @@ -852,7 +852,7 @@ enetc_hash_vid(uint16_t vid) for (i = 0;i < 6;i++) { bit = vid & BIT(i); - bit ^= vid & BIT(i + 6); + bit ^= !!(vid & BIT(i + 6)); hash |= bit << i; }