dpdk.git
8 years agoapp/test: fix crypto mbuf pool size
Piotr Azarewicz [Tue, 11 Oct 2016 10:06:53 +0000 (12:06 +0200)]
app/test: fix crypto mbuf pool size

The created pool for crypto mbufs may be too big in some
environments.
To avoid this issue, mbuf pool is reverted to its previous size.
Moreover, here is added additional small pool with one large mbuf,
that is needed in large data test scenarios.

Fixes: ffbe3be0d4b5 ("app/test: add libcrypto")

Signed-off-by: Piotr Azarewicz <piotrx.t.azarewicz@intel.com>
Acked-by: Michal Jastrzebski <michalx.k.jastrzebski@intel.com>
8 years agoexamples/l2fwd-crypto: fix verify with decrypt in chain
Piotr Azarewicz [Wed, 12 Oct 2016 08:58:44 +0000 (10:58 +0200)]
examples/l2fwd-crypto: fix verify with decrypt in chain

This patch fixes crypto operation data parameters setting
in l2fwd-crypto application, making decryption in chain
with auth verification work.

How to reproduce the issue:

1. Run l2fwd_crypto with command:
-c 0x3 -n 4 --vdev "crypto_aesni_mb" \
--vdev "crypto_aesni_mb" \
-- -p 0x3 --chain CIPHER_HASH \
--cipher_op ENCRYPT --cipher_algo AES_CBC \
--cipher_key 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f \
--iv 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:ff \
--auth_op GENERATE --auth_algo SHA1_HMAC \
--auth_key
11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:
11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:
11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11

2. Send packet with payload and capture forwarded packet.
Payload in forwarded packet is encrypted, what is good.

3. Run l2fwd_crypto with command:
-c 0x3 -n 4 --vdev "crypto_aesni_mb" \
--vdev "crypto_aesni_mb" \
-- -p 0x3 --chain HASH_CIPHER \
--cipher_op DECRYPT --cipher_algo AES_CBC \
--cipher_key 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f \
--iv 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:ff \
--auth_op VERIFY --auth_algo SHA1_HMAC \
--auth_key
11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:
11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:
11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11

4. Send earlier captured packet and capture forwarded packet.
Payload in newly captured packet is not decrypted, what is wrong.

Fixes: 387259bd6c67 ("examples/l2fwd-crypto: add sample application")

Signed-off-by: Piotr Azarewicz <piotrx.t.azarewicz@intel.com>
Acked-by: Michal Jastrzebski <michalx.k.jastrzebski@intel.com>
8 years agoapp/test: reduce libcrypto operations number
Marcin Kerlin [Mon, 10 Oct 2016 08:07:50 +0000 (10:07 +0200)]
app/test: reduce libcrypto operations number

This patch reduce the number of total operations from 1M to 10K,
because test is taking too long time now.

Fixes: ffbe3be0d4b5 ("app/test: add libcrypto")

Signed-off-by: Marcin Kerlin <marcinx.kerlin@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agonet/ixgbe: add application callback on VF to PF messsage
Bernard Iremonger [Mon, 10 Oct 2016 14:34:15 +0000 (15:34 +0100)]
net/ixgbe: add application callback on VF to PF messsage

call _rte_eth_dev_callback_process from ixgbe_rcv_msg_from_vf function.

The callback asks the user application if it is allowed to perform
the function.

If the cb_param.retval is RTE_PMD_IXGBE_MB_EVENT_PROCEED then continue,
if 0, do nothing and send ACK to VF
if > 1, do nothing and send NAK to VF.

Signed-off-by: Alex Zelezniak <alexz@att.com>
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
8 years agoethdev: add an argument to internal callback function
Bernard Iremonger [Mon, 10 Oct 2016 14:34:14 +0000 (15:34 +0100)]
ethdev: add an argument to internal callback function

add cb_arg parameter to the _rte_eth_dev_callback_process function.

Adding a parameter to this function allows passing information
to the application when an eth device event occurs such as
a VF to PF message.
This allows the application to decide if a particular function
is permitted.

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
Signed-off-by: Alex Zelezniak <alexz@att.com>
8 years agodrivers: rename register macro prefix
Shreyansh Jain [Mon, 10 Oct 2016 05:43:15 +0000 (11:13 +0530)]
drivers: rename register macro prefix

All macros related to driver registeration renamed from DRIVER_*
to RTE_PMD_*

This includes:

 DRIVER_REGISTER_PCI -> RTE_PMD_REGISTER_PCI
 DRIVER_REGISTER_PCI_TABLE -> RTE_PMD_REGISTER_PCI_TABLE
 DRIVER_REGISTER_VDEV -> RTE_PMD_REGISTER_VDEV
 DRIVER_REGISTER_PARAM_STRING -> RTE_PMD_REGISTER_PARAM_STRING
 DRIVER_EXPORT_* -> RTE_PMD_EXPORT_*

Fix PMDINFOGEN tool to look for matches of RTE_PMD_REGISTER_*.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agonet/i40e: implement new Rx checksum flag
Xiao Wang [Tue, 6 Sep 2016 01:27:32 +0000 (09:27 +0800)]
net/i40e: implement new Rx checksum flag

Add CKSUM_GOOD flag to distinguish a good checksum from an unknown one.

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
8 years agonet/ixgbe: implement new Rx checksum flag
Xiao Wang [Tue, 6 Sep 2016 01:27:31 +0000 (09:27 +0800)]
net/ixgbe: implement new Rx checksum flag

