#include "filter.h"
 #include "nic.h"
 
-struct ethtool_string {
-       char name[ETH_GSTRING_LEN];
-};
-
 struct efx_ethtool_stat {
        const char *name;
        enum {
  *
  * Fill in an individual self-test entry.
  */
-static void efx_fill_test(unsigned int test_index,
-                         struct ethtool_string *strings, u64 *data,
+static void efx_fill_test(unsigned int test_index, u8 *strings, u64 *data,
                          int *test, const char *unit_format, int unit_id,
                          const char *test_format, const char *test_id)
 {
-       struct ethtool_string unit_str, test_str;
+       char unit_str[ETH_GSTRING_LEN], test_str[ETH_GSTRING_LEN];
 
        /* Fill data value, if applicable */
        if (data)
        /* Fill string, if applicable */
        if (strings) {
                if (strchr(unit_format, '%'))
-                       snprintf(unit_str.name, sizeof(unit_str.name),
+                       snprintf(unit_str, sizeof(unit_str),
                                 unit_format, unit_id);
                else
-                       strcpy(unit_str.name, unit_format);
-               snprintf(test_str.name, sizeof(test_str.name),
-                        test_format, test_id);
-               snprintf(strings[test_index].name,
-                        sizeof(strings[test_index].name),
-                        "%-6s %-24s", unit_str.name, test_str.name);
+                       strcpy(unit_str, unit_format);
+               snprintf(test_str, sizeof(test_str), test_format, test_id);
+               snprintf(strings + test_index * ETH_GSTRING_LEN,
+                        ETH_GSTRING_LEN,
+                        "%-6s %-24s", unit_str, test_str);
        }
 }
 
                                  struct efx_loopback_self_tests *lb_tests,
                                  enum efx_loopback_mode mode,
                                  unsigned int test_index,
-                                 struct ethtool_string *strings, u64 *data)
+                                 u8 *strings, u64 *data)
 {
        struct efx_channel *channel =
                efx_get_channel(efx, efx->tx_channel_offset);
  */
 static int efx_ethtool_fill_self_tests(struct efx_nic *efx,
                                       struct efx_self_tests *tests,
-                                      struct ethtool_string *strings,
-                                      u64 *data)
+                                      u8 *strings, u64 *data)
 {
        struct efx_channel *channel;
        unsigned int n = 0, i;
                                    u32 string_set, u8 *strings)
 {
        struct efx_nic *efx = netdev_priv(net_dev);
-       struct ethtool_string *ethtool_strings =
-               (struct ethtool_string *)strings;
        int i;
 
        switch (string_set) {
        case ETH_SS_STATS:
                for (i = 0; i < EFX_ETHTOOL_NUM_STATS; i++)
-                       strlcpy(ethtool_strings[i].name,
-                               efx_ethtool_stats[i].name,
-                               sizeof(ethtool_strings[i].name));
+                       strlcpy(strings + i * ETH_GSTRING_LEN,
+                               efx_ethtool_stats[i].name, ETH_GSTRING_LEN);
                break;
        case ETH_SS_TEST:
-               efx_ethtool_fill_self_tests(efx, NULL,
-                                           ethtool_strings, NULL);
+               efx_ethtool_fill_self_tests(efx, NULL, strings, NULL);
                break;
        default:
                /* No other string sets */