| .. | .. |
|---|
| 1 | | -/* |
|---|
| 2 | | - * Copyright (C) 2017 Netronome Systems, Inc. |
|---|
| 3 | | - * |
|---|
| 4 | | - * This software is dual licensed under the GNU General License Version 2, |
|---|
| 5 | | - * June 1991 as shown in the file COPYING in the top-level directory of this |
|---|
| 6 | | - * source tree or the BSD 2-Clause License provided below. You have the |
|---|
| 7 | | - * option to license this software under the complete terms of either license. |
|---|
| 8 | | - * |
|---|
| 9 | | - * The BSD 2-Clause License: |
|---|
| 10 | | - * |
|---|
| 11 | | - * Redistribution and use in source and binary forms, with or |
|---|
| 12 | | - * without modification, are permitted provided that the following |
|---|
| 13 | | - * conditions are met: |
|---|
| 14 | | - * |
|---|
| 15 | | - * 1. Redistributions of source code must retain the above |
|---|
| 16 | | - * copyright notice, this list of conditions and the following |
|---|
| 17 | | - * disclaimer. |
|---|
| 18 | | - * |
|---|
| 19 | | - * 2. Redistributions in binary form must reproduce the above |
|---|
| 20 | | - * copyright notice, this list of conditions and the following |
|---|
| 21 | | - * disclaimer in the documentation and/or other materials |
|---|
| 22 | | - * provided with the distribution. |
|---|
| 23 | | - * |
|---|
| 24 | | - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|---|
| 25 | | - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|---|
| 26 | | - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|---|
| 27 | | - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
|---|
| 28 | | - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
|---|
| 29 | | - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
|---|
| 30 | | - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
|---|
| 31 | | - * SOFTWARE. |
|---|
| 32 | | - */ |
|---|
| 1 | +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
|---|
| 2 | +/* Copyright (C) 2017-2018 Netronome Systems, Inc. */ |
|---|
| 33 | 3 | |
|---|
| 34 | 4 | #include <linux/lockdep.h> |
|---|
| 35 | 5 | #include <linux/netdevice.h> |
|---|
| 36 | | -#include <net/switchdev.h> |
|---|
| 37 | 6 | |
|---|
| 38 | 7 | #include "nfpcore/nfp_cpp.h" |
|---|
| 39 | 8 | #include "nfpcore/nfp_nsp.h" |
|---|
| .. | .. |
|---|
| 61 | 30 | return NULL; |
|---|
| 62 | 31 | } |
|---|
| 63 | 32 | |
|---|
| 64 | | -static int |
|---|
| 65 | | -nfp_port_attr_get(struct net_device *netdev, struct switchdev_attr *attr) |
|---|
| 33 | +int nfp_port_get_port_parent_id(struct net_device *netdev, |
|---|
| 34 | + struct netdev_phys_item_id *ppid) |
|---|
| 66 | 35 | { |
|---|
| 67 | 36 | struct nfp_port *port; |
|---|
| 37 | + const u8 *serial; |
|---|
| 68 | 38 | |
|---|
| 69 | 39 | port = nfp_port_from_netdev(netdev); |
|---|
| 70 | 40 | if (!port) |
|---|
| 71 | 41 | return -EOPNOTSUPP; |
|---|
| 72 | 42 | |
|---|
| 73 | | - switch (attr->id) { |
|---|
| 74 | | - case SWITCHDEV_ATTR_ID_PORT_PARENT_ID: { |
|---|
| 75 | | - const u8 *serial; |
|---|
| 76 | | - /* N.B: attr->u.ppid.id is binary data */ |
|---|
| 77 | | - attr->u.ppid.id_len = nfp_cpp_serial(port->app->cpp, &serial); |
|---|
| 78 | | - memcpy(&attr->u.ppid.id, serial, attr->u.ppid.id_len); |
|---|
| 79 | | - break; |
|---|
| 80 | | - } |
|---|
| 81 | | - default: |
|---|
| 82 | | - return -EOPNOTSUPP; |
|---|
| 83 | | - } |
|---|
| 43 | + ppid->id_len = nfp_cpp_serial(port->app->cpp, &serial); |
|---|
| 44 | + memcpy(&ppid->id, serial, ppid->id_len); |
|---|
| 84 | 45 | |
|---|
| 85 | 46 | return 0; |
|---|
| 86 | 47 | } |
|---|
| 87 | | - |
|---|
| 88 | | -const struct switchdev_ops nfp_port_switchdev_ops = { |
|---|
| 89 | | - .switchdev_port_attr_get = nfp_port_attr_get, |
|---|
| 90 | | -}; |
|---|
| 91 | 48 | |
|---|
| 92 | 49 | int nfp_port_setup_tc(struct net_device *netdev, enum tc_setup_type type, |
|---|
| 93 | 50 | void *type_data) |
|---|