Add CKSUM_GOOD flag to distinguish a good checksum from an unknown one.

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
8 years agonet/e1000: implement new Rx checksum flag
Xiao Wang [Tue, 6 Sep 2016 01:27:30 +0000 (09:27 +0800)]
net/e1000: implement new Rx checksum flag

Add CKSUM_GOOD flag to distinguish a good checksum from an unknown one.

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
8 years agonet/fm10k: implement new Rx checksum flag
Xiao Wang [Tue, 6 Sep 2016 01:27:29 +0000 (09:27 +0800)]
net/fm10k: implement new Rx checksum flag

Add CKSUM_GOOD flag to distinguish a good checksum from an unknown one.
Since vector Rx supports checksum offload, this patch removes the
hw_ip_checksum check in fm10k_rx_vec_condition_check().

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
8 years agonet/fm10k: fix Rx checksum flags
Xiao Wang [Tue, 6 Sep 2016 01:27:28 +0000 (09:27 +0800)]
net/fm10k: fix Rx checksum flags

A previous patch removed some necessary lines about Rx checksum offload
by mistake, this patch adds them back.

Fixes: 6046898f5097 ("net/mbuf: remove unused Rx error flags")

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
8 years agonet/ixgbe: support checksum flags in SSE vector Rx
Olivier Matz [Thu, 7 Jul 2016 12:19:02 +0000 (14:19 +0200)]
net/ixgbe: support checksum flags in SSE vector Rx

Update desc_to_olflags_v() to set PKT_RX_IP_CKSUM_BAD and
PKT_RX_L4_CKSUM_BAD in the ol_fags of the mbuf.

The Rx vector function can now be used with hw_ip_checksum
enabled.

Tested with:

  cd dpdk.org/
  make config T=x86_64-native-linuxapp-gcc
  make -j32
  mkdir -p /mnt/huge
  mount -t hugetlbfs nodev /mnt/huge
  echo 256 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
  modprobe uio_pci_generic
  python tools/dpdk_nic_bind.py -b uio_pci_generic 0000:04:00.0
  ./build/app/testpmd -l 2,4 -- --total-num-mbufs=65536 -i --port-topology=chained --enable-rx-cksum --disable-hw-vlan-filter --disable-hw-vlan-strip
    set fwd rxonly
    set verbose 1
    start

  # send packets to testpmd using scapy
  eh = Ether(src="00:01:02:03:04:05", dst="00:1B:21:AB:8F:10")
  p = Ether()/IP(src="1.1.1.1", dst="1.1.1.2")/UDP()/Raw("x"*50)
  sendp(p, iface="ixgbe2")
  p = Ether()/IP(src="1.1.1.1", dst="1.1.1.2", chksum=42)/UDP()/Raw("x"*50)
  sendp(p, iface="ixgbe2")
  p = Ether()/IP(src="1.1.1.1", dst="1.1.1.2")/UDP(chksum=42)/Raw("x"*50)
  sendp(p, iface="ixgbe2")
  p = Ether()/IP(src="1.1.1.1", dst="1.1.1.2", chksum=45)/UDP(chksum=42)/Raw("x"*50)
  sendp(p, iface="ixgbe2")

  # result
  port 0/queue 0: received 1 packets
    src=00:01:02:03:04:05 - dst=00:1B:21:AB:8F:10 - type=0x0800 - length=92 - nb_segs=1Unknown packet type
   - Receive queue=0x0
  port 0/queue 0: received 1 packets
    src=00:01:02:03:04:05 - dst=00:1B:21:AB:8F:10 - type=0x0800 - length=92 - nb_segs=1Unknown packet type
   - Receive queue=0x0
    PKT_RX_IP_CKSUM_BAD
  port 0/queue 0: received 1 packets
    src=00:01:02:03:04:05 - dst=00:1B:21:AB:8F:10 - type=0x0800 - length=92 - nb_segs=1Unknown packet type
   - Receive queue=0x0
    PKT_RX_L4_CKSUM_BAD
  port 0/queue 0: received 1 packets
    src=00:01:02:03:04:05 - dst=00:1B:21:AB:8F:10 - type=0x0800 - length=92 - nb_segs=1Unknown packet type
   - Receive queue=0x0
    PKT_RX_L4_CKSUM_BAD
    PKT_RX_IP_CKSUM_BAD

Signed-off-by: Maxime Leroy <maxime.leroy@6wind.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Remy Horton <remy.horton@intel.com>
8 years agoapp/testpmd: add ixgbe VF management
Bernard Iremonger [Wed, 12 Oct 2016 17:54:12 +0000 (18:54 +0100)]
app/testpmd: add ixgbe VF management

add test for set vf vlan anti spoof
add test for set vf mac anti spoof
add test for set vf vlan stripq
add test for set vf vlan insert
add test for set tx loopback
add test for set all queues drop enable bit
add test for set vf split drop enable bit
add test for set vf mac address
add new APIs to testpmd help command.

add new APIs to the testpmd guide

Modify Makefile, add library rte_pmd_ixgbe to _LDLIBS-y.

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
8 years agonet/ixgbe: add API for VF management
Bernard Iremonger [Wed, 12 Oct 2016 17:54:11 +0000 (18:54 +0100)]
net/ixgbe: add API for VF management

Add APIs to configure and manage VFs on an Intel 82559 NIC.

add rte_pmd_ixgbe_set_vf_vlan_anti_spoof function.
add rte_pmd_ixgbe_set_vf_mac_anti_spoof function.
add rte_pmd_ixgbe_set_vf_stripq function.

