All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olivier MATZ <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
To: "Ananyev,
	Konstantin"
	<konstantin.ananyev-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	"Zhang,
	Helin" <helin.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	"dev-VfR2kkLFssw@public.gmane.org"
	<dev-VfR2kkLFssw@public.gmane.org>
Subject: Re: [PATCH] i40e: Use one bit flag for all hardware detected RX packet errors
Date: Wed, 26 Nov 2014 15:12:09 +0100	[thread overview]
Message-ID: <5475DFB9.7060609@6wind.com> (raw)
In-Reply-To: <2601191342CEEE43887BDE71AB977258213BA8CB-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>

Hi Konstantin,

On 11/26/2014 02:38 PM, Ananyev, Konstantin wrote:
>>> Probably I didn't explain myself clear enough, sorry.
>>> I didn't suggest to get rid of setting bits that indicate L3/L4 checksum errors:
>>> PKT_RX_IP_CKSUM_BAD, PKT_RX_L4_CKSUM_BAD, PKT_RX_EIP_CKSUM_BAD.
>>> I think these flags should be set as before.
>>>
>>> I was talking only about collapsing only these 4 RX error flags into one:
>>>
>>> #define PKT_RX_OVERSIZE      (0ULL << 0)  /**< Num of desc of an RX pkt oversize. */
>>> #define PKT_RX_HBUF_OVERFLOW (0ULL << 0)  /**< Header buffer overflow. */
>>> #define PKT_RX_RECIP_ERR     (0ULL << 0)  /**< Hardware processing error. */
>>> #define PKT_RX_MAC_ERR       (0ULL << 0)  /**< MAC error. */
>>>
>>>   From my point of view the difference of these 2 groups are:
>>> First - HW was able to receive whole packet without a problem, but L3/L4 checksum check failed.
>>>
>>> Second - HW was not able to receive whole packet properly by whatever reason.
>>>   From upper layer SW perspective - there it probably makes little difference, what caused it,
>>> as most likely SW has to throw away erroneous packet.
>>> And for debugging purposes, we can add PMD_LOG(DEBUG, ...) that would print what exactly HW error happened.
>>
>> I agree with Konstantin that there are 2 different cases:
>>
>> a) the packet is properly received by the hardware, but has a bad
>>      checksum (or another protocol error, for instance an invalid ip len,
>>      a ip_version == 8 :))
>>
>>      in this case, it is useful to the application to have the mbuf with
>>      the data + an error flag. Then using a tcpdump-like tool could help
>>      to debug what is the cause of the error and what equipment generates
>>      a bad packet.
>>
>> b) the packet is not properly received by the hardware. In this case
>>      the data is invalid in the mbuf and not useable by the application.
>>      I suggest to only have a stats counter in this case, as receiving the
>>      mbuf is cpu time consuming and the only thing the application can do
>>      is to drop the packet.
>
> So for b) you suggest to drop the packet straight in PMD RX function?
> Something like:
> if (unlikely(error_bits & ...)) {
>          PMD_LOG(DEBUG, ...);
>           rte_pktmbuf_free(mb);
> }
> ?

Yes

> That's probably a bit too radical.
> Yes, mbuf doesn't contain the whole packet, but it may contain at least part of it, let say in case of 'packet oversize'.
> So for debugging purposes the user may still like to examine the mbuf contents.

As soon as there is some exploitable data in the mbuf, I agree it can
be transfered to the application (ex: bad header, bad len, bad
checksum...).

But if the hardware is not able to provide any exploitable data, it
looks a bit overkill to give an mbuf with an error flag.

But grouping the flags as you suggest is already a good clean-up to me,
I don't want to be more catholic than the Pope ;)

