--- /dev/null
+--- compat-rdma.org/drivers/net/ethernet/chelsio/cxgb4/sge.c 2014-08-28 13:19:02.000000000 -0500
++++ compat-rdma/drivers/net/ethernet/chelsio/cxgb4//sge.c 2014-08-28 13:19:43.000000000 -0500
+@@ -1756,7 +1756,7 @@ int t4_ethrx_handler(struct sge_rspq *q,
+ struct sge *s = &q->adap->sge;
+ int cpl_trace_pkt = is_t4(q->adap->params.chip) ?
+ CPL_TRACE_PKT : CPL_TRACE_PKT_T5;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 1, 0)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)
+ struct port_info *pi;
+ #endif
+
+@@ -1783,7 +1783,7 @@ int t4_ethrx_handler(struct sge_rspq *q,
+ skb_record_rx_queue(skb, q->idx);
+ if (skb->dev->features & NETIF_F_RXHASH)
+ skb->rxhash = (__force u32)pkt->rsshdr.hash_val;
+-#if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 1, 0)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)
+ pi = netdev_priv(skb->dev);
+ #endif
+
+@@ -1808,16 +1808,22 @@ int t4_ethrx_handler(struct sge_rspq *q,
+ skb_checksum_none_assert(skb);
+
+ if (unlikely(pkt->vlan_ex)) {
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
+ __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), ntohs(pkt->vlan));
+ #else
++ __vlan_hwaccel_put_tag(skb, ntohs(pkt->vlan));
++#endif
++ rxq->stats.vlan_ex++;
++#else
+ struct vlan_group *grp = pi->vlan_grp;
+ if (likely(grp))
+ vlan_hwaccel_receive_skb(skb, grp, ntohs(pkt->vlan));
+ else
+ dev_kfree_skb_any(skb);
+-#endif
+ rxq->stats.vlan_ex++;
++ return 0;
++#endif
+ }
+ netif_receive_skb(skb);
+ return 0;
--- /dev/null
+--- compat-rdma/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c 2014-08-28 15:32:56.316456204 -0500
++++ compat-rdma.new/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c 2014-08-28 15:28:29.061456300 -0500
+@@ -4693,6 +4693,18 @@ static int cxgb_set_mac_addr(struct net_
+ return 0;
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)
++static void vlan_rx_register(struct net_device *dev, struct vlan_group *grp)
++{
++ struct port_info *pi = netdev_priv(dev);
++ struct adapter *adapter = pi->adapter;
++
++ pi->vlan_grp = grp;
++ t4_set_rxmode(adapter, adapter->mbox, pi->viid, -1, -1, -1, -1,
++ grp != NULL, 0);
++}
++#endif
++
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+ static void cxgb_netpoll(struct net_device *dev)
+ {
+@@ -4730,6 +4742,9 @@ static const struct net_device_ops cxgb4
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+ .ndo_poll_controller = cxgb_netpoll,
+ #endif
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)
++ .ndo_vlan_rx_register = vlan_rx_register,
++#endif
+ };
+
+ void t4_fatal_err(struct adapter *adap)