[Xenomai-git] Gilles Chanteperdrix : rtnet/ioctl: allow checking link state

2015-11-05 Thread git repository hosting
Module: xenomai-3
Branch: stable-3.0.x
Commit: ba315472fef528ce82cf2bfe852c99092f0046c7
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=ba315472fef528ce82cf2bfe852c99092f0046c7

Author: Gilles Chanteperdrix 
Date:   Sat Oct 10 19:37:50 2015 +0200

rtnet/ioctl: allow checking link state

Use the IFF_RUNNING bit in the flags returned by the SIOCGIFFLAGS ioctl,
like Linux SIOCGIFFLAGS ioctl.

---

 kernel/drivers/net/stack/include/rtdev.h |4 
 kernel/drivers/net/stack/rtdev.c |2 +-
 kernel/drivers/net/stack/rtnet_chrdev.c  |7 +++
 kernel/drivers/net/stack/socket.c|8 +++-
 utils/net/rtifconfig.c   |2 +-
 5 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/kernel/drivers/net/stack/include/rtdev.h 
b/kernel/drivers/net/stack/include/rtdev.h
index 67a8ffd..c1c0b4e 100644
--- a/kernel/drivers/net/stack/include/rtdev.h
+++ b/kernel/drivers/net/stack/include/rtdev.h
@@ -55,6 +55,10 @@ enum rtnet_link_state {
__RTNET_LINK_STATE_PRESENT,
__RTNET_LINK_STATE_NOCARRIER,
 };
