DPDK patches and discussions
 help / color / mirror / Atom feed
From: Adrien Mazarguil <adrien.mazarguil@6wind.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH 3/3] mlx4: do not expose broadcast address in MAC list
Date: Mon,  5 Oct 2015 19:50:08 +0200	[thread overview]
Message-ID: <1444067408-29329-3-git-send-email-adrien.mazarguil@6wind.com> (raw)
In-Reply-To: <1444067408-29329-1-git-send-email-adrien.mazarguil@6wind.com>

From: Didier Pallard <didier.pallard@6wind.com>

Use the last array entry to store the broadcast address and keep it hidden
by not reporting the entire array size.

This is done to prevent DPDK applications from attempting to modify or
remove it.

Signed-off-by: Didier Pallard <didier.pallard@6wind.com>
---
 drivers/net/mlx4/mlx4.c | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
index 9614471..af31573 100644
--- a/drivers/net/mlx4/mlx4.c
+++ b/drivers/net/mlx4/mlx4.c
@@ -3836,7 +3836,8 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
 		max = 65535;
 	info->max_rx_queues = max;
 	info->max_tx_queues = max;
-	info->max_mac_addrs = elemof(priv->mac);
+	/* Last array entry is reserved for broadcast. */
+	info->max_mac_addrs = (elemof(priv->mac) - 1);
 	info->rx_offload_capa =
 		(priv->hw_csum ?
 		 (DEV_RX_OFFLOAD_IPV4_CKSUM |
@@ -3969,11 +3970,8 @@ mlx4_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index)
 	priv_lock(priv);
 	DEBUG("%p: removing MAC address from index %" PRIu32,
 	      (void *)dev, index);
-	if (index >= MLX4_MAX_MAC_ADDRESSES)
-		goto end;
-	/* Refuse to remove the broadcast address, this one is special. */
-	if (!memcmp(priv->mac[index].addr_bytes, "\xff\xff\xff\xff\xff\xff",
-		    ETHER_ADDR_LEN))
+	/* Last array entry is reserved for broadcast. */
+	if (index >= (elemof(priv->mac) - 1))
 		goto end;
 	priv_mac_addr_del(priv, index);
 end:
@@ -4002,11 +4000,8 @@ mlx4_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac_addr,
 	priv_lock(priv);
 	DEBUG("%p: adding MAC address at index %" PRIu32,
 	      (void *)dev, index);
-	if (index >= MLX4_MAX_MAC_ADDRESSES)
-		goto end;
-	/* Refuse to add the broadcast address, this one is special. */
-	if (!memcmp(mac_addr->addr_bytes, "\xff\xff\xff\xff\xff\xff",
-		    ETHER_ADDR_LEN))
+	/* Last array entry is reserved for broadcast. */
+	if (index >= (elemof(priv->mac) - 1))
 		goto end;
 	priv_mac_addr_add(priv, index,
 			  (const uint8_t (*)[ETHER_ADDR_LEN])
@@ -4943,7 +4938,7 @@ mlx4_pci_devinit(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
 		claim_zero(priv_mac_addr_add(priv, 0,
 					     (const uint8_t (*)[ETHER_ADDR_LEN])
 					     mac.addr_bytes));
-		claim_zero(priv_mac_addr_add(priv, 1,
+		claim_zero(priv_mac_addr_add(priv, (elemof(priv->mac) - 1),
 					     &(const uint8_t [ETHER_ADDR_LEN])
 					     { "\xff\xff\xff\xff\xff\xff" }));
 #ifndef NDEBUG
-- 
2.1.0

  parent reply	other threads:[~2015-10-05 17:50 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-05 17:50 [dpdk-dev] [PATCH 1/3] mlx4: fix missing ol_flags in scattered RX function Adrien Mazarguil
2015-10-05 17:50 ` [dpdk-dev] [PATCH 2/3] mlx4: fill if_index field in dev_info structure Adrien Mazarguil
2015-10-05 17:50 ` Adrien Mazarguil [this message]
2015-10-20 19:59 ` [dpdk-dev] [PATCH 1/3] mlx4: fix missing ol_flags in scattered RX function Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1444067408-29329-3-git-send-email-adrien.mazarguil@6wind.com \
    --to=adrien.mazarguil@6wind.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).