Signed-off-by: Alex Zelezniak <alexz@att.com>
add rte_pmd_ixgbe_set_vf_vlan_insert function.
add rte_pmd_ixgbe_set_tx_loopback function.
add rte_pmd_ixgbe_set_all_queues_drop function.
add rte_pmd_ixgbe_set_vf_split_drop_en function.
add rte_pmd_ixgbe_set_vf_mac_addr function.

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
8 years agonet/ring: fix parameter string info
Ferruh Yigit [Wed, 31 Aug 2016 16:53:51 +0000 (17:53 +0100)]
net/ring: fix parameter string info

Fixes: 65eca099f405 ("drivers: split parameters infos in multiple lines")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
8 years agonet/ring: fix ring device creation via devargs
Ferruh Yigit [Wed, 31 Aug 2016 16:51:11 +0000 (17:51 +0100)]
net/ring: fix ring device creation via devargs

Using nodeaction devarg lets creating multiple ring eth devices:
"eth_ring0,nodeaction=R0:0:CREATE,nodeaction=R1:0:CREATE"

Trying to create all devices with same name fails. Since first part of
the nodeaction devarg is name (in above sample R0,R1), this name field
can be used as eth dev name.

Fixes: 61934c0956d4 ("ring: convert to use of PMD_REGISTER_DRIVER and fix linking")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
8 years agonet/bnxt: support async link notification
Ajit Khaparde [Tue, 11 Oct 2016 21:47:50 +0000 (16:47 -0500)]
net/bnxt: support async link notification

This patch adds support to get Link notification asynchronously.
The HW sends async notifications on default completion ring. The
PMD processes these notifications and logs a message appropriately.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
8 years agodoc: update bnxt guide
Ajit Khaparde [Thu, 29 Sep 2016 17:04:08 +0000 (12:04 -0500)]
doc: update bnxt guide

This patch reformats the Broadcom PMD driver documentation.

Also since the PMD now loads on a VF interface, update the
documentation accordingly.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
8 years agonet/bnxt: fix crash when closing
Ajit Khaparde [Thu, 29 Sep 2016 17:03:44 +0000 (12:03 -0500)]
net/bnxt: fix crash when closing

This patch fixes segfault encountered during dev_uninit/close routine.
KNI sample app can be used to reproduce the issue.

Fixes: c09f57b49c13 ("net/bnxt: add start/stop/link update operations")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
8 years agonet/bnx2x: merge debug register operations into headers
Chas Williams [Tue, 11 Oct 2016 23:05:01 +0000 (19:05 -0400)]
net/bnx2x: merge debug register operations into headers

The register read/writes should just be static inline instead of
alternately defined as routines or macros depending on the status of
debugging.

Fix bnx2x_reg_read32() returning 0 during debug unaligned reads.

Fixes: b5bf7719221d ("bnx2x: driver support routines")

Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
8 years agonet/bnx2x: do not return structs
Chas Williams [Tue, 11 Oct 2016 23:05:00 +0000 (19:05 -0400)]
net/bnx2x: do not return structs

bnx2x_loop_obtain_resources() returns a struct.  This routine either
succeeds or fails -- We don't need a struct for that.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
8 years agonet/bnx2x: check return codes during VF mailbox operation
Chas Williams [Tue, 11 Oct 2016 23:04:59 +0000 (19:04 -0400)]
net/bnx2x: check return codes during VF mailbox operation

Refactor bnx2x_do_req4pf() to be easier to read and return errors when
the transaction fails -- Previously, it could succeed when the control
channel was down.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
8 years agonet/bnx2x: serialize access to VF mailbox
Chas Williams [Tue, 11 Oct 2016 23:04:58 +0000 (19:04 -0400)]
net/bnx2x: serialize access to VF mailbox

The pf2vf mailbox can only be used by one thread at a time.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
8 years agonet/bnx2x: replace macro with static function
Chas Williams [Tue, 11 Oct 2016 23:04:57 +0000 (19:04 -0400)]
net/bnx2x: replace macro with static function

Replace BNX2X_TLV_APPEND() with the clearer and safer bnx2x_add_tlv().
bnx2x_add_tlv() was previously prototyped at some point but can be static.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
8 years agonet/bnx2x: restrict Rx mask flags sent to the PF
Chas Williams [Tue, 11 Oct 2016 23:04:56 +0000 (19:04 -0400)]
net/bnx2x: restrict Rx mask flags sent to the PF

Don't use bnx2x_fill_accept_flags() to fill the RX mask in the VF
since the PF only handles a subset of the existing flags.  now,
bnx2x_fill_accept_flags() can be static.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
8 years agonet/bnx2x: remove unused Rx queue code
Chas Williams [Tue, 11 Oct 2016 23:04:55 +0000 (19:04 -0400)]
net/bnx2x: remove unused Rx queue code

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
8 years agonet/bnx2x: remove delay during device startup
Chas Williams [Tue, 11 Oct 2016 23:04:54 +0000 (19:04 -0400)]
net/bnx2x: remove delay during device startup

This 2.5s delay doesn't seem to serve any purpose other than a being a
pause after logging the device configuration.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
8 years agonet/bnx2x: remove unused preprocessor code
Chas Williams [Tue, 11 Oct 2016 23:04:53 +0000 (19:04 -0400)]
net/bnx2x: remove unused preprocessor code

ELINK_INCLUDE_EMUL and ELINK_INCLUDE_FPGA are never defined.  Remove them
along with enumeration constants dependent on their inclusion.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
8 years agonet/bnx2x: get cache line size from build configuration
Chas Williams [Tue, 11 Oct 2016 23:04:52 +0000 (19:04 -0400)]
net/bnx2x: get cache line size from build configuration

