Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-3.6
David S. Miller [Wed, 11 May 2011 18:26:15 +0000 (14:26 -0400)]
Conflicts:
drivers/net/benet/be_main.c

15 files changed:
1  2 
drivers/net/benet/be.h
drivers/net/benet/be_cmds.c
drivers/net/benet/be_main.c
drivers/net/ehea/ehea_ethtool.c
drivers/net/pch_gbe/pch_gbe_main.c
drivers/net/vmxnet3/vmxnet3_drv.c
include/net/ip_vs.h
include/net/xfrm.h
net/8021q/vlan.c
net/8021q/vlan_dev.c
net/core/dev.c
net/ipv4/xfrm4_state.c
net/netfilter/ipvs/ip_vs_ctl.c
net/netfilter/x_tables.c
net/xfrm/xfrm_policy.c

Simple merge
Simple merge
@@@ -1102,14 -1103,9 +1104,14 @@@ static void be_parse_rx_compl_v1(struc
                AMAP_GET_BITS(struct amap_eth_rx_compl_v1, numfrags, compl);
        rxcp->pkt_type =
                AMAP_GET_BITS(struct amap_eth_rx_compl_v1, cast_enc, compl);
 -      rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, vtm, compl);
 -      rxcp->vlan_tag = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, vlan_tag,
 -                                      compl);
 +      rxcp->rss_hash =
 +              AMAP_GET_BITS(struct amap_eth_rx_compl_v1, rsshash, rxcp);
 +      if (rxcp->vlanf) {
 +              rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, vtm,
-                               compl);
-               rxcp->vid = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, vlan_tag,
-                               compl);
++                                        compl);
++              rxcp->vlan_tag = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, vlan_tag,
++                                             compl);
 +      }
  }
  
  static void be_parse_rx_compl_v0(struct be_adapter *adapter,
                AMAP_GET_BITS(struct amap_eth_rx_compl_v0, numfrags, compl);
        rxcp->pkt_type =
                AMAP_GET_BITS(struct amap_eth_rx_compl_v0, cast_enc, compl);
 -      rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, vtm, compl);
 -      rxcp->vlan_tag = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, vlan_tag,
 -                                      compl);
 +      rxcp->rss_hash =
 +              AMAP_GET_BITS(struct amap_eth_rx_compl_v0, rsshash, rxcp);
 +      if (rxcp->vlanf) {
 +              rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, vtm,
-                               compl);
-               rxcp->vid = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, vlan_tag,
-                               compl);
++                                        compl);
++              rxcp->vlan_tag = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, vlan_tag,
++                                             compl);
 +      }
  }
  
  static struct be_rx_compl_info *be_rx_compl_get(struct be_rx_obj *rxo)
        else
                be_parse_rx_compl_v0(adapter, compl, rxcp);
  
 -      /* vlanf could be wrongly set in some cards. ignore if vtm is not set */
 -      if ((adapter->function_mode & 0x400) && !rxcp->vtm)
 -              rxcp->vlanf = 0;
 +      if (rxcp->vlanf) {
 +              /* vlanf could be wrongly set in some cards.
 +               * ignore if vtm is not set */
 +              if ((adapter->function_mode & 0x400) && !rxcp->vtm)
 +                      rxcp->vlanf = 0;
  
 -      if (!lancer_chip(adapter))
 -              rxcp->vlan_tag = swab16(rxcp->vlan_tag);
 +              if (!lancer_chip(adapter))
-                       rxcp->vid = swab16(rxcp->vid);
++                      rxcp->vlan_tag = swab16(rxcp->vlan_tag);
  
-               if ((adapter->pvid == rxcp->vid) &&
-                       !adapter->vlan_tag[rxcp->vid])
 -      if (((adapter->pvid & VLAN_VID_MASK) ==
 -              (rxcp->vlan_tag & VLAN_VID_MASK)) &&
 -              !adapter->vlan_tag[rxcp->vlan_tag])
 -              rxcp->vlanf = 0;
++              if (((adapter->pvid & VLAN_VID_MASK) ==
++                   (rxcp->vlan_tag & VLAN_VID_MASK)) &&
++                  !adapter->vlan_tag[rxcp->vlan_tag])
 +                      rxcp->vlanf = 0;
 +      }
  
        /* As the compl has been parsed, reset it; we wont touch it again */
        compl->dw[offsetof(struct amap_eth_rx_compl_v1, valid) / 32] = 0;
@@@ -63,20 -51,24 +63,25 @@@ static int ehea_get_settings(struct net
                cmd->duplex = port->full_duplex == 1 ?
                                                     DUPLEX_FULL : DUPLEX_HALF;
        } else {
 -              cmd->speed = -1;
 +              speed = ~0;
                cmd->duplex = -1;
        }
 +      ethtool_cmd_speed_set(cmd, speed);
  
-       cmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_1000baseT_Full
-                      | SUPPORTED_100baseT_Full |  SUPPORTED_100baseT_Half
-                      | SUPPORTED_10baseT_Full | SUPPORTED_10baseT_Half
-                      | SUPPORTED_Autoneg | SUPPORTED_FIBRE);
-       cmd->advertising = (ADVERTISED_10000baseT_Full | ADVERTISED_Autoneg
-                        | ADVERTISED_FIBRE);
+       if (cmd->speed == SPEED_10000) {
+               cmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_FIBRE);
+               cmd->advertising = (ADVERTISED_10000baseT_Full | ADVERTISED_FIBRE);
+               cmd->port = PORT_FIBRE;
+       } else {
+               cmd->supported = (SUPPORTED_1000baseT_Full | SUPPORTED_100baseT_Full
+                              | SUPPORTED_100baseT_Half | SUPPORTED_10baseT_Full
+                              | SUPPORTED_10baseT_Half | SUPPORTED_Autoneg
+                              | SUPPORTED_TP);
+               cmd->advertising = (ADVERTISED_1000baseT_Full | ADVERTISED_Autoneg
+                                | ADVERTISED_TP);
+               cmd->port = PORT_TP;
+       }
  
-       cmd->port = PORT_FIBRE;
        cmd->autoneg = port->autoneg == 1 ? AUTONEG_ENABLE : AUTONEG_DISABLE;
  
        return 0;
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -119,11 -124,13 +119,14 @@@ void unregister_vlan_dev(struct net_dev
  
        grp->nr_vlans--;
  
+       if (vlan->flags & VLAN_FLAG_GVRP)
+               vlan_gvrp_request_leave(dev);
        vlan_group_set_device(grp, vlan_id, NULL);
 -      if (!grp->killall)
 -              synchronize_net();
 -
 +      /* Because unregister_netdevice_queue() makes sure at least one rcu
 +       * grace period is respected before device freeing,
 +       * we dont need to call synchronize_net() here.
 +       */
        unregister_netdevice_queue(dev, head);
  
        /* If the group is now empty, kill off the group. */
Simple merge
diff --cc net/core/dev.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge