[dpdk-dev] lib/ip_frag: fix IP reassembly not working issue

Message ID 1478452574-127074-1-git-send-email-wenzhuo.lu@intel.com (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
tmonjalo/checkpatch success coding style OK

Commit Message

Wenzhuo Lu Nov. 6, 2016, 5:16 p.m. UTC
  After changing pkt[0] to pkt[], the example IP reassembly is not
working.
It's weird because this change is fine. There should be no
difference between them.
As a workaround, revert this change.

Fixes: 347a1e037fd3 (lib: use C99 syntax for zero-size arrays)

Reported-by: Huilong Xu <huilongx.xu@intel.com>
Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
---
 lib/librte_ip_frag/rte_ip_frag.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Thomas Monjalon Nov. 7, 2016, 8:27 p.m. UTC | #1
2016-11-06 12:16, Wenzhuo Lu:
> After changing pkt[0] to pkt[], the example IP reassembly is not
> working.
> It's weird because this change is fine. There should be no
> difference between them.
> As a workaround, revert this change.
> 
> Fixes: 347a1e037fd3 (lib: use C99 syntax for zero-size arrays)
> 
> Reported-by: Huilong Xu <huilongx.xu@intel.com>
> Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>

Applied, thanks

Please keep us informed if you understand the issue.
  
Wenzhuo Lu Nov. 8, 2016, 12:55 a.m. UTC | #2
Hi Thomas,


> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Tuesday, November 8, 2016 4:28 AM
> To: Lu, Wenzhuo
> Cc: dev@dpdk.org; adrien.mazarguil@6wind.com; Ananyev, Konstantin
> Subject: Re: [dpdk-dev] [PATCH] lib/ip_frag: fix IP reassembly not working issue
> 
> 2016-11-06 12:16, Wenzhuo Lu:
> > After changing pkt[0] to pkt[], the example IP reassembly is not
> > working.
> > It's weird because this change is fine. There should be no difference
> > between them.
> > As a workaround, revert this change.
> >
> > Fixes: 347a1e037fd3 (lib: use C99 syntax for zero-size arrays)
> >
> > Reported-by: Huilong Xu <huilongx.xu@intel.com>
> > Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
> 
> Applied, thanks
> 
> Please keep us informed if you understand the issue.
Just FYI,
It's so weird, I have to work around it first.
1, I don't think there's any wrong with the code.
2, I cannot reproduce this issue on my machine, but Huilong can reproduce it on different machines. As Adrien said, it may be a compile issue. I guess it's a compiler issue. Maybe gcc 4.8.5 has its own problem. (I'm using gcc 4.8.3 which is fine.)
  

Patch

diff --git a/lib/librte_ip_frag/rte_ip_frag.h b/lib/librte_ip_frag/rte_ip_frag.h
index 69596ab..6708906 100644
--- a/lib/librte_ip_frag/rte_ip_frag.h
+++ b/lib/librte_ip_frag/rte_ip_frag.h
@@ -124,7 +124,7 @@  struct rte_ip_frag_tbl {
 	struct ip_frag_pkt *last;         /**< last used entry. */
 	struct ip_pkt_list lru;           /**< LRU list for table entries. */
 	struct ip_frag_tbl_stat stat;     /**< statistics counters. */
-	struct ip_frag_pkt pkt[];         /**< hash table. */
+	__extension__ struct ip_frag_pkt pkt[0]; /**< hash table. */
 };
 
 /** IPv6 fragment extension header */