Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Oct 2008 01:29:30 +0400
From:      pluknet <pluknet@gmail.com>
To:        "Eduardo Meyer" <dudu.meyer@gmail.com>
Cc:        stable@freebsd.org
Subject:   Re: Check if interface supports Device Polling
Message-ID:  <a31046fc0810211429o145395efxbcf80904f1fb90ec@mail.gmail.com>
In-Reply-To: <d3ea75b30810211154kae89e00j57798a34bda78299@mail.gmail.com>
References:  <d3ea75b30810211154kae89e00j57798a34bda78299@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
2008/10/21 Eduardo Meyer <dudu.meyer@gmail.com>:
> Is there another way to check if a certain interface supports polling,
> other than reading polling(4)? I would like to have a script to check
> it, issuing something like
>
> ifconfig -v -m <nic>
>
> How can I list all NIC capabilities? Would polling be listed if the
> driver supports?
>

I don't know if ifconfig supports listing NIC capabilities, but you can
always add this. Something like:

--- ifconfig.c.orig     2008-10-22 00:50:03.000000000 +0400
+++ ifconfig.c  2008-10-22 01:28:21.000000000 +0400
@@ -708,6 +708,19 @@
 }

 void
+getifcaps(const char *vname, int value, int s, const struct afswtch *afp)
+{
+       int flags;
+
+       if (ioctl(s, SIOCGIFCAP, (caddr_t)&ifr) < 0) {
+               Perror("ioctl (SIOCGIFCAP)");
+               exit(1);
+       }
+       flags = ifr.ifr_reqcap;
+       printf("Capabilities: %x\n", flags);
+}
+
+void
 setifcap(const char *vname, int value, int s, const struct afswtch *afp)
 {
        int flags;
@@ -1009,6 +1022,7 @@
        DEF_CMD("-monitor",     -IFF_MONITOR,   setifflags),
        DEF_CMD("staticarp",    IFF_STATICARP,  setifflags),
        DEF_CMD("-staticarp",   -IFF_STATICARP, setifflags),
+       DEF_CMD("caps",         0,              getifcaps),
        DEF_CMD("rxcsum",       IFCAP_RXCSUM,   setifcap),
        DEF_CMD("-rxcsum",      -IFCAP_RXCSUM,  setifcap),
        DEF_CMD("txcsum",       IFCAP_TXCSUM,   setifcap),
$ diff -u ifconfig.h.orig ifconfig.h
--- ifconfig.h.orig     2008-04-27 20:12:43.000000000 +0400
+++ ifconfig.h  2008-10-22 00:56:14.000000000 +0400
@@ -134,6 +134,7 @@
 extern int verbose;

 void   setifcap(const char *, int value, int s, const struct afswtch *);
+void   getifcaps(const char *, int value, int s, const struct afswtch *);

 void   Perror(const char *cmd);
 void   printb(const char *s, unsigned value, const char *bits);
-- 
wbr,
pluknet



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a31046fc0810211429o145395efxbcf80904f1fb90ec>