+#define RTNET_LINK_STATE_XOFF (1 << __RTNET_LINK_STATE_XOFF)
+#define RTNET_LINK_STATE_START (1 << __RTNET_LINK_STATE_START)
+#define RTNET_LINK_STATE_PRESENT (1 << __RTNET_LINK_STATE_PRESENT)
+#define RTNET_LINK_STATE_NOCARRIER (1 << __RTNET_LINK_STATE_NOCARRIER)
 
 /***
  *  rtnet_device
diff --git a/kernel/drivers/net/stack/rtdev.c b/kernel/drivers/net/stack/rtdev.c
index f7e1f41..5eb73ce 100644
--- a/kernel/drivers/net/stack/rtdev.c
+++ b/kernel/drivers/net/stack/rtdev.c
@@ -644,7 +644,7 @@ int rtdev_open(struct rtnet_device *rtdev)
ret = rtdev->open(rtdev);
 
 if ( !ret )  {
-   rtdev->flags |= (IFF_UP | IFF_RUNNING);
+   rtdev->flags |= IFF_UP;
set_bit(__RTNET_LINK_STATE_START, >link_state);
 } else
rtdev_dereference(rtdev);
diff --git a/kernel/drivers/net/stack/rtnet_chrdev.c 
b/kernel/drivers/net/stack/rtnet_chrdev.c
index d3f617c..f06ff2a 100644
--- a/kernel/drivers/net/stack/rtnet_chrdev.c
+++ b/kernel/drivers/net/stack/rtnet_chrdev.c
@@ -210,6 +210,13 @@ static int rtnet_core_ioctl(struct rtnet_device *rtdev, 
unsigned int request,
cmd.args.info.broadcast_ip = rtdev->broadcast_ip;
cmd.args.info.mtu  = rtdev->mtu;
cmd.args.info.flags= rtdev->flags;
+if ((cmd.args.info.flags & IFF_UP)
+   && (rtdev->link_state
+   & (RTNET_LINK_STATE_PRESENT
+   | RTNET_LINK_STATE_NOCARRIER))
+== RTNET_LINK_STATE_PRESENT)
+cmd.args.info.flags |= IFF_RUNNING;
+
memcpy(cmd.args.info.dev_addr, rtdev->dev_addr, MAX_ADDR_LEN);
 
mutex_unlock(>nrt_lock);
diff --git a/kernel/drivers/net/stack/socket.c 
b/kernel/drivers/net/stack/socket.c
index 64a2a2e..7dacb25 100644
--- a/kernel/drivers/net/stack/socket.c
+++ b/kernel/drivers/net/stack/socket.c
@@ -242,7 +242,7 @@ int rt_socket_if_ioctl(struct rtdm_fd *fd, int request, 
void *arg)
for (i = 1; i <= MAX_RT_DEVICES; i++) {
rtdev = rtdev_get_by_index(i);
if (rtdev != NULL) {
-   if ((rtdev->flags & IFF_RUNNING) == 0) {
+   if ((rtdev->flags & IFF_UP) == 0) {
rtdev_dereference(rtdev);
continue;
}
@@ -288,6 +288,12 @@ int rt_socket_if_ioctl(struct rtdm_fd *fd, int request, 
void *arg)
 
case SIOCGIFFLAGS:
ifr->ifr_flags = rtdev->flags;
+if ((ifr->ifr_flags & IFF_UP)
+   && (rtdev->link_state
+   & (RTNET_LINK_STATE_PRESENT
+   | RTNET_LINK_STATE_NOCARRIER))
+== RTNET_LINK_STATE_PRESENT)
+ifr->ifr_flags |= IFF_RUNNING;
break;
 
case SIOCGIFHWADDR:
diff --git a/utils/net/rtifconfig.c b/utils/net/rtifconfig.c
index 2024afe..8117e12 100644
--- a/utils/net/rtifconfig.c
+++ b/utils/net/rtifconfig.c
@@ -290,7 +290,7 @@ void do_display(int print_flags)
 ret = ioctl(f, IOC_RT_IFINFO, );
 if (ret == 0) {
 if (((print_flags & PRINT_FLAG_INACTIVE) != 0) ||
-((cmd.args.info.flags & IFF_RUNNING) != 0))
+((cmd.args.info.flags & IFF_UP) != 0))
 print_dev();
 } else if (errno != ENODEV) {
 perror("ioctl");


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Gilles Chanteperdrix : rtnet/ioctl: allow checking link state

2015-11-05 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: a73161a18c90440b6ee4125e09526616dcff506a
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=a73161a18c90440b6ee4125e09526616dcff506a

Author: Gilles Chanteperdrix 
Date:   Sat Oct 10 19:37:50 2015 +0200

rtnet/ioctl: allow checking link state

Use the IFF_RUNNING bit in the flags returned by the SIOCGIFFLAGS ioctl,
like Linux SIOCGIFFLAGS ioctl.

---

 kernel/drivers/net/stack/include/rtdev.h |4 
 kernel/drivers/net/stack/rtdev.c |2 +-
 kernel/drivers/net/stack/rtnet_chrdev.c  |7 +++
 kernel/drivers/net/stack/socket.c|8 +++-
 utils/net/rtifconfig.c   |2 +-
 5 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/kernel/drivers/net/stack/include/rtdev.h 
b/kernel/drivers/net/stack/include/rtdev.h
index 67a8ffd..c1c0b4e 100644
--- a/kernel/drivers/net/stack/include/rtdev.h
+++ b/kernel/drivers/net/stack/include/rtdev.h
@@ -55,6 +55,10 @@ enum rtnet_link_state {
__RTNET_LINK_STATE_PRESENT,
__RTNET_LINK_STATE_NOCARRIER,
 };
+#define RTNET_LINK_STATE_XOFF (1 << __RTNET_LINK_STATE_XOFF)
+#define RTNET_LINK_STATE_START (1 << __RTNET_LINK_STATE_START)
+#define RTNET_LINK_STATE_PRESENT (1 << __RTNET_LINK_STATE_PRESENT)
+#define RTNET_LINK_STATE_NOCARRIER (1 << __RTNET_LINK_STATE_NOCARRIER)
 
 /***
  *  rtnet_device
diff --git a/kernel/drivers/net/stack/rtdev.c b/kernel/drivers/net/stack/rtdev.c
index f7e1f41..5eb73ce 100644
--- a/kernel/drivers/net/stack/rtdev.c
+++ b/kernel/drivers/net/stack/rtdev.c
@@ -644,7 +644,7 @@ int rtdev_open(struct rtnet_device *rtdev)
ret = rtdev->open(rtdev);
 
 if ( !ret )  {
-   rtdev->flags |= (IFF_UP | IFF_RUNNING);
+   rtdev->flags |= IFF_UP;
set_bit(__RTNET_LINK_STATE_START, >link_state);
 } else
rtdev_dereference(rtdev);
diff --git a/kernel/drivers/net/stack/rtnet_chrdev.c 
b/kernel/drivers/net/stack/rtnet_chrdev.c
index d3f617c..f06ff2a 100644
--- a/kernel/drivers/net/stack/rtnet_chrdev.c
+++ b/kernel/drivers/net/stack/rtnet_chrdev.c
@@ -210,6 +210,13 @@ static int rtnet_core_ioctl(struct rtnet_device *rtdev, 
unsigned int request,
cmd.args.info.broadcast_ip = rtdev->broadcast_ip;
cmd.args.info.mtu  = rtdev->mtu;
cmd.args.info.flags= rtdev->flags;
+if ((cmd.args.info.flags & IFF_UP)
+   && (rtdev->link_state
+   & (RTNET_LINK_STATE_PRESENT
+   | RTNET_LINK_STATE_NOCARRIER))
+== RTNET_LINK_STATE_PRESENT)
+cmd.args.info.flags |= IFF_RUNNING;
+
memcpy(cmd.args.info.dev_addr, rtdev->dev_addr, MAX_ADDR_LEN);
 
mutex_unlock(>nrt_lock);
diff --git a/kernel/drivers/net/stack/socket.c 
b/kernel/drivers/net/stack/socket.c
index 64a2a2e..7dacb25 100644
--- a/kernel/drivers/net/stack/socket.c
+++ b/kernel/drivers/net/stack/socket.c
@@ -242,7 +242,7 @@ int rt_socket_if_ioctl(struct rtdm_fd *fd, int request, 
void *arg)
for (i = 1; i <= MAX_RT_DEVICES; i++) {
rtdev = rtdev_get_by_index(i);
if (rtdev != NULL) {
-   if ((rtdev->flags & IFF_RUNNING) == 0) {
+   if ((rtdev->flags & IFF_UP) == 0) {
rtdev_dereference(rtdev);
continue;
}
@@ -288,6 +288,12 @@ int rt_socket_if_ioctl(struct rtdm_fd *fd, int request, 
void *arg)
 
case SIOCGIFFLAGS:
ifr->ifr_flags = rtdev->flags;
+if ((ifr->ifr_flags & IFF_UP)
+   && (rtdev->link_state
+   & (RTNET_LINK_STATE_PRESENT
+   | RTNET_LINK_STATE_NOCARRIER))
+== RTNET_LINK_STATE_PRESENT)
+ifr->ifr_flags |= IFF_RUNNING;
break;
 
case SIOCGIFHWADDR:
diff --git a/utils/net/rtifconfig.c b/utils/net/rtifconfig.c
index 2024afe..8117e12 100644
--- a/utils/net/rtifconfig.c
+++ b/utils/net/rtifconfig.c
@@ -290,7 +290,7 @@ void do_display(int print_flags)
 ret = ioctl(f, IOC_RT_IFINFO, );
 if (ret == 0) {
 if (((print_flags & PRINT_FLAG_INACTIVE) != 0) ||
-((cmd.args.info.flags & IFF_RUNNING) != 0))
+((cmd.args.info.flags & IFF_UP) != 0))
 print_dev();
 } else if (errno != ENODEV) {
 perror("ioctl");


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Gilles Chanteperdrix : rtnet/ioctl: allow checking link state

2015-11-04 Thread git repository hosting
Module: xenomai-gch
Branch: for-3.0.x
Commit: ba315472fef528ce82cf2bfe852c99092f0046c7
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=ba315472fef528ce82cf2bfe852c99092f0046c7

Author: Gilles Chanteperdrix 
Date:   Sat Oct 10 19:37:50 2015 +0200

rtnet/ioctl: allow checking link state

Use the IFF_RUNNING bit in the flags returned by the SIOCGIFFLAGS ioctl,
like Linux SIOCGIFFLAGS ioctl.

---

 kernel/drivers/net/stack/include/rtdev.h |4 
 kernel/drivers/net/stack/rtdev.c |2 +-
 kernel/drivers/net/stack/rtnet_chrdev.c  |7 +++
 kernel/drivers/net/stack/socket.c|8 +++-
 utils/net/rtifconfig.c   |2 +-
 5 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/kernel/drivers/net/stack/include/rtdev.h 
b/kernel/drivers/net/stack/include/rtdev.h
index 67a8ffd..c1c0b4e 100644
--- a/kernel/drivers/net/stack/include/rtdev.h
+++ b/kernel/drivers/net/stack/include/rtdev.h
@@ -55,6 +55,10 @@ enum rtnet_link_state {
__RTNET_LINK_STATE_PRESENT,
__RTNET_LINK_STATE_NOCARRIER,
 };
+#define RTNET_LINK_STATE_XOFF (1 << __RTNET_LINK_STATE_XOFF)
+#define RTNET_LINK_STATE_START (1 << __RTNET_LINK_STATE_START)
+#define RTNET_LINK_STATE_PRESENT (1 << __RTNET_LINK_STATE_PRESENT)
+#define RTNET_LINK_STATE_NOCARRIER (1 << __RTNET_LINK_STATE_NOCARRIER)
 
 /***
  *  rtnet_device
diff --git a/kernel/drivers/net/stack/rtdev.c b/kernel/drivers/net/stack/rtdev.c
index f7e1f41..5eb73ce 100644
--- a/kernel/drivers/net/stack/rtdev.c
+++ b/kernel/drivers/net/stack/rtdev.c
@@ -644,7 +644,7 @@ int rtdev_open(struct rtnet_device *rtdev)
ret = rtdev->open(rtdev);
 
 if ( !ret )  {
-   rtdev->flags |= (IFF_UP | IFF_RUNNING);
+   rtdev->flags |= IFF_UP;
set_bit(__RTNET_LINK_STATE_START, >link_state);
 } else
rtdev_dereference(rtdev);
diff --git a/kernel/drivers/net/stack/rtnet_chrdev.c 
b/kernel/drivers/net/stack/rtnet_chrdev.c
index d3f617c..f06ff2a 100644
--- a/kernel/drivers/net/stack/rtnet_chrdev.c
+++ b/kernel/drivers/net/stack/rtnet_chrdev.c
@@ -210,6 +210,13 @@ static int rtnet_core_ioctl(struct rtnet_device *rtdev, 
unsigned int request,
cmd.args.info.broadcast_ip = rtdev->broadcast_ip;
cmd.args.info.mtu  = rtdev->mtu;
cmd.args.info.flags= rtdev->flags;
+if ((cmd.args.info.flags & IFF_UP)
+   && (rtdev->link_state
+   & (RTNET_LINK_STATE_PRESENT
+   | RTNET_LINK_STATE_NOCARRIER))
+== RTNET_LINK_STATE_PRESENT)
+cmd.args.info.flags |= IFF_RUNNING;
+
memcpy(cmd.args.info.dev_addr, rtdev->dev_addr, MAX_ADDR_LEN);
 
mutex_unlock(>nrt_lock);
diff --git a/kernel/drivers/net/stack/socket.c 
b/kernel/drivers/net/stack/socket.c
index 64a2a2e..7dacb25 100644
--- a/kernel/drivers/net/stack/socket.c
+++ b/kernel/drivers/net/stack/socket.c
@@ -242,7 +242,7 @@ int rt_socket_if_ioctl(struct rtdm_fd *fd, int request, 
void *arg)
for (i = 1; i <= MAX_RT_DEVICES; i++) {
rtdev = rtdev_get_by_index(i);
if (rtdev != NULL) {
-   if ((rtdev->flags & IFF_RUNNING) == 0) {
+   if ((rtdev->flags & IFF_UP) == 0) {
rtdev_dereference(rtdev);
continue;
}
@@ -288,6 +288,12 @@ int rt_socket_if_ioctl(struct rtdm_fd *fd, int request, 
void *arg)
 
case SIOCGIFFLAGS:
ifr->ifr_flags = rtdev->flags;
+if ((ifr->ifr_flags & IFF_UP)
+   && (rtdev->link_state
+   & (RTNET_LINK_STATE_PRESENT
+   | RTNET_LINK_STATE_NOCARRIER))
+== RTNET_LINK_STATE_PRESENT)
+ifr->ifr_flags |= IFF_RUNNING;
break;
 
case SIOCGIFHWADDR:
diff --git a/utils/net/rtifconfig.c b/utils/net/rtifconfig.c
index 2024afe..8117e12 100644
--- a/utils/net/rtifconfig.c
+++ b/utils/net/rtifconfig.c
@@ -290,7 +290,7 @@ void do_display(int print_flags)
 ret = ioctl(f, IOC_RT_IFINFO, );
 if (ret == 0) {
 if (((print_flags & PRINT_FLAG_INACTIVE) != 0) ||
-((cmd.args.info.flags & IFF_RUNNING) != 0))
+((cmd.args.info.flags & IFF_UP) != 0))
 print_dev();
 } else if (errno != ENODEV) {
 perror("ioctl");


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git