Mon Nov 28 08:31:18 2016 UTC ()
Fix vlan check bug in ixv_setup_vlan_support().


(msaitoh)
diff -r1.19 -r1.20 src/sys/dev/pci/ixgbe/ixv.c

cvs diff -r1.19 -r1.20 src/sys/dev/pci/ixgbe/ixv.c (expand / switch to unified diff)

--- src/sys/dev/pci/ixgbe/ixv.c 2016/11/28 06:09:19 1.19
+++ src/sys/dev/pci/ixgbe/ixv.c 2016/11/28 08:31:17 1.20
@@ -21,27 +21,27 @@ @@ -21,27 +21,27 @@
21 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE  21 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE  22 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE  23 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR  24 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF  25 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS  26 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN  27 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)  28 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 POSSIBILITY OF SUCH DAMAGE. 30 POSSIBILITY OF SUCH DAMAGE.
31 31
32******************************************************************************/ 32******************************************************************************/
33/*$FreeBSD: head/sys/dev/ixgbe/ixv.c 275358 2014-12-01 11:45:24Z hselasky $*/ 33/*$FreeBSD: head/sys/dev/ixgbe/ixv.c 275358 2014-12-01 11:45:24Z hselasky $*/
34/*$NetBSD: ixv.c,v 1.19 2016/11/28 06:09:19 knakahara Exp $*/ 34/*$NetBSD: ixv.c,v 1.20 2016/11/28 08:31:17 msaitoh Exp $*/
35 35
36#include "opt_inet.h" 36#include "opt_inet.h"
37#include "opt_inet6.h" 37#include "opt_inet6.h"
38 38
39#include "ixv.h" 39#include "ixv.h"
40#include "vlan.h" 40#include "vlan.h"
41 41
42/********************************************************************* 42/*********************************************************************
43 * Driver version 43 * Driver version
44 *********************************************************************/ 44 *********************************************************************/
45char ixv_driver_version[] = "1.1.4"; 45char ixv_driver_version[] = "1.1.4";
46 46
47/********************************************************************* 47/*********************************************************************
@@ -3698,27 +3698,27 @@ ixv_rx_checksum(u32 staterr, struct mbuf @@ -3698,27 +3698,27 @@ ixv_rx_checksum(u32 staterr, struct mbuf
3698static void 3698static void
3699ixv_setup_vlan_support(struct adapter *adapter) 3699ixv_setup_vlan_support(struct adapter *adapter)
3700{ 3700{
3701 struct ixgbe_hw *hw = &adapter->hw; 3701 struct ixgbe_hw *hw = &adapter->hw;
3702 u32 ctrl, vid, vfta, retry; 3702 u32 ctrl, vid, vfta, retry;
3703 3703
3704 3704
3705 /* 3705 /*
3706 ** We get here thru init_locked, meaning 3706 ** We get here thru init_locked, meaning
3707 ** a soft reset, this has already cleared 3707 ** a soft reset, this has already cleared
3708 ** the VFTA and other state, so if there 3708 ** the VFTA and other state, so if there
3709 ** have been no vlan's registered do nothing. 3709 ** have been no vlan's registered do nothing.
3710 */ 3710 */
3711 if (adapter->num_vlans == 0) 3711 if (!VLAN_ATTACHED(&adapter->osdep.ec))
3712 return; 3712 return;
3713 3713
3714 /* Enable the queues */ 3714 /* Enable the queues */
3715 for (int i = 0; i < adapter->num_queues; i++) { 3715 for (int i = 0; i < adapter->num_queues; i++) {
3716 ctrl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(i)); 3716 ctrl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(i));
3717 ctrl |= IXGBE_RXDCTL_VME; 3717 ctrl |= IXGBE_RXDCTL_VME;
3718 IXGBE_WRITE_REG(hw, IXGBE_VFRXDCTL(i), ctrl); 3718 IXGBE_WRITE_REG(hw, IXGBE_VFRXDCTL(i), ctrl);
3719 } 3719 }
3720 3720
3721 /* 3721 /*
3722 ** A soft reset zero's out the VFTA, so 3722 ** A soft reset zero's out the VFTA, so
3723 ** we need to repopulate it now. 3723 ** we need to repopulate it now.
3724 */ 3724 */