Regards,
Olivier

  parent reply	other threads:[~2014-11-26 14:12 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-26  6:07 [PATCH] i40e: Use one bit flag for all hardware detected RX packet errors Helin Zhang
     [not found] ` <1416982032-28519-1-git-send-email-helin.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-26 10:49   ` Ananyev, Konstantin
     [not found]     ` <2601191342CEEE43887BDE71AB977258213BA7CA-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-26 11:22       ` Olivier MATZ
     [not found]         ` <5475B7EE.4020400-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-11-26 13:38           ` Ananyev, Konstantin
     [not found]             ` <2601191342CEEE43887BDE71AB977258213BA8CB-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-26 14:12               ` Olivier MATZ [this message]
     [not found]                 ` <5475DFB9.7060609-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-11-28  8:07                   ` Zhang, Helin
     [not found]                     ` <F35DEAC7BCE34641BA9FAC6BCA4A12E70A7CC692-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-28  8:47                       ` Olivier MATZ
     [not found]                         ` <547836A9.1010008-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-12-01  1:57                           ` Zhang, Helin
     [not found]                             ` <F35DEAC7BCE34641BA9FAC6BCA4A12E70A7CCD73-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-01  9:58                               ` Olivier MATZ
     [not found]                                 ` <547C3BC3.9050505-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-12-02  7:25                                   ` Zhang, Helin
2014-12-05  1:46   ` [PATCH v2 0/2] fix of enabling all newly added error flags Helin Zhang
     [not found]     ` <1417743988-15604-1-git-send-email-helin.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-05  1:46       ` [PATCH v2 1/2] i40e: remove checking rxd flag which is not public Helin Zhang
2014-12-05  1:46       ` [PATCH v2 2/2] mbuf: assign valid bit values for some RX and TX flags Helin Zhang
     [not found]         ` <1417743988-15604-3-git-send-email-helin.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-05 10:49           ` Ananyev, Konstantin
     [not found]             ` <2601191342CEEE43887BDE71AB977258213BCE0C-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-06  0:42               ` Zhang, Helin
2014-12-06  1:07             ` Zhang, Helin
     [not found]               ` <F35DEAC7BCE34641BA9FAC6BCA4A12E70A7CF066-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-08 10:55                 ` Ananyev, Konstantin
     [not found]                   ` <2601191342CEEE43887BDE71AB977258213BDAC4-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-09  2:29                     ` Zhang, Helin
2014-12-06  1:33       ` [PATCH v3] mbuf: fix of enabling all newly added RX error flags Helin Zhang
     [not found]         ` <1417829617-7185-1-git-send-email-helin.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-08 10:44           ` Ananyev, Konstantin
     [not found]             ` <2601191342CEEE43887BDE71AB977258213BD9ED-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-09  2:23               ` Zhang, Helin
2014-12-08 10:50           ` Thomas Monjalon
2014-12-09  2:14             ` Zhang, Helin
     [not found]               ` <F35DEAC7BCE34641BA9FAC6BCA4A12E70A7CFA5B-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-09  6:22                 ` Thomas Monjalon
2014-12-10  8:55           ` [PATCH v4] " Helin Zhang
     [not found]             ` <1418201706-32162-1-git-send-email-helin.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-10  9:35               ` Thomas Monjalon
2014-12-10 13:50                 ` Zhang, Helin
     [not found]                   ` <F35DEAC7BCE34641BA9FAC6BCA4A12E70A7D086F-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-10 15:26                     ` Thomas Monjalon
2014-12-10 22:29                       ` Zhang, Helin
     [not found]                         ` <F35DEAC7BCE34641BA9FAC6BCA4A12E70A7D0A78-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 11:16                           ` Olivier MATZ
     [not found]                             ` <54897CF6.2020509-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-12-12  1:27                               ` Zhang, Helin

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=5475DFB9.7060609@6wind.com \
    --to=olivier.matz-pdr9zngts4eavxtiumwx3w@public.gmane.org \
    --cc=dev-VfR2kkLFssw@public.gmane.org \
    --cc=helin.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=konstantin.ananyev-ral2JQCrhuEAvxtiuMwx3w@public.gmane.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.