[yocto] [meta-fsl-ppc 06/16] ethtool: add FSL specific patch
From: Zhenhua Luo Signed-off-by: Zhenhua Luo --- ...ool-3.0-Enable-nfc-rx-flow-hashing-on-SPI.patch | 95 recipes-extended/ethtool/ethtool_3.0.bb|7 +- 2 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 recipes-extended/ethtool/ethtool-3.0/ethtool-3.0-Enable-nfc-rx-flow-hashing-on-SPI.patch diff --git a/recipes-extended/ethtool/ethtool-3.0/ethtool-3.0-Enable-nfc-rx-flow-hashing-on-SPI.patch b/recipes-extended/ethtool/ethtool-3.0/ethtool-3.0-Enable-nfc-rx-flow-hashing-on-SPI.patch new file mode 100644 index 000..216e3b4 --- /dev/null +++ b/recipes-extended/ethtool/ethtool-3.0/ethtool-3.0-Enable-nfc-rx-flow-hashing-on-SPI.patch @@ -0,0 +1,95 @@ +From patchwork Thu Aug 30 15:44:09 2012 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [SDK1.3] ethtool-3.0: Enable nfc rx-flow hashing on SPI +Date: Thu, 30 Aug 2012 21:44:09 - +From: Claudiu Manoil +X-Patchwork-Id: 25852 + +This makes it possible to enable hashing of AH or ESP flows +(IPSEC) based on their SPI (Security Parameter Index) field. + +Applies on top of (ethtool v3.0): +git.kernel.org/pub/scm/network/ethtool/ethtool.git +commit- +"a6fc65b Release version 3.0." + +Signed-off-by: Pankaj Chauhan +Signed-off-by: Claudiu Manoil +--- + ethtool-copy.h |1 + + ethtool.8.in |1 + + ethtool.c | 14 +++--- + 3 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/ethtool-copy.h b/ethtool-copy.h +index c7a18f7..cf20158 100644 +--- a/ethtool-copy.h b/ethtool-copy.h +@@ -888,6 +888,7 @@ enum ethtool_sfeatures_retval_bits { + #define RXH_IP_DST (1 << 5) + #define RXH_L4_B_0_1(1 << 6) /* src port in case of TCP/UDP/SCTP */ + #define RXH_L4_B_2_3(1 << 7) /* dst port in case of TCP/UDP/SCTP */ ++#define RXH_AH_ESP_SPI (1 << 8) /* SPI field, for AH/ESP flows */ + #define RXH_DISCARD (1 << 31) + + #define RX_CLS_FLOW_DISC0xULL +diff --git a/ethtool.8.in b/ethtool.8.in +index 7a0bd43..a640317 100644 +--- a/ethtool.8.in b/ethtool.8.in +@@ -601,6 +601,7 @@ s Hash on the IP source address of the rx packet. + d Hash on the IP destination address of the rx packet. + f Hash on bytes 0 and 1 of the Layer 4 header of the rx packet. + n Hash on bytes 2 and 3 of the Layer 4 header of the rx packet. ++S Hash on the SPI field (4 bytes), for AH/ESP packets. + r T{ + Discard all packets of this flow type. When this option is set, all + other options are ignored. +diff --git a/ethtool.c b/ethtool.c +index 943dfb7..bb9d592 100644 +--- a/ethtool.c b/ethtool.c +@@ -231,7 +231,7 @@ static struct option { + { "-N", "--config-nfc", MODE_SNFC, "Configure Rx network flow " + "classification options", + " [ rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|" +- "tcp6|udp6|ah6|esp6|sctp6 m|v|t|s|d|f|n|r... ]\n" }, ++ "tcp6|udp6|ah6|esp6|sctp6 m|v|t|s|d|f|n|S|r... ]\n" }, + { "-x", "--show-rxfh-indir", MODE_GRXFHINDIR, "Show Rx flow hash " + "indirection" }, + { "-X", "--set-rxfh-indir", MODE_SRXFHINDIR, "Set Rx flow hash indirection", +@@ -728,8 +728,10 @@ static int rxflow_str_to_type(const char *str) + flow_type = TCP_V4_FLOW; + else if (!strcmp(str, "udp4")) + flow_type = UDP_V4_FLOW; +- else if (!strcmp(str, "ah4") || !strcmp(str, "esp4")) +- flow_type = AH_ESP_V4_FLOW; ++ else if (!strcmp(str, "ah4")) ++ flow_type = AH_V4_FLOW; ++ else if (!strcmp(str, "esp4")) ++ flow_type = ESP_V4_FLOW; + else if (!strcmp(str, "sctp4")) + flow_type = SCTP_V4_FLOW; + else if (!strcmp(str, "tcp6")) +@@ -1538,6 +1540,9 @@ static int parse_rxfhashopts(char *optstr, u32 *data) + case 'n': + *data |= RXH_L4_B_2_3; + break; ++ case 'S': ++ *data |= RXH_AH_ESP_SPI; ++ break; + case 'r': + *data |= RXH_DISCARD; + break; +@@ -1577,6 +1582,9 @@ static char *unparse_rxfhashopts(u64 opts) + if (opts & RXH_L4_B_2_3) { + strcat(buf, "L4 bytes 2 & 3 [TCP/UDP dst port]\n"); + } ++ if (opts & RXH_AH_ESP_SPI) { ++ strcat(buf, "SPI field (AH/ESP header)\n"); ++ } + } else { + sprintf(buf, "None"); + } diff --git a/recipes-extended/ethtool/ethtool_3.0.bb b/recipes-extended/ethtool/ethtool_3.0.bb index cc4862d..ca73055 100644 --- a/recipes-extended/ethtool/ethtool_3.0.bb +++ b/recipes-extended/ethtool/ethtool_3.0.bb @@ -5,7 +5,12 @@ SECTION = "console/network" LICENSE = "GPLv2+" LIC_FILES_CHKSUM =
Re: [yocto] [meta-fsl-ppc 06/16] ethtool: add FSL specific patch
On Wed, Sep 12, 2012 at 2:06 AM, wrote: > From: Zhenhua Luo Another for-denzil patch. This patch needs to be rewritten for master as a patch added in oe-core or as a bbappends in our layer. -M > Signed-off-by: Zhenhua Luo > --- > ...ool-3.0-Enable-nfc-rx-flow-hashing-on-SPI.patch | 95 > > recipes-extended/ethtool/ethtool_3.0.bb|7 +- > 2 files changed, 101 insertions(+), 1 deletion(-) > create mode 100644 > recipes-extended/ethtool/ethtool-3.0/ethtool-3.0-Enable-nfc-rx-flow-hashing-on-SPI.patch > > diff --git > a/recipes-extended/ethtool/ethtool-3.0/ethtool-3.0-Enable-nfc-rx-flow-hashing-on-SPI.patch > > b/recipes-extended/ethtool/ethtool-3.0/ethtool-3.0-Enable-nfc-rx-flow-hashing-on-SPI.patch > new file mode 100644 > index 000..216e3b4 > --- /dev/null > +++ > b/recipes-extended/ethtool/ethtool-3.0/ethtool-3.0-Enable-nfc-rx-flow-hashing-on-SPI.patch > @@ -0,0 +1,95 @@ > +From patchwork Thu Aug 30 15:44:09 2012 > +Content-Type: text/plain; charset="utf-8" > +MIME-Version: 1.0 > +Content-Transfer-Encoding: 7bit > +Subject: [SDK1.3] ethtool-3.0: Enable nfc rx-flow hashing on SPI > +Date: Thu, 30 Aug 2012 21:44:09 - > +From: Claudiu Manoil > +X-Patchwork-Id: 25852 > + > +This makes it possible to enable hashing of AH or ESP flows > +(IPSEC) based on their SPI (Security Parameter Index) field. > + > +Applies on top of (ethtool v3.0): > +git.kernel.org/pub/scm/network/ethtool/ethtool.git > +commit- > +"a6fc65b Release version 3.0." > + > +Signed-off-by: Pankaj Chauhan > +Signed-off-by: Claudiu Manoil > +--- > + ethtool-copy.h |1 + > + ethtool.8.in |1 + > + ethtool.c | 14 +++--- > + 3 files changed, 13 insertions(+), 3 deletions(-) > + > +diff --git a/ethtool-copy.h b/ethtool-copy.h > +index c7a18f7..cf20158 100644 > +--- a/ethtool-copy.h > b/ethtool-copy.h > +@@ -888,6 +888,7 @@ enum ethtool_sfeatures_retval_bits { > + #define RXH_IP_DST (1 << 5) > + #define RXH_L4_B_0_1(1 << 6) /* src port in case of TCP/UDP/SCTP > */ > + #define RXH_L4_B_2_3(1 << 7) /* dst port in case of TCP/UDP/SCTP > */ > ++#define RXH_AH_ESP_SPI (1 << 8) /* SPI field, for AH/ESP flows */ > + #define RXH_DISCARD (1 << 31) > + > + #define RX_CLS_FLOW_DISC0xULL > +diff --git a/ethtool.8.in b/ethtool.8.in > +index 7a0bd43..a640317 100644 > +--- a/ethtool.8.in > b/ethtool.8.in > +@@ -601,6 +601,7 @@ s Hash on the IP source address of the rx packet. > + d Hash on the IP destination address of the rx packet. > + f Hash on bytes 0 and 1 of the Layer 4 header of the rx packet. > + n Hash on bytes 2 and 3 of the Layer 4 header of the rx packet. > ++S Hash on the SPI field (4 bytes), for AH/ESP packets. > + r T{ > + Discard all packets of this flow type. When this option is set, all > + other options are ignored. > +diff --git a/ethtool.c b/ethtool.c > +index 943dfb7..bb9d592 100644 > +--- a/ethtool.c > b/ethtool.c > +@@ -231,7 +231,7 @@ static struct option { > + { "-N", "--config-nfc", MODE_SNFC, "Configure Rx network flow " > + "classification options", > + " [ rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|" > +- "tcp6|udp6|ah6|esp6|sctp6 m|v|t|s|d|f|n|r... ]\n" }, > ++ "tcp6|udp6|ah6|esp6|sctp6 m|v|t|s|d|f|n|S|r... ]\n" }, > + { "-x", "--show-rxfh-indir", MODE_GRXFHINDIR, "Show Rx flow hash " > + "indirection" }, > + { "-X", "--set-rxfh-indir", MODE_SRXFHINDIR, "Set Rx flow hash > indirection", > +@@ -728,8 +728,10 @@ static int rxflow_str_to_type(const char *str) > + flow_type = TCP_V4_FLOW; > + else if (!strcmp(str, "udp4")) > + flow_type = UDP_V4_FLOW; > +- else if (!strcmp(str, "ah4") || !strcmp(str, "esp4")) > +- flow_type = AH_ESP_V4_FLOW; > ++ else if (!strcmp(str, "ah4")) > ++ flow_type = AH_V4_FLOW; > ++ else if (!strcmp(str, "esp4")) > ++ flow_type = ESP_V4_FLOW; > + else if (!strcmp(str, "sctp4")) > + flow_type = SCTP_V4_FLOW; > + else if (!strcmp(str, "tcp6")) > +@@ -1538,6 +1540,9 @@ static int parse_rxfhashopts(char *optstr, u32 *data) > + case 'n': > + *data |= RXH_L4_B_2_3; > + break; > ++ case 'S': > ++ *data |= RXH_AH_ESP_SPI; > ++ break; > + case 'r': > + *data |= RXH_DISCARD; > + break; > +@@ -1577,6 +1582,9 @@ static char *unparse_rxfhashopts(u64 opts) > + if (opts & RXH_L4_B_2_3) { > + strcat(buf, "L4 bytes 2 & 3 [TCP/UDP dst port]\n"); > + } > ++ if (opts & RXH_AH_ESP_SPI) { > ++ strcat(buf, "SPI field