> -----Original Message----- > From: Matthew Hall [mailto:mhall at mhcomputing.net] > Sent: Saturday, October 24, 2015 8:10 AM > To: Jastrzebski, MichalX K; Kobylinski, MichalX > Cc: dev at dpdk.org > Subject: Re: [dpdk-dev] [PATCH v1 0/3] lpm: increase number of next hops > for lpm (ipv4) > > On 10/23/15 9:20 AM, Matthew Hall wrote: > > On Fri, Oct 23, 2015 at 03:51:48PM +0200, Michal Jastrzebski wrote: > >> From: Michal Kobylinski <michalx.kobylinski at intel.com> > >> > >> The current DPDK implementation for LPM for IPv4 and IPv6 limits the > >> number of next hops to 256, as the next hop ID is an 8-bit long field. > >> Proposed extension increase number of next hops for IPv4 to 2^24 and > >> also allows 32-bits read/write operations. > >> > >> This patchset requires additional change to rte_table library to meet > >> ABI compatibility requirements. A v2 will be sent next week. > > > > I also have a patchset for this. > > > > I will send it out as well so we could compare. > > > > Matthew. > > Sorry about the delay; I only work on DPDK in personal time and not as > part of a job. My patchset is attached to this email. > > One possible advantage with my patchset, compared to others, is that the > space problem is fixed in both IPV4 and in IPV6, to prevent asymmetry > between these two standards, which is something I try to avoid as much > as humanly possible. > > This is because my application code is green-field, so I absolutely > don't want to put any ugly hacks or incompatibilities in this code if I > can possibly avoid it. > > Otherwise, I am not necessarily as expert about rte_lpm as some of the > full-time guys, but I think with four or five of us in the thread > hammering out patches we will be able to create something amazing > together and I am very very very very very happy about this. > > Matthew.
Hi Matthew, Thank You for a patch-set. I can't apply patch 0001-... , could You check it please? I have the following error: Checking patch lib/librte_lpm/rte_lpm.h... error: while searching for: #endif /** @internal bitmask with valid and ext_entry/valid_group fields set */ #define RTE_LPM_VALID_EXT_ENTRY_BITMASK 0x0300 /** Bitmask used to indicate successful lookup */ #define RTE_LPM_LOOKUP_SUCCESS 0x0100 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN /** @internal Tbl24 entry structure. */ struct rte_lpm_tbl24_entry { /* Stores Next hop or group index (i.e. gindex)into tbl8. */ union { uint8_t next_hop; uint8_t tbl8_gindex; }; /* Using single uint8_t to store 3 values. */ uint8_t valid :1; /**< Validation flag. */ uint8_t ext_entry :1; /**< External entry. */ uint8_t depth :6; /**< Rule depth. */ }; /** @internal Tbl8 entry structure. */ struct rte_lpm_tbl8_entry { uint8_t next_hop; /**< next hop. */ /* Using single uint8_t to store 3 values. */ uint8_t valid :1; /**< Validation flag. */ uint8_t valid_group :1; /**< Group validation flag. */ uint8_t depth :6; /**< Rule depth. */ }; #else struct rte_lpm_tbl24_entry { error: patch failed: lib/librte_lpm/rte_lpm.h:82 error: lib/librte_lpm/rte_lpm.h: patch does not apply Best regards, Michal