From: Ben Greear <greearb@candelatech.com>
To: "Michał Mirosław" <mirqus@gmail.com>
Cc: netdev@vger.kernel.org
Subject: Re: [RFC 2/2] e1000e: Support RXALL feature flag.
Date: Tue, 07 Feb 2012 16:19:01 -0800 [thread overview]
Message-ID: <4F31BF75.4090304@candelatech.com> (raw)
In-Reply-To: <CAHXqBFJ9=fXYuzZd0SM0hGsDxQee5UPzOwThbxNkks03VLFunw@mail.gmail.com>
On 02/07/2012 04:06 PM, Michał Mirosław wrote:
> 2012/2/8<greearb@candelatech.com>:
>> From: Ben Greear<greearb@candelatech.com>
>>
>> This allows the NIC to receive all frames available, including
>> those with bad FCS, un-matched vlans, ethernet control frames,
>> and more.
>>
>> Tested by sending frames with bad FCS.
>
> This should probably mark the bad packets somehow, so they are not
> passed up the stack and mixed with correct traffic.
Anything that does higher-level checksumming should figure out the
problem, if it's real (ie, if not *just* a corrupted FCS). Anything
that doesn't is open to abuse by something sending corrupted packets
with correct checksums anyway.
But, if you think it's really needed, I could add a flag to the skb and
then free the skb after the ptype_all logic in netif_receive_skb
has been called?
>> @@ -2996,6 +3001,25 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
>> ew32(PSRCTL, psrctl);
>> }
>>
>> + /* This is useful for sniffing bad packets. */
>> + if (adapter->netdev->features& NETIF_F_RXALL) {
>> + rctl |= (E1000_RCTL_SBP | /* Receive bad packets */
>> + E1000_RCTL_UPE | /* RX all Unicast Pkts */
>> + E1000_RCTL_MPE | /* RX all Mcast Pkts */
>> + E1000_RCTL_BAM | /* RX All Bcast Pkts Pkts */
>> + E1000_RCTL_PMCF); /* RX All MAC Ctrl Pkts */
>> +
>> + rctl&= ~(E1000_RCTL_VFE | /* Disable VLAN filter */
>> + E1000_RCTL_DPF | /* Allow filtered pause */
>> + E1000_RCTL_CFIEN); /* Dis VLAN CFIEN Filter */
>> + /* disable VLAN tagging/striping */
>> + /* SKIP This, it also affects transmit side and
>> + screws up VLANs --Ben. */
>> + /* ctrl = er32(CTRL); */
>> + /* ctrl&= ~E1000_CTRL_VME; */
>> + /* ew32(CTRL, ctrl); */
>> + }
>> +
> [...]
>
> Looks like it can be enabled independently of promisc mode: rx-all +
> no-promisc would receive only bad packets destined for this host.
Sure, that seems useful. I'll work on that for rev 2.
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
next prev parent reply other threads:[~2012-02-08 0:19 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-07 23:07 [RFC 1/2] net: Support RX-ALL feature flag greearb
2012-02-07 23:07 ` [RFC 2/2] e1000e: Support RXALL " greearb
2012-02-08 0:06 ` Michał Mirosław
2012-02-08 0:19 ` Ben Greear [this message]
2012-02-08 9:31 ` Michał Mirosław
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=4F31BF75.4090304@candelatech.com \
--to=greearb@candelatech.com \
--cc=mirqus@gmail.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.