.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
---|
1 | 2 | /* |
---|
2 | 3 | * linux/drivers/net/ethernet/ibm/ehea/ehea_main.c |
---|
3 | 4 | * |
---|
.. | .. |
---|
9 | 10 | * Christoph Raisch <raisch@de.ibm.com> |
---|
10 | 11 | * Jan-Bernd Themann <themann@de.ibm.com> |
---|
11 | 12 | * Thomas Klein <tklein@de.ibm.com> |
---|
12 | | - * |
---|
13 | | - * |
---|
14 | | - * This program is free software; you can redistribute it and/or modify |
---|
15 | | - * it under the terms of the GNU General Public License as published by |
---|
16 | | - * the Free Software Foundation; either version 2, or (at your option) |
---|
17 | | - * any later version. |
---|
18 | | - * |
---|
19 | | - * This program is distributed in the hope that it will be useful, |
---|
20 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
21 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
22 | | - * GNU General Public License for more details. |
---|
23 | | - * |
---|
24 | | - * You should have received a copy of the GNU General Public License |
---|
25 | | - * along with this program; if not, write to the Free Software |
---|
26 | | - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
---|
27 | 13 | */ |
---|
28 | 14 | |
---|
29 | 15 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
---|
.. | .. |
---|
778 | 764 | { |
---|
779 | 765 | struct ehea_swqe *swqe; |
---|
780 | 766 | int swqe_index; |
---|
781 | | - int i, k; |
---|
| 767 | + int i; |
---|
782 | 768 | |
---|
783 | 769 | for (i = 0; i < port->num_def_qps; i++) { |
---|
784 | 770 | struct ehea_port_res *pr = &port->port_res[i]; |
---|
785 | 771 | int ret; |
---|
786 | | - k = 0; |
---|
787 | 772 | swqe = ehea_get_swqe(pr->qp, &swqe_index); |
---|
788 | 773 | memset(swqe, 0, SWQE_HEADER_SIZE); |
---|
789 | 774 | atomic_dec(&pr->swqe_avail); |
---|
.. | .. |
---|
1227 | 1212 | } |
---|
1228 | 1213 | } |
---|
1229 | 1214 | |
---|
1230 | | -static void ehea_neq_tasklet(unsigned long data) |
---|
| 1215 | +static void ehea_neq_tasklet(struct tasklet_struct *t) |
---|
1231 | 1216 | { |
---|
1232 | | - struct ehea_adapter *adapter = (struct ehea_adapter *)data; |
---|
| 1217 | + struct ehea_adapter *adapter = from_tasklet(adapter, t, neq_tasklet); |
---|
1233 | 1218 | struct ehea_eqe *eqe; |
---|
1234 | 1219 | u64 event_mask; |
---|
1235 | 1220 | |
---|
.. | .. |
---|
1592 | 1577 | ehea_destroy_eq(pr->eq); |
---|
1593 | 1578 | |
---|
1594 | 1579 | for (i = 0; i < pr->rq1_skba.len; i++) |
---|
1595 | | - if (pr->rq1_skba.arr[i]) |
---|
1596 | | - dev_kfree_skb(pr->rq1_skba.arr[i]); |
---|
| 1580 | + dev_kfree_skb(pr->rq1_skba.arr[i]); |
---|
1597 | 1581 | |
---|
1598 | 1582 | for (i = 0; i < pr->rq2_skba.len; i++) |
---|
1599 | | - if (pr->rq2_skba.arr[i]) |
---|
1600 | | - dev_kfree_skb(pr->rq2_skba.arr[i]); |
---|
| 1583 | + dev_kfree_skb(pr->rq2_skba.arr[i]); |
---|
1601 | 1584 | |
---|
1602 | 1585 | for (i = 0; i < pr->rq3_skba.len; i++) |
---|
1603 | | - if (pr->rq3_skba.arr[i]) |
---|
1604 | | - dev_kfree_skb(pr->rq3_skba.arr[i]); |
---|
| 1586 | + dev_kfree_skb(pr->rq3_skba.arr[i]); |
---|
1605 | 1587 | |
---|
1606 | 1588 | for (i = 0; i < pr->sq_skba.len; i++) |
---|
1607 | | - if (pr->sq_skba.arr[i]) |
---|
1608 | | - dev_kfree_skb(pr->sq_skba.arr[i]); |
---|
| 1589 | + dev_kfree_skb(pr->sq_skba.arr[i]); |
---|
1609 | 1590 | |
---|
1610 | 1591 | vfree(pr->rq1_skba.arr); |
---|
1611 | 1592 | vfree(pr->rq2_skba.arr); |
---|
.. | .. |
---|
2806 | 2787 | return; |
---|
2807 | 2788 | } |
---|
2808 | 2789 | |
---|
2809 | | -static void ehea_tx_watchdog(struct net_device *dev) |
---|
| 2790 | +static void ehea_tx_watchdog(struct net_device *dev, unsigned int txqueue) |
---|
2810 | 2791 | { |
---|
2811 | 2792 | struct ehea_port *port = netdev_priv(dev); |
---|
2812 | 2793 | |
---|
.. | .. |
---|
2916 | 2897 | ret = of_device_register(&port->ofdev); |
---|
2917 | 2898 | if (ret) { |
---|
2918 | 2899 | pr_err("failed to register device. ret=%d\n", ret); |
---|
| 2900 | + put_device(&port->ofdev.dev); |
---|
2919 | 2901 | goto out; |
---|
2920 | 2902 | } |
---|
2921 | 2903 | |
---|
.. | .. |
---|
3267 | 3249 | switch (action) { |
---|
3268 | 3250 | case MEM_CANCEL_OFFLINE: |
---|
3269 | 3251 | pr_info("memory offlining canceled"); |
---|
3270 | | - /* Fall through: re-add canceled memory block */ |
---|
| 3252 | + fallthrough; /* re-add canceled memory block */ |
---|
3271 | 3253 | |
---|
3272 | 3254 | case MEM_ONLINE: |
---|
3273 | 3255 | pr_info("memory is going online"); |
---|
.. | .. |
---|
3437 | 3419 | goto out_free_ad; |
---|
3438 | 3420 | } |
---|
3439 | 3421 | |
---|
3440 | | - tasklet_init(&adapter->neq_tasklet, ehea_neq_tasklet, |
---|
3441 | | - (unsigned long)adapter); |
---|
| 3422 | + tasklet_setup(&adapter->neq_tasklet, ehea_neq_tasklet); |
---|
3442 | 3423 | |
---|
3443 | 3424 | ret = ehea_create_device_sysfs(dev); |
---|
3444 | 3425 | if (ret) |
---|