From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <3chas3@gmail.com> Received: from mail-qg0-f42.google.com (mail-qg0-f42.google.com [209.85.192.42]) by dpdk.org (Postfix) with ESMTP id 9490E5AA0 for ; Wed, 18 Nov 2015 21:58:48 +0100 (CET) Received: by qgad10 with SMTP id d10so38096586qga.3 for ; Wed, 18 Nov 2015 12:58:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=cFP9OD2NT356nPWtoqut61MqpdWDGsteHKDYPvKE2F4=; b=gEbPEBt/fYR+/BuRJAItNiOQ6L0/As4wMDABNa6XVRKmLCuBWVgL79PPt3hogQRj3B Iq/hFQcrAUs841i1oTX1xC6+p1N9vUfzKUS9qCis/0SVZty9wNxZWzuXofusvbG9dhhZ 64wdwohLmZPK2EEo+KTFafKGOEX/+8JtN84zNVr6LnKa8RHOqGFBheqct/xlaL0MEmiD QFFZmJZAPph3q/gkK3+illf+yq9L0DTPEmYmlh7m/IhO4wPm6slpl5/XsqV/XjQ1vctv avRsQgLyIr5g4wPRW2nx3+CqlRasClbVNACajVXTnxfzMNYnoG3iP1picB23XWSTbvnk 3zWQ== X-Received: by 10.140.162.214 with SMTP id i205mr3949205qhi.32.1447880328040; Wed, 18 Nov 2015 12:58:48 -0800 (PST) Received: from foobar.home (pool-71-163-182-126.washdc.fios.verizon.net. [71.163.182.126]) by smtp.gmail.com with ESMTPSA id 74sm1432318qha.41.2015.11.18.12.58.47 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Nov 2015 12:58:47 -0800 (PST) From: Chas Williams <3chas3@gmail.com> To: dev@dpdk.org Date: Wed, 18 Nov 2015 15:58:41 -0500 Message-Id: <1447880321-16187-1-git-send-email-3chas3@gmail.com> X-Mailer: git-send-email 2.1.0 Subject: [dpdk-dev] [PATCH] bnx2x: set Ethernet address type during transmit for VF's X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Nov 2015 20:58:48 -0000 The original was always setting unicast. While here, clean up some other references that also point into the Ethernet header. Signed-off-by: Chas Williams <3chas3@gmail.com> --- drivers/net/bnx2x/bnx2x.c | 23 +++++++++++++++-------- drivers/net/bnx2x/ecore_hsi.h | 5 +++-- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c index 76444eb..294711f 100644 --- a/drivers/net/bnx2x/bnx2x.c +++ b/drivers/net/bnx2x/bnx2x.c @@ -2177,25 +2177,32 @@ int bnx2x_tx_encap(struct bnx2x_tx_queue *txq, struct rte_mbuf **m_head, int m_p bd_prod = NEXT_TX_BD(bd_prod); if (IS_VF(sc)) { struct eth_tx_parse_bd_e2 *tx_parse_bd; - uint8_t *data = rte_pktmbuf_mtod(m0, uint8_t *); + const struct ether_hdr *eh = rte_pktmbuf_mtod(m0, struct ether_hdr *); + uint8_t mac_type = UNICAST_ADDRESS; tx_parse_bd = &txq->tx_ring[TX_BD(bd_prod, txq)].parse_bd_e2; + if (is_multicast_ether_addr(&eh->d_addr)) { + if (is_broadcast_ether_addr(&eh->d_addr)) + mac_type = BROADCAST_ADDRESS; + else + mac_type = MULTICAST_ADDRESS; + } tx_parse_bd->parsing_data = - (1 << ETH_TX_PARSE_BD_E2_ETH_ADDR_TYPE_SHIFT); + (mac_type << ETH_TX_PARSE_BD_E2_ETH_ADDR_TYPE_SHIFT); rte_memcpy(&tx_parse_bd->data.mac_addr.dst_hi, - &data[0], 2); + &eh->d_addr.addr_bytes[0], 2); rte_memcpy(&tx_parse_bd->data.mac_addr.dst_mid, - &data[2], 2); + &eh->d_addr.addr_bytes[2], 2); rte_memcpy(&tx_parse_bd->data.mac_addr.dst_lo, - &data[4], 2); + &eh->d_addr.addr_bytes[4], 2); rte_memcpy(&tx_parse_bd->data.mac_addr.src_hi, - &data[6], 2); + &eh->s_addr.addr_bytes[0], 2); rte_memcpy(&tx_parse_bd->data.mac_addr.src_mid, - &data[8], 2); + &eh->s_addr.addr_bytes[2], 2); rte_memcpy(&tx_parse_bd->data.mac_addr.src_lo, - &data[10], 2); + &eh->s_addr.addr_bytes[4], 2); tx_parse_bd->data.mac_addr.dst_hi = rte_cpu_to_be_16(tx_parse_bd->data.mac_addr.dst_hi); diff --git a/drivers/net/bnx2x/ecore_hsi.h b/drivers/net/bnx2x/ecore_hsi.h index a4ed9b5..6c11c5a 100644 --- a/drivers/net/bnx2x/ecore_hsi.h +++ b/drivers/net/bnx2x/ecore_hsi.h @@ -4029,7 +4029,7 @@ struct double_regpair /* - * Ethernet address typesm used in ethernet tx BDs + * Ethernet address types used in ethernet tx BDs */ enum eth_addr_type { @@ -4037,7 +4037,8 @@ enum eth_addr_type UNICAST_ADDRESS, MULTICAST_ADDRESS, BROADCAST_ADDRESS, - MAX_ETH_ADDR_TYPE}; + MAX_ETH_ADDR_TYPE +}; /* -- 2.1.0