R8168ドライバをkernel3.16で認識させる

あいもかわらず「いつもの」です。今回の場合は実はというと検索をかけるとパッチファイルのテキストそのものが見つかってしまったので紹介し直す意味はほとんど無いのですが毎度毎度やっているので「とりあえず」やっておきます。

 

パッチコードは?というと

linux-3.15_r8168_8.038.00.patch

*** r8168_n.c.orig      2014-07-28 09:21:19.619201658 +0900
--- r8168_n.c   2014-09-21 09:30:00.000000000 +0900
*************** rtl8168_init_one(struct pci_dev *pdev,
*** 17542,17548 ****
--- 17542,17552 ----

      RTL_NET_DEVICE_OPS(rtl8168_netdev_ops);

+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,1)
+     dev->ethtool_ops = &rtl8168_ethtool_ops;
+ #else
      SET_ETHTOOL_OPS(dev, &rtl8168_ethtool_ops);
+ #endif

      dev->watchdog_timeo = RTL8168_TX_TIMEOUT;
      dev->irq = pdev->irq;
*************** static void rtl8168_schedule_work(struct
*** 19119,19125 ****
--- 19123,19133 ----
  {
      struct rtl8168_private *tp = netdev_priv(dev);

+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,1)
+     INIT_DELAYED_WORK(&tp->task, task);
+ #else
      PREPARE_DELAYED_WORK(&tp->task, task);
+ #endif
      schedule_delayed_work(&tp->task, 4);
  }
  #endif

今回も面倒なので8.038系をベースに作っています。そのため、前回パッチとして書いた部分まで一緒に出てきていますのでその場合は8.038系にある元ファイルからパッチを当てる様にしてください。

今回の変更点はどうもSET_ETHTOOL_OPSという補助処理によって設定していたオプションが構造体にそのまま設定できる様になった、というところでしょうか。周りと見た目があわされているので見やすくなったといえばそれまでなのでしょうが、(検索で出てきたパッチではそうでもないのですが)Kernelのバージョンによって分岐するようになっているのでいらないコードが増えている様にしか見えませんね。やっぱり。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この記事のトラックバック用URL