diff options
author | Greg Rose <gregory.v.rose@intel.com> | 2010-05-04 18:11:46 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-05-06 00:15:32 -0400 |
commit | f04127760e582a9dccb22dfceb41cd1dad676794 (patch) | |
tree | 27fb84b216e4008a0389ac804785e1f3e939372e /drivers/net/ixgbe | |
parent | eab2abf5826b78b126826cc70e564c44816396da (diff) |
ixgbe: Add boolean parameter to ixgbe_set_vmolr
Add a boolean parameter to ixgbe-set_vmolr so that the caller can
specify whether the pool should accept untagged packets. Required
for a follow on patch to enable administrative configuration of port
VLAN for virtual functions.
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ixgbe')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 2 | ||||
-rw-r--r-- | drivers/net/ixgbe/ixgbe_sriov.c | 11 | ||||
-rw-r--r-- | drivers/net/ixgbe/ixgbe_sriov.h | 2 |
3 files changed, 9 insertions, 6 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 2ae5a5159ce4..0a0e90e80025 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -2722,7 +2722,7 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter) | |||
2722 | IXGBE_WRITE_REG(hw, IXGBE_VFRE(reg_offset), (1 << vf_shift)); | 2722 | IXGBE_WRITE_REG(hw, IXGBE_VFRE(reg_offset), (1 << vf_shift)); |
2723 | IXGBE_WRITE_REG(hw, IXGBE_VFTE(reg_offset), (1 << vf_shift)); | 2723 | IXGBE_WRITE_REG(hw, IXGBE_VFTE(reg_offset), (1 << vf_shift)); |
2724 | IXGBE_WRITE_REG(hw, IXGBE_PFDTXGSWC, IXGBE_PFDTXGSWC_VT_LBEN); | 2724 | IXGBE_WRITE_REG(hw, IXGBE_PFDTXGSWC, IXGBE_PFDTXGSWC_VT_LBEN); |
2725 | ixgbe_set_vmolr(hw, adapter->num_vfs); | 2725 | ixgbe_set_vmolr(hw, adapter->num_vfs, true); |
2726 | } | 2726 | } |
2727 | 2727 | ||
2728 | /* Program MRQC for the distribution of queues */ | 2728 | /* Program MRQC for the distribution of queues */ |
diff --git a/drivers/net/ixgbe/ixgbe_sriov.c b/drivers/net/ixgbe/ixgbe_sriov.c index d4cd20f30199..53f364d57739 100644 --- a/drivers/net/ixgbe/ixgbe_sriov.c +++ b/drivers/net/ixgbe/ixgbe_sriov.c | |||
@@ -113,13 +113,16 @@ int ixgbe_set_vf_vlan(struct ixgbe_adapter *adapter, int add, int vid, u32 vf) | |||
113 | } | 113 | } |
114 | 114 | ||
115 | 115 | ||
116 | void ixgbe_set_vmolr(struct ixgbe_hw *hw, u32 vf) | 116 | void ixgbe_set_vmolr(struct ixgbe_hw *hw, u32 vf, bool aupe) |
117 | { | 117 | { |
118 | u32 vmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(vf)); | 118 | u32 vmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(vf)); |
119 | vmolr |= (IXGBE_VMOLR_AUPE | | 119 | vmolr |= (IXGBE_VMOLR_ROMPE | |
120 | IXGBE_VMOLR_ROMPE | | ||
121 | IXGBE_VMOLR_ROPE | | 120 | IXGBE_VMOLR_ROPE | |
122 | IXGBE_VMOLR_BAM); | 121 | IXGBE_VMOLR_BAM); |
122 | if (aupe) | ||
123 | vmolr |= IXGBE_VMOLR_AUPE; | ||
124 | else | ||
125 | vmolr &= ~IXGBE_VMOLR_AUPE; | ||
123 | IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr); | 126 | IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr); |
124 | } | 127 | } |
125 | 128 | ||
@@ -128,7 +131,7 @@ inline void ixgbe_vf_reset_event(struct ixgbe_adapter *adapter, u32 vf) | |||
128 | struct ixgbe_hw *hw = &adapter->hw; | 131 | struct ixgbe_hw *hw = &adapter->hw; |
129 | 132 | ||
130 | /* reset offloads to defaults */ | 133 | /* reset offloads to defaults */ |
131 | ixgbe_set_vmolr(hw, vf); | 134 | ixgbe_set_vmolr(hw, vf, true); |
132 | 135 | ||
133 | 136 | ||
134 | /* reset multicast table array for vf */ | 137 | /* reset multicast table array for vf */ |
diff --git a/drivers/net/ixgbe/ixgbe_sriov.h b/drivers/net/ixgbe/ixgbe_sriov.h index 51d1106c45a1..7fb12885cf5d 100644 --- a/drivers/net/ixgbe/ixgbe_sriov.h +++ b/drivers/net/ixgbe/ixgbe_sriov.h | |||
@@ -32,7 +32,7 @@ int ixgbe_set_vf_multicasts(struct ixgbe_adapter *adapter, | |||
32 | int entries, u16 *hash_list, u32 vf); | 32 | int entries, u16 *hash_list, u32 vf); |
33 | void ixgbe_restore_vf_multicasts(struct ixgbe_adapter *adapter); | 33 | void ixgbe_restore_vf_multicasts(struct ixgbe_adapter *adapter); |
34 | int ixgbe_set_vf_vlan(struct ixgbe_adapter *adapter, int add, int vid, u32 vf); | 34 | int ixgbe_set_vf_vlan(struct ixgbe_adapter *adapter, int add, int vid, u32 vf); |
35 | void ixgbe_set_vmolr(struct ixgbe_hw *hw, u32 vf); | 35 | void ixgbe_set_vmolr(struct ixgbe_hw *hw, u32 vf, bool aupe); |
36 | void ixgbe_vf_reset_event(struct ixgbe_adapter *adapter, u32 vf); | 36 | void ixgbe_vf_reset_event(struct ixgbe_adapter *adapter, u32 vf); |
37 | void ixgbe_vf_reset_msg(struct ixgbe_adapter *adapter, u32 vf); | 37 | void ixgbe_vf_reset_msg(struct ixgbe_adapter *adapter, u32 vf); |
38 | void ixgbe_msg_task(struct ixgbe_adapter *adapter); | 38 | void ixgbe_msg_task(struct ixgbe_adapter *adapter); |