diff options
author | Yong Wang <wang.yong19@zte.com.cn> | 2017-02-21 09:33:23 +0000 |
---|---|---|
committer | Kevin Bowling <kbowling@FreeBSD.org> | 2021-09-24 01:32:35 +0000 |
commit | 713e66e37d990e417170c73ae65024557b8f9071 (patch) | |
tree | f5016ebfef9bd94580ef67e774b7f77195d35ca8 | |
parent | a026f3294083b585bef81c8a01253fdbae50e72a (diff) | |
download | src-713e66e37d990e417170c73ae65024557b8f9071.tar.gz src-713e66e37d990e417170c73ae65024557b8f9071.zip |
e1000: fix multicast setting in VF
In function e1000_update_mc_addr_list_vf(), "msgbuf[0]" is used prior
to initialization at "msgbuf[0] |= E1000_VF_SET_MULTICAST_OVERFLOW".
And "msgbuf[0]" is overwritten at "msgbuf[0] = E1000_VF_SET_MULTICAST".
Fix it by moving the second line prior to the first one that mentioned
above.
Fixes: dffbaf7880a8 ("e1000: revert fix for multicast in VF")
Cc: stable@dpdk.org
Signed-off-by: Yong Wang <wang.yong19@zte.com.cn>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Approved by: imp
Obtained from: DPDK (f58ca2f9ef6)
MFC after: 1 week
(cherry picked from commit ecf2a89a997ad4a14339b6a2f544e44b422620a0)
-rw-r--r-- | sys/dev/e1000/e1000_vf.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/e1000/e1000_vf.c b/sys/dev/e1000/e1000_vf.c index 653ba322a185..4b73bb9709c1 100644 --- a/sys/dev/e1000/e1000_vf.c +++ b/sys/dev/e1000/e1000_vf.c @@ -419,12 +419,13 @@ void e1000_update_mc_addr_list_vf(struct e1000_hw *hw, DEBUGOUT1("MC Addr Count = %d\n", mc_addr_count); + msgbuf[0] = E1000_VF_SET_MULTICAST; + if (mc_addr_count > 30) { msgbuf[0] |= E1000_VF_SET_MULTICAST_OVERFLOW; mc_addr_count = 30; } - msgbuf[0] = E1000_VF_SET_MULTICAST; msgbuf[0] |= mc_addr_count << E1000_VT_MSGINFO_SHIFT; for (i = 0; i < mc_addr_count; i++) { |