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 | |
| 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>
| -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); |
