diff options
author | David S. Miller <davem@davemloft.net> | 2015-02-05 17:33:28 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-02-05 17:33:28 -0500 |
commit | 6e03f896b52cd2ca88942170c5c9c407ec0ede69 (patch) | |
tree | 48ca9a6efa5f99819667538838bab3679416f92c /drivers/net/ethernet/qlogic/qlcnic | |
parent | db79a621835ee91d3e10177abd97f48e0a4dcf9b (diff) | |
parent | 9d82f5eb3376cbae96ad36a063a9390de1694546 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/vxlan.c
drivers/vhost/net.c
include/linux/if_vlan.h
net/core/dev.c
The net/core/dev.c conflict was the overlap of one commit marking an
existing function static whilst another was adding a new function.
In the include/linux/if_vlan.h case, the type used for a local
variable was changed in 'net', whereas the function got rewritten
to fix a stacked vlan bug in 'net-next'.
In drivers/vhost/net.c, Al Viro's iov_iter conversions in 'net-next'
overlapped with an endainness fix for VHOST 1.0 in 'net'.
In drivers/net/vxlan.c, vxlan_find_vni() added a 'flags' parameter
in 'net-next' whereas in 'net' there was a bug fix to pass in the
correct network namespace pointer in calls to this function.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic/qlcnic')
-rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c index 4d2496f28b85..d4b5085a21fa 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c | |||
@@ -968,7 +968,12 @@ static int qlcnic_poll(struct napi_struct *napi, int budget) | |||
968 | tx_complete = qlcnic_process_cmd_ring(adapter, tx_ring, | 968 | tx_complete = qlcnic_process_cmd_ring(adapter, tx_ring, |
969 | budget); | 969 | budget); |
970 | work_done = qlcnic_process_rcv_ring(sds_ring, budget); | 970 | work_done = qlcnic_process_rcv_ring(sds_ring, budget); |
971 | if ((work_done < budget) && tx_complete) { | 971 | |
972 | /* Check if we need a repoll */ | ||
973 | if (!tx_complete) | ||
974 | work_done = budget; | ||
975 | |||
976 | if (work_done < budget) { | ||
972 | napi_complete(&sds_ring->napi); | 977 | napi_complete(&sds_ring->napi); |
973 | if (test_bit(__QLCNIC_DEV_UP, &adapter->state)) { | 978 | if (test_bit(__QLCNIC_DEV_UP, &adapter->state)) { |
974 | qlcnic_enable_sds_intr(adapter, sds_ring); | 979 | qlcnic_enable_sds_intr(adapter, sds_ring); |
@@ -993,6 +998,9 @@ static int qlcnic_tx_poll(struct napi_struct *napi, int budget) | |||
993 | napi_complete(&tx_ring->napi); | 998 | napi_complete(&tx_ring->napi); |
994 | if (test_bit(__QLCNIC_DEV_UP, &adapter->state)) | 999 | if (test_bit(__QLCNIC_DEV_UP, &adapter->state)) |
995 | qlcnic_enable_tx_intr(adapter, tx_ring); | 1000 | qlcnic_enable_tx_intr(adapter, tx_ring); |
1001 | } else { | ||
1002 | /* As qlcnic_process_cmd_ring() returned 0, we need a repoll*/ | ||
1003 | work_done = budget; | ||
996 | } | 1004 | } |
997 | 1005 | ||
998 | return work_done; | 1006 | return work_done; |
@@ -1951,7 +1959,12 @@ static int qlcnic_83xx_msix_sriov_vf_poll(struct napi_struct *napi, int budget) | |||
1951 | 1959 | ||
1952 | tx_complete = qlcnic_process_cmd_ring(adapter, tx_ring, budget); | 1960 | tx_complete = qlcnic_process_cmd_ring(adapter, tx_ring, budget); |
1953 | work_done = qlcnic_83xx_process_rcv_ring(sds_ring, budget); | 1961 | work_done = qlcnic_83xx_process_rcv_ring(sds_ring, budget); |
1954 | if ((work_done < budget) && tx_complete) { | 1962 | |
1963 | /* Check if we need a repoll */ | ||
1964 | if (!tx_complete) | ||
1965 | work_done = budget; | ||
1966 | |||
1967 | if (work_done < budget) { | ||
1955 | napi_complete(&sds_ring->napi); | 1968 | napi_complete(&sds_ring->napi); |
1956 | qlcnic_enable_sds_intr(adapter, sds_ring); | 1969 | qlcnic_enable_sds_intr(adapter, sds_ring); |
1957 | } | 1970 | } |
@@ -1974,7 +1987,12 @@ static int qlcnic_83xx_poll(struct napi_struct *napi, int budget) | |||
1974 | 1987 | ||
1975 | tx_complete = qlcnic_process_cmd_ring(adapter, tx_ring, budget); | 1988 | tx_complete = qlcnic_process_cmd_ring(adapter, tx_ring, budget); |
1976 | work_done = qlcnic_83xx_process_rcv_ring(sds_ring, budget); | 1989 | work_done = qlcnic_83xx_process_rcv_ring(sds_ring, budget); |
1977 | if ((work_done < budget) && tx_complete) { | 1990 | |
1991 | /* Check if we need a repoll */ | ||
1992 | if (!tx_complete) | ||
1993 | work_done = budget; | ||
1994 | |||
1995 | if (work_done < budget) { | ||
1978 | napi_complete(&sds_ring->napi); | 1996 | napi_complete(&sds_ring->napi); |
1979 | qlcnic_enable_sds_intr(adapter, sds_ring); | 1997 | qlcnic_enable_sds_intr(adapter, sds_ring); |
1980 | } | 1998 | } |
@@ -1996,6 +2014,9 @@ static int qlcnic_83xx_msix_tx_poll(struct napi_struct *napi, int budget) | |||
1996 | napi_complete(&tx_ring->napi); | 2014 | napi_complete(&tx_ring->napi); |
1997 | if (test_bit(__QLCNIC_DEV_UP , &adapter->state)) | 2015 | if (test_bit(__QLCNIC_DEV_UP , &adapter->state)) |
1998 | qlcnic_enable_tx_intr(adapter, tx_ring); | 2016 | qlcnic_enable_tx_intr(adapter, tx_ring); |
2017 | } else { | ||
2018 | /* need a repoll */ | ||
2019 | work_done = budget; | ||
1999 | } | 2020 | } |
2000 | 2021 | ||
2001 | return work_done; | 2022 | return work_done; |