dcd3cefd74
This issue is observed with X520-2 NICs on FD.io lab Taishan server. After VPP booting up and bringing up the interfaces with command "set interface state <interface> up", it still shows link down status from the command "show hardware-interfaces". However, the hardware link status is actually up. dpdk_process() cannot get the hardware link status correctly via rte_eth_link_get_nowait(). In ixgbe_dev_link_update_share(), if the media type is fiber and the link is down, a flag (IXGBE_FLAG_NEED_LINK_CONFIG) is set. A callback to ixgbe_dev_setup_link_alarm_handler() is scheduled trying to set up the link and clear the flag afterwards. If the device is started or stopped before the flag is cleared, the scheduled callback is canceled. This causes the flag to remain set and subsequent calls to ixgbe_dev_link_update_share() return without trying to retrieve the link state because the flag is set. When the callback is canceled by either interface start or stop operation, in ixgbe_dev_cancel_link_thread(), after cancelling the callback/thread, unset the flag on the device to avoid this condition. Type: fix Signed-off-by: Lijian Zhang <Lijian.Zhang@arm.com> Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> Reviewed-by: Jieqiang Wang <Jieqiang.Wang@arm.com> Change-Id: I04de377dc048307a78a5b7109ebdfaf376d5e029 (cherry picked from commit 1690dcb49527934e83748e7b6db8501b33c3758a)
Changes needed to DPDK are stored here as git patch files. Maintaining these files using “git format-patch” and “git am” will make it simpler to manage these changes. Patches made to DPDK should only be temporary until they are accepted upstream and made available in the next DPDK release. The following is the method used to generate these patches: 1. Git clone the package to a new directory: # git clone http://dpdk.org/git/dpdk dpdk 2. Create a branch based on the release you wish to patch. Note, “git tag” will show you all the release tags. The following example is for release tag “v2.2.0” and will create a branch named “two_dot_two”. # cd <root dir> # git checkout -b two_dot_two v2.2.0 3. Apply all the existing patches to this new branch. # git am </path/to/existing/patches/*> 4. Make your changes and commit your change to your repository. # <edit files> # git commit -s 5. Create the patch files with format-patch. This creates all the patch files for your branch (two_dot_two), with your latest commits as the last ones. # git format-patch master..two_dot_two 6. Copy, add and commit the new patches into the patches directory.