]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/blobdiff - drivers/s390/net/lcs.c
[HIPPI/FDDI]: Make {hippi,fddi}_type_trans set skb->dev
[mirror_ubuntu-focal-kernel.git] / drivers / s390 / net / lcs.c
index 08d4e47070bda333b5fe97808b5d578d6756b69f..1c23e187a3bafe4a76d0a132183bfb48605d5033 100644 (file)
@@ -67,7 +67,7 @@ static char debug_buffer[255];
  * Some prototypes.
  */
 static void lcs_tasklet(unsigned long);
-static void lcs_start_kernel_thread(struct lcs_card *card);
+static void lcs_start_kernel_thread(struct work_struct *);
 static void lcs_get_frames_cb(struct lcs_channel *, struct lcs_buffer *);
 static int lcs_send_delipm(struct lcs_card *, struct lcs_ipm_list *);
 static int lcs_recovery(void *ptr);
@@ -828,7 +828,7 @@ lcs_notify_lancmd_waiters(struct lcs_card *card, struct lcs_cmd *cmd)
 /**
  * Emit buffer of a lan comand.
  */
-void
+static void
 lcs_lancmd_timeout(unsigned long data)
 {
        struct lcs_reply *reply, *list_reply, *r;
@@ -1360,7 +1360,7 @@ lcs_get_problem(struct ccw_device *cdev, struct irb *irb)
        return 0;
 }
 
-void
+static void
 lcs_schedule_recovery(struct lcs_card *card)
 {
        LCS_DBF_TEXT(2, trace, "startrec");
@@ -1511,8 +1511,7 @@ lcs_txbuffer_cb(struct lcs_channel *channel, struct lcs_buffer *buffer)
        LCS_DBF_TEXT(5, trace, "txbuffcb");
        /* Put buffer back to pool. */
        lcs_release_buffer(channel, buffer);
-       card = (struct lcs_card *)
-               ((char *) channel - offsetof(struct lcs_card, write));
+       card = container_of(channel, struct lcs_card, write);
        if (netif_queue_stopped(card->dev) && netif_carrier_ok(card->dev))
                netif_wake_queue(card->dev);
        spin_lock(&card->lock);
@@ -1724,8 +1723,9 @@ lcs_stopcard(struct lcs_card *card)
  * Kernel Thread helper functions for LGW initiated commands
  */
 static void
-lcs_start_kernel_thread(struct lcs_card *card)
+lcs_start_kernel_thread(struct work_struct *work)
 {
+       struct lcs_card *card = container_of(work, struct lcs_card, kernel_thread_starter);
        LCS_DBF_TEXT(5, trace, "krnthrd");
        if (lcs_do_start_thread(card, LCS_RECOVERY_THREAD))
                kernel_thread(lcs_recovery, (void *) card, SIGCHLD);
@@ -1784,7 +1784,6 @@ lcs_get_skb(struct lcs_card *card, char *skb_data, unsigned int skb_len)
                card->stats.rx_dropped++;
                return;
        }
-       skb->dev = card->dev;
        memcpy(skb_put(skb, skb_len), skb_data, skb_len);
        skb->protocol = card->lan_type_trans(skb, card->dev);
        card->stats.rx_bytes += skb_len;
@@ -1809,8 +1808,7 @@ lcs_get_frames_cb(struct lcs_channel *channel, struct lcs_buffer *buffer)
                LCS_DBF_TEXT(4, trace, "-eiogpkt");
                return;
        }
-       card = (struct lcs_card *)
-               ((char *) channel - offsetof(struct lcs_card, read));
+       card = container_of(channel, struct lcs_card, read);
        offset = 0;
        while (lcs_hdr->offset != 0) {
                if (lcs_hdr->offset <= 0 ||
@@ -1989,7 +1987,7 @@ lcs_timeout_store (struct device *dev, struct device_attribute *attr, const char
 
 }
 
-DEVICE_ATTR(lancmd_timeout, 0644, lcs_timeout_show, lcs_timeout_store);
+static DEVICE_ATTR(lancmd_timeout, 0644, lcs_timeout_show, lcs_timeout_store);
 
 static ssize_t
 lcs_dev_recover_store(struct device *dev, struct device_attribute *attr,
@@ -2053,8 +2051,7 @@ lcs_probe_device(struct ccwgroup_device *ccwgdev)
        ccwgdev->cdev[0]->handler = lcs_irq;
        ccwgdev->cdev[1]->handler = lcs_irq;
        card->gdev = ccwgdev;
-       INIT_WORK(&card->kernel_thread_starter,
-                 (void *) lcs_start_kernel_thread, card);
+       INIT_WORK(&card->kernel_thread_starter, lcs_start_kernel_thread);
        card->thread_start_mask = 0;
        card->thread_allowed_mask = 0;
        card->thread_running_mask = 0;