diff options
author | Jiri Pirko <jpirko@redhat.com> | 2011-07-20 00:54:16 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-07-21 16:47:54 -0400 |
commit | 87737663d5d7668c8553c572a5a7c26e86c5842b (patch) | |
tree | 9a8f3d1c26ace7787364b8a681f7b4c4eed97775 /drivers/net/cxgb4vf/sge.c | |
parent | 133b08513a99d44d9ed916bb83e46343f6ad2855 (diff) |
cxgb4vf: do vlan cleanup
- unify vlan and nonvlan rx path
- kill pi->vlan_grp and cxgb4vf_vlan_rx_register
- allow to turn on/off rx/tx vlan accel via ethtool (set_features)
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/cxgb4vf/sge.c')
-rw-r--r-- | drivers/net/cxgb4vf/sge.c | 34 |
1 files changed, 7 insertions, 27 deletions
diff --git a/drivers/net/cxgb4vf/sge.c b/drivers/net/cxgb4vf/sge.c index 5fd75fdaa631..cffb328c46c3 100644 --- a/drivers/net/cxgb4vf/sge.c +++ b/drivers/net/cxgb4vf/sge.c | |||
@@ -1491,20 +1491,10 @@ static void do_gro(struct sge_eth_rxq *rxq, const struct pkt_gl *gl, | |||
1491 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1491 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
1492 | skb_record_rx_queue(skb, rxq->rspq.idx); | 1492 | skb_record_rx_queue(skb, rxq->rspq.idx); |
1493 | 1493 | ||
1494 | if (unlikely(pkt->vlan_ex)) { | 1494 | if (pkt->vlan_ex) |
1495 | struct port_info *pi = netdev_priv(rxq->rspq.netdev); | 1495 | __vlan_hwaccel_put_tag(skb, be16_to_cpu(pkt->vlan)); |
1496 | struct vlan_group *grp = pi->vlan_grp; | ||
1497 | |||
1498 | rxq->stats.vlan_ex++; | ||
1499 | if (likely(grp)) { | ||
1500 | ret = vlan_gro_frags(&rxq->rspq.napi, grp, | ||
1501 | be16_to_cpu(pkt->vlan)); | ||
1502 | goto stats; | ||
1503 | } | ||
1504 | } | ||
1505 | ret = napi_gro_frags(&rxq->rspq.napi); | 1496 | ret = napi_gro_frags(&rxq->rspq.napi); |
1506 | 1497 | ||
1507 | stats: | ||
1508 | if (ret == GRO_HELD) | 1498 | if (ret == GRO_HELD) |
1509 | rxq->stats.lro_pkts++; | 1499 | rxq->stats.lro_pkts++; |
1510 | else if (ret == GRO_MERGED || ret == GRO_MERGED_FREE) | 1500 | else if (ret == GRO_MERGED || ret == GRO_MERGED_FREE) |
@@ -1525,7 +1515,6 @@ int t4vf_ethrx_handler(struct sge_rspq *rspq, const __be64 *rsp, | |||
1525 | const struct pkt_gl *gl) | 1515 | const struct pkt_gl *gl) |
1526 | { | 1516 | { |
1527 | struct sk_buff *skb; | 1517 | struct sk_buff *skb; |
1528 | struct port_info *pi; | ||
1529 | const struct cpl_rx_pkt *pkt = (void *)&rsp[1]; | 1518 | const struct cpl_rx_pkt *pkt = (void *)&rsp[1]; |
1530 | bool csum_ok = pkt->csum_calc && !pkt->err_vec; | 1519 | bool csum_ok = pkt->csum_calc && !pkt->err_vec; |
1531 | struct sge_eth_rxq *rxq = container_of(rspq, struct sge_eth_rxq, rspq); | 1520 | struct sge_eth_rxq *rxq = container_of(rspq, struct sge_eth_rxq, rspq); |
@@ -1553,7 +1542,6 @@ int t4vf_ethrx_handler(struct sge_rspq *rspq, const __be64 *rsp, | |||
1553 | __skb_pull(skb, PKTSHIFT); | 1542 | __skb_pull(skb, PKTSHIFT); |
1554 | skb->protocol = eth_type_trans(skb, rspq->netdev); | 1543 | skb->protocol = eth_type_trans(skb, rspq->netdev); |
1555 | skb_record_rx_queue(skb, rspq->idx); | 1544 | skb_record_rx_queue(skb, rspq->idx); |
1556 | pi = netdev_priv(skb->dev); | ||
1557 | rxq->stats.pkts++; | 1545 | rxq->stats.pkts++; |
1558 | 1546 | ||
1559 | if (csum_ok && (rspq->netdev->features & NETIF_F_RXCSUM) && | 1547 | if (csum_ok && (rspq->netdev->features & NETIF_F_RXCSUM) && |
@@ -1569,20 +1557,12 @@ int t4vf_ethrx_handler(struct sge_rspq *rspq, const __be64 *rsp, | |||
1569 | } else | 1557 | } else |
1570 | skb_checksum_none_assert(skb); | 1558 | skb_checksum_none_assert(skb); |
1571 | 1559 | ||
1572 | /* | 1560 | if (pkt->vlan_ex) { |
1573 | * Deliver the packet to the stack. | ||
1574 | */ | ||
1575 | if (unlikely(pkt->vlan_ex)) { | ||
1576 | struct vlan_group *grp = pi->vlan_grp; | ||
1577 | |||
1578 | rxq->stats.vlan_ex++; | 1561 | rxq->stats.vlan_ex++; |
1579 | if (likely(grp)) | 1562 | __vlan_hwaccel_put_tag(skb, be16_to_cpu(pkt->vlan)); |
1580 | vlan_hwaccel_receive_skb(skb, grp, | 1563 | } |
1581 | be16_to_cpu(pkt->vlan)); | 1564 | |
1582 | else | 1565 | netif_receive_skb(skb); |
1583 | dev_kfree_skb_any(skb); | ||
1584 | } else | ||
1585 | netif_receive_skb(skb); | ||
1586 | 1566 | ||
1587 | return 0; | 1567 | return 0; |
1588 | } | 1568 | } |