summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet (follow)
Commit message (Collapse)AuthorAgeFilesLines
* ixgbe: add ixgbe_write_pci_cfg_word with ixgbe_removed checkJacob Keller2014-03-203-5/+11
| | | | | | | | | | Inline with the current use for ixgbe_read_pci_cfg_word, create a similar function for writing PCI config, which checks whether the adapter has been removed first, if Live Error Recovery has been enabled. Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* igb: Add register defines needed for time sync functionsCarolyn Wyborny2014-03-203-5/+78
| | | | | | | | | | | This patch adds defines needed for implementing the auxiliary time sync functions and also changes code to call the updated defines instead of the old. Reported-by: Richard Cochran <ricahrdcochran@gmail.com> Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* e1000e: Fix Explicitly set Transmit Control RegisterDavid Ertman2014-03-201-1/+9
| | | | | | | | | | | | This patch causes the TCTL to be explicitly set to fix a problem with poor network performance (throughput) on certain silicon when configured for 100M HDX performance. Cc: Todd Fujinaka <todd.fujinaka@intel.com> Signed-off-by: Dave Ertman <davidx.m.ertman@intel.com> Acked-by: Bruce W. Allan <bruce.w.allan@intel.com> Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* e1000e: Fix Hardware Unit HangDavid Ertman2014-03-201-9/+23
| | | | | | | | | | | | | | | | | The check for pending Tx work when link is lost was mistakenly moved to be done only when link is first detected to be lost. It turns out there is a small window of opportunity for additional Tx work to get queued up shortly after link is dropped. Move the check back to the place it was before in the watchdog task. Put in additional debug information for other reset paths and a final catch-all for false hangs in the scheduled function that prints out the hardware hang message. Signed-off-by: Dave Ertman <davidx.m.ertman@intel.com> Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* i40e/i40evf: Bump build versionsCatherine Sullivan2014-03-202-2/+2
| | | | | | | | | Bump to version 0.3.36 for i40e and 0.9.16 for i40evf. Change-ID: I7b4ff97b32d2825181803c03c316381a7608a618 Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com> Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* i40e: potential array underflow in i40e_vc_process_vf_msg()Dan Carpenter2014-03-201-1/+1
| | | | | | | | | | | | If "vf_id" is smaller than hw->func_caps.vf_base_id then it leads to an array underflow of the pf->vf[] array. This is unlikely to happen unless the hardware is bad, but it's a small change and it silences a static checker warning. Fixes: 7efa84b7abc1 ('i40e: support VFs on PFs other than 0') Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Tested-by: Sibai Li <sibai.li@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* i40e/i40evf: reduce context descriptorsJesse Brandeburg2014-03-202-2/+4
| | | | | | | | | | | | | We don't need context descriptors for every packet, only tso or timesync. This fixes a bug in the driver where it would always add a context even if all the passed in values to the context descriptor function were 0/default values. Change-ID: I0101d2b893380707b5c2de61aab3e16d4310e9a1 Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com> Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* i40e/i40evf: enable hardware feature head write backJesse Brandeburg2014-03-204-12/+88
| | | | | | | | | | | | | | The hardware supports a feature to avoid updating the descriptor ring by marking each descriptor with a DD bit, and instead writes a memory location with an update to where the driver should clean up to. Enable this feature. Change-ID: I5da4e0681f0b581a6401c950a81808792267fe57 Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: Mitch Williams <mitch.a.williams@intel.com> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com> Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* i40e: Refactor and cleanup i40e_open(), adding i40e_vsi_open()Elizabeth Kappler2014-03-202-9/+34
| | | | | | | | | | | | This patch cleans up and moves a portion of i40e_open to i40e_vsi_open, in order to have a shorter vsi_open function that does only that. Change-ID: I1c418dda94dcfc0eb7d4386a70c330692ef5ecc9 Signed-off-by: Elizabeth Kappler <elizabeth.m.kappler@intel.com> Signed-off-by: Akeem G Abodunrin <akeem.g.abodunrin@intel.com> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com> Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* i40e: Patch to enable Ethtool/netdev feature flag for NTUPLE controlAnjali Singhai Jain2014-03-202-0/+42
| | | | | | | | | | | | This enables option '-k/-K' in ethtool for NTUPLE control. NTUPLE control requires a reset, to take effect. When the feature is turned off, the SW list of stored FD SB filters gets cleaned up. Change-ID: I9d564b67a10d4afa11de3b320d601c3d2e6edc1f Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com> Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* i40evf: use min_tMitch Williams2014-03-201-2/+2
| | | | | | | | | | | | Checkpatch complained in an earlier patch about using min(), but that change would have been completely unrelated to the point of that patch. So fix it here. Change-ID: I2cd87b39cfd406850d283b88f259757a6bcd14cd Signed-off-by: Mitch Williams <mitch.a.williams@intel.com> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com> Tested-by: Sibai Li <sibai.li@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* i40evf: correctly program RSS HLUT tableMitch Williams2014-03-201-9/+14
| | | | | | | | | | | | | | | | The HLUT programming loop in in i40evf_configure_rss was a) overly- complicated, and b) just plain broken. Most of the entries ended up being not written at all, so most of the flows ended up at queue zero. Refactor the HLUT programming loop to simply walk through the registers and write four values to each one, incrementing through the number of available queues. Change-ID: I75766179bc67e4e997187794f3144e28c83fd00d Signed-off-by: Mitch Williams <mitch.a.williams@intel.com> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com> Tested-by: Sibai Li <sibai.li@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* i40e: support VF link state ndoMitch Williams2014-03-193-6/+85
| | | | | | | | | | | | | | | | | | This netdev op allows the PF driver to control the virtual link state of the VF devices. This can be used to deny naughty VF drivers access to the wire, or to allow VFs (regardless of temperament) to communicate with each other over the device's internal switch even though external link is down. Add the actual ndo function, and modify vc_notify_link_state to check the link status of each VF before sending a message in the case when physical link changes state. Change-ID: Ib5a6924da78c540789f21d26b5e8086d71c29384 Signed-off-by: Mitch Williams <mitch.a.williams@intel.com> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com> Tested-by: Sibai Li <sibai.li@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* via: fix a punctuation typowangweidong2014-03-181-1/+1
| | | | | | | | In generic, after an assignment, we use ';' instead of ','. Although, it won't hurt. Signed-off-by: Wang Weidong <wangweidong1@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* net/i40e: Avoid double setting of NETIF_F_SG for the HW encapsulation ↵Or Gerlitz2014-03-181-3/+2
| | | | | | | | | feature mask The networking core does it for the driver during registration time. Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* i40evf: Rename i40e_ptype_lookup i40evf_ptype_lookupEric W Biederman2014-03-182-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | When compiling the i40e and the i40evf driver into the same kernel I get: LD drivers/net/ethernet/intel/built-in.o drivers/net/ethernet/intel/i40evf/built-in.o:(.data+0x300): multiple definition of `i40e_ptype_lookup' drivers/net/ethernet/intel/i40e/built-in.o:(.data+0x780): first defined here make[3]: *** [drivers/net/ethernet/intel/built-in.o] Error 1 make[2]: *** [drivers/net/ethernet/intel] Error 2 make[1]: *** [drivers/net/ethernet/] Error 2 make: *** [sub-make] Error 2 Fix this by renaming the i40evf version of this structure from i40e_ptype_lookup to i40evf_ptype_lookup. This build failure was introduced in: commit 206812b5fccb808d1194344eaa942f68f59b2630 Author: Jesse Brandeburg <jesse.brandeburg@intel.com> i40e/i40evf: i40e implementation for skb_set_hash Cc: Jesse Brandeburg <jesse.brandeburg@intel.com> Cc: Catherine Sullivan <catherine.sullivan@intel.com> Signed-off-by: Eric W Biederman <ebiederm@xmission.com> Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* e1000e: fix the build error when PM is disabledKevin Hao2014-03-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | The commit 2800209994f8 (e1000e: Refactor PM flows) changed the SET_SYSTEM_SLEEP_PM_OPS to open-coded assignment, but forgot to protect them with CONFIG_PM_SLEEP. Then cause the following build error when PM is disabled: drivers/net/ethernet/intel/e1000e/netdev.c:7079:13: error: 'e1000e_pm_suspend' undeclared here (not in a function) .suspend = e1000e_pm_suspend, ^ drivers/net/ethernet/intel/e1000e/netdev.c:7080:13: error: 'e1000e_pm_resume' undeclared here (not in a function) .resume = e1000e_pm_resume, ^ drivers/net/ethernet/intel/e1000e/netdev.c:7082:11: error: 'e1000e_pm_thaw' undeclared here (not in a function) .thaw = e1000e_pm_thaw, ^ Signed-off-by: Kevin Hao <haokexin@gmail.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* igb: remove references to long gone command line parametersFernando Luis Vazquez Cao2014-03-181-4/+2
| | | | | | | | | | | Command line parameters QueuePairs, Node, EEE, DMAC and InterruptThrottleRate do not exist these days. Remove all references to them in the Documentation folder and update code comments. Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* net: ethernet: Change Ethernet Makefile and Kconfig for Altera TSE driverVince Bridgers2014-03-182-0/+2
| | | | | | | | This patch changes the Ethernet Makefile and Kconfig files to add the Altera Ethernet driver component. Signed-off-by: Vince Bridgers <vbridgers2013@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* Altera TSE: Add Altera Ethernet Driver Makefile and KconfigVince Bridgers2014-03-182-0/+15
| | | | | | | | This patch adds the Altera Triple Speed Ethernet Makfile and Kconfig file. Signed-off-by: Vince Bridgers <vbridgers2013@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* Altera TSE: Add main and header file for Altera Ethernet DriverVince Bridgers2014-03-182-0/+2029
| | | | | | | | This patch adds the main driver and header file for the Altera Triple Speed Ethernet driver. Signed-off-by: Vince Bridgers <vbridgers2013@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* Altera TSE: Add Miscellaneous Files for Altera Ethernet DriverVince Bridgers2014-03-183-0/+298
| | | | | | | | This patch adds miscellaneous files for the Altera Ethernet Driver, including ethtool support. Signed-off-by: Vince Bridgers <vbridgers2013@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* Altera TSE: Add Altera Ethernet Driver SGDMA file componentsVince Bridgers2014-03-183-0/+670
| | | | | | | | This patch adds the SGDMA soft IP support for the Altera Triple Speed Ethernet driver. Signed-off-by: Vince Bridgers <vbridgers2013@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* Altera TSE: Add Altera Ethernet Driver MSGDMA File ComponentsVince Bridgers2014-03-183-0/+403
| | | | | | | | This patch adds the MSGDMA soft IP support for the Altera Triple Speed Ethernet driver. Signed-off-by: Vince Bridgers <vbridgers2013@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* sh_eth: fold netif_msg_*() and netdev_*() calls into netif_*() invocationsSergei Shtylyov2014-03-171-22/+11
| | | | | | | | | Now that we call netdev_*() under netif_msg_*() checks, we can fold these into netif_*() macro invocations. Suggested-by: Joe Perches <joe@perches.com> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* sh_eth: convert dev_*() to netdev_*() callsSergei Shtylyov2014-03-171-23/+24
| | | | | | | | | Convert dev_*(&ndev->dev, ...) to netdev_*(ndev, ...) calls since they are a bit shorter and at the same time give more information on a device. Suggested-by: Joe Perches <joe@perches.com> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* sh_eth: convert pr_*() to netdev_*() callsSergei Shtylyov2014-03-171-4/+5
| | | | | | | | Convert pr_*() to netdev_*() calls as the latter provide info on a device. Suggested-by: Joe Perches <joe@perches.com> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* sh_eth: exit probe with unknown register layoutSergei Shtylyov2014-03-171-1/+6
| | | | | | | | | | | | Exit the driver's probe() method when the register layout is unknown as the driver would cause kernel oops in this case anyway. While at it, move the corresponding error message printout and convert it from pr_err() to dev_err(). Suggested-by: Joe Perches <joe@perches.com> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* sfc: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-152-0/+6
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* vxge: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-0/+4
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* tc35815: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-0/+3
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* tilepro: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-0/+3
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* tilegx: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-0/+3
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* s2io: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-0/+3
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* mlx4: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-0/+3
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* sky2: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-0/+3
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* ibmveth: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-2/+2
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* fs_enet: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-0/+3
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* enic: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-6/+8
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* amd8111e: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-0/+3
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* ixgbe: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-2/+2
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* igb: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-2/+2
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* i40e: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-0/+3
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* bnx2x: Don't receive packets when the napi budget == 0Eric W. Biederman2014-03-151-0/+2
| | | | | | | | | | | Processing any incoming packets with a with a napi budget of 0 is incorrect driver behavior. This matters as netpoll will shortly call drivers with a budget of 0 to avoid receive packet processing happening in hard irq context. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* cxgb4/iw_cxgb4: Doorbell Drop Avoidance Bug FixesSteve Wise2014-03-153-38/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current logic suffers from a slow response time to disable user DB usage, and also fails to avoid DB FIFO drops under heavy load. This commit fixes these deficiencies and makes the avoidance logic more optimal. This is done by more efficiently notifying the ULDs of potential DB problems, and implements a smoother flow control algorithm in iw_cxgb4, which is the ULD that puts the most load on the DB fifo. Design: cxgb4: Direct ULD callback from the DB FULL/DROP interrupt handler. This allows the ULD to stop doing user DB writes as quickly as possible. While user DB usage is disabled, the LLD will accumulate DB write events for its queues. Then once DB usage is reenabled, a single DB write is done for each queue with its accumulated write count. This reduces the load put on the DB fifo when reenabling. iw_cxgb4: Instead of marking each qp to indicate DB writes are disabled, we create a device-global status page that each user process maps. This allows iw_cxgb4 to only set this single bit to disable all DB writes for all user QPs vs traversing the idr of all the active QPs. If the libcxgb4 doesn't support this, then we fall back to the old approach of marking each QP. Thus we allow the new driver to work with an older libcxgb4. When the LLD upcalls iw_cxgb4 indicating DB FULL, we disable all DB writes via the status page and transition the DB state to STOPPED. As user processes see that DB writes are disabled, they call into iw_cxgb4 to submit their DB write events. Since the DB state is in STOPPED, the QP trying to write gets enqueued on a new DB "flow control" list. As subsequent DB writes are submitted for this flow controlled QP, the amount of writes are accumulated for each QP on the flow control list. So all the user QPs that are actively ringing the DB get put on this list and the number of writes they request are accumulated. When the LLD upcalls iw_cxgb4 indicating DB EMPTY, which is in a workq context, we change the DB state to FLOW_CONTROL, and begin resuming all the QPs that are on the flow control list. This logic runs on until the flow control list is empty or we exit FLOW_CONTROL mode (due to a DB DROP upcall, for example). QPs are removed from this list, and their accumulated DB write counts written to the DB FIFO. Sets of QPs, called chunks in the code, are removed at one time. The chunk size is 64. So 64 QPs are resumed at a time, and before the next chunk is resumed, the logic waits (blocks) for the DB FIFO to drain. This prevents resuming to quickly and overflowing the FIFO. Once the flow control list is empty, the db state transitions back to NORMAL and user QPs are again allowed to write directly to the user DB register. The algorithm is designed such that if the DB write load is high enough, then all the DB writes get submitted by the kernel using this flow controlled approach to avoid DB drops. As the load lightens though, we resume to normal DB writes directly by user applications. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* cxgb4/iw_cxgb4: Treat CPL_ERR_KEEPALV_NEG_ADVICE as negative adviceSteve Wise2014-03-151-0/+1
| | | | | | | Based on original work by Anand Priyadarshee <anandp@chelsio.com>. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* net: Replace u64_stats_fetch_begin_bh to u64_stats_fetch_begin_irqEric W. Biederman2014-03-1518-80/+80
| | | | | | | | | | | | | | | Replace the bh safe variant with the hard irq safe variant. We need a hard irq safe variant to deal with netpoll transmitting packets from hard irq context, and we need it in most if not all of the places using the bh safe variant. Except on 32bit uni-processor the code is exactly the same so don't bother with a bh variant, just have a hard irq safe variant that everyone can use. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/netDavid S. Miller2014-03-1516-96/+165
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: drivers/net/usb/r8152.c drivers/net/xen-netback/netback.c Both the r8152 and netback conflicts were simple overlapping changes. Signed-off-by: David S. Miller <davem@davemloft.net>
| * eth: fec: Fix lost promiscuous mode after reconnecting cableStefan Wahren2014-03-131-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the Freescale fec is in promiscuous mode and network cable is reconnected then the promiscuous mode get lost. The problem is caused by a too soon call of set_multicast_list to re-enable promisc mode. The FEC_R_CNTRL register changes are overwritten by fec_restart. This patch fixes this by moving the call behind the init of FEC_R_CNTRL register in fec_restart. Successful tested on a i.MX28 board. Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * net/mlx4_en: Deregister multicast vxlan steering rules when going downOr Gerlitz2014-03-131-0/+2
| | | | | | | | | | | | | | | | When mlx4_en_stop_port() is called, we need to deregister also the tunnel steering rules that relate to multicast. Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>