diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-08-16 13:42:58 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-08-16 13:42:58 -0400 |
commit | e4862f2f6f5653dfb67f3ba2b6f0bc74516ed51a (patch) | |
tree | 1db5a0540a4eecfad9b7daee476b985e82ddc810 /drivers/net/ixgbevf/ixgbevf_main.c | |
parent | ec62dbd7eb8e3dddb221da89ecbcea0fc3dee8c1 (diff) | |
parent | b2c1e07b81a126e5846dfc3d36f559d861df59f4 (diff) |
Merge branch 'for-2.6.36' into for-2.6.37
Fairly simple conflicts, the most serious ones are the i.MX ones which I
suspect now need another rename.
Conflicts:
arch/arm/mach-mx2/clock_imx27.c
arch/arm/mach-mx2/devices.c
arch/arm/mach-omap2/board-rx51-peripherals.c
arch/arm/mach-omap2/board-zoom2.c
sound/soc/fsl/mpc5200_dma.c
sound/soc/fsl/mpc5200_dma.h
sound/soc/fsl/mpc8610_hpcd.c
sound/soc/pxa/spitz.c
Diffstat (limited to 'drivers/net/ixgbevf/ixgbevf_main.c')
-rw-r--r-- | drivers/net/ixgbevf/ixgbevf_main.c | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/drivers/net/ixgbevf/ixgbevf_main.c b/drivers/net/ixgbevf/ixgbevf_main.c index a16cff7e54a3..918c00359b0a 100644 --- a/drivers/net/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ixgbevf/ixgbevf_main.c | |||
@@ -231,6 +231,7 @@ static bool ixgbevf_clean_tx_irq(struct ixgbevf_adapter *adapter, | |||
231 | while ((eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD)) && | 231 | while ((eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD)) && |
232 | (count < tx_ring->work_limit)) { | 232 | (count < tx_ring->work_limit)) { |
233 | bool cleaned = false; | 233 | bool cleaned = false; |
234 | rmb(); /* read buffer_info after eop_desc */ | ||
234 | for ( ; !cleaned; count++) { | 235 | for ( ; !cleaned; count++) { |
235 | struct sk_buff *skb; | 236 | struct sk_buff *skb; |
236 | tx_desc = IXGBE_TX_DESC_ADV(*tx_ring, i); | 237 | tx_desc = IXGBE_TX_DESC_ADV(*tx_ring, i); |
@@ -518,6 +519,7 @@ static bool ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector, | |||
518 | break; | 519 | break; |
519 | (*work_done)++; | 520 | (*work_done)++; |
520 | 521 | ||
522 | rmb(); /* read descriptor and rx_buffer_info after status DD */ | ||
521 | if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED) { | 523 | if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED) { |
522 | hdr_info = le16_to_cpu(ixgbevf_get_hdr_info(rx_desc)); | 524 | hdr_info = le16_to_cpu(ixgbevf_get_hdr_info(rx_desc)); |
523 | len = (hdr_info & IXGBE_RXDADV_HDRBUFLEN_MASK) >> | 525 | len = (hdr_info & IXGBE_RXDADV_HDRBUFLEN_MASK) >> |
@@ -1463,18 +1465,10 @@ static void ixgbevf_vlan_rx_add_vid(struct net_device *netdev, u16 vid) | |||
1463 | { | 1465 | { |
1464 | struct ixgbevf_adapter *adapter = netdev_priv(netdev); | 1466 | struct ixgbevf_adapter *adapter = netdev_priv(netdev); |
1465 | struct ixgbe_hw *hw = &adapter->hw; | 1467 | struct ixgbe_hw *hw = &adapter->hw; |
1466 | struct net_device *v_netdev; | ||
1467 | 1468 | ||
1468 | /* add VID to filter table */ | 1469 | /* add VID to filter table */ |
1469 | if (hw->mac.ops.set_vfta) | 1470 | if (hw->mac.ops.set_vfta) |
1470 | hw->mac.ops.set_vfta(hw, vid, 0, true); | 1471 | hw->mac.ops.set_vfta(hw, vid, 0, true); |
1471 | /* | ||
1472 | * Copy feature flags from netdev to the vlan netdev for this vid. | ||
1473 | * This allows things like TSO to bubble down to our vlan device. | ||
1474 | */ | ||
1475 | v_netdev = vlan_group_get_device(adapter->vlgrp, vid); | ||
1476 | v_netdev->features |= adapter->netdev->features; | ||
1477 | vlan_group_set_device(adapter->vlgrp, vid, v_netdev); | ||
1478 | } | 1472 | } |
1479 | 1473 | ||
1480 | static void ixgbevf_vlan_rx_kill_vid(struct net_device *netdev, u16 vid) | 1474 | static void ixgbevf_vlan_rx_kill_vid(struct net_device *netdev, u16 vid) |
@@ -2229,7 +2223,7 @@ static int __devinit ixgbevf_sw_init(struct ixgbevf_adapter *adapter) | |||
2229 | if (err) { | 2223 | if (err) { |
2230 | dev_info(&pdev->dev, | 2224 | dev_info(&pdev->dev, |
2231 | "PF still in reset state, assigning new address\n"); | 2225 | "PF still in reset state, assigning new address\n"); |
2232 | random_ether_addr(hw->mac.addr); | 2226 | dev_hw_addr_random(adapter->netdev, hw->mac.addr); |
2233 | } else { | 2227 | } else { |
2234 | err = hw->mac.ops.init_hw(hw); | 2228 | err = hw->mac.ops.init_hw(hw); |
2235 | if (err) { | 2229 | if (err) { |
@@ -2935,7 +2929,8 @@ static int ixgbevf_tx_map(struct ixgbevf_adapter *adapter, | |||
2935 | struct ixgbevf_tx_buffer *tx_buffer_info; | 2929 | struct ixgbevf_tx_buffer *tx_buffer_info; |
2936 | unsigned int len; | 2930 | unsigned int len; |
2937 | unsigned int total = skb->len; | 2931 | unsigned int total = skb->len; |
2938 | unsigned int offset = 0, size, count = 0; | 2932 | unsigned int offset = 0, size; |
2933 | int count = 0; | ||
2939 | unsigned int nr_frags = skb_shinfo(skb)->nr_frags; | 2934 | unsigned int nr_frags = skb_shinfo(skb)->nr_frags; |
2940 | unsigned int f; | 2935 | unsigned int f; |
2941 | int i; | 2936 | int i; |
@@ -3401,7 +3396,6 @@ static int __devinit ixgbevf_probe(struct pci_dev *pdev, | |||
3401 | /* setup the private structure */ | 3396 | /* setup the private structure */ |
3402 | err = ixgbevf_sw_init(adapter); | 3397 | err = ixgbevf_sw_init(adapter); |
3403 | 3398 | ||
3404 | #ifdef MAX_SKB_FRAGS | ||
3405 | netdev->features = NETIF_F_SG | | 3399 | netdev->features = NETIF_F_SG | |
3406 | NETIF_F_IP_CSUM | | 3400 | NETIF_F_IP_CSUM | |
3407 | NETIF_F_HW_VLAN_TX | | 3401 | NETIF_F_HW_VLAN_TX | |
@@ -3411,16 +3405,16 @@ static int __devinit ixgbevf_probe(struct pci_dev *pdev, | |||
3411 | netdev->features |= NETIF_F_IPV6_CSUM; | 3405 | netdev->features |= NETIF_F_IPV6_CSUM; |
3412 | netdev->features |= NETIF_F_TSO; | 3406 | netdev->features |= NETIF_F_TSO; |
3413 | netdev->features |= NETIF_F_TSO6; | 3407 | netdev->features |= NETIF_F_TSO6; |
3408 | netdev->features |= NETIF_F_GRO; | ||
3414 | netdev->vlan_features |= NETIF_F_TSO; | 3409 | netdev->vlan_features |= NETIF_F_TSO; |
3415 | netdev->vlan_features |= NETIF_F_TSO6; | 3410 | netdev->vlan_features |= NETIF_F_TSO6; |
3416 | netdev->vlan_features |= NETIF_F_IP_CSUM; | 3411 | netdev->vlan_features |= NETIF_F_IP_CSUM; |
3412 | netdev->vlan_features |= NETIF_F_IPV6_CSUM; | ||
3417 | netdev->vlan_features |= NETIF_F_SG; | 3413 | netdev->vlan_features |= NETIF_F_SG; |
3418 | 3414 | ||
3419 | if (pci_using_dac) | 3415 | if (pci_using_dac) |
3420 | netdev->features |= NETIF_F_HIGHDMA; | 3416 | netdev->features |= NETIF_F_HIGHDMA; |
3421 | 3417 | ||
3422 | #endif /* MAX_SKB_FRAGS */ | ||
3423 | |||
3424 | /* The HW MAC address was set and/or determined in sw_init */ | 3418 | /* The HW MAC address was set and/or determined in sw_init */ |
3425 | memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len); | 3419 | memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len); |
3426 | memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len); | 3420 | memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len); |