aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ixgbevf/ixgbevf_main.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2010-08-16 13:42:58 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2010-08-16 13:42:58 -0400
commite4862f2f6f5653dfb67f3ba2b6f0bc74516ed51a (patch)
tree1db5a0540a4eecfad9b7daee476b985e82ddc810 /drivers/net/ixgbevf/ixgbevf_main.c
parentec62dbd7eb8e3dddb221da89ecbcea0fc3dee8c1 (diff)
parentb2c1e07b81a126e5846dfc3d36f559d861df59f4 (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.c20
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
1480static void ixgbevf_vlan_rx_kill_vid(struct net_device *netdev, u16 vid) 1474static 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);