Correctly hint the cache line size.  Remove unused macros associated
with the cache line size.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
8 years agonet/mlx5: fix Rx function selection
Nélio Laranjeiro [Tue, 11 Oct 2016 14:44:50 +0000 (16:44 +0200)]
net/mlx5: fix Rx function selection

mlx5_rx_queue_setup() was setting the Rx function by itself instead of
using priv_select_rx_function() written for that purpose.

Fixes: cdab90cb5c8d ("net/mlx5: add Tx/Rx burst function selection wrapper")

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agonet/enic: add ethernet VLAN packet type
John Daley [Wed, 24 Aug 2016 19:07:02 +0000 (12:07 -0700)]
net/enic: add ethernet VLAN packet type

Enic is capable of recognizing packets to be delivered to the
app with single VLAN tags. Advertise this with the ptype
RTE_PTYPE_L2_ETHER_VLAN and set the ptype for VLAN packets.

Signed-off-by: John Daley <johndale@cisco.com>
8 years agodoc: add ixgbe supported chipsets and NICs
Wei Dai [Mon, 26 Sep 2016 01:23:36 +0000 (09:23 +0800)]
doc: add ixgbe supported chipsets and NICs

get the list of all chipsets and NICs supported
by ixgbe driver from
https://downloadcenter.intel.com/download/14687

Signed-off-by: Wei Dai <wei.dai@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
8 years agonet/bnxt: fix bit shift size
John W. Linville [Thu, 29 Sep 2016 17:39:36 +0000 (13:39 -0400)]
net/bnxt: fix bit shift size

Some(?) compilers will treat the unmarked constant 1 as a 32-bit
integer, but the shift operation is in a loop that could run up to
63 times -- undefined behavior!

Coverity issue: 127546
Fixes: 778b759ba10e ("net/bnxt: add MAC address")

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
8 years agonet/i40e: do not use VSI before NULL check
John W. Linville [Thu, 29 Sep 2016 17:39:35 +0000 (13:39 -0400)]
net/i40e: do not use VSI before NULL check

Coverity issue: 127556
Fixes: 440499cf5376 ("net/i40e: support floating VEB")

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agonet/bnxt: ensure entry length is unsigned
John W. Linville [Thu, 29 Sep 2016 17:39:34 +0000 (13:39 -0400)]
net/bnxt: ensure entry length is unsigned

Otherwise, the inherent cast when multiplying entry_length by max_vnics
in the call to rte_memzone_reserve could promote max_vnics to a signed
value, causing hilarity to ensue...

Coverity issue: 127557
Fixes: 9738793f28ec ("net/bnxt: add VNIC functions and structs")

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
8 years agonet/ena: improve safety of string handling
John W. Linville [Thu, 29 Sep 2016 17:39:33 +0000 (13:39 -0400)]
net/ena: improve safety of string handling

Use sizeof dest rather than sizeof src for limiting copy length,
and replace strncpy with snprintf to ensure NULL termination.

Coverity issue: 127795
Fixes: 372c1af5ed8f ("net/ena: add dedicated memory area for extra device info")

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agonet/bnx2x: fix socket id for slowpath memory
Rasesh Mody [Thu, 6 Oct 2016 05:36:37 +0000 (22:36 -0700)]
net/bnx2x: fix socket id for slowpath memory

When the DMA allocation routine is invoked in the context of a non-EAL
thread, the API rte_lcore_id() returns -1 and indexing on that in
rte_lcore_to_socket_id() leads to segfault. The fix is to use
SOCKET_ID_ANY as the socket_id for all slowpath memory allocation.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Rasesh Mody <rasesh.mody@qlogic.com>
8 years agonet/bnx2x: fix maximum PF queues
Rasesh Mody [Thu, 6 Oct 2016 05:36:36 +0000 (22:36 -0700)]
net/bnx2x: fix maximum PF queues

Fix the max number of PF rx/tx queues. Set the value based
on BNX2X_MAX_RSS_COUNT() rather than hard coding it to 128.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Rasesh Mody <rasesh.mody@qlogic.com>
Acked-by: Chas Williams <3chas3@gmail.com>
8 years agonet/enic: extend flow director support for 1300 series
John Daley [Thu, 29 Sep 2016 20:56:39 +0000 (13:56 -0700)]
net/enic: extend flow director support for 1300 series

1300 series Cisco adapter firmware version 2.0(13) for UCS
C-series servers and 3.1(2) for blade servers supports more
filtering capabilities. The feature can be enabled via Cisco
CIMC or USCM with the 'advanced filters' radio button. When
enabled, the these additional flow director modes are available:
RTE_ETH_FLOW_NONFRAG_IPV4_OTHER
RTE_ETH_FLOW_NONFRAG_IPV4_SCTP
RTE_ETH_FLOW_NONFRAG_IPV6_UDP
RTE_ETH_FLOW_NONFRAG_IPV6_TCP
RTE_ETH_FLOW_NONFRAG_IPV6_SCTP
RTE_ETH_FLOW_NONFRAG_IPV6_OTHER

Changes:
- Detect and set an 'advanced filters' flag dependent on the adapter
  capability.
- Implement RTE_ETH_FILTER_INFO filter op to return the flow types
  available dependent on whether advanced filters are enabled.
- Use a function pointer to select how filters are added to the adapter:
  copy_fltr_v1() for older firmware/adapters or copy_fltr_v2() for
  adapters which support advanced filters.
