1 /*- 2 * BSD LICENSE 3 * 4 * Copyright 2015 6WIND S.A. 5 * Copyright 2015 Mellanox. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * * Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * * Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the 16 * distribution. 17 * * Neither the name of 6WIND S.A. nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 #include <stddef.h> 35 #include <errno.h> 36 #include <string.h> 37 38 /* Verbs header. */ 39 /* ISO C doesn't support unnamed structs/unions, disabling -pedantic. */ 40 #ifdef PEDANTIC 41 #pragma GCC diagnostic ignored "-Wpedantic" 42 #endif 43 #include <infiniband/verbs.h> 44 #ifdef PEDANTIC 45 #pragma GCC diagnostic error "-Wpedantic" 46 #endif 47 48 #include <rte_ethdev.h> 49 50 #include "mlx5.h" 51 #include "mlx5_rxtx.h" 52 #include "mlx5_utils.h" 53 54 /** 55 * DPDK callback to enable promiscuous mode. 56 * 57 * @param dev 58 * Pointer to Ethernet device structure. 59 */ 60 void 61 mlx5_promiscuous_enable(struct rte_eth_dev *dev) 62 { 63 dev->data->promiscuous = 1; 64 mlx5_traffic_restart(dev); 65 } 66 67 /** 68 * DPDK callback to disable promiscuous mode. 69 * 70 * @param dev 71 * Pointer to Ethernet device structure. 72 */ 73 void 74 mlx5_promiscuous_disable(struct rte_eth_dev *dev) 75 { 76 dev->data->promiscuous = 0; 77 mlx5_traffic_restart(dev); 78 } 79 80 /** 81 * DPDK callback to enable allmulti mode. 82 * 83 * @param dev 84 * Pointer to Ethernet device structure. 85 */ 86 void 87 mlx5_allmulticast_enable(struct rte_eth_dev *dev) 88 { 89 dev->data->all_multicast = 1; 90 mlx5_traffic_restart(dev); 91 } 92 93 /** 94 * DPDK callback to disable allmulti mode. 95 * 96 * @param dev 97 * Pointer to Ethernet device structure. 98 */ 99 void 100 mlx5_allmulticast_disable(struct rte_eth_dev *dev) 101 { 102 dev->data->all_multicast = 0; 103 mlx5_traffic_restart(dev); 104 } 105