04 Dec, 2015
4 commits
-
Since CHANGEUPPER can now fail, add support for it in the newly
introduced netdev notifier error injection infrastructure.Signed-off-by: Ido Schimmel
Signed-off-by: Jiri Pirko
Acked-by: Nikolay Aleksandrov
Signed-off-by: David S. Miller -
switchdev drivers reflect the newly requested topology to hardware when
CHANGEUPPER is received, after software links were already formed.
However, the operation can fail and user will not be notified, as the
return value of the notifier is not checked.Add this check and rollback software links if necessary.
Signed-off-by: Ido Schimmel
Signed-off-by: Jiri Pirko
Signed-off-by: David S. Miller -
Commit 7fd89545f337 ("i40e: remove BUG_ON from feature string building")
added defective output when I40E_FLAG_VEB_MODE_ENABLED was set in
function i40e_print_features.Fix it.
Miscellanea:
- Remove unnecessary string variable
- Add space before not after fixed strings
- Use kmalloc not kzalloc
- Don't initialize i to 0, use result of first snprintfReported-by: Sergei Shtylyov
Signed-off-by: Joe Perches
Signed-off-by: David S. Miller -
Jeff Kirsher says:
====================
Intel Wired LAN Driver Updates 2015-12-03This series contains updates to ixgbe and ixgbevf only.
Mark cleans up ixgbe_init_phy_ops_x550em, since this was designed to
initialize function pointers only and moves the KR PHY reset to the
ixgbe_setup_internal_phy_t_x550em which was designed to detect which
mode the PHY operates in and set it up. Added the new thermal alarm
type support used with newer X550EM_x devices. Fixed both ixgbe and
ixgbevf to use a private work queue to avoid hangs, which would
possibly occur when creating and destroying many VFS repeatedly.
Updated ixgbe PTP implementation to accommodate X550EM_x devices,
which handle clocking differently. Fixed specification violations
in the datasheet, which was reported by Dan Streetman. Fixed ixgbe
to check for and handle IPv6 extended headers so that Tx checksum
offload can be done, which was reported by Tom Herbert. Fixed ixgbe
link issue for some systems with X540 or X550 by only inhibiting the
turning PHY power off when manageability is present.Alex Duyck refactors the MAC address configuration code, which in
turns fixes an issue where once 63 entries had been used, you could no
longer add additional filters. Updated ixgbe to use __dev_uc_sync
which also resolved an issue in which you could not remove an FDB
address without having to reset the port. Updated the ixgbe driver
to make use of all the free RAR entries for FDB use if needed.v2: updated patch 13 to "Alex Duyck Approved" version, in the original
submission, I had grabbed a previous version of the patch and did not
catch it was superseded by a later version
====================Signed-off-by: David S. Miller
03 Dec, 2015
36 commits
-
Check for and handle IPv6 extended headers so that Tx checksum
offload can be done. Also use skb_checksum_help for unexpected
cases. Thanks to Tom Herbert for noticing these problems. Thanks
to Alexander Duyck for seeing how to coalesce the error handling
into one location.Reported-by: Tom Herbert
Signed-off-by: Mark Rustad
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
Instead of inhibiting PHY power control when manageability is
present, only inhibit turning PHY power off when manageability
is present. Consequently, PHY power will always be turned on when
requested. Without this patch, some systems with X540 or X550
devices in some conditions will never get link.Signed-off-by: Mark Rustad
Tested-by: Phil Schmitt
Signed-off-by: Jeff Kirsher -
Check for and handle IPv6 extended headers so that Tx checksum
offload can be done. Also use skb_checksum_help for unexpected
cases. Thanks to Tom Herbert for noticing these problems. Thanks
to Alexander Duyck for recognizing problems with the first version
of this patch and recognizing how to coalesce error conditions
into a single location.Reported-by: Tom Herbert
Signed-off-by: Mark Rustad
Signed-off-by: Jeff Kirsher -
Save VF device pointers and take references to speed accesses used
to monitor the device behavior to avoid slot resets. The saved
information avoids lock contention during the search used to access
each of the VFs.Signed-off-by: Mark Rustad
Tested-by: Darin Miller
Tested-by: Phil Schmitt
Signed-off-by: Jeff Kirsher -
According to the datasheets, the driver should wait for the master
disable bit to read as being set before checking the status
register for master disable.Reported-by: Dan Streetman
Signed-off-by: Mark Rustad
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
The ixgbe driver was violating the specification in the datasheet
by not waiting 1ms before checking for the reset bit clearing. This
is called out for devices supported by ixgbe, so implement the
required delay.Reported-by: Dan Streetman
Signed-off-by: Mark Rustad
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
The X550EM_x devices handle clocking differently, so update the
PTP implementation to accommodate them. This involves significant
changes to ixgbe's PTP code to accommodate the new range of
behaviors including things like non-power-of-2 clock wrapping.Signed-off-by: Mark Rustad
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
This change makes it so that we allow the PF to make use of all free RAR
entries for FDB use if needed.Previously the code limited us to 16 unicast entries, however this was
shared between MACVLAN which wasn't limited and the FDB code which was. So
instead of treating the FDB code as a second class citizen I have updated
it so that it has access to just as many entries as the MACVLAN filters.Signed-off-by: Alexander Duyck
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
This change replaces the ixgbe_write_uc_addr_list call in ixgbe_set_rx_mode
with a call to __dev_uc_sync instead. This works much better with the MAC
addr list code that was already in place and solves an issue in which you
couldn't remove an FDB address without having to reset the port.Signed-off-by: Alexander Duyck
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
In the process of tracking down a memory leak when adding/removing FDB
entries I had to go through the MAC address configuration code for ixgbe.
In the process of doing so I found a number of issues that impacted
readability and performance. This change updates the code in general to
clean it up so it becomes clear what each step is doing. From what I can
tell there a couple of bugs cleaned up in this code.First is the fact that the MAC addresses were being double counted for the
PF. As a result once entries up to 63 had been used you could no longer
add additional filters.A simple test case for this:
for i in `seq 0 96`
do
ip link add link ens8 name mv$i type macvlan
ip link set dev mv$i up
doneTest script:
ethregs -s 0:8.0 | grep -e "RAH" | grep 8000....$When things are working correctly RAL/H registers 1 - 97 will be consumed.
In the failing case it will stop at 63 and prevent any further filters from
being added.Signed-off-by: Alexander Duyck
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
Make some minor cleanups, such as simplifying return paths, deleting
unneeded initializations, return values more directly and so forth.Signed-off-by: Mark Rustad
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
Use a private workqueue to avoid hangs that were otherwise possible
when performing stress tests, such as creating and destroying many
VFS repeatedly.Signed-off-by: Mark Rustad
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
Use a private workqueue to avoid hangs that were otherwise possible
when performing stress tests, such as creating and destroying many
VFS repeatedly.Signed-off-by: Mark Rustad
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
The newer copper PHY implementation used with newer X550EM_x
devices uses a different thermal alarm type than the earlier
one. Make changes to support both types.Signed-off-by: Mark Rustad
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
This patch removes KR PHY reset from ixgbe_init_phy_ops_x550em,
since this function is meant to initialize function pointers for
the detected PHY type. Internal PHY reset was moved to
ixgbe_setup_internal_phy_t_x550em which will now detect which
mode the internal PHY operates in and set it up as required.Signed-off-by: Mark Rustad
Tested-by: Darin Miller
Signed-off-by: Jeff Kirsher -
Don't open-code it.
CC: Solarflare linux maintainers
CC: Shradha Shah
CC: netdev@vger.kernel.org
Signed-off-by: Jarod Wilson
Acked-by: Bert Kenward
Signed-off-by: David S. Miller -
If tcp_send_ack() can not allocate skb, we properly handle this
and setup a timer to try later.Use __GFP_NOWARN to avoid polluting syslog in the case host is
under memory pressure, so that pertinent messages are not lost under
a flood of useless information.sk_gfp_atomic() can use its gfp_mask argument (all callers currently
were using GFP_ATOMIC before this patch)We rename sk_gfp_atomic() to sk_gfp_mask() to clearly express this
function now takes into account its second argument (gfp_mask)Note that when tcp_transmit_skb() is called with clone_it set to false,
we do not attempt memory allocations, so can pass a 0 gfp_mask, which
most compilers can emit faster than a non zero or constant value.Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller -
Merge branch 'hv_netvsc-less-headroom'
K. Y. Srinivasan says:
====================
hv_netvsc: Eliminate the additional head roomIn an attempt to avoid having to allocate memory on the send path, the netvsc
driver was requesting additional head room so that both rndis header and the
netvsc packet (the state that had to persist) could be placed in the skb.
Since the amount of head room requested was exceeding the default head room
as set in LL_MAX_HEADER, we were forcing a reallocation of skb.With this patch-set, I have reduced the size of the netvsc packet to less
than 20 bytes and with this reduction we don't need to ask for any additional
headroom. We place the rndis header in the skb head room and we place the
netvsc packet in control buffer area in the skb.V2: - Addressed review comments:
- Eliminated more fields from netvsc packet structure.V3: - Fixed a typo in patch: hv_netvsc: Don't ask for additional head room in the skb.
====================Signed-off-by: David S. Miller
-
Eliminate vlan_tci from struct hv_netvsc_packet.
Signed-off-by: K. Y. Srinivasan
Signed-off-by: David S. Miller -
Eliminate status from struct hv_netvsc_packet.
Signed-off-by: K. Y. Srinivasan
Signed-off-by: David S. Miller -
Eliminate xmit_more from struct hv_netvsc_packet.
Signed-off-by: K. Y. Srinivasan
Signed-off-by: David S. Miller -
Eliminate completion_func from struct hv_netvsc_packet.
Signed-off-by: K. Y. Srinivasan
Signed-off-by: David S. Miller -
Eliminate is_data_pkt from struct hv_netvsc_packet.
Signed-off-by: K. Y. Srinivasan
Signed-off-by: David S. Miller -
Eliminate send_completion_tid from struct hv_netvsc_packet.
Signed-off-by: K. Y. Srinivasan
Signed-off-by: David S. Miller -
Eliminate page_buf from struct hv_netvsc_packet.
Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: David S. Miller -
Packet scheduler guarantees there won't be multiple senders for the same
queue and as we use q_idx for multi_send_data the spinlock is redundant.Signed-off-by: Vitaly Kuznetsov
Signed-off-by: K. Y. Srinivasan
Signed-off-by: David S. Miller -
Signed-off-by: Vitaly Kuznetsov
Signed-off-by: K. Y. Srinivasan
Signed-off-by: David S. Miller -
The rndis header is 116 bytes big and can be placed in the default
head room that will be available in the skb. Since the netvsc packet
is less than 48 bytes, we can use the skb control buffer
for the netvsc packet. With these changes we don't need to
ask for additional head room.Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: David S. Miller -
Eliminate send_completion_ctx from struct hv_netvsc_packet.
Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: David S. Miller -
Eliminate send_completion from struct hv_netvsc_packet.
Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: David S. Miller -
Eliminatte the data field from struct hv_netvsc_packet.
Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: David S. Miller -
Eliminate rndis_msg pointer from hv_netvsc_packet structure.
Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: David S. Miller -
Eliminate the channel field in hv_netvsc_packet structure.
Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: David S. Miller -
Rearrange the elements of struct hv_negtvsc_packet for optimal layout -
eliminate unnecessary padding.Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: David S. Miller -
As part of reducing the size of the hv_netvsc_packet, resize some of the
variables based on their usage.Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: David S. Miller -
Jeff Kirsher says:
====================
Intel Wired LAN Driver Updates 2015-12-01This series contains updates to i40e and i40evf only.
Helin adds new fields to i40e_vsi to store user configured RSS config data
and the code to use it. Also renamed RSS items to clarify functionality
and scope to users. Fixed a confusing kernel message of enabling RSS size
by reporting it together with the hardware maximum RSS size.Anjali fixes the issue of forcing writeback too often causing us to not
benefit from NAPI.Jesse adds a prefetch for data early in the transmit path to help immensely
for pktgen and forwarding workloads. Fixed the i40e driver that was
possibly sleeping inside critical section of code.Carolyn fixes an issue where adminq init failures always provided a message
that NVM was newer than expected, when this is not always the case for
init_adminq failures. Fixed by adding a check for that specific error
condition and a different helpful message otherwise.Mitch fixes error message by telling the user which VF is being naughty,
rather than making them guess. Updated the queue_vector array from a
statically-sized member of the adapter structure, to a dynamically-allocated
and -sized array. This reduces the size of the adapter structure and allows
us to support any number of queue vectors in the future without changing the
code.
====================Signed-off-by: David S. Miller