- Apply fdir global masks to filters when in advanced filter mode.
- Update documentation.

Signed-off-by: John Daley <johndale@cisco.com>
Reviewed-by: Nelson Escobar <neescoba@cisco.com>
8 years agonet/enic/base: update VIC adapter
John Daley [Thu, 29 Sep 2016 20:56:38 +0000 (13:56 -0700)]
net/enic/base: update VIC adapter

Update the VIC adapter file which is common with the firmware and
other VIC drivers. This is needed to support new capabilities
for 1300 adapters, including advanced filtering, which is available
in VIC firmware version 2.0(13) for UCS rack and 3.1(2).

Signed-off-by: John Daley <johndale@cisco.com>
8 years agonet/enic: fix crash with removed flow director filters
John Daley [Thu, 29 Sep 2016 20:56:37 +0000 (13:56 -0700)]
net/enic: fix crash with removed flow director filters

When flow director filters where removed when an enic device is
stopped, the filters were freed but the pointer was not set to
NULL so the next stop would try to free them again.

Fixes: fefed3d1e62c ("enic: new driver")

Signed-off-by: John Daley <johndale@cisco.com>
8 years agonet/enic: fix flow director
John Daley [Thu, 29 Sep 2016 20:56:36 +0000 (13:56 -0700)]
net/enic: fix flow director

The wrong queue id was being used in the enic
flow director code after the scattered Rx feature
was added.

Fixes: 856d7ba7ed22 ("net/enic: support scattered Rx")

Signed-off-by: John Daley <johndale@cisco.com>
8 years agonet/enic: document how to configure vNIC parameters
Nelson Escobar [Thu, 29 Sep 2016 20:55:05 +0000 (13:55 -0700)]
net/enic: document how to configure vNIC parameters

Update the enic guide to better explain how to setup vNIC parameters
on the Cisco VIC since the introduction of rx scatter, and print an
error message for the case of having 1 RQ configured in the vNIC,
referring to the documentation for more information.

Signed-off-by: Nelson Escobar <neescoba@cisco.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
8 years agonet/mlx: align drivers to latest naming convention
David Marchand [Fri, 7 Oct 2016 13:04:13 +0000 (15:04 +0200)]
net/mlx: align drivers to latest naming convention

Fixes: 2f45703c17ac ("drivers: make driver names consistent")

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agonet/thunderx: increase driver version to 2.0
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:54 +0000 (14:05 +0200)]
net/thunderx: increase driver version to 2.0

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx: document secondary queue set support
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:52 +0000 (14:05 +0200)]
net/thunderx: document secondary queue set support

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
8 years agonet/thunderx: add final bits for secondary queue support
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:51 +0000 (14:05 +0200)]
net/thunderx: add final bits for secondary queue support

Summary:
 - add secondary qset support in device stats
 - add support for releasing mbufs from RBDR for >8 queues
 - add support for releasing mbufs from RX queues for >8 queues
 - support >8 queues in tx_queue_setup
 - support >8 queues in rx_queue_setup
 - support up to 96 queues per device (dev_info->max_rx_queues)
 - add secondary qset support in rbdr_rte_mempool_get
 - support >8 queues in multiprocess mode (do not reconfigure VFs)
 - setup periodic alarm accordingly for type of VFs:
   * primary VF   - handle events on queues and link status
   * secondary VF - handle events on queues
 - initialize hardware capabilities in secondary qsets

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx: add secondary queue set support in configure
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:50 +0000 (14:05 +0200)]
net/thunderx: add secondary queue set support in configure

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx: add secondary queue set support in start
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:49 +0000 (14:05 +0200)]
net/thunderx: add secondary queue set support in start

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx: add secondary queue set support in stop/close
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:48 +0000 (14:05 +0200)]
net/thunderx: add secondary queue set support in stop/close

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx: add helpers for secondary queue set
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:47 +0000 (14:05 +0200)]
net/thunderx: add helpers for secondary queue set

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx: remove private data to ethdev link
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:46 +0000 (14:05 +0200)]
net/thunderx: remove private data to ethdev link

In case of the multiprocess mode a shared nicvf struct between processes
cannot point with the eth_dev pointer to master device, therefore remove it
along with references to it refactoring the code where needed.

This change fixes multiprocess issues detected in stats.

Fixes: 7413feee662d ("net/thunderx: add device start/stop and close")

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx: add secondary queue set in interrupt functions
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:45 +0000 (14:05 +0200)]
net/thunderx: add secondary queue set in interrupt functions

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx: add functions to store qsets
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:44 +0000 (14:05 +0200)]
net/thunderx: add functions to store qsets

These functions (nicvf_svf) are DPDK specialization of base/nicvf_bsvf.[ch]
ones.

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx/base: add secondary queue set support
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:43 +0000 (14:05 +0200)]
net/thunderx/base: add secondary queue set support

Changes:
 - add new message sqs_alloc in mailbox
 - add a queue container to hold secondary qsets.
 - add nicvf_mbox_request_sqs
 - handle new mailbox messages for secondary queue set support
 - register secondary queue sets for further reuse
 - register the number secondary queue sets in MSG_QS_CFG

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx/base: add functions to store qsets
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:42 +0000 (14:05 +0200)]
net/thunderx/base: add functions to store qsets

This interface (nicvf_bsvf) will be used for secondary queue set support.

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx: fix Tx checksum handling
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:41 +0000 (14:05 +0200)]
net/thunderx: fix Tx checksum handling

