diff options
27 files changed, 176 insertions, 174 deletions
diff --git a/drivers/net/ethernet/intel/i40e/Makefile b/drivers/net/ethernet/intel/i40e/Makefile index 479b2c4e552d..6ec1a795f184 100644 --- a/drivers/net/ethernet/intel/i40e/Makefile +++ b/drivers/net/ethernet/intel/i40e/Makefile | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | ################################################################################ | 1 | ################################################################################ |
| 2 | # | 2 | # |
| 3 | # Intel Ethernet Controller XL710 Family Linux Driver | 3 | # Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | # Copyright(c) 2013 Intel Corporation. | 4 | # Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | # | 5 | # |
| 6 | # This program is free software; you can redistribute it and/or modify it | 6 | # This program is free software; you can redistribute it and/or modify it |
| 7 | # under the terms and conditions of the GNU General Public License, | 7 | # under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | # more details. | 13 | # more details. |
| 14 | # | 14 | # |
| 15 | # You should have received a copy of the GNU General Public License along with | 15 | # You should have received a copy of the GNU General Public License along |
| 16 | # this program; if not, write to the Free Software Foundation, Inc., | 16 | # with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | # 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | # | 17 | # |
| 19 | # The full GNU General Public License is included in this distribution in | 18 | # The full GNU General Public License is included in this distribution in |
| 20 | # the file called "COPYING". | 19 | # the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h index 09d92d00cb13..4d4cdbf6fad7 100644 --- a/drivers/net/ethernet/intel/i40e/i40e.h +++ b/drivers/net/ethernet/intel/i40e/i40e.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq.c b/drivers/net/ethernet/intel/i40e/i40e_adminq.c index 2b320841a108..c75aa2d07491 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_adminq.c +++ b/drivers/net/ethernet/intel/i40e/i40e_adminq.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
| @@ -584,6 +583,9 @@ i40e_status i40e_init_adminq(struct i40e_hw *hw) | |||
| 584 | goto init_adminq_free_arq; | 583 | goto init_adminq_free_arq; |
| 585 | } | 584 | } |
| 586 | 585 | ||
| 586 | /* pre-emptive resource lock release */ | ||
| 587 | i40e_aq_release_resource(hw, I40E_NVM_RESOURCE_ID, 0, NULL); | ||
| 588 | |||
| 587 | ret_code = i40e_aq_set_hmc_resource_profile(hw, | 589 | ret_code = i40e_aq_set_hmc_resource_profile(hw, |
| 588 | I40E_HMC_PROFILE_DEFAULT, | 590 | I40E_HMC_PROFILE_DEFAULT, |
| 589 | 0, | 591 | 0, |
| @@ -862,7 +864,7 @@ void i40e_fill_default_direct_cmd_desc(struct i40e_aq_desc *desc, | |||
| 862 | /* zero out the desc */ | 864 | /* zero out the desc */ |
| 863 | memset((void *)desc, 0, sizeof(struct i40e_aq_desc)); | 865 | memset((void *)desc, 0, sizeof(struct i40e_aq_desc)); |
| 864 | desc->opcode = cpu_to_le16(opcode); | 866 | desc->opcode = cpu_to_le16(opcode); |
| 865 | desc->flags = cpu_to_le16(I40E_AQ_FLAG_EI | I40E_AQ_FLAG_SI); | 867 | desc->flags = cpu_to_le16(I40E_AQ_FLAG_SI); |
| 866 | } | 868 | } |
| 867 | 869 | ||
| 868 | /** | 870 | /** |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq.h b/drivers/net/ethernet/intel/i40e/i40e_adminq.h index 21801c3d65dd..993f7685a911 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_adminq.h +++ b/drivers/net/ethernet/intel/i40e/i40e_adminq.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h b/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h index 007508772cf0..c009eb47058a 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h +++ b/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_alloc.h b/drivers/net/ethernet/intel/i40e/i40e_alloc.h index 3b1cc214f9dc..926811ad44ac 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_alloc.h +++ b/drivers/net/ethernet/intel/i40e/i40e_alloc.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c index d564910b4f58..807312bb62a2 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_common.c +++ b/drivers/net/ethernet/intel/i40e/i40e_common.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
| @@ -255,8 +254,11 @@ i40e_status i40e_aq_mac_address_write(struct i40e_hw *hw, | |||
| 255 | i40e_fill_default_direct_cmd_desc(&desc, | 254 | i40e_fill_default_direct_cmd_desc(&desc, |
| 256 | i40e_aqc_opc_mac_address_write); | 255 | i40e_aqc_opc_mac_address_write); |
| 257 | cmd_data->command_flags = cpu_to_le16(flags); | 256 | cmd_data->command_flags = cpu_to_le16(flags); |
| 258 | memcpy(&cmd_data->mac_sal, &mac_addr[0], 4); | 257 | cmd_data->mac_sah = cpu_to_le16((u16)mac_addr[0] << 8 | mac_addr[1]); |
| 259 | memcpy(&cmd_data->mac_sah, &mac_addr[4], 2); | 258 | cmd_data->mac_sal = cpu_to_le32(((u32)mac_addr[2] << 24) | |
| 259 | ((u32)mac_addr[3] << 16) | | ||
| 260 | ((u32)mac_addr[4] << 8) | | ||
| 261 | mac_addr[5]); | ||
| 260 | 262 | ||
| 261 | status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); | 263 | status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); |
| 262 | 264 | ||
diff --git a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c index 125f758a03ac..0220b18b2b18 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c +++ b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
| @@ -516,10 +515,10 @@ static void i40e_dbg_dump_vsi_seid(struct i40e_pf *pf, int seid) | |||
| 516 | rx_ring->stats.bytes, | 515 | rx_ring->stats.bytes, |
| 517 | rx_ring->rx_stats.non_eop_descs); | 516 | rx_ring->rx_stats.non_eop_descs); |
| 518 | dev_info(&pf->pdev->dev, | 517 | dev_info(&pf->pdev->dev, |
| 519 | " rx_rings[%i]: rx_stats: alloc_rx_page_failed = %lld, alloc_rx_buff_failed = %lld\n", | 518 | " rx_rings[%i]: rx_stats: alloc_page_failed = %lld, alloc_buff_failed = %lld\n", |
| 520 | i, | 519 | i, |
| 521 | rx_ring->rx_stats.alloc_rx_page_failed, | 520 | rx_ring->rx_stats.alloc_page_failed, |
| 522 | rx_ring->rx_stats.alloc_rx_buff_failed); | 521 | rx_ring->rx_stats.alloc_buff_failed); |
| 523 | dev_info(&pf->pdev->dev, | 522 | dev_info(&pf->pdev->dev, |
| 524 | " rx_rings[%i]: size = %i, dma = 0x%08lx\n", | 523 | " rx_rings[%i]: size = %i, dma = 0x%08lx\n", |
| 525 | i, rx_ring->size, | 524 | i, rx_ring->size, |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_diag.c b/drivers/net/ethernet/intel/i40e/i40e_diag.c index 6a1657e62418..b2380daef8c1 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_diag.c +++ b/drivers/net/ethernet/intel/i40e/i40e_diag.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_diag.h b/drivers/net/ethernet/intel/i40e/i40e_diag.h index d1fc68cd6c94..0b5911652084 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_diag.h +++ b/drivers/net/ethernet/intel/i40e/i40e_diag.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c index 42c36d18e8c6..b886ee5bd99d 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
| @@ -1244,6 +1243,7 @@ static int i40e_set_rss_hash_opt(struct i40e_pf *pf, struct ethtool_rxnfc *nfc) | |||
| 1244 | } | 1243 | } |
| 1245 | 1244 | ||
| 1246 | #define IP_HEADER_OFFSET 14 | 1245 | #define IP_HEADER_OFFSET 14 |
| 1246 | #define I40E_UDPIP_DUMMY_PACKET_LEN 42 | ||
| 1247 | /** | 1247 | /** |
| 1248 | * i40e_add_del_fdir_udpv4 - Add/Remove UDPv4 Flow Director filters for | 1248 | * i40e_add_del_fdir_udpv4 - Add/Remove UDPv4 Flow Director filters for |
| 1249 | * a specific flow spec | 1249 | * a specific flow spec |
| @@ -1264,6 +1264,12 @@ static int i40e_add_del_fdir_udpv4(struct i40e_vsi *vsi, | |||
| 1264 | bool err = false; | 1264 | bool err = false; |
| 1265 | int ret; | 1265 | int ret; |
| 1266 | int i; | 1266 | int i; |
| 1267 | char packet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0, | ||
| 1268 | 0x45, 0, 0, 0x1c, 0, 0, 0x40, 0, 0x40, 0x11, | ||
| 1269 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 1270 | 0, 0, 0, 0, 0, 0, 0, 0}; | ||
| 1271 | |||
| 1272 | memcpy(fd_data->raw_packet, packet, I40E_UDPIP_DUMMY_PACKET_LEN); | ||
| 1267 | 1273 | ||
| 1268 | ip = (struct iphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET); | 1274 | ip = (struct iphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET); |
| 1269 | udp = (struct udphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET | 1275 | udp = (struct udphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET |
| @@ -1294,6 +1300,7 @@ static int i40e_add_del_fdir_udpv4(struct i40e_vsi *vsi, | |||
| 1294 | return err ? -EOPNOTSUPP : 0; | 1300 | return err ? -EOPNOTSUPP : 0; |
| 1295 | } | 1301 | } |
| 1296 | 1302 | ||
| 1303 | #define I40E_TCPIP_DUMMY_PACKET_LEN 54 | ||
| 1297 | /** | 1304 | /** |
| 1298 | * i40e_add_del_fdir_tcpv4 - Add/Remove TCPv4 Flow Director filters for | 1305 | * i40e_add_del_fdir_tcpv4 - Add/Remove TCPv4 Flow Director filters for |
| 1299 | * a specific flow spec | 1306 | * a specific flow spec |
| @@ -1313,6 +1320,14 @@ static int i40e_add_del_fdir_tcpv4(struct i40e_vsi *vsi, | |||
| 1313 | struct iphdr *ip; | 1320 | struct iphdr *ip; |
| 1314 | bool err = false; | 1321 | bool err = false; |
| 1315 | int ret; | 1322 | int ret; |
| 1323 | /* Dummy packet */ | ||
| 1324 | char packet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0, | ||
| 1325 | 0x45, 0, 0, 0x28, 0, 0, 0x40, 0, 0x40, 0x6, | ||
| 1326 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 1327 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 1328 | 0x80, 0x11, 0x0, 0x72, 0, 0, 0, 0}; | ||
| 1329 | |||
| 1330 | memcpy(fd_data->raw_packet, packet, I40E_TCPIP_DUMMY_PACKET_LEN); | ||
| 1316 | 1331 | ||
| 1317 | ip = (struct iphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET); | 1332 | ip = (struct iphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET); |
| 1318 | tcp = (struct tcphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET | 1333 | tcp = (struct tcphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET |
| @@ -1320,6 +1335,8 @@ static int i40e_add_del_fdir_tcpv4(struct i40e_vsi *vsi, | |||
| 1320 | 1335 | ||
| 1321 | ip->daddr = fsp->h_u.tcp_ip4_spec.ip4dst; | 1336 | ip->daddr = fsp->h_u.tcp_ip4_spec.ip4dst; |
| 1322 | tcp->dest = fsp->h_u.tcp_ip4_spec.pdst; | 1337 | tcp->dest = fsp->h_u.tcp_ip4_spec.pdst; |
| 1338 | ip->saddr = fsp->h_u.tcp_ip4_spec.ip4src; | ||
| 1339 | tcp->source = fsp->h_u.tcp_ip4_spec.psrc; | ||
| 1323 | 1340 | ||
| 1324 | fd_data->pctype = I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN; | 1341 | fd_data->pctype = I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN; |
| 1325 | ret = i40e_program_fdir_filter(fd_data, pf, add); | 1342 | ret = i40e_program_fdir_filter(fd_data, pf, add); |
| @@ -1334,9 +1351,6 @@ static int i40e_add_del_fdir_tcpv4(struct i40e_vsi *vsi, | |||
| 1334 | fd_data->pctype, ret); | 1351 | fd_data->pctype, ret); |
| 1335 | } | 1352 | } |
| 1336 | 1353 | ||
| 1337 | ip->saddr = fsp->h_u.tcp_ip4_spec.ip4src; | ||
| 1338 | tcp->source = fsp->h_u.tcp_ip4_spec.psrc; | ||
| 1339 | |||
| 1340 | fd_data->pctype = I40E_FILTER_PCTYPE_NONF_IPV4_TCP; | 1354 | fd_data->pctype = I40E_FILTER_PCTYPE_NONF_IPV4_TCP; |
| 1341 | 1355 | ||
| 1342 | ret = i40e_program_fdir_filter(fd_data, pf, add); | 1356 | ret = i40e_program_fdir_filter(fd_data, pf, add); |
| @@ -1370,6 +1384,7 @@ static int i40e_add_del_fdir_sctpv4(struct i40e_vsi *vsi, | |||
| 1370 | return -EOPNOTSUPP; | 1384 | return -EOPNOTSUPP; |
| 1371 | } | 1385 | } |
| 1372 | 1386 | ||
| 1387 | #define I40E_IP_DUMMY_PACKET_LEN 34 | ||
| 1373 | /** | 1388 | /** |
| 1374 | * i40e_add_del_fdir_ipv4 - Add/Remove IPv4 Flow Director filters for | 1389 | * i40e_add_del_fdir_ipv4 - Add/Remove IPv4 Flow Director filters for |
| 1375 | * a specific flow spec | 1390 | * a specific flow spec |
| @@ -1389,7 +1404,11 @@ static int i40e_add_del_fdir_ipv4(struct i40e_vsi *vsi, | |||
| 1389 | bool err = false; | 1404 | bool err = false; |
| 1390 | int ret; | 1405 | int ret; |
| 1391 | int i; | 1406 | int i; |
| 1407 | char packet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0, | ||
| 1408 | 0x45, 0, 0, 0x14, 0, 0, 0x40, 0, 0x40, 0x10, | ||
| 1409 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; | ||
| 1392 | 1410 | ||
| 1411 | memcpy(fd_data->raw_packet, packet, I40E_IP_DUMMY_PACKET_LEN); | ||
| 1393 | ip = (struct iphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET); | 1412 | ip = (struct iphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET); |
| 1394 | 1413 | ||
| 1395 | ip->saddr = fsp->h_u.usr_ip4_spec.ip4src; | 1414 | ip->saddr = fsp->h_u.usr_ip4_spec.ip4src; |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_hmc.c b/drivers/net/ethernet/intel/i40e/i40e_hmc.c index bcedf3fb1143..76dfef3e0104 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_hmc.c +++ b/drivers/net/ethernet/intel/i40e/i40e_hmc.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_hmc.h b/drivers/net/ethernet/intel/i40e/i40e_hmc.h index aacd42a261e9..72bf30aba150 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_hmc.h +++ b/drivers/net/ethernet/intel/i40e/i40e_hmc.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c b/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c index a695b91c9c79..101ed4107312 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c +++ b/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.h b/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.h index f8afbcb053c5..341de925a298 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.h +++ b/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index f736c4470412..1b792ee592d0 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
| @@ -423,7 +422,7 @@ void i40e_vsi_reset_stats(struct i40e_vsi *vsi) | |||
| 423 | memset(&vsi->net_stats_offsets, 0, sizeof(vsi->net_stats_offsets)); | 422 | memset(&vsi->net_stats_offsets, 0, sizeof(vsi->net_stats_offsets)); |
| 424 | memset(&vsi->eth_stats, 0, sizeof(vsi->eth_stats)); | 423 | memset(&vsi->eth_stats, 0, sizeof(vsi->eth_stats)); |
| 425 | memset(&vsi->eth_stats_offsets, 0, sizeof(vsi->eth_stats_offsets)); | 424 | memset(&vsi->eth_stats_offsets, 0, sizeof(vsi->eth_stats_offsets)); |
| 426 | if (vsi->rx_rings) | 425 | if (vsi->rx_rings && vsi->rx_rings[0]) { |
| 427 | for (i = 0; i < vsi->num_queue_pairs; i++) { | 426 | for (i = 0; i < vsi->num_queue_pairs; i++) { |
| 428 | memset(&vsi->rx_rings[i]->stats, 0 , | 427 | memset(&vsi->rx_rings[i]->stats, 0 , |
| 429 | sizeof(vsi->rx_rings[i]->stats)); | 428 | sizeof(vsi->rx_rings[i]->stats)); |
| @@ -434,6 +433,7 @@ void i40e_vsi_reset_stats(struct i40e_vsi *vsi) | |||
| 434 | memset(&vsi->tx_rings[i]->tx_stats, 0, | 433 | memset(&vsi->tx_rings[i]->tx_stats, 0, |
| 435 | sizeof(vsi->tx_rings[i]->tx_stats)); | 434 | sizeof(vsi->tx_rings[i]->tx_stats)); |
| 436 | } | 435 | } |
| 436 | } | ||
| 437 | vsi->stat_offsets_loaded = false; | 437 | vsi->stat_offsets_loaded = false; |
| 438 | } | 438 | } |
| 439 | 439 | ||
| @@ -786,8 +786,8 @@ void i40e_update_stats(struct i40e_vsi *vsi) | |||
| 786 | } while (u64_stats_fetch_retry_bh(&p->syncp, start)); | 786 | } while (u64_stats_fetch_retry_bh(&p->syncp, start)); |
| 787 | rx_b += bytes; | 787 | rx_b += bytes; |
| 788 | rx_p += packets; | 788 | rx_p += packets; |
| 789 | rx_buf += p->rx_stats.alloc_rx_buff_failed; | 789 | rx_buf += p->rx_stats.alloc_buff_failed; |
| 790 | rx_page += p->rx_stats.alloc_rx_page_failed; | 790 | rx_page += p->rx_stats.alloc_page_failed; |
| 791 | } | 791 | } |
| 792 | rcu_read_unlock(); | 792 | rcu_read_unlock(); |
| 793 | vsi->tx_restart = tx_restart; | 793 | vsi->tx_restart = tx_restart; |
| @@ -2068,8 +2068,11 @@ static void i40e_vsi_free_tx_resources(struct i40e_vsi *vsi) | |||
| 2068 | { | 2068 | { |
| 2069 | int i; | 2069 | int i; |
| 2070 | 2070 | ||
| 2071 | if (!vsi->tx_rings) | ||
| 2072 | return; | ||
| 2073 | |||
| 2071 | for (i = 0; i < vsi->num_queue_pairs; i++) | 2074 | for (i = 0; i < vsi->num_queue_pairs; i++) |
| 2072 | if (vsi->tx_rings[i]->desc) | 2075 | if (vsi->tx_rings[i] && vsi->tx_rings[i]->desc) |
| 2073 | i40e_free_tx_resources(vsi->tx_rings[i]); | 2076 | i40e_free_tx_resources(vsi->tx_rings[i]); |
| 2074 | } | 2077 | } |
| 2075 | 2078 | ||
| @@ -2102,8 +2105,11 @@ static void i40e_vsi_free_rx_resources(struct i40e_vsi *vsi) | |||
| 2102 | { | 2105 | { |
| 2103 | int i; | 2106 | int i; |
| 2104 | 2107 | ||
| 2108 | if (!vsi->rx_rings) | ||
| 2109 | return; | ||
| 2110 | |||
| 2105 | for (i = 0; i < vsi->num_queue_pairs; i++) | 2111 | for (i = 0; i < vsi->num_queue_pairs; i++) |
| 2106 | if (vsi->rx_rings[i]->desc) | 2112 | if (vsi->rx_rings[i] && vsi->rx_rings[i]->desc) |
| 2107 | i40e_free_rx_resources(vsi->rx_rings[i]); | 2113 | i40e_free_rx_resources(vsi->rx_rings[i]); |
| 2108 | } | 2114 | } |
| 2109 | 2115 | ||
| @@ -2758,16 +2764,16 @@ static irqreturn_t i40e_intr(int irq, void *data) | |||
| 2758 | { | 2764 | { |
| 2759 | struct i40e_pf *pf = (struct i40e_pf *)data; | 2765 | struct i40e_pf *pf = (struct i40e_pf *)data; |
| 2760 | struct i40e_hw *hw = &pf->hw; | 2766 | struct i40e_hw *hw = &pf->hw; |
| 2767 | irqreturn_t ret = IRQ_NONE; | ||
| 2761 | u32 icr0, icr0_remaining; | 2768 | u32 icr0, icr0_remaining; |
| 2762 | u32 val, ena_mask; | 2769 | u32 val, ena_mask; |
| 2763 | 2770 | ||
| 2764 | icr0 = rd32(hw, I40E_PFINT_ICR0); | 2771 | icr0 = rd32(hw, I40E_PFINT_ICR0); |
| 2772 | ena_mask = rd32(hw, I40E_PFINT_ICR0_ENA); | ||
| 2765 | 2773 | ||
| 2766 | /* if sharing a legacy IRQ, we might get called w/o an intr pending */ | 2774 | /* if sharing a legacy IRQ, we might get called w/o an intr pending */ |
| 2767 | if ((icr0 & I40E_PFINT_ICR0_INTEVENT_MASK) == 0) | 2775 | if ((icr0 & I40E_PFINT_ICR0_INTEVENT_MASK) == 0) |
| 2768 | return IRQ_NONE; | 2776 | goto enable_intr; |
| 2769 | |||
| 2770 | ena_mask = rd32(hw, I40E_PFINT_ICR0_ENA); | ||
| 2771 | 2777 | ||
| 2772 | /* if interrupt but no bits showing, must be SWINT */ | 2778 | /* if interrupt but no bits showing, must be SWINT */ |
| 2773 | if (((icr0 & ~I40E_PFINT_ICR0_INTEVENT_MASK) == 0) || | 2779 | if (((icr0 & ~I40E_PFINT_ICR0_INTEVENT_MASK) == 0) || |
| @@ -2843,7 +2849,9 @@ static irqreturn_t i40e_intr(int irq, void *data) | |||
| 2843 | } | 2849 | } |
| 2844 | ena_mask &= ~icr0_remaining; | 2850 | ena_mask &= ~icr0_remaining; |
| 2845 | } | 2851 | } |
| 2852 | ret = IRQ_HANDLED; | ||
| 2846 | 2853 | ||
| 2854 | enable_intr: | ||
| 2847 | /* re-enable interrupt causes */ | 2855 | /* re-enable interrupt causes */ |
| 2848 | wr32(hw, I40E_PFINT_ICR0_ENA, ena_mask); | 2856 | wr32(hw, I40E_PFINT_ICR0_ENA, ena_mask); |
| 2849 | if (!test_bit(__I40E_DOWN, &pf->state)) { | 2857 | if (!test_bit(__I40E_DOWN, &pf->state)) { |
| @@ -2851,7 +2859,7 @@ static irqreturn_t i40e_intr(int irq, void *data) | |||
| 2851 | i40e_irq_dynamic_enable_icr0(pf); | 2859 | i40e_irq_dynamic_enable_icr0(pf); |
| 2852 | } | 2860 | } |
| 2853 | 2861 | ||
| 2854 | return IRQ_HANDLED; | 2862 | return ret; |
| 2855 | } | 2863 | } |
| 2856 | 2864 | ||
| 2857 | /** | 2865 | /** |
| @@ -4514,10 +4522,13 @@ static void i40e_clean_adminq_subtask(struct i40e_pf *pf) | |||
| 4514 | dev_info(&pf->pdev->dev, "ARQ LAN queue overflow event received\n"); | 4522 | dev_info(&pf->pdev->dev, "ARQ LAN queue overflow event received\n"); |
| 4515 | i40e_handle_lan_overflow_event(pf, &event); | 4523 | i40e_handle_lan_overflow_event(pf, &event); |
| 4516 | break; | 4524 | break; |
| 4525 | case i40e_aqc_opc_send_msg_to_peer: | ||
| 4526 | dev_info(&pf->pdev->dev, "ARQ: Msg from other pf\n"); | ||
| 4527 | break; | ||
| 4517 | default: | 4528 | default: |
| 4518 | dev_info(&pf->pdev->dev, | 4529 | dev_info(&pf->pdev->dev, |
| 4519 | "ARQ Error: Unknown event %d received\n", | 4530 | "ARQ Error: Unknown event 0x%04x received\n", |
| 4520 | event.desc.opcode); | 4531 | opcode); |
| 4521 | break; | 4532 | break; |
| 4522 | } | 4533 | } |
| 4523 | } while (pending && (i++ < pf->adminq_work_limit)); | 4534 | } while (pending && (i++ < pf->adminq_work_limit)); |
| @@ -4647,7 +4658,7 @@ static int i40e_get_capabilities(struct i40e_pf *pf) | |||
| 4647 | } | 4658 | } |
| 4648 | } while (err); | 4659 | } while (err); |
| 4649 | 4660 | ||
| 4650 | if (pf->hw.revision_id == 0 && pf->hw.func_caps.npar_enable) { | 4661 | if (pf->hw.revision_id == 0 && (pf->flags & I40E_FLAG_MFP_ENABLED)) { |
| 4651 | pf->hw.func_caps.num_msix_vectors += 1; | 4662 | pf->hw.func_caps.num_msix_vectors += 1; |
| 4652 | pf->hw.func_caps.num_tx_qp = | 4663 | pf->hw.func_caps.num_tx_qp = |
| 4653 | min_t(int, pf->hw.func_caps.num_tx_qp, | 4664 | min_t(int, pf->hw.func_caps.num_tx_qp, |
| @@ -4784,7 +4795,7 @@ static int i40e_prep_for_reset(struct i40e_pf *pf) | |||
| 4784 | } | 4795 | } |
| 4785 | 4796 | ||
| 4786 | /** | 4797 | /** |
| 4787 | * i40e_reset_and_rebuild - reset and rebuid using a saved config | 4798 | * i40e_reset_and_rebuild - reset and rebuild using a saved config |
| 4788 | * @pf: board private structure | 4799 | * @pf: board private structure |
| 4789 | * @reinit: if the Main VSI needs to re-initialized. | 4800 | * @reinit: if the Main VSI needs to re-initialized. |
| 4790 | **/ | 4801 | **/ |
| @@ -5348,7 +5359,7 @@ static void i40e_vsi_clear_rings(struct i40e_vsi *vsi) | |||
| 5348 | { | 5359 | { |
| 5349 | int i; | 5360 | int i; |
| 5350 | 5361 | ||
| 5351 | if (vsi->tx_rings[0]) { | 5362 | if (vsi->tx_rings && vsi->tx_rings[0]) { |
| 5352 | for (i = 0; i < vsi->alloc_queue_pairs; i++) { | 5363 | for (i = 0; i < vsi->alloc_queue_pairs; i++) { |
| 5353 | kfree_rcu(vsi->tx_rings[i], rcu); | 5364 | kfree_rcu(vsi->tx_rings[i], rcu); |
| 5354 | vsi->tx_rings[i] = NULL; | 5365 | vsi->tx_rings[i] = NULL; |
| @@ -5763,16 +5774,8 @@ int i40e_reconfig_rss_queues(struct i40e_pf *pf, int queue_count) | |||
| 5763 | queue_count = rounddown_pow_of_two(queue_count); | 5774 | queue_count = rounddown_pow_of_two(queue_count); |
| 5764 | 5775 | ||
| 5765 | if (queue_count != pf->rss_size) { | 5776 | if (queue_count != pf->rss_size) { |
| 5766 | if (pf->queues_left < (queue_count - pf->rss_size)) { | ||
| 5767 | dev_info(&pf->pdev->dev, | ||
| 5768 | "Not enough queues to do RSS on %d queues: remaining queues %d\n", | ||
| 5769 | queue_count, pf->queues_left); | ||
| 5770 | return pf->rss_size; | ||
| 5771 | } | ||
| 5772 | i40e_prep_for_reset(pf); | 5777 | i40e_prep_for_reset(pf); |
| 5773 | 5778 | ||
| 5774 | pf->num_lan_qps += (queue_count - pf->rss_size); | ||
| 5775 | pf->queues_left -= (queue_count - pf->rss_size); | ||
| 5776 | pf->rss_size = queue_count; | 5779 | pf->rss_size = queue_count; |
| 5777 | 5780 | ||
| 5778 | i40e_reset_and_rebuild(pf, true); | 5781 | i40e_reset_and_rebuild(pf, true); |
| @@ -5809,7 +5812,6 @@ static int i40e_sw_init(struct i40e_pf *pf) | |||
| 5809 | pf->flags = I40E_FLAG_RX_CSUM_ENABLED | | 5812 | pf->flags = I40E_FLAG_RX_CSUM_ENABLED | |
| 5810 | I40E_FLAG_MSI_ENABLED | | 5813 | I40E_FLAG_MSI_ENABLED | |
| 5811 | I40E_FLAG_MSIX_ENABLED | | 5814 | I40E_FLAG_MSIX_ENABLED | |
| 5812 | I40E_FLAG_RX_PS_ENABLED | | ||
| 5813 | I40E_FLAG_RX_1BUF_ENABLED; | 5815 | I40E_FLAG_RX_1BUF_ENABLED; |
| 5814 | 5816 | ||
| 5815 | /* Depending on PF configurations, it is possible that the RSS | 5817 | /* Depending on PF configurations, it is possible that the RSS |
| @@ -5825,6 +5827,12 @@ static int i40e_sw_init(struct i40e_pf *pf) | |||
| 5825 | pf->rss_size = 1; | 5827 | pf->rss_size = 1; |
| 5826 | } | 5828 | } |
| 5827 | 5829 | ||
| 5830 | /* MFP mode enabled */ | ||
| 5831 | if (pf->hw.func_caps.npar_enable || pf->hw.func_caps.mfp_mode_1) { | ||
| 5832 | pf->flags |= I40E_FLAG_MFP_ENABLED; | ||
| 5833 | dev_info(&pf->pdev->dev, "MFP mode Enabled\n"); | ||
| 5834 | } | ||
| 5835 | |||
| 5828 | if (pf->hw.func_caps.dcb) | 5836 | if (pf->hw.func_caps.dcb) |
| 5829 | pf->num_tc_qps = I40E_DEFAULT_QUEUES_PER_TC; | 5837 | pf->num_tc_qps = I40E_DEFAULT_QUEUES_PER_TC; |
| 5830 | else | 5838 | else |
| @@ -5853,12 +5861,6 @@ static int i40e_sw_init(struct i40e_pf *pf) | |||
| 5853 | pf->num_vmdq_qps = I40E_DEFAULT_QUEUES_PER_VMDQ; | 5861 | pf->num_vmdq_qps = I40E_DEFAULT_QUEUES_PER_VMDQ; |
| 5854 | } | 5862 | } |
| 5855 | 5863 | ||
| 5856 | /* MFP mode enabled */ | ||
| 5857 | if (pf->hw.func_caps.npar_enable || pf->hw.func_caps.mfp_mode_1) { | ||
| 5858 | pf->flags |= I40E_FLAG_MFP_ENABLED; | ||
| 5859 | dev_info(&pf->pdev->dev, "MFP mode Enabled\n"); | ||
| 5860 | } | ||
| 5861 | |||
| 5862 | #ifdef CONFIG_PCI_IOV | 5864 | #ifdef CONFIG_PCI_IOV |
| 5863 | if (pf->hw.func_caps.num_vfs) { | 5865 | if (pf->hw.func_caps.num_vfs) { |
| 5864 | pf->num_vf_qps = I40E_DEFAULT_QUEUES_PER_VF; | 5866 | pf->num_vf_qps = I40E_DEFAULT_QUEUES_PER_VF; |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_nvm.c b/drivers/net/ethernet/intel/i40e/i40e_nvm.c index e2da0a2784dd..37d66c87abc9 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_nvm.c +++ b/drivers/net/ethernet/intel/i40e/i40e_nvm.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_osdep.h b/drivers/net/ethernet/intel/i40e/i40e_osdep.h index 702c81ba86e3..ecd0f0b663c9 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_osdep.h +++ b/drivers/net/ethernet/intel/i40e/i40e_osdep.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_prototype.h b/drivers/net/ethernet/intel/i40e/i40e_prototype.h index e05d303105a7..c7c3d8231b36 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_prototype.h +++ b/drivers/net/ethernet/intel/i40e/i40e_prototype.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_register.h b/drivers/net/ethernet/intel/i40e/i40e_register.h index d188ec03aff2..1d40f425acf1 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_register.h +++ b/drivers/net/ethernet/intel/i40e/i40e_register.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_status.h b/drivers/net/ethernet/intel/i40e/i40e_status.h index 5e5bcddac573..5f9cac55aa55 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_status.h +++ b/drivers/net/ethernet/intel/i40e/i40e_status.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c index fac4fb37f87b..43d88dd66ed4 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
| @@ -775,7 +774,7 @@ void i40e_alloc_rx_buffers(struct i40e_ring *rx_ring, u16 cleaned_count) | |||
| 775 | skb = netdev_alloc_skb_ip_align(rx_ring->netdev, | 774 | skb = netdev_alloc_skb_ip_align(rx_ring->netdev, |
| 776 | rx_ring->rx_buf_len); | 775 | rx_ring->rx_buf_len); |
| 777 | if (!skb) { | 776 | if (!skb) { |
| 778 | rx_ring->rx_stats.alloc_rx_buff_failed++; | 777 | rx_ring->rx_stats.alloc_buff_failed++; |
| 779 | goto no_buffers; | 778 | goto no_buffers; |
| 780 | } | 779 | } |
| 781 | /* initialize queue mapping */ | 780 | /* initialize queue mapping */ |
| @@ -789,7 +788,7 @@ void i40e_alloc_rx_buffers(struct i40e_ring *rx_ring, u16 cleaned_count) | |||
| 789 | rx_ring->rx_buf_len, | 788 | rx_ring->rx_buf_len, |
| 790 | DMA_FROM_DEVICE); | 789 | DMA_FROM_DEVICE); |
| 791 | if (dma_mapping_error(rx_ring->dev, bi->dma)) { | 790 | if (dma_mapping_error(rx_ring->dev, bi->dma)) { |
| 792 | rx_ring->rx_stats.alloc_rx_buff_failed++; | 791 | rx_ring->rx_stats.alloc_buff_failed++; |
| 793 | bi->dma = 0; | 792 | bi->dma = 0; |
| 794 | goto no_buffers; | 793 | goto no_buffers; |
| 795 | } | 794 | } |
| @@ -799,7 +798,7 @@ void i40e_alloc_rx_buffers(struct i40e_ring *rx_ring, u16 cleaned_count) | |||
| 799 | if (!bi->page) { | 798 | if (!bi->page) { |
| 800 | bi->page = alloc_page(GFP_ATOMIC); | 799 | bi->page = alloc_page(GFP_ATOMIC); |
| 801 | if (!bi->page) { | 800 | if (!bi->page) { |
| 802 | rx_ring->rx_stats.alloc_rx_page_failed++; | 801 | rx_ring->rx_stats.alloc_page_failed++; |
| 803 | goto no_buffers; | 802 | goto no_buffers; |
| 804 | } | 803 | } |
| 805 | } | 804 | } |
| @@ -814,7 +813,7 @@ void i40e_alloc_rx_buffers(struct i40e_ring *rx_ring, u16 cleaned_count) | |||
| 814 | DMA_FROM_DEVICE); | 813 | DMA_FROM_DEVICE); |
| 815 | if (dma_mapping_error(rx_ring->dev, | 814 | if (dma_mapping_error(rx_ring->dev, |
| 816 | bi->page_dma)) { | 815 | bi->page_dma)) { |
| 817 | rx_ring->rx_stats.alloc_rx_page_failed++; | 816 | rx_ring->rx_stats.alloc_page_failed++; |
| 818 | bi->page_dma = 0; | 817 | bi->page_dma = 0; |
| 819 | goto no_buffers; | 818 | goto no_buffers; |
| 820 | } | 819 | } |
| @@ -991,15 +990,15 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget) | |||
| 991 | skb = rx_bi->skb; | 990 | skb = rx_bi->skb; |
| 992 | prefetch(skb->data); | 991 | prefetch(skb->data); |
| 993 | 992 | ||
| 994 | rx_packet_len = (qword & I40E_RXD_QW1_LENGTH_PBUF_MASK) | 993 | rx_packet_len = (qword & I40E_RXD_QW1_LENGTH_PBUF_MASK) >> |
| 995 | >> I40E_RXD_QW1_LENGTH_PBUF_SHIFT; | 994 | I40E_RXD_QW1_LENGTH_PBUF_SHIFT; |
| 996 | rx_header_len = (qword & I40E_RXD_QW1_LENGTH_HBUF_MASK) | 995 | rx_header_len = (qword & I40E_RXD_QW1_LENGTH_HBUF_MASK) >> |
| 997 | >> I40E_RXD_QW1_LENGTH_HBUF_SHIFT; | 996 | I40E_RXD_QW1_LENGTH_HBUF_SHIFT; |
| 998 | rx_sph = (qword & I40E_RXD_QW1_LENGTH_SPH_MASK) | 997 | rx_sph = (qword & I40E_RXD_QW1_LENGTH_SPH_MASK) >> |
| 999 | >> I40E_RXD_QW1_LENGTH_SPH_SHIFT; | 998 | I40E_RXD_QW1_LENGTH_SPH_SHIFT; |
| 1000 | 999 | ||
| 1001 | rx_error = (qword & I40E_RXD_QW1_ERROR_MASK) | 1000 | rx_error = (qword & I40E_RXD_QW1_ERROR_MASK) >> |
| 1002 | >> I40E_RXD_QW1_ERROR_SHIFT; | 1001 | I40E_RXD_QW1_ERROR_SHIFT; |
| 1003 | rx_hbo = rx_error & (1 << I40E_RX_DESC_ERROR_HBO_SHIFT); | 1002 | rx_hbo = rx_error & (1 << I40E_RX_DESC_ERROR_HBO_SHIFT); |
| 1004 | rx_error &= ~(1 << I40E_RX_DESC_ERROR_HBO_SHIFT); | 1003 | rx_error &= ~(1 << I40E_RX_DESC_ERROR_HBO_SHIFT); |
| 1005 | 1004 | ||
| @@ -1115,8 +1114,8 @@ next_desc: | |||
| 1115 | /* use prefetched values */ | 1114 | /* use prefetched values */ |
| 1116 | rx_desc = next_rxd; | 1115 | rx_desc = next_rxd; |
| 1117 | qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len); | 1116 | qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len); |
| 1118 | rx_status = (qword & I40E_RXD_QW1_STATUS_MASK) | 1117 | rx_status = (qword & I40E_RXD_QW1_STATUS_MASK) >> |
| 1119 | >> I40E_RXD_QW1_STATUS_SHIFT; | 1118 | I40E_RXD_QW1_STATUS_SHIFT; |
| 1120 | } | 1119 | } |
| 1121 | 1120 | ||
| 1122 | rx_ring->next_to_clean = i; | 1121 | rx_ring->next_to_clean = i; |
| @@ -1415,10 +1414,10 @@ static int i40e_tso(struct i40e_ring *tx_ring, struct sk_buff *skb, | |||
| 1415 | cd_cmd = I40E_TX_CTX_DESC_TSO; | 1414 | cd_cmd = I40E_TX_CTX_DESC_TSO; |
| 1416 | cd_tso_len = skb->len - *hdr_len; | 1415 | cd_tso_len = skb->len - *hdr_len; |
| 1417 | cd_mss = skb_shinfo(skb)->gso_size; | 1416 | cd_mss = skb_shinfo(skb)->gso_size; |
| 1418 | *cd_type_cmd_tso_mss |= ((u64)cd_cmd << I40E_TXD_CTX_QW1_CMD_SHIFT) | 1417 | *cd_type_cmd_tso_mss |= ((u64)cd_cmd << I40E_TXD_CTX_QW1_CMD_SHIFT) | |
| 1419 | | ((u64)cd_tso_len | 1418 | ((u64)cd_tso_len << |
| 1420 | << I40E_TXD_CTX_QW1_TSO_LEN_SHIFT) | 1419 | I40E_TXD_CTX_QW1_TSO_LEN_SHIFT) | |
| 1421 | | ((u64)cd_mss << I40E_TXD_CTX_QW1_MSS_SHIFT); | 1420 | ((u64)cd_mss << I40E_TXD_CTX_QW1_MSS_SHIFT); |
| 1422 | return 1; | 1421 | return 1; |
| 1423 | } | 1422 | } |
| 1424 | 1423 | ||
| @@ -1716,6 +1715,7 @@ dma_error: | |||
| 1716 | static inline int __i40e_maybe_stop_tx(struct i40e_ring *tx_ring, int size) | 1715 | static inline int __i40e_maybe_stop_tx(struct i40e_ring *tx_ring, int size) |
| 1717 | { | 1716 | { |
| 1718 | netif_stop_subqueue(tx_ring->netdev, tx_ring->queue_index); | 1717 | netif_stop_subqueue(tx_ring->netdev, tx_ring->queue_index); |
| 1718 | /* Memory barrier before checking head and tail */ | ||
| 1719 | smp_mb(); | 1719 | smp_mb(); |
| 1720 | 1720 | ||
| 1721 | /* Check again in a case another CPU has just made room available. */ | 1721 | /* Check again in a case another CPU has just made room available. */ |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.h b/drivers/net/ethernet/intel/i40e/i40e_txrx.h index 92f5cf5079e1..6f8506c181d9 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.h +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
| @@ -175,8 +174,8 @@ struct i40e_tx_queue_stats { | |||
| 175 | 174 | ||
| 176 | struct i40e_rx_queue_stats { | 175 | struct i40e_rx_queue_stats { |
| 177 | u64 non_eop_descs; | 176 | u64 non_eop_descs; |
| 178 | u64 alloc_rx_page_failed; | 177 | u64 alloc_page_failed; |
| 179 | u64 alloc_rx_buff_failed; | 178 | u64 alloc_buff_failed; |
| 180 | }; | 179 | }; |
| 181 | 180 | ||
| 182 | enum i40e_ring_state_t { | 181 | enum i40e_ring_state_t { |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethernet/intel/i40e/i40e_type.h index bcf031773568..12473ad5c8e6 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_type.h +++ b/drivers/net/ethernet/intel/i40e/i40e_type.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
| @@ -77,8 +76,6 @@ | |||
| 77 | struct i40e_hw; | 76 | struct i40e_hw; |
| 78 | typedef void (*I40E_ADMINQ_CALLBACK)(struct i40e_hw *, struct i40e_aq_desc *); | 77 | typedef void (*I40E_ADMINQ_CALLBACK)(struct i40e_hw *, struct i40e_aq_desc *); |
| 79 | 78 | ||
| 80 | #define I40E_ETH_LENGTH_OF_ADDRESS 6 | ||
| 81 | |||
| 82 | /* Data type manipulation macros. */ | 79 | /* Data type manipulation macros. */ |
| 83 | 80 | ||
| 84 | #define I40E_DESC_UNUSED(R) \ | 81 | #define I40E_DESC_UNUSED(R) \ |
| @@ -240,9 +237,9 @@ struct i40e_hw_capabilities { | |||
| 240 | 237 | ||
| 241 | struct i40e_mac_info { | 238 | struct i40e_mac_info { |
| 242 | enum i40e_mac_type type; | 239 | enum i40e_mac_type type; |
| 243 | u8 addr[I40E_ETH_LENGTH_OF_ADDRESS]; | 240 | u8 addr[ETH_ALEN]; |
| 244 | u8 perm_addr[I40E_ETH_LENGTH_OF_ADDRESS]; | 241 | u8 perm_addr[ETH_ALEN]; |
| 245 | u8 san_addr[I40E_ETH_LENGTH_OF_ADDRESS]; | 242 | u8 san_addr[ETH_ALEN]; |
| 246 | u16 max_fcoeq; | 243 | u16 max_fcoeq; |
| 247 | }; | 244 | }; |
| 248 | 245 | ||
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h b/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h index cc6654f1dac7..22a1b69cd646 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
| @@ -142,7 +141,7 @@ struct i40e_virtchnl_vsi_resource { | |||
| 142 | u16 num_queue_pairs; | 141 | u16 num_queue_pairs; |
| 143 | enum i40e_vsi_type vsi_type; | 142 | enum i40e_vsi_type vsi_type; |
| 144 | u16 qset_handle; | 143 | u16 qset_handle; |
| 145 | u8 default_mac_addr[I40E_ETH_LENGTH_OF_ADDRESS]; | 144 | u8 default_mac_addr[ETH_ALEN]; |
| 146 | }; | 145 | }; |
| 147 | /* VF offload flags */ | 146 | /* VF offload flags */ |
| 148 | #define I40E_VIRTCHNL_VF_OFFLOAD_L2 0x00000001 | 147 | #define I40E_VIRTCHNL_VF_OFFLOAD_L2 0x00000001 |
| @@ -265,7 +264,7 @@ struct i40e_virtchnl_queue_select { | |||
| 265 | */ | 264 | */ |
| 266 | 265 | ||
| 267 | struct i40e_virtchnl_ether_addr { | 266 | struct i40e_virtchnl_ether_addr { |
| 268 | u8 addr[I40E_ETH_LENGTH_OF_ADDRESS]; | 267 | u8 addr[ETH_ALEN]; |
| 269 | u8 pad[2]; | 268 | u8 pad[2]; |
| 270 | }; | 269 | }; |
| 271 | 270 | ||
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c index efb9a242d275..51a4f6125437 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
| @@ -177,7 +176,8 @@ static void i40e_config_irq_link_list(struct i40e_vf *vf, u16 vsi_idx, | |||
| 177 | (I40E_MAX_VSI_QP * | 176 | (I40E_MAX_VSI_QP * |
| 178 | I40E_VIRTCHNL_SUPPORTED_QTYPES), | 177 | I40E_VIRTCHNL_SUPPORTED_QTYPES), |
| 179 | next_q + 1); | 178 | next_q + 1); |
| 180 | if (next_q < (I40E_MAX_VSI_QP * I40E_VIRTCHNL_SUPPORTED_QTYPES)) { | 179 | if (next_q < |
| 180 | (I40E_MAX_VSI_QP * I40E_VIRTCHNL_SUPPORTED_QTYPES)) { | ||
| 181 | vsi_queue_id = next_q / I40E_VIRTCHNL_SUPPORTED_QTYPES; | 181 | vsi_queue_id = next_q / I40E_VIRTCHNL_SUPPORTED_QTYPES; |
| 182 | qtype = next_q % I40E_VIRTCHNL_SUPPORTED_QTYPES; | 182 | qtype = next_q % I40E_VIRTCHNL_SUPPORTED_QTYPES; |
| 183 | pf_queue_id = i40e_vc_get_pf_queue_id(vf, vsi_idx, | 183 | pf_queue_id = i40e_vc_get_pf_queue_id(vf, vsi_idx, |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h index 8d0f4dd2a252..cc1feee36e12 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /******************************************************************************* | 1 | /******************************************************************************* |
| 2 | * | 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver | 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. | 4 | * Copyright(c) 2013 - 2014 Intel Corporation. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
| @@ -12,9 +12,8 @@ | |||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. | 13 | * more details. |
| 14 | * | 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with | 15 | * You should have received a copy of the GNU General Public License along |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., | 16 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | 17 | * |
| 19 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". | 19 | * the file called "COPYING". |
