20#ifndef __RTNET_PORT_H_
21#define __RTNET_PORT_H_
25#include <linux/bitops.h>
26#include <linux/moduleparam.h>
27#include <linux/list.h>
28#include <linux/netdevice.h>
29#include <linux/vmalloc.h>
30#include <linux/bitops.h>
36#include <ethernet/eth.h>
38static inline void rtnetif_start_queue(
struct rtnet_device *rtdev)
40 clear_bit(__RTNET_LINK_STATE_XOFF, &rtdev->link_state);
43static inline void rtnetif_wake_queue(
struct rtnet_device *rtdev)
45 if (test_and_clear_bit(__RTNET_LINK_STATE_XOFF, &rtdev->link_state)) {
50static inline void rtnetif_stop_queue(
struct rtnet_device *rtdev)
52 set_bit(__RTNET_LINK_STATE_XOFF, &rtdev->link_state);
55static inline int rtnetif_queue_stopped(
struct rtnet_device *rtdev)
57 return test_bit(__RTNET_LINK_STATE_XOFF, &rtdev->link_state);
60static inline int rtnetif_running(
struct rtnet_device *rtdev)
62 return test_bit(__RTNET_LINK_STATE_START, &rtdev->link_state);
65static inline int rtnetif_device_present(
struct rtnet_device *rtdev)
67 return test_bit(__RTNET_LINK_STATE_PRESENT, &rtdev->link_state);
70static inline void rtnetif_device_detach(
struct rtnet_device *rtdev)
72 if (test_and_clear_bit(__RTNET_LINK_STATE_PRESENT,
73 &rtdev->link_state) &&
74 rtnetif_running(rtdev)) {
75 rtnetif_stop_queue(rtdev);
79static inline void rtnetif_device_attach(
struct rtnet_device *rtdev)
81 if (!test_and_set_bit(__RTNET_LINK_STATE_PRESENT, &rtdev->link_state) &&
82 rtnetif_running(rtdev)) {
83 rtnetif_wake_queue(rtdev);
88static inline void rtnetif_carrier_on(
struct rtnet_device *rtdev)
90 clear_bit(__RTNET_LINK_STATE_NOCARRIER, &rtdev->link_state);
97static inline void rtnetif_carrier_off(
struct rtnet_device *rtdev)
99 set_bit(__RTNET_LINK_STATE_NOCARRIER, &rtdev->link_state);
102static inline int rtnetif_carrier_ok(
struct rtnet_device *rtdev)
104 return !test_bit(__RTNET_LINK_STATE_NOCARRIER, &rtdev->link_state);
107#define NIPQUAD(addr) \
108 ((unsigned char *)&addr)[0], ((unsigned char *)&addr)[1], \
109 ((unsigned char *)&addr)[2], ((unsigned char *)&addr)[3]
110#define NIPQUAD_FMT "%u.%u.%u.%u"
Real-Time Driver Model for Xenomai, driver API header.