The symbols PKT_TX_TCP_CKSUM and PKT_TX_UDP_CKSUM are not bits on a
bitmask. Set l3_offset always for TX offloads, not just for PKT_TX_IP_CKSUM
being true.

Fixes: 1c421f18e095 ("net/thunderx: add single and multi-segment Tx")

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/thunderx: cleanup
Kamil Rytarowski [Fri, 30 Sep 2016 12:05:40 +0000 (14:05 +0200)]
net/thunderx: cleanup

Refactored features:
 - enable nicvf_qset_rbdr_precharge to handle secondary queue sets
 - rte_free already handles NULL pointer
 - check mempool flags to predict being contiguous in memory
 - prohibit to use mempool with multiple memory chunks
 - simplify local construct of accessing nb_rx_queues
 - enable NICVF_CAP_CQE_RX2 on CN88XX PASS2.0 hardware.
 - remove redundant check for RSS size in nicvf_eth_dev_init

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agonet/i40e: enable bad checksum flags in vector Rx
Damjan Marion [Thu, 6 Oct 2016 06:38:10 +0000 (02:38 -0400)]
net/i40e: enable bad checksum flags in vector Rx

Decode the checksum flags from the Rx descriptor, setting
the appropriate bit in the mbuf ol_flags field when the flag
indicates a bad checksum.

Signed-off-by: Damjan Marion <damarion@cisco.com>
Signed-off-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
8 years agonet/i40e: add packet type metadata in vector Rx
Damjan Marion [Thu, 6 Oct 2016 06:38:09 +0000 (02:38 -0400)]
net/i40e: add packet type metadata in vector Rx

The ptype is decoded from the Rx descriptor and stored
in the packet type field in the mbuf using the same function
in the non-vector driver.

Signed-off-by: Damjan Marion <damarion@cisco.com>
Signed-off-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
8 years agonet/bonding: enable slave VLAN filter
Eric Kinzie [Thu, 4 Aug 2016 18:24:43 +0000 (11:24 -0700)]
net/bonding: enable slave VLAN filter

SR-IOV virtual functions cannot rely on promiscuous mode for the reception
of VLAN tagged frames. Program the VLAN filter for each slave when a
VLAN is configured for the bonding master.

Signed-off-by: Eric Kinzie <ehkinzie@gmail.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
8 years agonet/bonding: validate speed after link up
Eric Kinzie [Thu, 4 Aug 2016 18:24:42 +0000 (11:24 -0700)]
net/bonding: validate speed after link up

It's possible for the bonding driver to mistakenly reject an interface
based in it's, as yet, unnegotiated link speed and duplex. Always allow
the interface to be added to the bonding interface but require link
properties validation to succeed before slave is activated.

Fixes: 2efb58cbab6e ("bond: new link bonding library")

Signed-off-by: Eric Kinzie <ehkinzie@gmail.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
8 years agodoc: add limitations for i40e PMD
Jingjing Wu [Fri, 30 Sep 2016 06:46:23 +0000 (14:46 +0800)]
doc: add limitations for i40e PMD

This patch adds "Limitations or Known issues" section for
i40e PMD, including two items:
1. MPLS packet classification on X710/XL710
2. 16 Byte Descriptor cannot be used on DPDK VF
3. Link down with i40e kernel driver after DPDK application exist

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
8 years agonet/mlx5: return RSS hash result in mbuf
Nélio Laranjeiro [Wed, 28 Sep 2016 12:11:18 +0000 (14:11 +0200)]
net/mlx5: return RSS hash result in mbuf

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
8 years agokni: move kernel version ifdefs to compat header
Ferruh Yigit [Mon, 26 Sep 2016 15:39:38 +0000 (16:39 +0100)]
kni: move kernel version ifdefs to compat header

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: prefer uint32_t to unsigned int
Ferruh Yigit [Mon, 26 Sep 2016 15:39:37 +0000 (16:39 +0100)]
kni: prefer uint32_t to unsigned int

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: update log messages
Ferruh Yigit [Mon, 26 Sep 2016 15:39:36 +0000 (16:39 +0100)]
kni: update log messages

Remove some function entrance logs and changed log level of some logs.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: remove compile time debug configuration
Ferruh Yigit [Mon, 26 Sep 2016 15:39:35 +0000 (16:39 +0100)]
kni: remove compile time debug configuration

Since switched to kernel dynamic debugging it is possible to remove
compile time debug log configuration.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: move functions to eliminate declarations
Ferruh Yigit [Mon, 26 Sep 2016 15:39:34 +0000 (16:39 +0100)]
kni: move functions to eliminate declarations

Function implementations kept same.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: remove unnecessary messages for out of memory
Ferruh Yigit [Mon, 26 Sep 2016 15:39:33 +0000 (16:39 +0100)]
kni: remove unnecessary messages for out of memory

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: update kernel logging
Ferruh Yigit [Mon, 26 Sep 2016 15:39:32 +0000 (16:39 +0100)]
kni: update kernel logging

Switch to dynamic logging functions. Depending kernel configuration this
may cause previously visible logs disappear.

