net/e1000/base: fix multicast setting in VF
authorYong Wang <wang.yong19@zte.com.cn>
Tue, 21 Feb 2017 09:33:23 +0000 (04:33 -0500)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 4 Apr 2017 13:52:50 +0000 (15:52 +0200)
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>
drivers/net/e1000/base/e1000_vf.c

index 7845b48..44ab018 100644 (file)
@@ -421,12 +421,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++) {