From: Florian Fainelli <f.fainelli@gmail.com>
To: netdev@vger.kernel.org
Cc: Florian Fainelli <f.fainelli@gmail.com>,
linville@tuxdriver.com, davem@davemloft.net, andrew@lunn.ch,
vivien.didelot@savoirfairelinux.com
Subject: [PATCH ethtool] ethtool: Add support for WAKE_FILTER
Date: Tue, 17 Jul 2018 08:36:38 -0700 [thread overview]
Message-ID: <20180717153645.7500-2-f.fainelli@gmail.com> (raw)
In-Reply-To: <20180717153645.7500-1-f.fainelli@gmail.com>
Allow re-purposing the wol->sopass storage area to specify a bitmask of filters
(programmed previously via ethtool::rxnfc) to be used as wake-up patterns.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
ethtool-copy.h | 1 +
ethtool.c | 35 ++++++++++++++++++++++++++++++++++-
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/ethtool-copy.h b/ethtool-copy.h
index 8cc61e9ab40b..dbfaca15dca5 100644
--- a/ethtool-copy.h
+++ b/ethtool-copy.h
@@ -1628,6 +1628,7 @@ static __inline__ int ethtool_validate_duplex(__u8 duplex)
#define WAKE_ARP (1 << 4)
#define WAKE_MAGIC (1 << 5)
#define WAKE_MAGICSECURE (1 << 6) /* only meaningful if WAKE_MAGIC */
+#define WAKE_FILTER (1 << 7)
/* L2-L4 network traffic flow types */
#define TCP_V4_FLOW 0x01 /* hash or spec (tcp_ip4_spec) */
diff --git a/ethtool.c b/ethtool.c
index fb93ae898312..322fc8d98ee5 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -931,6 +931,9 @@ static int parse_wolopts(char *optstr, u32 *data)
case 's':
*data |= WAKE_MAGICSECURE;
break;
+ case 'f':
+ *data |= WAKE_FILTER;
+ break;
case 'd':
*data = 0;
break;
@@ -964,6 +967,8 @@ static char *unparse_wolopts(int wolopts)
*p++ = 'g';
if (wolopts & WAKE_MAGICSECURE)
*p++ = 's';
+ if (wolopts & WAKE_FILTER)
+ *p++ = 'f';
} else {
*p = 'd';
}
@@ -989,6 +994,21 @@ static int dump_wol(struct ethtool_wolinfo *wol)
fprintf(stdout, "\n");
}
+ if (wol->supported & WAKE_FILTER) {
+ int i, j;
+ int delim = 0;
+ fprintf(stdout, " Filter(s) enabled: ");
+ for (i = 0; i < SOPASS_MAX; i++) {
+ for (j = 0; j < 8; j++) {
+ if (wol->sopass[i] & (1 << j)) {
+ fprintf(stdout, "%s%d", delim?",":"", i * 8 + j);
+ delim=1;
+ }
+ }
+ }
+ fprintf(stdout, "\n");
+ }
+
return 0;
}
@@ -2897,6 +2917,16 @@ static int do_sset(struct cmd_context *ctx)
exit_bad_args();
get_mac_addr(argp[i], sopass_wanted);
sopass_change = 1;
+ } else if (!strcmp(argp[i], "filters")) {
+ gwol_changed = 1;
+ i++;
+ if (i >= argc)
+ exit_bad_args();
+ if (parse_hex_u32_bitmap(argp[i],
+ SOPASS_MAX * 8,
+ (unsigned int *)sopass_wanted))
+ exit_bad_args();
+ sopass_change = 1;
} else if (!strcmp(argp[i], "msglvl")) {
i++;
if (i >= argc)
@@ -3112,8 +3142,10 @@ static int do_sset(struct cmd_context *ctx)
if (err < 0) {
if (wol_change)
fprintf(stderr, " not setting wol\n");
- if (sopass_change)
+ if (sopass_change & wol.wolopts & WAKE_MAGICSECURE)
fprintf(stderr, " not setting sopass\n");
+ if (sopass_change & wol.wolopts & WAKE_FILTER)
+ fprintf(stderr, " not setting filters\n");
}
}
@@ -5066,6 +5098,7 @@ static const struct option {
" [ xcvr internal|external ]\n"
" [ wol p|u|m|b|a|g|s|d... ]\n"
" [ sopass %x:%x:%x:%x:%x:%x ]\n"
+ " [ filters %x ]\n"
" [ msglvl %d | msglvl type on|off ... ]\n" },
{ "-a|--show-pause", 1, do_gpause, "Show pause options" },
{ "-A|--pause", 1, do_spause, "Set pause options",
--
2.14.1
next prev parent reply other threads:[~2018-07-17 16:10 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-17 15:36 [PATCH net-next 0/7] net: Support Wake-on-LAN using filters Florian Fainelli
2018-07-17 15:36 ` Florian Fainelli [this message]
2018-07-30 22:26 ` [PATCH ethtool] ethtool: Add support for WAKE_FILTER Florian Fainelli
2018-07-30 22:30 ` Andrew Lunn
2018-07-30 22:39 ` Florian Fainelli
2018-07-30 22:55 ` Andrew Lunn
2018-07-30 23:01 ` Andrew Lunn
2018-08-01 16:32 ` David Miller
2018-08-03 17:57 ` Florian Fainelli
2018-08-03 19:07 ` David Miller
2018-08-03 19:58 ` Florian Fainelli
2018-08-03 20:18 ` David Miller
2018-07-17 15:36 ` [PATCH net-next 1/7] net: dsa: bcm_sf2: Allow targeting CPU ports for CFP rules Florian Fainelli
2018-07-18 0:56 ` David Miller
2018-07-17 15:36 ` [PATCH net-next 2/7] net: dsa: bcm_sf2: Disable learning while in WoL Florian Fainelli
2018-07-17 15:54 ` Andrew Lunn
2018-07-17 16:06 ` Florian Fainelli
2018-07-17 15:36 ` [PATCH net-next 3/7] net: systemport: Do not re-configure upon WoL interrupt Florian Fainelli
2018-07-17 15:36 ` [PATCH net-next 4/7] net: systemport: Create helper to set MPD Florian Fainelli
2018-07-17 15:36 ` [PATCH net-next 5/7] ethtool: Add WAKE_FILTER bitmask Florian Fainelli
2018-07-17 15:36 ` [PATCH net-next 6/7] net: systemport: Add support for WAKE_FILTER Florian Fainelli
2018-07-17 16:14 ` Andrew Lunn
2018-07-17 16:26 ` Florian Fainelli
2018-07-17 16:49 ` Andrew Lunn
2018-07-17 16:57 ` Florian Fainelli
2018-07-17 17:06 ` Andrew Lunn
2018-07-18 9:15 ` Florian Fainelli
2018-07-19 22:25 ` Andrew Lunn
2018-07-20 9:34 ` Florian Fainelli
2018-07-17 15:36 ` [PATCH net-next 7/7] net: dsa: bcm_sf2: Support WAKE_FILTER Florian Fainelli
2018-07-17 15:47 ` [PATCH net-next 0/7] net: Support Wake-on-LAN using filters Andrew Lunn
2018-07-17 16:06 ` Florian Fainelli
2018-07-17 16:21 ` Andrew Lunn
2018-07-17 16:28 ` Florian Fainelli
2018-07-17 16:51 ` Andrew Lunn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180717153645.7500-2-f.fainelli@gmail.com \
--to=f.fainelli@gmail.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=linville@tuxdriver.com \
--cc=netdev@vger.kernel.org \
--cc=vivien.didelot@savoirfairelinux.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).