How to enable dynamic logging:
https://www.kernel.org/doc/Documentation/dynamic-debug-howto.txt

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: prefer ether_addr_copy to memcpy
Ferruh Yigit [Mon, 26 Sep 2016 15:39:31 +0000 (16:39 +0100)]
kni: prefer ether_addr_copy to memcpy

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: prefer min_t to min
Ferruh Yigit [Mon, 26 Sep 2016 15:39:30 +0000 (16:39 +0100)]
kni: prefer min_t to min

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: enclose macros with complex values in parens
Ferruh Yigit [Mon, 26 Sep 2016 15:39:29 +0000 (16:39 +0100)]
kni: enclose macros with complex values in parens

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: do not use assignment in if condition
Ferruh Yigit [Mon, 26 Sep 2016 15:39:28 +0000 (16:39 +0100)]
kni: do not use assignment in if condition

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: move trailing statement on next line
Ferruh Yigit [Mon, 26 Sep 2016 15:39:27 +0000 (16:39 +0100)]
kni: move trailing statement on next line

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: move comparison constants on the right
Ferruh Yigit [Mon, 26 Sep 2016 15:39:26 +0000 (16:39 +0100)]
kni: move comparison constants on the right

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: remove useless return
Ferruh Yigit [Mon, 26 Sep 2016 15:39:25 +0000 (16:39 +0100)]
kni: remove useless return

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: prefer unsigned int to unsigned
Ferruh Yigit [Mon, 26 Sep 2016 15:39:24 +0000 (16:39 +0100)]
kni: prefer unsigned int to unsigned

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: fix spacing and line lenghts
Ferruh Yigit [Mon, 26 Sep 2016 15:39:23 +0000 (16:39 +0100)]
kni: fix spacing and line lenghts

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: make static struct const
Ferruh Yigit [Mon, 26 Sep 2016 15:39:22 +0000 (16:39 +0100)]
kni: make static struct const

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: uninitialize global variables
Ferruh Yigit [Mon, 26 Sep 2016 15:39:21 +0000 (16:39 +0100)]
kni: uninitialize global variables

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: move externs to the header file
Ferruh Yigit [Mon, 26 Sep 2016 15:39:20 +0000 (16:39 +0100)]
kni: move externs to the header file

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: support core id parameter in single threaded mode
Vladyslav Buslov [Sat, 24 Sep 2016 13:13:02 +0000 (16:13 +0300)]
kni: support core id parameter in single threaded mode

Allow binding KNI thread to specific core in single threaded mode
by setting core_id and force_bind config parameters.

Signed-off-by: Vladyslav Buslov <vladyslav.buslov@harmonicinc.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agoapp/test: verify LPM tbl8 recycle
Wei Dai [Mon, 8 Aug 2016 06:40:45 +0000 (14:40 +0800)]
app/test: verify LPM tbl8 recycle

As a bug-fix for lpm tbl8 recycle is introduced,
add a test case to verify tbl8 group is correctly
freed when it only includes a rule with depth=24.

Signed-off-by: Wei Dai <wei.dai@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
8 years agolpm: remove redundant check when adding rule
Wei Dai [Mon, 8 Aug 2016 06:42:37 +0000 (14:42 +0800)]
lpm: remove redundant check when adding rule

When a rule with depth > 24 is added into an existing
rule with depth <=24, a new tbl8 is allocated, the existing
rule first fulfill whole new tbl8, so the filed valid of
each entry in this tbl8 is always true and depth of each
entry is always <= 24 before adding the new rule with depth > 24.

Signed-off-by: Wei Dai <wei.dai@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
8 years agolpm: fix freeing unused sub-table on rule delete
Wei Dai [Mon, 8 Aug 2016 06:39:51 +0000 (14:39 +0800)]
lpm: fix freeing unused sub-table on rule delete

When all rules with depth > 24 are deleted in a same sub-table
(tlb8 group) and only a rule with depth <=24 is left in it,
this sub-table (tlb8 group) should be recycled.

Fixes: dc81ebbacaeb ("lpm: extend IPv4 next hop field")
Fixes: af75078fece3 ("first public release")

Signed-off-by: Wei Dai <wei.dai@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
8 years agolog: respect logger configured before EAL init
John Ousterhout [Wed, 12 Oct 2016 19:38:32 +0000 (12:38 -0700)]
log: respect logger configured before EAL init

Before this patch, application-specific loggers could not be
installed before rte_eal_init completed (the initialization process
called rte_openlog_stream, overwriting any previously installed
logger). This made it impossible for an application to capture the
initial log messages generated during rte_eal_init. This patch changes
initialization so that information from a previous call to
rte_openlog_stream is not lost. Specifically:
* The default log stream is now maintained separately from an
  application-specific log stream installed with rte_openlog_stream.
* rte_eal_common_log_init has been renamed to eal_log_set_default,
  since this is all it does. It no longer invokes rte_openlog_stream; it
  just updates the default stream. Also, this method now returns void,
  rather than int, since there are no errors.

This patch also removes the "early log" mechanism and cleans up the
log initialization mechanism:
* The default log stream defaults to stderr on all platforms if
  eal_log_set_default hasn't been invoked (Linux used to use stdout
  during the first part of initialization).
* Removed rte_eal_log_early_init; all of the desired functionality can
  be achieved by calling eal_log_set_default.
* Removed lib/librte_eal/bsdapp/eal/eal_log.c: it contained only one
  function, rte_eal_log_init, which is not needed or invoked for BSD.
* Removed declaration for eal_default_log_stream in rte_log.h (it's now
  private to eal_common_log.c).
* Moved call to rte_eal_log_init earlier in rte_eal_init for Linux, so
  that it starts using the preferrred log ASAP.

Signed-off-by: John Ousterhout <ouster@cs.stanford.edu>
8 years agodoc: fix file argument of debug functions
Mauricio Vasquez B [Fri, 2 Sep 2016 11:01:51 +0000 (13:01 +0200)]
doc: fix file argument of debug functions

