diff options
author | Bruce Allan <bruce.w.allan@intel.com> | 2010-01-12 21:05:38 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-01-13 23:31:57 -0500 |
commit | ab8932f3e8e07df92d6ce3fa41f5af0dda865429 (patch) | |
tree | adfd802b04591e62b4743790ea8308f24f46d3e4 /drivers/net/e1000e/82571.c | |
parent | f4d2dd4cd4d001f5dc20fc76c780c0c20c000c23 (diff) |
e1000e: genericize the update multicast address list
Make updating the multicast address list generic for all families and
enforce the requirement to update the entire multicast table array all at
once instead of piecemeal which causes problems on some parts.
Signed-off-by: Bruce Allan <bruce.w.allan@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/e1000e/82571.c')
-rw-r--r-- | drivers/net/e1000e/82571.c | 28 |
1 files changed, 1 insertions, 27 deletions
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c index 7674a91824bc..3c95acb3a87d 100644 --- a/drivers/net/e1000e/82571.c +++ b/drivers/net/e1000e/82571.c | |||
@@ -1234,32 +1234,6 @@ static s32 e1000_led_on_82574(struct e1000_hw *hw) | |||
1234 | } | 1234 | } |
1235 | 1235 | ||
1236 | /** | 1236 | /** |
1237 | * e1000_update_mc_addr_list_82571 - Update Multicast addresses | ||
1238 | * @hw: pointer to the HW structure | ||
1239 | * @mc_addr_list: array of multicast addresses to program | ||
1240 | * @mc_addr_count: number of multicast addresses to program | ||
1241 | * @rar_used_count: the first RAR register free to program | ||
1242 | * @rar_count: total number of supported Receive Address Registers | ||
1243 | * | ||
1244 | * Updates the Receive Address Registers and Multicast Table Array. | ||
1245 | * The caller must have a packed mc_addr_list of multicast addresses. | ||
1246 | * The parameter rar_count will usually be hw->mac.rar_entry_count | ||
1247 | * unless there are workarounds that change this. | ||
1248 | **/ | ||
1249 | static void e1000_update_mc_addr_list_82571(struct e1000_hw *hw, | ||
1250 | u8 *mc_addr_list, | ||
1251 | u32 mc_addr_count, | ||
1252 | u32 rar_used_count, | ||
1253 | u32 rar_count) | ||
1254 | { | ||
1255 | if (e1000e_get_laa_state_82571(hw)) | ||
1256 | rar_count--; | ||
1257 | |||
1258 | e1000e_update_mc_addr_list_generic(hw, mc_addr_list, mc_addr_count, | ||
1259 | rar_used_count, rar_count); | ||
1260 | } | ||
1261 | |||
1262 | /** | ||
1263 | * e1000_setup_link_82571 - Setup flow control and link settings | 1237 | * e1000_setup_link_82571 - Setup flow control and link settings |
1264 | * @hw: pointer to the HW structure | 1238 | * @hw: pointer to the HW structure |
1265 | * | 1239 | * |
@@ -1731,7 +1705,7 @@ static struct e1000_mac_operations e82571_mac_ops = { | |||
1731 | /* .get_link_up_info: media type dependent */ | 1705 | /* .get_link_up_info: media type dependent */ |
1732 | /* .led_on: mac type dependent */ | 1706 | /* .led_on: mac type dependent */ |
1733 | .led_off = e1000e_led_off_generic, | 1707 | .led_off = e1000e_led_off_generic, |
1734 | .update_mc_addr_list = e1000_update_mc_addr_list_82571, | 1708 | .update_mc_addr_list = e1000e_update_mc_addr_list_generic, |
1735 | .write_vfta = e1000_write_vfta_generic, | 1709 | .write_vfta = e1000_write_vfta_generic, |
1736 | .clear_vfta = e1000_clear_vfta_82571, | 1710 | .clear_vfta = e1000_clear_vfta_82571, |
1737 | .reset_hw = e1000_reset_hw_82571, | 1711 | .reset_hw = e1000_reset_hw_82571, |