From: "Kok, Auke" <auke-jan.h.kok@intel.com>
To: Joonwoo Park <joonwpark81@gmail.com>
Cc: auke-jan.h.kok@intel.com, kaber@trash.net, jeff@garzik.org,
netdev@vger.kernel.org
Subject: Re: [PATCH 4/5] [E1000]: [VLAN] Turn off the HW vlan filter if promisc
Date: Thu, 17 Apr 2008 14:25:18 -0700 [thread overview]
Message-ID: <4807C03E.7060705@intel.com> (raw)
In-Reply-To: <20080411135851.GD8137@tp64>
Joonwoo Park wrote:
> If the netdev goes into mode promiscuous, receive all of the packets on
> the wire without HW filtering, those packets will be processed as type
> PACKET_OTHERHOST.
>
> Signed-off-by: Joonwoo Park <joonwpark81@gmail.com>
this is a repost afaics with the same idea as previous.
I however can't make sense out of what the consensus was in the discussion that
previously took place.
My techical objection against this patch is that it removes flexibility from the
admin to display only the particular vlan traffic. With this patch there is no
longer a way to sniff just one vlan and forget about the other traffic.
My logistical objection against this patch is that it adjusts only one/two drivers
to do something, but I don't see anything consistently in all the drivers at all
that suggest that this is the right thing to do at all. Either a mandate or
something suggesting that all drivers that do vlan filtering *should* do something
specific in promiscuous mode.
Either it should be clear that all drivers should do the same thing (and you
should then adjust all the drivers and not just the one or two that you use, and
preferably in the stack if possible) or we leave this as is for all the drivers.
I think we should prevent wild growth like e.g. module parameters like
`vlan_tag_strip` in s2io (NO_STRIP_IN_PROMISC)... !
so I don't think this is a good idea.
Auke
> ---
> drivers/net/e1000/e1000_main.c | 19 ++++++++++++++-----
> 1 files changed, 14 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
> index 0991648..61965c2 100644
> --- a/drivers/net/e1000/e1000_main.c
> +++ b/drivers/net/e1000/e1000_main.c
> @@ -2495,7 +2495,7 @@ e1000_set_rx_mode(struct net_device *netdev)
> struct e1000_hw *hw = &adapter->hw;
> struct dev_addr_list *uc_ptr;
> struct dev_addr_list *mc_ptr;
> - uint32_t rctl;
> + uint32_t rctl, ctrl;
> uint32_t hash_value;
> int i, rar_entries = E1000_RAR_ENTRIES;
> int mta_reg_count = (hw->mac_type == e1000_ich8lan) ?
> @@ -2512,13 +2512,19 @@ e1000_set_rx_mode(struct net_device *netdev)
> /* Check for Promiscuous and All Multicast modes */
>
> rctl = E1000_READ_REG(hw, RCTL);
> + ctrl = E1000_READ_REG(hw, CTRL);
>
> if (netdev->flags & IFF_PROMISC) {
> rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE);
> - } else if (netdev->flags & IFF_ALLMULTI) {
> - rctl |= E1000_RCTL_MPE;
> + rctl &= ~E1000_RCTL_VFE;
> } else {
> - rctl &= ~E1000_RCTL_MPE;
> + if (ctrl & E1000_CTRL_VME &&
> + adapter->hw.mac_type != e1000_ich8lan)
> + rctl |= E1000_RCTL_VFE;
> + if (netdev->flags & IFF_ALLMULTI)
> + rctl |= E1000_RCTL_MPE;
> + else
> + rctl &= ~E1000_RCTL_MPE;
> }
>
> uc_ptr = NULL;
> @@ -5013,7 +5019,10 @@ e1000_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp)
> if (adapter->hw.mac_type != e1000_ich8lan) {
> /* enable VLAN receive filtering */
> rctl = E1000_READ_REG(&adapter->hw, RCTL);
> - rctl |= E1000_RCTL_VFE;
> + if (netdev->flags & IFF_PROMISC)
> + rctl &= ~E1000_RCTL_VFE;
> + else
> + rctl |= E1000_RCTL_VFE;
> rctl &= ~E1000_RCTL_CFIEN;
> E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
> e1000_update_mng_vlan(adapter);
next prev parent reply other threads:[~2008-04-17 21:26 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-11 13:58 [PATCH 4/5] [E1000]: [VLAN] Turn off the HW vlan filter if promisc Joonwoo Park
2008-04-17 21:25 ` Kok, Auke [this message]
2008-04-18 1:54 ` Joonwoo Park
2008-04-18 2:08 ` Joonwoo Park
2008-04-18 17:48 ` Kok, Auke
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=4807C03E.7060705@intel.com \
--to=auke-jan.h.kok@intel.com \
--cc=jeff@garzik.org \
--cc=joonwpark81@gmail.com \
--cc=kaber@trash.net \
--cc=netdev@vger.kernel.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).