Previous patch updated the functions without updating all the comments.

Fixes: 591a9d7985c1 ("add FILE argument to debug functions")

Signed-off-by: Mauricio Vasquez B <mauricio.vasquez@polito.it>
Acked-by: John McNamara <john.mcnamara@intel.com>
8 years agonet/virtio: support TSO
Olivier Matz [Thu, 13 Oct 2016 14:16:11 +0000 (16:16 +0200)]
net/virtio: support TSO

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agonet/virtio: support LRO
Olivier Matz [Thu, 13 Oct 2016 14:16:10 +0000 (16:16 +0200)]
net/virtio: support LRO

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agonet/virtio: support Tx checksum offload
Olivier Matz [Thu, 13 Oct 2016 14:16:09 +0000 (16:16 +0200)]
net/virtio: support Tx checksum offload

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agonet/virtio: support Rx checksum offload
Olivier Matz [Thu, 13 Oct 2016 14:16:08 +0000 (16:16 +0200)]
net/virtio: support Rx checksum offload

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agoapp/testpmd: display LRO segment size
Olivier Matz [Thu, 13 Oct 2016 14:16:07 +0000 (16:16 +0200)]
app/testpmd: display LRO segment size

In csumonly engine, display the value of LRO segment if the
LRO flag is set.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agombuf: add flag for LRO
Olivier Matz [Thu, 13 Oct 2016 14:16:06 +0000 (16:16 +0200)]
mbuf: add flag for LRO

When receiving coalesced packets in virtio, the original size of the
segments is provided. This is a useful information because it allows to
resegment with the same size.

Add a RX new flag in mbuf, that can be set when packets are coalesced by
a hardware or virtual driver when the m->tso_segsz field is valid and is
set to the segment size of original packets.

This flag is used in next commits in the virtio pmd.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agombuf: add new Rx checksum flags
Olivier Matz [Thu, 13 Oct 2016 14:16:04 +0000 (16:16 +0200)]
mbuf: add new Rx checksum flags

Following discussions in [1] and [2], introduce a new bit to
describe the Rx checksum status in mbuf.

Before this patch, only one flag was available:
  PKT_RX_L4_CKSUM_BAD: L4 cksum of RX pkt. is not OK.

And same for L3:
  PKT_RX_IP_CKSUM_BAD: IP cksum of RX pkt. is not OK.

This had 2 issues:
- it was not possible to differentiate "checksum good" from
  "checksum unknown".
- it was not possible for a virtual driver to say "the checksum
  in packet may be wrong, but data integrity is valid".

This patch tries to solve this issue by having 4 states (2 bits)
for the IP and L4 Rx checksums. New values are:

 - PKT_RX_L4_CKSUM_UNKNOWN: no information about the RX L4 checksum
   -> the application should verify the checksum by sw
 - PKT_RX_L4_CKSUM_BAD: the L4 checksum in the packet is wrong
   -> the application can drop the packet without additional check
 - PKT_RX_L4_CKSUM_GOOD: the L4 checksum in the packet is valid
   -> the application can accept the packet without verifying the
      checksum by sw
 - PKT_RX_L4_CKSUM_NONE: the L4 checksum is not correct in the packet
   data, but the integrity of the L4 data is verified.
   -> the application can process the packet but must not verify the
      checksum by sw. It has to take care to recalculate the cksum
      if the packet is transmitted (either by sw or using tx offload)

  And same for L3 (replace L4 by IP in description above).

This commit tries to be compatible with existing applications that
only check the existing flag (CKSUM_BAD).

[1] http://dpdk.org/ml/archives/dev/2016-May/039920.html
[2] http://dpdk.org/ml/archives/dev/2016-June/040007.html

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agonet: add function to calculate checksum in mbuf
Olivier Matz [Thu, 13 Oct 2016 14:16:03 +0000 (16:16 +0200)]
net: add function to calculate checksum in mbuf

This function can be used to calculate the checksum of data embedded in
mbuf, that can be composed of several segments.

This function will be used by the virtio pmd in next commits to calculate
the checksum in software in case the protocol is not recognized.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agonet/virtio: reinitialize device when configuring
Olivier Matz [Thu, 13 Oct 2016 14:16:02 +0000 (16:16 +0200)]
net/virtio: reinitialize device when configuring

Add the ability to reset the virtio device in the configure callback
if the features flag changed since previous reset. This will be possible
with the introduction of offload support in next commits.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agonet/virtio: move control queue configuration
Olivier Matz [Thu, 13 Oct 2016 14:16:01 +0000 (16:16 +0200)]
net/virtio: move control queue configuration

Move the configuration of control queue in the configure callback.
This is needed by next commit, which introduces the reinitialization
of the device in the configure callback to change the feature flags.
Therefore, the control queue will have to be restarted at the same
place.

As virtio_dev_cq_queue_setup() is called from a place where
config->max_virtqueue_pairs is not available, we need to store this in
the private structure. It replaces max_rx_queues and max_tx_queues which
have the same value. The log showing the value of max_rx_queues and
max_tx_queues is also removed since config->max_virtqueue_pairs is
already displayed above.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agonet/virtio: move device initialization in a function
Olivier Matz [Thu, 13 Oct 2016 14:16:00 +0000 (16:16 +0200)]
net/virtio: move device initialization in a function

Move all code related to device initialization in a new function
virtio_init_device().

This commit brings no functional change, it prepares the next commits
that will add the offload support. For that, it will be needed to
reinitialize the device from ethdev->configure(), using this new
function.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>