ravb: Add magic_pkt to struct ravb_hw_info
authorBiju Das <biju.das.jz@bp.renesas.com>
Fri, 1 Oct 2021 15:06:34 +0000 (16:06 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 2 Oct 2021 12:52:46 +0000 (13:52 +0100)
E-MAC on R-Car supports magic packet detection, whereas RZ/G2L
does not support this feature. Add magic_pkt to struct ravb_hw_info
and enable this feature only for R-Car.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/renesas/ravb.h
drivers/net/ethernet/renesas/ravb_main.c

index c586070193ef06759fe15d846d70187c5d138509..f0d9b7bc8c202b0a9af69dcae9ae9ca358e4b8b2 100644 (file)
@@ -1007,6 +1007,7 @@ struct ravb_hw_info {
        unsigned gptp:1;                /* AVB-DMAC has gPTP support */
        unsigned ccc_gac:1;             /* AVB-DMAC has gPTP support active in config mode */
        unsigned nc_queue:1;            /* AVB-DMAC has NC queue */
+       unsigned magic_pkt:1;           /* E-MAC supports magic packet detection */
 };
 
 struct ravb_private {
index 4784832bd93c15d07bfc86db7edebfb9df881a3c..6fb11d4cfc57435eb21b24f9e5958a4e1b685d8f 100644 (file)
@@ -1436,8 +1436,9 @@ static void ravb_get_wol(struct net_device *ndev, struct ethtool_wolinfo *wol)
 static int ravb_set_wol(struct net_device *ndev, struct ethtool_wolinfo *wol)
 {
        struct ravb_private *priv = netdev_priv(ndev);
+       const struct ravb_hw_info *info = priv->info;
 
-       if (wol->wolopts & ~WAKE_MAGIC)
+       if (!info->magic_pkt || (wol->wolopts & ~WAKE_MAGIC))
                return -EOPNOTSUPP;
 
        priv->wol_enabled = !!(wol->wolopts & WAKE_MAGIC);
@@ -2136,6 +2137,7 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
        .multi_irqs = 1,
        .ccc_gac = 1,
        .nc_queue = 1,
+       .magic_pkt = 1,
 };
 
 static const struct ravb_hw_info ravb_gen2_hw_info = {
@@ -2157,6 +2159,7 @@ static const struct ravb_hw_info ravb_gen2_hw_info = {
        .aligned_tx = 1,
        .gptp = 1,
        .nc_queue = 1,
+       .magic_pkt = 1,
 };
 
 static const struct ravb_hw_info gbeth_hw_info = {