mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 13:44:26 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1341 commits) virtio_net: remove forgotten assignment be2net: fix tx completion polling sis190: fix cable detect via link status poll net: fix protocol sk_buff field bridge: Fix build error when IGMP_SNOOPING is not enabled bnx2x: Tx barriers and locks scm: Only support SCM_RIGHTS on unix domain sockets. vhost-net: restart tx poll on sk_sndbuf full vhost: fix get_user_pages_fast error handling vhost: initialize log eventfd context pointer vhost: logging thinko fix wireless: convert to use netdev_for_each_mc_addr ethtool: do not set some flags, if others failed ipoib: returned back addrlen check for mc addresses netlink: Adding inode field to /proc/net/netlink axnet_cs: add new id bridge: Make IGMP snooping depend upon BRIDGE. bridge: Add multicast count/interval sysfs entries bridge: Add hash elasticity/max sysfs entries bridge: Add multicast_snooping sysfs toggle ... Trivial conflicts in Documentation/feature-removal-schedule.txt
This commit is contained in:
commit
6d6b89bd2e
1214 changed files with 114042 additions and 39272 deletions
|
|
@ -363,6 +363,7 @@ unifdef-y += uio.h
|
|||
unifdef-y += unistd.h
|
||||
unifdef-y += usbdevice_fs.h
|
||||
unifdef-y += utsname.h
|
||||
unifdef-y += vhost.h
|
||||
unifdef-y += videodev2.h
|
||||
unifdef-y += videodev.h
|
||||
unifdef-y += virtio_config.h
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
#define PHY_ID_BCM50610 0x0143bd60
|
||||
#define PHY_ID_BCM50610M 0x0143bd70
|
||||
#define PHY_ID_BCMAC131 0x0143bc70
|
||||
#define PHY_ID_BCM57780 0x03625d90
|
||||
|
||||
#define PHY_BCM_OUI_MASK 0xfffffc00
|
||||
#define PHY_BCM_OUI_1 0x00206000
|
||||
#define PHY_BCM_OUI_2 0x0143bc00
|
||||
#define PHY_BCM_OUI_3 0x03625c00
|
||||
|
||||
|
||||
#define PHY_BCM_FLAGS_MODE_COPPER 0x00000001
|
||||
#define PHY_BCM_FLAGS_MODE_1000BX 0x00000002
|
||||
#define PHY_BCM_FLAGS_INTF_SGMII 0x00000010
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ struct can_priv {
|
|||
|
||||
enum can_state state;
|
||||
u32 ctrlmode;
|
||||
u32 ctrlmode_supported;
|
||||
|
||||
int restart_ms;
|
||||
struct timer_list restart_timer;
|
||||
|
|
@ -46,6 +47,8 @@ struct can_priv {
|
|||
int (*do_set_mode)(struct net_device *dev, enum can_mode mode);
|
||||
int (*do_get_state)(const struct net_device *dev,
|
||||
enum can_state *state);
|
||||
int (*do_get_berr_counter)(const struct net_device *dev,
|
||||
struct can_berr_counter *bec);
|
||||
|
||||
unsigned int echo_skb_max;
|
||||
struct sk_buff **echo_skb;
|
||||
|
|
@ -60,6 +63,21 @@ struct can_priv {
|
|||
*/
|
||||
#define get_can_dlc(i) (min_t(__u8, (i), 8))
|
||||
|
||||
/* Drop a given socketbuffer if it does not contain a valid CAN frame. */
|
||||
static inline int can_dropped_invalid_skb(struct net_device *dev,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
const struct can_frame *cf = (struct can_frame *)skb->data;
|
||||
|
||||
if (unlikely(skb->len != sizeof(*cf) || cf->can_dlc > 8)) {
|
||||
kfree_skb(skb);
|
||||
dev->stats.tx_dropped++;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct net_device *alloc_candev(int sizeof_priv, unsigned int echo_skb_max);
|
||||
void free_candev(struct net_device *dev);
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,14 @@ enum can_state {
|
|||
CAN_STATE_MAX
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN bus error counters
|
||||
*/
|
||||
struct can_berr_counter {
|
||||
__u16 txerr;
|
||||
__u16 rxerr;
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN controller mode
|
||||
*/
|
||||
|
|
@ -77,9 +85,11 @@ struct can_ctrlmode {
|
|||
__u32 flags;
|
||||
};
|
||||
|
||||
#define CAN_CTRLMODE_LOOPBACK 0x1 /* Loopback mode */
|
||||
#define CAN_CTRLMODE_LISTENONLY 0x2 /* Listen-only mode */
|
||||
#define CAN_CTRLMODE_3_SAMPLES 0x4 /* Triple sampling mode */
|
||||
#define CAN_CTRLMODE_LOOPBACK 0x01 /* Loopback mode */
|
||||
#define CAN_CTRLMODE_LISTENONLY 0x02 /* Listen-only mode */
|
||||
#define CAN_CTRLMODE_3_SAMPLES 0x04 /* Triple sampling mode */
|
||||
#define CAN_CTRLMODE_ONE_SHOT 0x08 /* One-Shot mode */
|
||||
#define CAN_CTRLMODE_BERR_REPORTING 0x10 /* Bus-error reporting */
|
||||
|
||||
/*
|
||||
* CAN device statistics
|
||||
|
|
@ -105,6 +115,7 @@ enum {
|
|||
IFLA_CAN_CTRLMODE,
|
||||
IFLA_CAN_RESTART_MS,
|
||||
IFLA_CAN_RESTART,
|
||||
IFLA_CAN_BERR_COUNTER,
|
||||
__IFLA_CAN_MAX
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
#ifndef __CAN_PLATFORM_TI_HECC_H__
|
||||
#define __CAN_PLATFORM_TI_HECC_H__
|
||||
|
||||
/*
|
||||
* TI HECC (High End CAN Controller) driver platform header
|
||||
*
|
||||
|
|
@ -23,6 +26,7 @@
|
|||
* @mbx_offset: Mailbox RAM offset
|
||||
* @int_line: Interrupt line to use - 0 or 1
|
||||
* @version: version for future use
|
||||
* @transceiver_switch: platform specific callback fn for transceiver control
|
||||
*
|
||||
* Platform data structure to get all platform specific settings.
|
||||
* this structure also accounts the fact that the IP may have different
|
||||
|
|
@ -35,6 +39,6 @@ struct ti_hecc_platform_data {
|
|||
u32 mbx_offset;
|
||||
u32 int_line;
|
||||
u32 version;
|
||||
void (*transceiver_switch) (int);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -242,6 +242,7 @@ enum ethtool_stringset {
|
|||
ETH_SS_TEST = 0,
|
||||
ETH_SS_STATS,
|
||||
ETH_SS_PRIV_FLAGS,
|
||||
ETH_SS_NTUPLE_FILTERS,
|
||||
};
|
||||
|
||||
/* for passing string sets for data tagging */
|
||||
|
|
@ -290,6 +291,7 @@ struct ethtool_perm_addr {
|
|||
*/
|
||||
enum ethtool_flags {
|
||||
ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */
|
||||
ETH_FLAG_NTUPLE = (1 << 27), /* N-tuple filters enabled */
|
||||
};
|
||||
|
||||
/* The following structures are for supporting RX network flow
|
||||
|
|
@ -363,6 +365,35 @@ struct ethtool_rxnfc {
|
|||
__u32 rule_locs[0];
|
||||
};
|
||||
|
||||
struct ethtool_rx_ntuple_flow_spec {
|
||||
__u32 flow_type;
|
||||
union {
|
||||
struct ethtool_tcpip4_spec tcp_ip4_spec;
|
||||
struct ethtool_tcpip4_spec udp_ip4_spec;
|
||||
struct ethtool_tcpip4_spec sctp_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec ah_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec esp_ip4_spec;
|
||||
struct ethtool_rawip4_spec raw_ip4_spec;
|
||||
struct ethtool_ether_spec ether_spec;
|
||||
struct ethtool_usrip4_spec usr_ip4_spec;
|
||||
__u8 hdata[64];
|
||||
} h_u, m_u; /* entry, mask */
|
||||
|
||||
__u16 vlan_tag;
|
||||
__u16 vlan_tag_mask;
|
||||
__u64 data; /* user-defined flow spec data */
|
||||
__u64 data_mask; /* user-defined flow spec mask */
|
||||
|
||||
/* signed to distinguish between queue and actions (DROP) */
|
||||
__s32 action;
|
||||
#define ETHTOOL_RXNTUPLE_ACTION_DROP -1
|
||||
};
|
||||
|
||||
struct ethtool_rx_ntuple {
|
||||
__u32 cmd;
|
||||
struct ethtool_rx_ntuple_flow_spec fs;
|
||||
};
|
||||
|
||||
#define ETHTOOL_FLASH_MAX_FILENAME 128
|
||||
enum ethtool_flash_op_type {
|
||||
ETHTOOL_FLASH_ALL_REGIONS = 0,
|
||||
|
|
@ -377,6 +408,20 @@ struct ethtool_flash {
|
|||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/rculist.h>
|
||||
|
||||
struct ethtool_rx_ntuple_flow_spec_container {
|
||||
struct ethtool_rx_ntuple_flow_spec fs;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
struct ethtool_rx_ntuple_list {
|
||||
#define ETHTOOL_MAX_NTUPLE_LIST_ENTRY 1024
|
||||
#define ETHTOOL_MAX_NTUPLE_STRING_PER_ENTRY 14
|
||||
struct list_head list;
|
||||
unsigned int count;
|
||||
};
|
||||
|
||||
struct net_device;
|
||||
|
||||
/* Some generic methods drivers may use in their ethtool_ops */
|
||||
|
|
@ -394,6 +439,7 @@ u32 ethtool_op_get_ufo(struct net_device *dev);
|
|||
int ethtool_op_set_ufo(struct net_device *dev, u32 data);
|
||||
u32 ethtool_op_get_flags(struct net_device *dev);
|
||||
int ethtool_op_set_flags(struct net_device *dev, u32 data);
|
||||
void ethtool_ntuple_flush(struct net_device *dev);
|
||||
|
||||
/**
|
||||
* ðtool_ops - Alter and report network device settings
|
||||
|
|
@ -500,6 +546,8 @@ struct ethtool_ops {
|
|||
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
|
||||
int (*flash_device)(struct net_device *, struct ethtool_flash *);
|
||||
int (*reset)(struct net_device *, u32 *);
|
||||
int (*set_rx_ntuple)(struct net_device *, struct ethtool_rx_ntuple *);
|
||||
int (*get_rx_ntuple)(struct net_device *, u32 stringset, void *);
|
||||
};
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
|
@ -559,6 +607,9 @@ struct ethtool_ops {
|
|||
#define ETHTOOL_FLASHDEV 0x00000033 /* Flash firmware to device */
|
||||
#define ETHTOOL_RESET 0x00000034 /* Reset hardware */
|
||||
|
||||
#define ETHTOOL_SRXNTUPLE 0x00000035 /* Add an n-tuple filter to device */
|
||||
#define ETHTOOL_GRXNTUPLE 0x00000036 /* Get n-tuple filters from device */
|
||||
|
||||
/* compatibility with older code */
|
||||
#define SPARC_ETH_GSET ETHTOOL_GSET
|
||||
#define SPARC_ETH_SSET ETHTOOL_SSET
|
||||
|
|
|
|||
|
|
@ -174,8 +174,7 @@ struct icmp6_filter {
|
|||
|
||||
extern void icmpv6_send(struct sk_buff *skb,
|
||||
u8 type, u8 code,
|
||||
__u32 info,
|
||||
struct net_device *dev);
|
||||
__u32 info);
|
||||
|
||||
extern int icmpv6_init(void);
|
||||
extern int icmpv6_err_convert(u8 type, u8 code,
|
||||
|
|
|
|||
|
|
@ -120,6 +120,26 @@
|
|||
#define IEEE80211_QOS_CTL_TID_MASK 0x000F
|
||||
#define IEEE80211_QOS_CTL_TAG1D_MASK 0x0007
|
||||
|
||||
/* U-APSD queue for WMM IEs sent by AP */
|
||||
#define IEEE80211_WMM_IE_AP_QOSINFO_UAPSD (1<<7)
|
||||
|
||||
/* U-APSD queues for WMM IEs sent by STA */
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_AC_VO (1<<0)
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_AC_VI (1<<1)
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_AC_BK (1<<2)
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_AC_BE (1<<3)
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_AC_MASK 0x0f
|
||||
|
||||
/* U-APSD max SP length for WMM IEs sent by STA */
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_ALL 0x00
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_2 0x01
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_4 0x02
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_6 0x03
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_MASK 0x03
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT 5
|
||||
|
||||
#define IEEE80211_HT_CTL_LEN 4
|
||||
|
||||
struct ieee80211_hdr {
|
||||
__le16 frame_control;
|
||||
__le16 duration_id;
|
||||
|
|
@ -130,6 +150,25 @@ struct ieee80211_hdr {
|
|||
u8 addr4[6];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct ieee80211_hdr_3addr {
|
||||
__le16 frame_control;
|
||||
__le16 duration_id;
|
||||
u8 addr1[6];
|
||||
u8 addr2[6];
|
||||
u8 addr3[6];
|
||||
__le16 seq_ctrl;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct ieee80211_qos_hdr {
|
||||
__le16 frame_control;
|
||||
__le16 duration_id;
|
||||
u8 addr1[6];
|
||||
u8 addr2[6];
|
||||
u8 addr3[6];
|
||||
__le16 seq_ctrl;
|
||||
__le16 qos_ctrl;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/**
|
||||
* ieee80211_has_tods - check if IEEE80211_FCTL_TODS is set
|
||||
* @fc: frame control bytes in little-endian byteorder
|
||||
|
|
@ -707,6 +746,10 @@ struct ieee80211_mgmt {
|
|||
u8 action;
|
||||
u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN];
|
||||
} __attribute__ ((packed)) sa_query;
|
||||
struct {
|
||||
u8 action;
|
||||
u8 smps_control;
|
||||
} __attribute__ ((packed)) ht_smps;
|
||||
} u;
|
||||
} __attribute__ ((packed)) action;
|
||||
} u;
|
||||
|
|
@ -771,7 +814,10 @@ struct ieee80211_bar {
|
|||
/**
|
||||
* struct ieee80211_mcs_info - MCS information
|
||||
* @rx_mask: RX mask
|
||||
* @rx_highest: highest supported RX rate
|
||||
* @rx_highest: highest supported RX rate. If set represents
|
||||
* the highest supported RX data rate in units of 1 Mbps.
|
||||
* If this field is 0 this value should not be used to
|
||||
* consider the highest RX data rate supported.
|
||||
* @tx_params: TX parameters
|
||||
*/
|
||||
struct ieee80211_mcs_info {
|
||||
|
|
@ -824,6 +870,7 @@ struct ieee80211_ht_cap {
|
|||
#define IEEE80211_HT_CAP_LDPC_CODING 0x0001
|
||||
#define IEEE80211_HT_CAP_SUP_WIDTH_20_40 0x0002
|
||||
#define IEEE80211_HT_CAP_SM_PS 0x000C
|
||||
#define IEEE80211_HT_CAP_SM_PS_SHIFT 2
|
||||
#define IEEE80211_HT_CAP_GRN_FLD 0x0010
|
||||
#define IEEE80211_HT_CAP_SGI_20 0x0020
|
||||
#define IEEE80211_HT_CAP_SGI_40 0x0040
|
||||
|
|
@ -839,6 +886,7 @@ struct ieee80211_ht_cap {
|
|||
/* 802.11n HT capability AMPDU settings (for ampdu_params_info) */
|
||||
#define IEEE80211_HT_AMPDU_PARM_FACTOR 0x03
|
||||
#define IEEE80211_HT_AMPDU_PARM_DENSITY 0x1C
|
||||
#define IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT 2
|
||||
|
||||
/*
|
||||
* Maximum length of AMPDU that the STA can receive.
|
||||
|
|
@ -922,12 +970,17 @@ struct ieee80211_ht_info {
|
|||
#define IEEE80211_MAX_AMPDU_BUF 0x40
|
||||
|
||||
|
||||
/* Spatial Multiplexing Power Save Modes */
|
||||
/* Spatial Multiplexing Power Save Modes (for capability) */
|
||||
#define WLAN_HT_CAP_SM_PS_STATIC 0
|
||||
#define WLAN_HT_CAP_SM_PS_DYNAMIC 1
|
||||
#define WLAN_HT_CAP_SM_PS_INVALID 2
|
||||
#define WLAN_HT_CAP_SM_PS_DISABLED 3
|
||||
|
||||
/* for SM power control field lower two bits */
|
||||
#define WLAN_HT_SMPS_CONTROL_DISABLED 0
|
||||
#define WLAN_HT_SMPS_CONTROL_STATIC 1
|
||||
#define WLAN_HT_SMPS_CONTROL_DYNAMIC 3
|
||||
|
||||
/* Authentication algorithms */
|
||||
#define WLAN_AUTH_OPEN 0
|
||||
#define WLAN_AUTH_SHARED_KEY 1
|
||||
|
|
@ -1071,12 +1124,12 @@ enum ieee80211_eid {
|
|||
WLAN_EID_TIM = 5,
|
||||
WLAN_EID_IBSS_PARAMS = 6,
|
||||
WLAN_EID_CHALLENGE = 16,
|
||||
/* 802.11d */
|
||||
|
||||
WLAN_EID_COUNTRY = 7,
|
||||
WLAN_EID_HP_PARAMS = 8,
|
||||
WLAN_EID_HP_TABLE = 9,
|
||||
WLAN_EID_REQUEST = 10,
|
||||
/* 802.11e */
|
||||
|
||||
WLAN_EID_QBSS_LOAD = 11,
|
||||
WLAN_EID_EDCA_PARAM_SET = 12,
|
||||
WLAN_EID_TSPEC = 13,
|
||||
|
|
@ -1099,7 +1152,7 @@ enum ieee80211_eid {
|
|||
WLAN_EID_PREP = 69,
|
||||
WLAN_EID_PERR = 70,
|
||||
WLAN_EID_RANN = 49, /* compatible with FreeBSD */
|
||||
/* 802.11h */
|
||||
|
||||
WLAN_EID_PWR_CONSTRAINT = 32,
|
||||
WLAN_EID_PWR_CAPABILITY = 33,
|
||||
WLAN_EID_TPC_REQUEST = 34,
|
||||
|
|
@ -1110,20 +1163,41 @@ enum ieee80211_eid {
|
|||
WLAN_EID_MEASURE_REPORT = 39,
|
||||
WLAN_EID_QUIET = 40,
|
||||
WLAN_EID_IBSS_DFS = 41,
|
||||
/* 802.11g */
|
||||
|
||||
WLAN_EID_ERP_INFO = 42,
|
||||
WLAN_EID_EXT_SUPP_RATES = 50,
|
||||
/* 802.11n */
|
||||
|
||||
WLAN_EID_HT_CAPABILITY = 45,
|
||||
WLAN_EID_HT_INFORMATION = 61,
|
||||
/* 802.11i */
|
||||
|
||||
WLAN_EID_RSN = 48,
|
||||
WLAN_EID_TIMEOUT_INTERVAL = 56,
|
||||
WLAN_EID_MMIE = 76 /* 802.11w */,
|
||||
WLAN_EID_MMIE = 76,
|
||||
WLAN_EID_WPA = 221,
|
||||
WLAN_EID_GENERIC = 221,
|
||||
WLAN_EID_VENDOR_SPECIFIC = 221,
|
||||
WLAN_EID_QOS_PARAMETER = 222
|
||||
WLAN_EID_QOS_PARAMETER = 222,
|
||||
|
||||
WLAN_EID_AP_CHAN_REPORT = 51,
|
||||
WLAN_EID_NEIGHBOR_REPORT = 52,
|
||||
WLAN_EID_RCPI = 53,
|
||||
WLAN_EID_BSS_AVG_ACCESS_DELAY = 63,
|
||||
WLAN_EID_ANTENNA_INFO = 64,
|
||||
WLAN_EID_RSNI = 65,
|
||||
WLAN_EID_MEASUREMENT_PILOT_TX_INFO = 66,
|
||||
WLAN_EID_BSS_AVAILABLE_CAPACITY = 67,
|
||||
WLAN_EID_BSS_AC_ACCESS_DELAY = 68,
|
||||
WLAN_EID_RRM_ENABLED_CAPABILITIES = 70,
|
||||
WLAN_EID_MULTIPLE_BSSID = 71,
|
||||
|
||||
WLAN_EID_MOBILITY_DOMAIN = 54,
|
||||
WLAN_EID_FAST_BSS_TRANSITION = 55,
|
||||
WLAN_EID_TIMEOUT_INTERVAL = 56,
|
||||
WLAN_EID_RIC_DATA = 57,
|
||||
WLAN_EID_RIC_DESCRIPTOR = 75,
|
||||
|
||||
WLAN_EID_DSE_REGISTERED_LOCATION = 58,
|
||||
WLAN_EID_SUPPORTED_REGULATORY_CLASSES = 59,
|
||||
WLAN_EID_EXT_CHANSWITCH_ANN = 60,
|
||||
};
|
||||
|
||||
/* Action category code */
|
||||
|
|
@ -1150,6 +1224,18 @@ enum ieee80211_spectrum_mgmt_actioncode {
|
|||
WLAN_ACTION_SPCT_CHL_SWITCH = 4,
|
||||
};
|
||||
|
||||
/* HT action codes */
|
||||
enum ieee80211_ht_actioncode {
|
||||
WLAN_HT_ACTION_NOTIFY_CHANWIDTH = 0,
|
||||
WLAN_HT_ACTION_SMPS = 1,
|
||||
WLAN_HT_ACTION_PSMP = 2,
|
||||
WLAN_HT_ACTION_PCO_PHASE = 3,
|
||||
WLAN_HT_ACTION_CSI = 4,
|
||||
WLAN_HT_ACTION_NONCOMPRESSED_BF = 5,
|
||||
WLAN_HT_ACTION_COMPRESSED_BF = 6,
|
||||
WLAN_HT_ACTION_ASEL_IDX_FEEDBACK = 7,
|
||||
};
|
||||
|
||||
/* Security key length */
|
||||
enum ieee80211_key_len {
|
||||
WLAN_KEY_LEN_WEP40 = 5,
|
||||
|
|
|
|||
|
|
@ -78,6 +78,11 @@ enum {
|
|||
#define IFLA_LINKINFO IFLA_LINKINFO
|
||||
IFLA_NET_NS_PID,
|
||||
IFLA_IFALIAS,
|
||||
IFLA_NUM_VF, /* Number of VFs if device is SR-IOV PF */
|
||||
IFLA_VF_MAC, /* Hardware queue specific attributes */
|
||||
IFLA_VF_VLAN,
|
||||
IFLA_VF_TX_RATE, /* TX Bandwidth Allocation */
|
||||
IFLA_VFINFO,
|
||||
__IFLA_MAX
|
||||
};
|
||||
|
||||
|
|
@ -196,4 +201,29 @@ enum macvlan_mode {
|
|||
MACVLAN_MODE_BRIDGE = 4, /* talk to bridge ports directly */
|
||||
};
|
||||
|
||||
/* SR-IOV virtual function managment section */
|
||||
|
||||
struct ifla_vf_mac {
|
||||
__u32 vf;
|
||||
__u8 mac[32]; /* MAX_ADDR_LEN */
|
||||
};
|
||||
|
||||
struct ifla_vf_vlan {
|
||||
__u32 vf;
|
||||
__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
|
||||
__u32 qos;
|
||||
};
|
||||
|
||||
struct ifla_vf_tx_rate {
|
||||
__u32 vf;
|
||||
__u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
|
||||
};
|
||||
|
||||
struct ifla_vf_info {
|
||||
__u32 vf;
|
||||
__u8 mac[32];
|
||||
__u32 vlan;
|
||||
__u32 qos;
|
||||
__u32 tx_rate;
|
||||
};
|
||||
#endif /* _LINUX_IF_LINK_H */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,90 @@
|
|||
#ifndef _LINUX_IF_MACVLAN_H
|
||||
#define _LINUX_IF_MACVLAN_H
|
||||
|
||||
#include <linux/if_link.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/netlink.h>
|
||||
#include <net/netlink.h>
|
||||
|
||||
#if defined(CONFIG_MACVTAP) || defined(CONFIG_MACVTAP_MODULE)
|
||||
struct socket *macvtap_get_socket(struct file *);
|
||||
#else
|
||||
#include <linux/err.h>
|
||||
#include <linux/errno.h>
|
||||
struct file;
|
||||
struct socket;
|
||||
static inline struct socket *macvtap_get_socket(struct file *f)
|
||||
{
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
#endif /* CONFIG_MACVTAP */
|
||||
|
||||
struct macvlan_port;
|
||||
struct macvtap_queue;
|
||||
|
||||
/**
|
||||
* struct macvlan_rx_stats - MACVLAN percpu rx stats
|
||||
* @rx_packets: number of received packets
|
||||
* @rx_bytes: number of received bytes
|
||||
* @multicast: number of received multicast packets
|
||||
* @rx_errors: number of errors
|
||||
*/
|
||||
struct macvlan_rx_stats {
|
||||
unsigned long rx_packets;
|
||||
unsigned long rx_bytes;
|
||||
unsigned long multicast;
|
||||
unsigned long rx_errors;
|
||||
};
|
||||
|
||||
struct macvlan_dev {
|
||||
struct net_device *dev;
|
||||
struct list_head list;
|
||||
struct hlist_node hlist;
|
||||
struct macvlan_port *port;
|
||||
struct net_device *lowerdev;
|
||||
struct macvlan_rx_stats __percpu *rx_stats;
|
||||
enum macvlan_mode mode;
|
||||
int (*receive)(struct sk_buff *skb);
|
||||
int (*forward)(struct net_device *dev, struct sk_buff *skb);
|
||||
struct macvtap_queue *tap;
|
||||
};
|
||||
|
||||
static inline void macvlan_count_rx(const struct macvlan_dev *vlan,
|
||||
unsigned int len, bool success,
|
||||
bool multicast)
|
||||
{
|
||||
struct macvlan_rx_stats *rx_stats;
|
||||
|
||||
rx_stats = per_cpu_ptr(vlan->rx_stats, smp_processor_id());
|
||||
if (likely(success)) {
|
||||
rx_stats->rx_packets++;;
|
||||
rx_stats->rx_bytes += len;
|
||||
if (multicast)
|
||||
rx_stats->multicast++;
|
||||
} else {
|
||||
rx_stats->rx_errors++;
|
||||
}
|
||||
}
|
||||
|
||||
extern int macvlan_common_newlink(struct net *src_net, struct net_device *dev,
|
||||
struct nlattr *tb[], struct nlattr *data[],
|
||||
int (*receive)(struct sk_buff *skb),
|
||||
int (*forward)(struct net_device *dev,
|
||||
struct sk_buff *skb));
|
||||
|
||||
extern void macvlan_count_rx(const struct macvlan_dev *vlan,
|
||||
unsigned int len, bool success,
|
||||
bool multicast);
|
||||
|
||||
extern void macvlan_dellink(struct net_device *dev, struct list_head *head);
|
||||
|
||||
extern int macvlan_link_register(struct rtnl_link_ops *ops);
|
||||
|
||||
extern netdev_tx_t macvlan_start_xmit(struct sk_buff *skb,
|
||||
struct net_device *dev);
|
||||
|
||||
|
||||
extern struct sk_buff *(*macvlan_handle_frame_hook)(struct sk_buff *);
|
||||
|
||||
#endif /* _LINUX_IF_MACVLAN_H */
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ struct sockaddr_ll {
|
|||
#define PACKET_RESERVE 12
|
||||
#define PACKET_TX_RING 13
|
||||
#define PACKET_LOSS 14
|
||||
#define PACKET_VNET_HDR 15
|
||||
|
||||
struct tpacket_stats {
|
||||
unsigned int tp_packets;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
#include <linux/types.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/filter.h>
|
||||
|
||||
/* Read queue size */
|
||||
#define TUN_READQ_SIZE 500
|
||||
|
|
@ -48,6 +49,8 @@
|
|||
#define TUNGETIFF _IOR('T', 210, unsigned int)
|
||||
#define TUNGETSNDBUF _IOR('T', 211, int)
|
||||
#define TUNSETSNDBUF _IOW('T', 212, int)
|
||||
#define TUNATTACHFILTER _IOW('T', 213, struct sock_fprog)
|
||||
#define TUNDETACHFILTER _IOW('T', 214, struct sock_fprog)
|
||||
|
||||
/* TUNSETIFF ifr flags */
|
||||
#define IFF_TUN 0x0001
|
||||
|
|
@ -86,4 +89,18 @@ struct tun_filter {
|
|||
__u8 addr[0][ETH_ALEN];
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#if defined(CONFIG_TUN) || defined(CONFIG_TUN_MODULE)
|
||||
struct socket *tun_get_socket(struct file *);
|
||||
#else
|
||||
#include <linux/err.h>
|
||||
#include <linux/errno.h>
|
||||
struct file;
|
||||
struct socket;
|
||||
static inline struct socket *tun_get_socket(struct file *f)
|
||||
{
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
#endif /* CONFIG_TUN */
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* __IF_TUN_H */
|
||||
|
|
|
|||
|
|
@ -153,6 +153,7 @@ extern int sysctl_igmp_max_msf;
|
|||
struct ip_sf_socklist {
|
||||
unsigned int sl_max;
|
||||
unsigned int sl_count;
|
||||
struct rcu_head rcu;
|
||||
__be32 sl_addr[0];
|
||||
};
|
||||
|
||||
|
|
@ -170,6 +171,7 @@ struct ip_mc_socklist {
|
|||
struct ip_mreqn multi;
|
||||
unsigned int sfmode; /* MCAST_{INCLUDE,EXCLUDE} */
|
||||
struct ip_sf_socklist *sflist;
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
struct ip_sf_list {
|
||||
|
|
|
|||
|
|
@ -84,6 +84,8 @@ struct in_addr {
|
|||
#define IP_ORIGDSTADDR 20
|
||||
#define IP_RECVORIGDSTADDR IP_ORIGDSTADDR
|
||||
|
||||
#define IP_MINTTL 21
|
||||
|
||||
/* IP_MTU_DISCOVER values */
|
||||
#define IP_PMTUDISC_DONT 0 /* Never send DF frames */
|
||||
#define IP_PMTUDISC_WANT 1 /* Use per route hints */
|
||||
|
|
|
|||
|
|
@ -10,10 +10,40 @@
|
|||
#include <linux/timer.h>
|
||||
#include <linux/sysctl.h>
|
||||
|
||||
enum
|
||||
{
|
||||
IPV4_DEVCONF_FORWARDING=1,
|
||||
IPV4_DEVCONF_MC_FORWARDING,
|
||||
IPV4_DEVCONF_PROXY_ARP,
|
||||
IPV4_DEVCONF_ACCEPT_REDIRECTS,
|
||||
IPV4_DEVCONF_SECURE_REDIRECTS,
|
||||
IPV4_DEVCONF_SEND_REDIRECTS,
|
||||
IPV4_DEVCONF_SHARED_MEDIA,
|
||||
IPV4_DEVCONF_RP_FILTER,
|
||||
IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE,
|
||||
IPV4_DEVCONF_BOOTP_RELAY,
|
||||
IPV4_DEVCONF_LOG_MARTIANS,
|
||||
IPV4_DEVCONF_TAG,
|
||||
IPV4_DEVCONF_ARPFILTER,
|
||||
IPV4_DEVCONF_MEDIUM_ID,
|
||||
IPV4_DEVCONF_NOXFRM,
|
||||
IPV4_DEVCONF_NOPOLICY,
|
||||
IPV4_DEVCONF_FORCE_IGMP_VERSION,
|
||||
IPV4_DEVCONF_ARP_ANNOUNCE,
|
||||
IPV4_DEVCONF_ARP_IGNORE,
|
||||
IPV4_DEVCONF_PROMOTE_SECONDARIES,
|
||||
IPV4_DEVCONF_ARP_ACCEPT,
|
||||
IPV4_DEVCONF_ARP_NOTIFY,
|
||||
IPV4_DEVCONF_ACCEPT_LOCAL,
|
||||
IPV4_DEVCONF_SRC_VMARK,
|
||||
IPV4_DEVCONF_PROXY_ARP_PVLAN,
|
||||
__IPV4_DEVCONF_MAX
|
||||
};
|
||||
|
||||
struct ipv4_devconf {
|
||||
void *sysctl;
|
||||
int data[__NET_IPV4_CONF_MAX - 1];
|
||||
DECLARE_BITMAP(state, __NET_IPV4_CONF_MAX - 1);
|
||||
int data[__IPV4_DEVCONF_MAX - 1];
|
||||
DECLARE_BITMAP(state, __IPV4_DEVCONF_MAX - 1);
|
||||
};
|
||||
|
||||
struct in_device {
|
||||
|
|
@ -40,7 +70,7 @@ struct in_device {
|
|||
struct rcu_head rcu_head;
|
||||
};
|
||||
|
||||
#define IPV4_DEVCONF(cnf, attr) ((cnf).data[NET_IPV4_CONF_ ## attr - 1])
|
||||
#define IPV4_DEVCONF(cnf, attr) ((cnf).data[IPV4_DEVCONF_ ## attr - 1])
|
||||
#define IPV4_DEVCONF_ALL(net, attr) \
|
||||
IPV4_DEVCONF((*(net)->ipv4.devconf_all), attr)
|
||||
|
||||
|
|
@ -60,13 +90,13 @@ static inline void ipv4_devconf_set(struct in_device *in_dev, int index,
|
|||
|
||||
static inline void ipv4_devconf_setall(struct in_device *in_dev)
|
||||
{
|
||||
bitmap_fill(in_dev->cnf.state, __NET_IPV4_CONF_MAX - 1);
|
||||
bitmap_fill(in_dev->cnf.state, __IPV4_DEVCONF_MAX - 1);
|
||||
}
|
||||
|
||||
#define IN_DEV_CONF_GET(in_dev, attr) \
|
||||
ipv4_devconf_get((in_dev), NET_IPV4_CONF_ ## attr)
|
||||
ipv4_devconf_get((in_dev), IPV4_DEVCONF_ ## attr)
|
||||
#define IN_DEV_CONF_SET(in_dev, attr, val) \
|
||||
ipv4_devconf_set((in_dev), NET_IPV4_CONF_ ## attr, (val))
|
||||
ipv4_devconf_set((in_dev), IPV4_DEVCONF_ ## attr, (val))
|
||||
|
||||
#define IN_DEV_ANDCONF(in_dev, attr) \
|
||||
(IPV4_DEVCONF_ALL(dev_net(in_dev->dev), attr) && \
|
||||
|
|
@ -89,6 +119,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
|
|||
|
||||
#define IN_DEV_LOG_MARTIANS(in_dev) IN_DEV_ORCONF((in_dev), LOG_MARTIANS)
|
||||
#define IN_DEV_PROXY_ARP(in_dev) IN_DEV_ORCONF((in_dev), PROXY_ARP)
|
||||
#define IN_DEV_PROXY_ARP_PVLAN(in_dev) IN_DEV_CONF_GET(in_dev, PROXY_ARP_PVLAN)
|
||||
#define IN_DEV_SHARED_MEDIA(in_dev) IN_DEV_ORCONF((in_dev), SHARED_MEDIA)
|
||||
#define IN_DEV_TX_REDIRECTS(in_dev) IN_DEV_ORCONF((in_dev), SEND_REDIRECTS)
|
||||
#define IN_DEV_SEC_REDIRECTS(in_dev) IN_DEV_ORCONF((in_dev), \
|
||||
|
|
|
|||
|
|
@ -50,8 +50,7 @@ struct capi_ctr {
|
|||
u16 (*send_message)(struct capi_ctr *, struct sk_buff *skb);
|
||||
|
||||
char *(*procinfo)(struct capi_ctr *);
|
||||
int (*ctr_read_proc)(char *page, char **start, off_t off,
|
||||
int count, int *eof, struct capi_ctr *card);
|
||||
const struct file_operations *proc_fops;
|
||||
|
||||
/* filled in before calling ready callback */
|
||||
u8 manu[CAPI_MANUFACTURER_LEN]; /* CAPI_GET_MANUFACTURER */
|
||||
|
|
@ -67,9 +66,10 @@ struct capi_ctr {
|
|||
unsigned long nsentdatapkt;
|
||||
|
||||
int cnr; /* controller number */
|
||||
volatile unsigned short cardstate; /* controller state */
|
||||
volatile int blocked; /* output blocked */
|
||||
unsigned short state; /* controller state */
|
||||
int blocked; /* output blocked */
|
||||
int traceflag; /* capi trace */
|
||||
wait_queue_head_t state_wait_queue;
|
||||
|
||||
struct proc_dir_entry *procent;
|
||||
char procfn[128];
|
||||
|
|
|
|||
|
|
@ -48,9 +48,7 @@ typedef struct kcapi_carddef {
|
|||
#include <linux/list.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
#define KCI_CONTRUP 0 /* arg: struct capi_profile */
|
||||
#define KCI_CONTRDOWN 1 /* arg: NULL */
|
||||
#include <linux/notifier.h>
|
||||
|
||||
struct capi20_appl {
|
||||
u16 applid;
|
||||
|
|
@ -67,11 +65,6 @@ struct capi20_appl {
|
|||
struct sk_buff_head recv_queue;
|
||||
struct work_struct recv_work;
|
||||
int release_in_progress;
|
||||
|
||||
/* ugly hack to allow for notification of added/removed
|
||||
* controllers. The Right Way (tm) is known. XXX
|
||||
*/
|
||||
void (*callback) (unsigned int cmd, __u32 contr, void *data);
|
||||
};
|
||||
|
||||
u16 capi20_isinstalled(void);
|
||||
|
|
@ -84,11 +77,11 @@ u16 capi20_get_serial(u32 contr, u8 serial[CAPI_SERIAL_LEN]);
|
|||
u16 capi20_get_profile(u32 contr, struct capi_profile *profp);
|
||||
int capi20_manufacturer(unsigned int cmd, void __user *data);
|
||||
|
||||
/* temporary hack XXX */
|
||||
void capi20_set_callback(struct capi20_appl *ap,
|
||||
void (*callback) (unsigned int cmd, __u32 contr, void *data));
|
||||
|
||||
#define CAPICTR_UP 0
|
||||
#define CAPICTR_DOWN 1
|
||||
|
||||
int register_capictr_notifier(struct notifier_block *nb);
|
||||
int unregister_capictr_notifier(struct notifier_block *nb);
|
||||
|
||||
#define CAPI_NOERROR 0x0000
|
||||
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ enum llc_sockopts {
|
|||
LLC_OPT_BUSY_TMR_EXP, /* busy state expire time (secs). */
|
||||
LLC_OPT_TX_WIN, /* tx window size. */
|
||||
LLC_OPT_RX_WIN, /* rx window size. */
|
||||
LLC_OPT_PKTINFO, /* ancillary packet information. */
|
||||
LLC_OPT_MAX
|
||||
};
|
||||
|
||||
|
|
@ -70,6 +71,12 @@ enum llc_sockopts {
|
|||
#define LLC_SAP_RM 0xD4 /* Resource Management */
|
||||
#define LLC_SAP_GLOBAL 0xFF /* Global SAP. */
|
||||
|
||||
struct llc_pktinfo {
|
||||
int lpi_ifindex;
|
||||
unsigned char lpi_sap;
|
||||
unsigned char lpi_mac[IFHWADDRLEN];
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#define LLC_SAP_DYN_START 0xC0
|
||||
#define LLC_SAP_DYN_STOP 0xDE
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#define HPET_MINOR 228
|
||||
#define FUSE_MINOR 229
|
||||
#define KVM_MINOR 232
|
||||
#define VHOST_NET_MINOR 233
|
||||
#define MISC_DYNAMIC_MINOR 255
|
||||
|
||||
struct device;
|
||||
|
|
|
|||
|
|
@ -174,18 +174,22 @@ struct proto_ops {
|
|||
struct poll_table_struct *wait);
|
||||
int (*ioctl) (struct socket *sock, unsigned int cmd,
|
||||
unsigned long arg);
|
||||
#ifdef CONFIG_COMPAT
|
||||
int (*compat_ioctl) (struct socket *sock, unsigned int cmd,
|
||||
unsigned long arg);
|
||||
#endif
|
||||
int (*listen) (struct socket *sock, int len);
|
||||
int (*shutdown) (struct socket *sock, int flags);
|
||||
int (*setsockopt)(struct socket *sock, int level,
|
||||
int optname, char __user *optval, unsigned int optlen);
|
||||
int (*getsockopt)(struct socket *sock, int level,
|
||||
int optname, char __user *optval, int __user *optlen);
|
||||
#ifdef CONFIG_COMPAT
|
||||
int (*compat_setsockopt)(struct socket *sock, int level,
|
||||
int optname, char __user *optval, unsigned int optlen);
|
||||
int (*compat_getsockopt)(struct socket *sock, int level,
|
||||
int optname, char __user *optval, int __user *optlen);
|
||||
#endif
|
||||
int (*sendmsg) (struct kiocb *iocb, struct socket *sock,
|
||||
struct msghdr *m, size_t total_len);
|
||||
int (*recvmsg) (struct kiocb *iocb, struct socket *sock,
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#include <linux/if.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/if_packet.h>
|
||||
#include <linux/if_link.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/timer.h>
|
||||
|
|
@ -136,7 +137,7 @@ static inline bool dev_xmit_complete(int rc)
|
|||
* used.
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_WLAN_80211) || defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE)
|
||||
#if defined(CONFIG_WLAN) || defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE)
|
||||
# if defined(CONFIG_MAC80211_MESH)
|
||||
# define LL_MAX_HEADER 128
|
||||
# else
|
||||
|
|
@ -263,6 +264,17 @@ struct netdev_hw_addr_list {
|
|||
int count;
|
||||
};
|
||||
|
||||
#define netdev_uc_count(dev) ((dev)->uc.count)
|
||||
#define netdev_uc_empty(dev) ((dev)->uc.count == 0)
|
||||
#define netdev_for_each_uc_addr(ha, dev) \
|
||||
list_for_each_entry(ha, &dev->uc.list, list)
|
||||
|
||||
#define netdev_mc_count(dev) ((dev)->mc_count)
|
||||
#define netdev_mc_empty(dev) (netdev_mc_count(dev) == 0)
|
||||
|
||||
#define netdev_for_each_mc_addr(mclist, dev) \
|
||||
for (mclist = dev->mc_list; mclist; mclist = mclist->next)
|
||||
|
||||
struct hh_cache {
|
||||
struct hh_cache *hh_next; /* Next entry */
|
||||
atomic_t hh_refcnt; /* number of users */
|
||||
|
|
@ -610,6 +622,13 @@ struct netdev_queue {
|
|||
* this function is called when a VLAN id is unregistered.
|
||||
*
|
||||
* void (*ndo_poll_controller)(struct net_device *dev);
|
||||
*
|
||||
* SR-IOV management functions.
|
||||
* int (*ndo_set_vf_mac)(struct net_device *dev, int vf, u8* mac);
|
||||
* int (*ndo_set_vf_vlan)(struct net_device *dev, int vf, u16 vlan, u8 qos);
|
||||
* int (*ndo_set_vf_tx_rate)(struct net_device *dev, int vf, int rate);
|
||||
* int (*ndo_get_vf_config)(struct net_device *dev,
|
||||
* int vf, struct ifla_vf_info *ivf);
|
||||
*/
|
||||
#define HAVE_NET_DEVICE_OPS
|
||||
struct net_device_ops {
|
||||
|
|
@ -621,30 +640,21 @@ struct net_device_ops {
|
|||
struct net_device *dev);
|
||||
u16 (*ndo_select_queue)(struct net_device *dev,
|
||||
struct sk_buff *skb);
|
||||
#define HAVE_CHANGE_RX_FLAGS
|
||||
void (*ndo_change_rx_flags)(struct net_device *dev,
|
||||
int flags);
|
||||
#define HAVE_SET_RX_MODE
|
||||
void (*ndo_set_rx_mode)(struct net_device *dev);
|
||||
#define HAVE_MULTICAST
|
||||
void (*ndo_set_multicast_list)(struct net_device *dev);
|
||||
#define HAVE_SET_MAC_ADDR
|
||||
int (*ndo_set_mac_address)(struct net_device *dev,
|
||||
void *addr);
|
||||
#define HAVE_VALIDATE_ADDR
|
||||
int (*ndo_validate_addr)(struct net_device *dev);
|
||||
#define HAVE_PRIVATE_IOCTL
|
||||
int (*ndo_do_ioctl)(struct net_device *dev,
|
||||
struct ifreq *ifr, int cmd);
|
||||
#define HAVE_SET_CONFIG
|
||||
int (*ndo_set_config)(struct net_device *dev,
|
||||
struct ifmap *map);
|
||||
#define HAVE_CHANGE_MTU
|
||||
int (*ndo_change_mtu)(struct net_device *dev,
|
||||
int new_mtu);
|
||||
int (*ndo_neigh_setup)(struct net_device *dev,
|
||||
struct neigh_parms *);
|
||||
#define HAVE_TX_TIMEOUT
|
||||
void (*ndo_tx_timeout) (struct net_device *dev);
|
||||
|
||||
struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);
|
||||
|
|
@ -656,9 +666,17 @@ struct net_device_ops {
|
|||
void (*ndo_vlan_rx_kill_vid)(struct net_device *dev,
|
||||
unsigned short vid);
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
#define HAVE_NETDEV_POLL
|
||||
void (*ndo_poll_controller)(struct net_device *dev);
|
||||
#endif
|
||||
int (*ndo_set_vf_mac)(struct net_device *dev,
|
||||
int queue, u8 *mac);
|
||||
int (*ndo_set_vf_vlan)(struct net_device *dev,
|
||||
int queue, u16 vlan, u8 qos);
|
||||
int (*ndo_set_vf_tx_rate)(struct net_device *dev,
|
||||
int vf, int rate);
|
||||
int (*ndo_get_vf_config)(struct net_device *dev,
|
||||
int vf,
|
||||
struct ifla_vf_info *ivf);
|
||||
#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
|
||||
int (*ndo_fcoe_enable)(struct net_device *dev);
|
||||
int (*ndo_fcoe_disable)(struct net_device *dev);
|
||||
|
|
@ -745,6 +763,7 @@ struct net_device {
|
|||
#define NETIF_F_FCOE_CRC (1 << 24) /* FCoE CRC32 */
|
||||
#define NETIF_F_SCTP_CSUM (1 << 25) /* SCTP checksum offload */
|
||||
#define NETIF_F_FCOE_MTU (1 << 26) /* Supports max FCoE MTU, 2158 bytes*/
|
||||
#define NETIF_F_NTUPLE (1 << 27) /* N-tuple filters supported */
|
||||
|
||||
/* Segmentation offload features */
|
||||
#define NETIF_F_GSO_SHIFT 16
|
||||
|
|
@ -905,7 +924,12 @@ struct net_device {
|
|||
NETREG_UNREGISTERED, /* completed unregister todo */
|
||||
NETREG_RELEASED, /* called free_netdev */
|
||||
NETREG_DUMMY, /* dummy device for NAPI poll */
|
||||
} reg_state;
|
||||
} reg_state:16;
|
||||
|
||||
enum {
|
||||
RTNL_LINK_INITIALIZED,
|
||||
RTNL_LINK_INITIALIZING,
|
||||
} rtnl_link_state:16;
|
||||
|
||||
/* Called from unregister, can be used to call free_netdev */
|
||||
void (*destructor)(struct net_device *dev);
|
||||
|
|
@ -953,6 +977,8 @@ struct net_device {
|
|||
/* max exchange id for FCoE LRO by ddp */
|
||||
unsigned int fcoe_ddp_xid;
|
||||
#endif
|
||||
/* n-tuple filter list attached to this device */
|
||||
struct ethtool_rx_ntuple_list ethtool_ntuple_list;
|
||||
};
|
||||
#define to_net_dev(d) container_of(d, struct net_device, dev)
|
||||
|
||||
|
|
@ -1009,6 +1035,15 @@ static inline bool netdev_uses_dsa_tags(struct net_device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_NET_NS
|
||||
static inline void skb_set_dev(struct sk_buff *skb, struct net_device *dev)
|
||||
{
|
||||
skb->dev = dev;
|
||||
}
|
||||
#else /* CONFIG_NET_NS */
|
||||
void skb_set_dev(struct sk_buff *skb, struct net_device *dev);
|
||||
#endif
|
||||
|
||||
static inline bool netdev_uses_trailer_tags(struct net_device *dev)
|
||||
{
|
||||
#ifdef CONFIG_NET_DSA_TAG_TRAILER
|
||||
|
|
@ -1527,7 +1562,6 @@ extern int netif_rx(struct sk_buff *skb);
|
|||
extern int netif_rx_ni(struct sk_buff *skb);
|
||||
#define HAVE_NETIF_RECEIVE_SKB 1
|
||||
extern int netif_receive_skb(struct sk_buff *skb);
|
||||
extern void napi_gro_flush(struct napi_struct *napi);
|
||||
extern gro_result_t dev_gro_receive(struct napi_struct *napi,
|
||||
struct sk_buff *skb);
|
||||
extern gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb);
|
||||
|
|
@ -1553,7 +1587,9 @@ extern int dev_valid_name(const char *name);
|
|||
extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
|
||||
extern int dev_ethtool(struct net *net, struct ifreq *);
|
||||
extern unsigned dev_get_flags(const struct net_device *);
|
||||
extern int __dev_change_flags(struct net_device *, unsigned int flags);
|
||||
extern int dev_change_flags(struct net_device *, unsigned);
|
||||
extern void __dev_notify_flags(struct net_device *, unsigned int old_flags);
|
||||
extern int dev_change_name(struct net_device *, const char *);
|
||||
extern int dev_set_alias(struct net_device *, const char *, size_t);
|
||||
extern int dev_change_net_namespace(struct net_device *,
|
||||
|
|
@ -2083,6 +2119,130 @@ static inline u32 dev_ethtool_get_flags(struct net_device *dev)
|
|||
return 0;
|
||||
return dev->ethtool_ops->get_flags(dev);
|
||||
}
|
||||
|
||||
/* Logging, debugging and troubleshooting/diagnostic helpers. */
|
||||
|
||||
/* netdev_printk helpers, similar to dev_printk */
|
||||
|
||||
static inline const char *netdev_name(const struct net_device *dev)
|
||||
{
|
||||
if (dev->reg_state != NETREG_REGISTERED)
|
||||
return "(unregistered net_device)";
|
||||
return dev->name;
|
||||
}
|
||||
|
||||
#define netdev_printk(level, netdev, format, args...) \
|
||||
dev_printk(level, (netdev)->dev.parent, \
|
||||
"%s: " format, \
|
||||
netdev_name(netdev), ##args)
|
||||
|
||||
#define netdev_emerg(dev, format, args...) \
|
||||
netdev_printk(KERN_EMERG, dev, format, ##args)
|
||||
#define netdev_alert(dev, format, args...) \
|
||||
netdev_printk(KERN_ALERT, dev, format, ##args)
|
||||
#define netdev_crit(dev, format, args...) \
|
||||
netdev_printk(KERN_CRIT, dev, format, ##args)
|
||||
#define netdev_err(dev, format, args...) \
|
||||
netdev_printk(KERN_ERR, dev, format, ##args)
|
||||
#define netdev_warn(dev, format, args...) \
|
||||
netdev_printk(KERN_WARNING, dev, format, ##args)
|
||||
#define netdev_notice(dev, format, args...) \
|
||||
netdev_printk(KERN_NOTICE, dev, format, ##args)
|
||||
#define netdev_info(dev, format, args...) \
|
||||
netdev_printk(KERN_INFO, dev, format, ##args)
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define netdev_dbg(__dev, format, args...) \
|
||||
netdev_printk(KERN_DEBUG, __dev, format, ##args)
|
||||
#elif defined(CONFIG_DYNAMIC_DEBUG)
|
||||
#define netdev_dbg(__dev, format, args...) \
|
||||
do { \
|
||||
dynamic_dev_dbg((__dev)->dev.parent, "%s: " format, \
|
||||
netdev_name(__dev), ##args); \
|
||||
} while (0)
|
||||
#else
|
||||
#define netdev_dbg(__dev, format, args...) \
|
||||
({ \
|
||||
if (0) \
|
||||
netdev_printk(KERN_DEBUG, __dev, format, ##args); \
|
||||
0; \
|
||||
})
|
||||
#endif
|
||||
|
||||
#if defined(VERBOSE_DEBUG)
|
||||
#define netdev_vdbg netdev_dbg
|
||||
#else
|
||||
|
||||
#define netdev_vdbg(dev, format, args...) \
|
||||
({ \
|
||||
if (0) \
|
||||
netdev_printk(KERN_DEBUG, dev, format, ##args); \
|
||||
0; \
|
||||
})
|
||||
#endif
|
||||
|
||||
/*
|
||||
* netdev_WARN() acts like dev_printk(), but with the key difference
|
||||
* of using a WARN/WARN_ON to get the message out, including the
|
||||
* file/line information and a backtrace.
|
||||
*/
|
||||
#define netdev_WARN(dev, format, args...) \
|
||||
WARN(1, "netdevice: %s\n" format, netdev_name(dev), ##args);
|
||||
|
||||
/* netif printk helpers, similar to netdev_printk */
|
||||
|
||||
#define netif_printk(priv, type, level, dev, fmt, args...) \
|
||||
do { \
|
||||
if (netif_msg_##type(priv)) \
|
||||
netdev_printk(level, (dev), fmt, ##args); \
|
||||
} while (0)
|
||||
|
||||
#define netif_emerg(priv, type, dev, fmt, args...) \
|
||||
netif_printk(priv, type, KERN_EMERG, dev, fmt, ##args)
|
||||
#define netif_alert(priv, type, dev, fmt, args...) \
|
||||
netif_printk(priv, type, KERN_ALERT, dev, fmt, ##args)
|
||||
#define netif_crit(priv, type, dev, fmt, args...) \
|
||||
netif_printk(priv, type, KERN_CRIT, dev, fmt, ##args)
|
||||
#define netif_err(priv, type, dev, fmt, args...) \
|
||||
netif_printk(priv, type, KERN_ERR, dev, fmt, ##args)
|
||||
#define netif_warn(priv, type, dev, fmt, args...) \
|
||||
netif_printk(priv, type, KERN_WARNING, dev, fmt, ##args)
|
||||
#define netif_notice(priv, type, dev, fmt, args...) \
|
||||
netif_printk(priv, type, KERN_NOTICE, dev, fmt, ##args)
|
||||
#define netif_info(priv, type, dev, fmt, args...) \
|
||||
netif_printk(priv, type, KERN_INFO, (dev), fmt, ##args)
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define netif_dbg(priv, type, dev, format, args...) \
|
||||
netif_printk(priv, type, KERN_DEBUG, dev, format, ##args)
|
||||
#elif defined(CONFIG_DYNAMIC_DEBUG)
|
||||
#define netif_dbg(priv, type, netdev, format, args...) \
|
||||
do { \
|
||||
if (netif_msg_##type(priv)) \
|
||||
dynamic_dev_dbg((netdev)->dev.parent, \
|
||||
"%s: " format, \
|
||||
netdev_name(netdev), ##args); \
|
||||
} while (0)
|
||||
#else
|
||||
#define netif_dbg(priv, type, dev, format, args...) \
|
||||
({ \
|
||||
if (0) \
|
||||
netif_printk(priv, type, KERN_DEBUG, dev, format, ##args); \
|
||||
0; \
|
||||
})
|
||||
#endif
|
||||
|
||||
#if defined(VERBOSE_DEBUG)
|
||||
#define netif_vdbg netdev_dbg
|
||||
#else
|
||||
#define netif_vdbg(priv, type, dev, format, args...) \
|
||||
({ \
|
||||
if (0) \
|
||||
netif_printk(KERN_DEBUG, dev, format, ##args); \
|
||||
0; \
|
||||
})
|
||||
#endif
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _LINUX_NETDEVICE_H */
|
||||
|
|
|
|||
|
|
@ -114,15 +114,17 @@ struct nf_sockopt_ops {
|
|||
int set_optmin;
|
||||
int set_optmax;
|
||||
int (*set)(struct sock *sk, int optval, void __user *user, unsigned int len);
|
||||
#ifdef CONFIG_COMPAT
|
||||
int (*compat_set)(struct sock *sk, int optval,
|
||||
void __user *user, unsigned int len);
|
||||
|
||||
#endif
|
||||
int get_optmin;
|
||||
int get_optmax;
|
||||
int (*get)(struct sock *sk, int optval, void __user *user, int *len);
|
||||
#ifdef CONFIG_COMPAT
|
||||
int (*compat_get)(struct sock *sk, int optval,
|
||||
void __user *user, int *len);
|
||||
|
||||
#endif
|
||||
/* Use the module struct to lock set/get code in place */
|
||||
struct module *owner;
|
||||
};
|
||||
|
|
@ -161,11 +163,8 @@ static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook,
|
|||
struct sk_buff *skb,
|
||||
struct net_device *indev,
|
||||
struct net_device *outdev,
|
||||
int (*okfn)(struct sk_buff *), int thresh,
|
||||
int cond)
|
||||
int (*okfn)(struct sk_buff *), int thresh)
|
||||
{
|
||||
if (!cond)
|
||||
return 1;
|
||||
#ifndef CONFIG_NETFILTER_DEBUG
|
||||
if (list_empty(&nf_hooks[pf][hook]))
|
||||
return 1;
|
||||
|
|
@ -177,7 +176,7 @@ static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sk_buff *skb,
|
|||
struct net_device *indev, struct net_device *outdev,
|
||||
int (*okfn)(struct sk_buff *))
|
||||
{
|
||||
return nf_hook_thresh(pf, hook, skb, indev, outdev, okfn, INT_MIN, 1);
|
||||
return nf_hook_thresh(pf, hook, skb, indev, outdev, okfn, INT_MIN);
|
||||
}
|
||||
|
||||
/* Activate hook; either okfn or kfree_skb called, unless a hook
|
||||
|
|
@ -197,36 +196,49 @@ static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sk_buff *skb,
|
|||
coders :)
|
||||
*/
|
||||
|
||||
/* This is gross, but inline doesn't cut it for avoiding the function
|
||||
call in fast path: gcc doesn't inline (needs value tracking?). --RR */
|
||||
static inline int
|
||||
NF_HOOK_THRESH(uint8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
struct net_device *in, struct net_device *out,
|
||||
int (*okfn)(struct sk_buff *), int thresh)
|
||||
{
|
||||
int ret = nf_hook_thresh(pf, hook, skb, in, out, okfn, thresh);
|
||||
if (ret == 1)
|
||||
ret = okfn(skb);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* HX: It's slightly less gross now. */
|
||||
static inline int
|
||||
NF_HOOK_COND(uint8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
struct net_device *in, struct net_device *out,
|
||||
int (*okfn)(struct sk_buff *), bool cond)
|
||||
{
|
||||
int ret;
|
||||
|
||||
#define NF_HOOK_THRESH(pf, hook, skb, indev, outdev, okfn, thresh) \
|
||||
({int __ret; \
|
||||
if ((__ret=nf_hook_thresh(pf, hook, (skb), indev, outdev, okfn, thresh, 1)) == 1)\
|
||||
__ret = (okfn)(skb); \
|
||||
__ret;})
|
||||
if (!cond ||
|
||||
(ret = nf_hook_thresh(pf, hook, skb, in, out, okfn, INT_MIN) == 1))
|
||||
ret = okfn(skb);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define NF_HOOK_COND(pf, hook, skb, indev, outdev, okfn, cond) \
|
||||
({int __ret; \
|
||||
if ((__ret=nf_hook_thresh(pf, hook, (skb), indev, outdev, okfn, INT_MIN, cond)) == 1)\
|
||||
__ret = (okfn)(skb); \
|
||||
__ret;})
|
||||
|
||||
#define NF_HOOK(pf, hook, skb, indev, outdev, okfn) \
|
||||
NF_HOOK_THRESH(pf, hook, skb, indev, outdev, okfn, INT_MIN)
|
||||
static inline int
|
||||
NF_HOOK(uint8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
struct net_device *in, struct net_device *out,
|
||||
int (*okfn)(struct sk_buff *))
|
||||
{
|
||||
return NF_HOOK_THRESH(pf, hook, skb, in, out, okfn, INT_MIN);
|
||||
}
|
||||
|
||||
/* Call setsockopt() */
|
||||
int nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
|
||||
unsigned int len);
|
||||
int nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
|
||||
int *len);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
int compat_nf_setsockopt(struct sock *sk, u_int8_t pf, int optval,
|
||||
char __user *opt, unsigned int len);
|
||||
int compat_nf_getsockopt(struct sock *sk, u_int8_t pf, int optval,
|
||||
char __user *opt, int *len);
|
||||
#endif
|
||||
|
||||
/* Call this before modifying an existing packet: ensures it is
|
||||
modifiable and linear to the point you care about (writable_len).
|
||||
|
|
@ -325,8 +337,7 @@ static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook,
|
|||
struct sk_buff *skb,
|
||||
struct net_device *indev,
|
||||
struct net_device *outdev,
|
||||
int (*okfn)(struct sk_buff *), int thresh,
|
||||
int cond)
|
||||
int (*okfn)(struct sk_buff *), int thresh)
|
||||
{
|
||||
return okfn(skb);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ header-y += nfnetlink_queue.h
|
|||
header-y += xt_CLASSIFY.h
|
||||
header-y += xt_CONNMARK.h
|
||||
header-y += xt_CONNSECMARK.h
|
||||
header-y += xt_CT.h
|
||||
header-y += xt_DSCP.h
|
||||
header-y += xt_LED.h
|
||||
header-y += xt_MARK.h
|
||||
|
|
|
|||
|
|
@ -72,6 +72,28 @@ enum ip_conntrack_status {
|
|||
/* Connection has fixed timeout. */
|
||||
IPS_FIXED_TIMEOUT_BIT = 10,
|
||||
IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT),
|
||||
|
||||
/* Conntrack is a template */
|
||||
IPS_TEMPLATE_BIT = 11,
|
||||
IPS_TEMPLATE = (1 << IPS_TEMPLATE_BIT),
|
||||
};
|
||||
|
||||
/* Connection tracking event types */
|
||||
enum ip_conntrack_events {
|
||||
IPCT_NEW, /* new conntrack */
|
||||
IPCT_RELATED, /* related conntrack */
|
||||
IPCT_DESTROY, /* destroyed conntrack */
|
||||
IPCT_REPLY, /* connection has seen two-way traffic */
|
||||
IPCT_ASSURED, /* connection status has changed to assured */
|
||||
IPCT_PROTOINFO, /* protocol information has changed */
|
||||
IPCT_HELPER, /* new helper has been set */
|
||||
IPCT_MARK, /* new mark has been set */
|
||||
IPCT_NATSEQADJ, /* NAT is doing sequence adjustment */
|
||||
IPCT_SECMARK, /* new security mark has been set */
|
||||
};
|
||||
|
||||
enum ip_conntrack_expect_events {
|
||||
IPEXP_NEW, /* new expectation */
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ enum sip_expectation_classes {
|
|||
SIP_EXPECT_SIGNALLING,
|
||||
SIP_EXPECT_AUDIO,
|
||||
SIP_EXPECT_VIDEO,
|
||||
SIP_EXPECT_IMAGE,
|
||||
__SIP_EXPECT_MAX
|
||||
};
|
||||
#define SIP_EXPECT_MAX (__SIP_EXPECT_MAX - 1)
|
||||
|
|
@ -34,10 +35,10 @@ struct sdp_media_type {
|
|||
struct sip_handler {
|
||||
const char *method;
|
||||
unsigned int len;
|
||||
int (*request)(struct sk_buff *skb,
|
||||
int (*request)(struct sk_buff *skb, unsigned int dataoff,
|
||||
const char **dptr, unsigned int *datalen,
|
||||
unsigned int cseq);
|
||||
int (*response)(struct sk_buff *skb,
|
||||
int (*response)(struct sk_buff *skb, unsigned int dataoff,
|
||||
const char **dptr, unsigned int *datalen,
|
||||
unsigned int cseq, unsigned int code);
|
||||
};
|
||||
|
|
@ -84,7 +85,8 @@ enum sip_header_types {
|
|||
SIP_HDR_FROM,
|
||||
SIP_HDR_TO,
|
||||
SIP_HDR_CONTACT,
|
||||
SIP_HDR_VIA,
|
||||
SIP_HDR_VIA_UDP,
|
||||
SIP_HDR_VIA_TCP,
|
||||
SIP_HDR_EXPIRES,
|
||||
SIP_HDR_CONTENT_LENGTH,
|
||||
};
|
||||
|
|
@ -100,33 +102,40 @@ enum sdp_header_types {
|
|||
};
|
||||
|
||||
extern unsigned int (*nf_nat_sip_hook)(struct sk_buff *skb,
|
||||
unsigned int dataoff,
|
||||
const char **dptr,
|
||||
unsigned int *datalen);
|
||||
extern void (*nf_nat_sip_seq_adjust_hook)(struct sk_buff *skb, s16 off);
|
||||
extern unsigned int (*nf_nat_sip_expect_hook)(struct sk_buff *skb,
|
||||
unsigned int dataoff,
|
||||
const char **dptr,
|
||||
unsigned int *datalen,
|
||||
struct nf_conntrack_expect *exp,
|
||||
unsigned int matchoff,
|
||||
unsigned int matchlen);
|
||||
extern unsigned int (*nf_nat_sdp_addr_hook)(struct sk_buff *skb,
|
||||
const char **dptr,
|
||||
unsigned int dataoff,
|
||||
const char **dptr,
|
||||
unsigned int *datalen,
|
||||
unsigned int sdpoff,
|
||||
enum sdp_header_types type,
|
||||
enum sdp_header_types term,
|
||||
const union nf_inet_addr *addr);
|
||||
extern unsigned int (*nf_nat_sdp_port_hook)(struct sk_buff *skb,
|
||||
unsigned int dataoff,
|
||||
const char **dptr,
|
||||
unsigned int *datalen,
|
||||
unsigned int matchoff,
|
||||
unsigned int matchlen,
|
||||
u_int16_t port);
|
||||
extern unsigned int (*nf_nat_sdp_session_hook)(struct sk_buff *skb,
|
||||
const char **dptr,
|
||||
unsigned int dataoff,
|
||||
const char **dptr,
|
||||
unsigned int *datalen,
|
||||
unsigned int sdpoff,
|
||||
const union nf_inet_addr *addr);
|
||||
extern unsigned int (*nf_nat_sdp_media_hook)(struct sk_buff *skb,
|
||||
unsigned int dataoff,
|
||||
const char **dptr,
|
||||
unsigned int *datalen,
|
||||
struct nf_conntrack_expect *rtp_exp,
|
||||
|
|
|
|||
|
|
@ -73,11 +73,11 @@ struct nfnetlink_subsystem {
|
|||
extern int nfnetlink_subsys_register(const struct nfnetlink_subsystem *n);
|
||||
extern int nfnetlink_subsys_unregister(const struct nfnetlink_subsystem *n);
|
||||
|
||||
extern int nfnetlink_has_listeners(unsigned int group);
|
||||
extern int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group,
|
||||
extern int nfnetlink_has_listeners(struct net *net, unsigned int group);
|
||||
extern int nfnetlink_send(struct sk_buff *skb, struct net *net, u32 pid, unsigned group,
|
||||
int echo, gfp_t flags);
|
||||
extern void nfnetlink_set_err(u32 pid, u32 group, int error);
|
||||
extern int nfnetlink_unicast(struct sk_buff *skb, u_int32_t pid, int flags);
|
||||
extern void nfnetlink_set_err(struct net *net, u32 pid, u32 group, int error);
|
||||
extern int nfnetlink_unicast(struct sk_buff *skb, struct net *net, u_int32_t pid, int flags);
|
||||
|
||||
extern void nfnl_lock(void);
|
||||
extern void nfnl_unlock(void);
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ enum ctattr_type {
|
|||
CTA_NAT_SEQ_ADJ_ORIG,
|
||||
CTA_NAT_SEQ_ADJ_REPLY,
|
||||
CTA_SECMARK,
|
||||
CTA_ZONE,
|
||||
__CTA_MAX
|
||||
};
|
||||
#define CTA_MAX (__CTA_MAX - 1)
|
||||
|
|
@ -159,6 +160,7 @@ enum ctattr_expect {
|
|||
CTA_EXPECT_TIMEOUT,
|
||||
CTA_EXPECT_ID,
|
||||
CTA_EXPECT_HELP_NAME,
|
||||
CTA_EXPECT_ZONE,
|
||||
__CTA_EXPECT_MAX
|
||||
};
|
||||
#define CTA_EXPECT_MAX (__CTA_EXPECT_MAX - 1)
|
||||
|
|
|
|||
|
|
@ -93,8 +93,7 @@ struct _xt_align {
|
|||
__u64 u64;
|
||||
};
|
||||
|
||||
#define XT_ALIGN(s) (((s) + (__alignof__(struct _xt_align)-1)) \
|
||||
& ~(__alignof__(struct _xt_align)-1))
|
||||
#define XT_ALIGN(s) ALIGN((s), __alignof__(struct _xt_align))
|
||||
|
||||
/* Standard return verdict, or do jump. */
|
||||
#define XT_STANDARD_TARGET ""
|
||||
|
|
@ -121,6 +120,7 @@ struct xt_counters_info {
|
|||
|
||||
#define XT_INV_PROTO 0x40 /* Invert the sense of PROTO. */
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define XT_MATCH_ITERATE(type, e, fn, args...) \
|
||||
({ \
|
||||
|
|
@ -164,6 +164,22 @@ struct xt_counters_info {
|
|||
#define XT_ENTRY_ITERATE(type, entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE_CONTINUE(type, entries, size, 0, fn, args)
|
||||
|
||||
#endif /* !__KERNEL__ */
|
||||
|
||||
/* pos is normally a struct ipt_entry/ip6t_entry/etc. */
|
||||
#define xt_entry_foreach(pos, ehead, esize) \
|
||||
for ((pos) = (typeof(pos))(ehead); \
|
||||
(pos) < (typeof(pos))((char *)(ehead) + (esize)); \
|
||||
(pos) = (typeof(pos))((char *)(pos) + (pos)->next_offset))
|
||||
|
||||
/* can only be xt_entry_match, so no use of typeof here */
|
||||
#define xt_ematch_foreach(pos, entry) \
|
||||
for ((pos) = (struct xt_entry_match *)entry->elems; \
|
||||
(pos) < (struct xt_entry_match *)((char *)(entry) + \
|
||||
(entry)->target_offset); \
|
||||
(pos) = (struct xt_entry_match *)((char *)(pos) + \
|
||||
(pos)->u.match_size))
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/netdevice.h>
|
||||
|
|
@ -205,6 +221,7 @@ struct xt_match_param {
|
|||
* @hook_mask: via which hooks the new rule is reachable
|
||||
*/
|
||||
struct xt_mtchk_param {
|
||||
struct net *net;
|
||||
const char *table;
|
||||
const void *entryinfo;
|
||||
const struct xt_match *match;
|
||||
|
|
@ -215,6 +232,7 @@ struct xt_mtchk_param {
|
|||
|
||||
/* Match destructor parameters */
|
||||
struct xt_mtdtor_param {
|
||||
struct net *net;
|
||||
const struct xt_match *match;
|
||||
void *matchinfo;
|
||||
u_int8_t family;
|
||||
|
|
@ -247,6 +265,7 @@ struct xt_target_param {
|
|||
* Other fields see above.
|
||||
*/
|
||||
struct xt_tgchk_param {
|
||||
struct net *net;
|
||||
const char *table;
|
||||
const void *entryinfo;
|
||||
const struct xt_target *target;
|
||||
|
|
@ -257,6 +276,7 @@ struct xt_tgchk_param {
|
|||
|
||||
/* Target destructor parameters */
|
||||
struct xt_tgdtor_param {
|
||||
struct net *net;
|
||||
const struct xt_target *target;
|
||||
void *targinfo;
|
||||
u_int8_t family;
|
||||
|
|
@ -281,11 +301,11 @@ struct xt_match {
|
|||
|
||||
/* Called when entry of this type deleted. */
|
||||
void (*destroy)(const struct xt_mtdtor_param *);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
/* Called when userspace align differs from kernel space one */
|
||||
void (*compat_from_user)(void *dst, void *src);
|
||||
int (*compat_to_user)(void __user *dst, void *src);
|
||||
|
||||
void (*compat_from_user)(void *dst, const void *src);
|
||||
int (*compat_to_user)(void __user *dst, const void *src);
|
||||
#endif
|
||||
/* Set this to THIS_MODULE if you are a module, otherwise NULL */
|
||||
struct module *me;
|
||||
|
||||
|
|
@ -294,7 +314,9 @@ struct xt_match {
|
|||
|
||||
const char *table;
|
||||
unsigned int matchsize;
|
||||
#ifdef CONFIG_COMPAT
|
||||
unsigned int compatsize;
|
||||
#endif
|
||||
unsigned int hooks;
|
||||
unsigned short proto;
|
||||
|
||||
|
|
@ -321,17 +343,19 @@ struct xt_target {
|
|||
|
||||
/* Called when entry of this type deleted. */
|
||||
void (*destroy)(const struct xt_tgdtor_param *);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
/* Called when userspace align differs from kernel space one */
|
||||
void (*compat_from_user)(void *dst, void *src);
|
||||
int (*compat_to_user)(void __user *dst, void *src);
|
||||
|
||||
void (*compat_from_user)(void *dst, const void *src);
|
||||
int (*compat_to_user)(void __user *dst, const void *src);
|
||||
#endif
|
||||
/* Set this to THIS_MODULE if you are a module, otherwise NULL */
|
||||
struct module *me;
|
||||
|
||||
const char *table;
|
||||
unsigned int targetsize;
|
||||
#ifdef CONFIG_COMPAT
|
||||
unsigned int compatsize;
|
||||
#endif
|
||||
unsigned int hooks;
|
||||
unsigned short proto;
|
||||
|
||||
|
|
@ -353,6 +377,7 @@ struct xt_table {
|
|||
struct module *me;
|
||||
|
||||
u_int8_t af; /* address/protocol family */
|
||||
int priority; /* hook order */
|
||||
|
||||
/* A unique name... */
|
||||
const char name[XT_TABLE_MAXNAMELEN];
|
||||
|
|
@ -514,6 +539,9 @@ static inline unsigned long ifname_compare_aligned(const char *_a,
|
|||
return ret;
|
||||
}
|
||||
|
||||
extern struct nf_hook_ops *xt_hook_link(const struct xt_table *, nf_hookfn *);
|
||||
extern void xt_hook_unlink(const struct xt_table *, struct nf_hook_ops *);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
#include <net/compat.h>
|
||||
|
||||
|
|
@ -554,11 +582,7 @@ struct compat_xt_entry_target {
|
|||
* current task alignment */
|
||||
|
||||
struct compat_xt_counters {
|
||||
#if defined(CONFIG_X86_64) || defined(CONFIG_IA64)
|
||||
u_int32_t cnt[4];
|
||||
#else
|
||||
u_int64_t cnt[2];
|
||||
#endif
|
||||
compat_u64 pcnt, bcnt; /* Packet and byte counters */
|
||||
};
|
||||
|
||||
struct compat_xt_counters_info {
|
||||
|
|
@ -567,26 +591,32 @@ struct compat_xt_counters_info {
|
|||
struct compat_xt_counters counters[0];
|
||||
};
|
||||
|
||||
#define COMPAT_XT_ALIGN(s) (((s) + (__alignof__(struct compat_xt_counters)-1)) \
|
||||
& ~(__alignof__(struct compat_xt_counters)-1))
|
||||
struct _compat_xt_align {
|
||||
__u8 u8;
|
||||
__u16 u16;
|
||||
__u32 u32;
|
||||
compat_u64 u64;
|
||||
};
|
||||
|
||||
#define COMPAT_XT_ALIGN(s) ALIGN((s), __alignof__(struct _compat_xt_align))
|
||||
|
||||
extern void xt_compat_lock(u_int8_t af);
|
||||
extern void xt_compat_unlock(u_int8_t af);
|
||||
|
||||
extern int xt_compat_add_offset(u_int8_t af, unsigned int offset, short delta);
|
||||
extern void xt_compat_flush_offsets(u_int8_t af);
|
||||
extern short xt_compat_calc_jump(u_int8_t af, unsigned int offset);
|
||||
extern int xt_compat_calc_jump(u_int8_t af, unsigned int offset);
|
||||
|
||||
extern int xt_compat_match_offset(const struct xt_match *match);
|
||||
extern int xt_compat_match_from_user(struct xt_entry_match *m,
|
||||
void **dstptr, unsigned int *size);
|
||||
extern int xt_compat_match_to_user(struct xt_entry_match *m,
|
||||
extern int xt_compat_match_to_user(const struct xt_entry_match *m,
|
||||
void __user **dstptr, unsigned int *size);
|
||||
|
||||
extern int xt_compat_target_offset(const struct xt_target *target);
|
||||
extern void xt_compat_target_from_user(struct xt_entry_target *t,
|
||||
void **dstptr, unsigned int *size);
|
||||
extern int xt_compat_target_to_user(struct xt_entry_target *t,
|
||||
extern int xt_compat_target_to_user(const struct xt_entry_target *t,
|
||||
void __user **dstptr, unsigned int *size);
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
|
|
|||
17
include/linux/netfilter/xt_CT.h
Normal file
17
include/linux/netfilter/xt_CT.h
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef _XT_CT_H
|
||||
#define _XT_CT_H
|
||||
|
||||
#define XT_CT_NOTRACK 0x1
|
||||
|
||||
struct xt_ct_target_info {
|
||||
u_int16_t flags;
|
||||
u_int16_t zone;
|
||||
u_int32_t ct_events;
|
||||
u_int32_t exp_events;
|
||||
char helper[16];
|
||||
|
||||
/* Used internally by the kernel */
|
||||
struct nf_conn *ct __attribute__((aligned(8)));
|
||||
};
|
||||
|
||||
#endif /* _XT_CT_H */
|
||||
|
|
@ -211,9 +211,11 @@ static __inline__ struct arpt_entry_target *arpt_get_target(struct arpt_entry *e
|
|||
return (void *)e + e->target_offset;
|
||||
}
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define ARPT_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct arpt_entry, entries, size, fn, ## args)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Main firewall chains definitions and global var's definitions.
|
||||
|
|
@ -258,6 +260,7 @@ struct arpt_error {
|
|||
.target.errorname = "ERROR", \
|
||||
}
|
||||
|
||||
extern void *arpt_alloc_initial_table(const struct xt_table *);
|
||||
extern struct xt_table *arpt_register_table(struct net *net,
|
||||
const struct xt_table *table,
|
||||
const struct arpt_replace *repl);
|
||||
|
|
@ -290,14 +293,6 @@ compat_arpt_get_target(struct compat_arpt_entry *e)
|
|||
|
||||
#define COMPAT_ARPT_ALIGN(s) COMPAT_XT_ALIGN(s)
|
||||
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define COMPAT_ARPT_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct compat_arpt_entry, entries, size, fn, ## args)
|
||||
|
||||
#define COMPAT_ARPT_ENTRY_ITERATE_CONTINUE(entries, size, n, fn, args...) \
|
||||
XT_ENTRY_ITERATE_CONTINUE(struct compat_arpt_entry, entries, size, n, \
|
||||
fn, ## args)
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
#endif /*__KERNEL__*/
|
||||
#endif /* _ARPTABLES_H */
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ struct ebt_table {
|
|||
~(__alignof__(struct ebt_replace)-1))
|
||||
extern struct ebt_table *ebt_register_table(struct net *net,
|
||||
const struct ebt_table *table);
|
||||
extern void ebt_unregister_table(struct ebt_table *table);
|
||||
extern void ebt_unregister_table(struct net *net, struct ebt_table *table);
|
||||
extern unsigned int ebt_do_table(unsigned int hook, struct sk_buff *skb,
|
||||
const struct net_device *in, const struct net_device *out,
|
||||
struct ebt_table *table);
|
||||
|
|
|
|||
|
|
@ -223,6 +223,7 @@ ipt_get_target(struct ipt_entry *e)
|
|||
return (void *)e + e->target_offset;
|
||||
}
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define IPT_MATCH_ITERATE(e, fn, args...) \
|
||||
XT_MATCH_ITERATE(struct ipt_entry, e, fn, ## args)
|
||||
|
|
@ -230,6 +231,7 @@ ipt_get_target(struct ipt_entry *e)
|
|||
/* fn returns 0 to continue iteration */
|
||||
#define IPT_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ## args)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Main firewall chains definitions and global var's definitions.
|
||||
|
|
@ -242,7 +244,7 @@ extern void ipt_init(void) __init;
|
|||
extern struct xt_table *ipt_register_table(struct net *net,
|
||||
const struct xt_table *table,
|
||||
const struct ipt_replace *repl);
|
||||
extern void ipt_unregister_table(struct xt_table *table);
|
||||
extern void ipt_unregister_table(struct net *net, struct xt_table *table);
|
||||
|
||||
/* Standard entry. */
|
||||
struct ipt_standard {
|
||||
|
|
@ -282,6 +284,7 @@ struct ipt_error {
|
|||
.target.errorname = "ERROR", \
|
||||
}
|
||||
|
||||
extern void *ipt_alloc_initial_table(const struct xt_table *);
|
||||
extern unsigned int ipt_do_table(struct sk_buff *skb,
|
||||
unsigned int hook,
|
||||
const struct net_device *in,
|
||||
|
|
@ -312,19 +315,6 @@ compat_ipt_get_target(struct compat_ipt_entry *e)
|
|||
|
||||
#define COMPAT_IPT_ALIGN(s) COMPAT_XT_ALIGN(s)
|
||||
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define COMPAT_IPT_MATCH_ITERATE(e, fn, args...) \
|
||||
XT_MATCH_ITERATE(struct compat_ipt_entry, e, fn, ## args)
|
||||
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define COMPAT_IPT_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct compat_ipt_entry, entries, size, fn, ## args)
|
||||
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define COMPAT_IPT_ENTRY_ITERATE_CONTINUE(entries, size, n, fn, args...) \
|
||||
XT_ENTRY_ITERATE_CONTINUE(struct compat_ipt_entry, entries, size, n, \
|
||||
fn, ## args)
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
#endif /*__KERNEL__*/
|
||||
#endif /* _IPTABLES_H */
|
||||
|
|
|
|||
|
|
@ -280,6 +280,7 @@ ip6t_get_target(struct ip6t_entry *e)
|
|||
return (void *)e + e->target_offset;
|
||||
}
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define IP6T_MATCH_ITERATE(e, fn, args...) \
|
||||
XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ## args)
|
||||
|
|
@ -287,6 +288,7 @@ ip6t_get_target(struct ip6t_entry *e)
|
|||
/* fn returns 0 to continue iteration */
|
||||
#define IP6T_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ## args)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Main firewall chains definitions and global var's definitions.
|
||||
|
|
@ -297,10 +299,11 @@ ip6t_get_target(struct ip6t_entry *e)
|
|||
#include <linux/init.h>
|
||||
extern void ip6t_init(void) __init;
|
||||
|
||||
extern void *ip6t_alloc_initial_table(const struct xt_table *);
|
||||
extern struct xt_table *ip6t_register_table(struct net *net,
|
||||
const struct xt_table *table,
|
||||
const struct ip6t_replace *repl);
|
||||
extern void ip6t_unregister_table(struct xt_table *table);
|
||||
extern void ip6t_unregister_table(struct net *net, struct xt_table *table);
|
||||
extern unsigned int ip6t_do_table(struct sk_buff *skb,
|
||||
unsigned int hook,
|
||||
const struct net_device *in,
|
||||
|
|
@ -340,18 +343,6 @@ compat_ip6t_get_target(struct compat_ip6t_entry *e)
|
|||
|
||||
#define COMPAT_IP6T_ALIGN(s) COMPAT_XT_ALIGN(s)
|
||||
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define COMPAT_IP6T_MATCH_ITERATE(e, fn, args...) \
|
||||
XT_MATCH_ITERATE(struct compat_ip6t_entry, e, fn, ## args)
|
||||
|
||||
/* fn returns 0 to continue iteration */
|
||||
#define COMPAT_IP6T_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct compat_ip6t_entry, entries, size, fn, ## args)
|
||||
|
||||
#define COMPAT_IP6T_ENTRY_ITERATE_CONTINUE(entries, size, n, fn, args...) \
|
||||
XT_ENTRY_ITERATE_CONTINUE(struct compat_ip6t_entry, entries, size, n, \
|
||||
fn, ## args)
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
#endif /*__KERNEL__*/
|
||||
#endif /* _IP6_TABLES_H */
|
||||
|
|
|
|||
|
|
@ -21,15 +21,20 @@ struct netpoll {
|
|||
__be32 local_ip, remote_ip;
|
||||
u16 local_port, remote_port;
|
||||
u8 remote_mac[ETH_ALEN];
|
||||
|
||||
struct list_head rx; /* rx_np list element */
|
||||
};
|
||||
|
||||
struct netpoll_info {
|
||||
atomic_t refcnt;
|
||||
|
||||
int rx_flags;
|
||||
spinlock_t rx_lock;
|
||||
struct netpoll *rx_np; /* netpoll that registered an rx_hook */
|
||||
struct list_head rx_np; /* netpolls that registered an rx_hook */
|
||||
|
||||
struct sk_buff_head arp_tx; /* list of arp requests to reply to */
|
||||
struct sk_buff_head txq;
|
||||
|
||||
struct delayed_work tx_work;
|
||||
};
|
||||
|
||||
|
|
@ -51,7 +56,7 @@ static inline int netpoll_rx(struct sk_buff *skb)
|
|||
unsigned long flags;
|
||||
int ret = 0;
|
||||
|
||||
if (!npinfo || (!npinfo->rx_np && !npinfo->rx_flags))
|
||||
if (!npinfo || (list_empty(&npinfo->rx_np) && !npinfo->rx_flags))
|
||||
return 0;
|
||||
|
||||
spin_lock_irqsave(&npinfo->rx_lock, flags);
|
||||
|
|
@ -67,7 +72,7 @@ static inline int netpoll_rx_on(struct sk_buff *skb)
|
|||
{
|
||||
struct netpoll_info *npinfo = skb->dev->npinfo;
|
||||
|
||||
return npinfo && (npinfo->rx_np || npinfo->rx_flags);
|
||||
return npinfo && (!list_empty(&npinfo->rx_np) || npinfo->rx_flags);
|
||||
}
|
||||
|
||||
static inline int netpoll_receive_skb(struct sk_buff *skb)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
/*
|
||||
* 802.11 netlink interface public header
|
||||
*
|
||||
* Copyright 2006, 2007, 2008 Johannes Berg <johannes@sipsolutions.net>
|
||||
* Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
|
||||
* Copyright 2008 Michael Wu <flamingice@sourmilk.net>
|
||||
* Copyright 2008 Luis Carlos Cobo <luisca@cozybit.com>
|
||||
* Copyright 2008 Michael Buesch <mb@bu3sch.de>
|
||||
|
|
@ -270,6 +270,60 @@
|
|||
* @NL80211_CMD_SET_WIPHY_NETNS: Set a wiphy's netns. Note that all devices
|
||||
* associated with this wiphy must be down and will follow.
|
||||
*
|
||||
* @NL80211_CMD_REMAIN_ON_CHANNEL: Request to remain awake on the specified
|
||||
* channel for the specified amount of time. This can be used to do
|
||||
* off-channel operations like transmit a Public Action frame and wait for
|
||||
* a response while being associated to an AP on another channel.
|
||||
* %NL80211_ATTR_WIPHY or %NL80211_ATTR_IFINDEX is used to specify which
|
||||
* radio is used. %NL80211_ATTR_WIPHY_FREQ is used to specify the
|
||||
* frequency for the operation and %NL80211_ATTR_WIPHY_CHANNEL_TYPE may be
|
||||
* optionally used to specify additional channel parameters.
|
||||
* %NL80211_ATTR_DURATION is used to specify the duration in milliseconds
|
||||
* to remain on the channel. This command is also used as an event to
|
||||
* notify when the requested duration starts (it may take a while for the
|
||||
* driver to schedule this time due to other concurrent needs for the
|
||||
* radio).
|
||||
* When called, this operation returns a cookie (%NL80211_ATTR_COOKIE)
|
||||
* that will be included with any events pertaining to this request;
|
||||
* the cookie is also used to cancel the request.
|
||||
* @NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL: This command can be used to cancel a
|
||||
* pending remain-on-channel duration if the desired operation has been
|
||||
* completed prior to expiration of the originally requested duration.
|
||||
* %NL80211_ATTR_WIPHY or %NL80211_ATTR_IFINDEX is used to specify the
|
||||
* radio. The %NL80211_ATTR_COOKIE attribute must be given as well to
|
||||
* uniquely identify the request.
|
||||
* This command is also used as an event to notify when a requested
|
||||
* remain-on-channel duration has expired.
|
||||
*
|
||||
* @NL80211_CMD_SET_TX_BITRATE_MASK: Set the mask of rates to be used in TX
|
||||
* rate selection. %NL80211_ATTR_IFINDEX is used to specify the interface
|
||||
* and @NL80211_ATTR_TX_RATES the set of allowed rates.
|
||||
*
|
||||
* @NL80211_CMD_REGISTER_ACTION: Register for receiving certain action frames
|
||||
* (via @NL80211_CMD_ACTION) for processing in userspace. This command
|
||||
* requires an interface index and a match attribute containing the first
|
||||
* few bytes of the frame that should match, e.g. a single byte for only
|
||||
* a category match or four bytes for vendor frames including the OUI.
|
||||
* The registration cannot be dropped, but is removed automatically
|
||||
* when the netlink socket is closed. Multiple registrations can be made.
|
||||
* @NL80211_CMD_ACTION: Action frame TX request and RX notification. This
|
||||
* command is used both as a request to transmit an Action frame and as an
|
||||
* event indicating reception of an Action frame that was not processed in
|
||||
* kernel code, but is for us (i.e., which may need to be processed in a
|
||||
* user space application). %NL80211_ATTR_FRAME is used to specify the
|
||||
* frame contents (including header). %NL80211_ATTR_WIPHY_FREQ (and
|
||||
* optionally %NL80211_ATTR_WIPHY_CHANNEL_TYPE) is used to indicate on
|
||||
* which channel the frame is to be transmitted or was received. This
|
||||
* channel has to be the current channel (remain-on-channel or the
|
||||
* operational channel). When called, this operation returns a cookie
|
||||
* (%NL80211_ATTR_COOKIE) that will be included with the TX status event
|
||||
* pertaining to the TX request.
|
||||
* @NL80211_CMD_ACTION_TX_STATUS: Report TX status of an Action frame
|
||||
* transmitted with %NL80211_CMD_ACTION. %NL80211_ATTR_COOKIE identifies
|
||||
* the TX command and %NL80211_ATTR_FRAME includes the contents of the
|
||||
* frame. %NL80211_ATTR_ACK flag is included if the recipient acknowledged
|
||||
* the frame.
|
||||
*
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
*/
|
||||
|
|
@ -353,6 +407,18 @@ enum nl80211_commands {
|
|||
NL80211_CMD_DEL_PMKSA,
|
||||
NL80211_CMD_FLUSH_PMKSA,
|
||||
|
||||
NL80211_CMD_REMAIN_ON_CHANNEL,
|
||||
NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL,
|
||||
|
||||
NL80211_CMD_SET_TX_BITRATE_MASK,
|
||||
|
||||
NL80211_CMD_REGISTER_ACTION,
|
||||
NL80211_CMD_ACTION,
|
||||
NL80211_CMD_ACTION_TX_STATUS,
|
||||
|
||||
NL80211_CMD_SET_POWER_SAVE,
|
||||
NL80211_CMD_GET_POWER_SAVE,
|
||||
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
|
|
@ -402,6 +468,8 @@ enum nl80211_commands {
|
|||
* @NL80211_ATTR_WIPHY_RTS_THRESHOLD: RTS threshold (TX frames with length
|
||||
* larger than or equal to this use RTS/CTS handshake); allowed range:
|
||||
* 0..65536, disable with (u32)-1; dot11RTSThreshold; u32
|
||||
* @NL80211_ATTR_WIPHY_COVERAGE_CLASS: Coverage Class as defined by IEEE 802.11
|
||||
* section 7.3.2.9; dot11CoverageClass; u8
|
||||
*
|
||||
* @NL80211_ATTR_IFINDEX: network interface index of the device to operate on
|
||||
* @NL80211_ATTR_IFNAME: network interface name
|
||||
|
|
@ -606,6 +674,23 @@ enum nl80211_commands {
|
|||
* @NL80211_ATTR_MAX_NUM_PMKIDS: maximum number of PMKIDs a firmware can
|
||||
* cache, a wiphy attribute.
|
||||
*
|
||||
* @NL80211_ATTR_DURATION: Duration of an operation in milliseconds, u32.
|
||||
*
|
||||
* @NL80211_ATTR_COOKIE: Generic 64-bit cookie to identify objects.
|
||||
*
|
||||
* @NL80211_ATTR_TX_RATES: Nested set of attributes
|
||||
* (enum nl80211_tx_rate_attributes) describing TX rates per band. The
|
||||
* enum nl80211_band value is used as the index (nla_type() of the nested
|
||||
* data. If a band is not included, it will be configured to allow all
|
||||
* rates based on negotiated supported rates information. This attribute
|
||||
* is used with %NL80211_CMD_SET_TX_BITRATE_MASK.
|
||||
*
|
||||
* @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain
|
||||
* at least one byte, currently used with @NL80211_CMD_REGISTER_ACTION.
|
||||
*
|
||||
* @NL80211_ATTR_ACK: Flag attribute indicating that the frame was
|
||||
* acknowledged by the recipient.
|
||||
*
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
|
|
@ -743,6 +828,20 @@ enum nl80211_attrs {
|
|||
NL80211_ATTR_PMKID,
|
||||
NL80211_ATTR_MAX_NUM_PMKIDS,
|
||||
|
||||
NL80211_ATTR_DURATION,
|
||||
|
||||
NL80211_ATTR_COOKIE,
|
||||
|
||||
NL80211_ATTR_WIPHY_COVERAGE_CLASS,
|
||||
|
||||
NL80211_ATTR_TX_RATES,
|
||||
|
||||
NL80211_ATTR_FRAME_MATCH,
|
||||
|
||||
NL80211_ATTR_ACK,
|
||||
|
||||
NL80211_ATTR_PS_STATE,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
|
|
@ -1323,13 +1422,20 @@ enum nl80211_channel_type {
|
|||
* @NL80211_BSS_BEACON_INTERVAL: beacon interval of the (I)BSS (u16)
|
||||
* @NL80211_BSS_CAPABILITY: capability field (CPU order, u16)
|
||||
* @NL80211_BSS_INFORMATION_ELEMENTS: binary attribute containing the
|
||||
* raw information elements from the probe response/beacon (bin)
|
||||
* raw information elements from the probe response/beacon (bin);
|
||||
* if the %NL80211_BSS_BEACON_IES attribute is present, the IEs here are
|
||||
* from a Probe Response frame; otherwise they are from a Beacon frame.
|
||||
* However, if the driver does not indicate the source of the IEs, these
|
||||
* IEs may be from either frame subtype.
|
||||
* @NL80211_BSS_SIGNAL_MBM: signal strength of probe response/beacon
|
||||
* in mBm (100 * dBm) (s32)
|
||||
* @NL80211_BSS_SIGNAL_UNSPEC: signal strength of the probe response/beacon
|
||||
* in unspecified units, scaled to 0..100 (u8)
|
||||
* @NL80211_BSS_STATUS: status, if this BSS is "used"
|
||||
* @NL80211_BSS_SEEN_MS_AGO: age of this BSS entry in ms
|
||||
* @NL80211_BSS_BEACON_IES: binary attribute containing the raw information
|
||||
* elements from a Beacon frame (bin); not present if no Beacon frame has
|
||||
* yet been received
|
||||
* @__NL80211_BSS_AFTER_LAST: internal
|
||||
* @NL80211_BSS_MAX: highest BSS attribute
|
||||
*/
|
||||
|
|
@ -1345,6 +1451,7 @@ enum nl80211_bss {
|
|||
NL80211_BSS_SIGNAL_UNSPEC,
|
||||
NL80211_BSS_STATUS,
|
||||
NL80211_BSS_SEEN_MS_AGO,
|
||||
NL80211_BSS_BEACON_IES,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_BSS_AFTER_LAST,
|
||||
|
|
@ -1442,4 +1549,38 @@ enum nl80211_key_attributes {
|
|||
NL80211_KEY_MAX = __NL80211_KEY_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_tx_rate_attributes - TX rate set attributes
|
||||
* @__NL80211_TXRATE_INVALID: invalid
|
||||
* @NL80211_TXRATE_LEGACY: Legacy (non-MCS) rates allowed for TX rate selection
|
||||
* in an array of rates as defined in IEEE 802.11 7.3.2.2 (u8 values with
|
||||
* 1 = 500 kbps) but without the IE length restriction (at most
|
||||
* %NL80211_MAX_SUPP_RATES in a single array).
|
||||
* @__NL80211_TXRATE_AFTER_LAST: internal
|
||||
* @NL80211_TXRATE_MAX: highest TX rate attribute
|
||||
*/
|
||||
enum nl80211_tx_rate_attributes {
|
||||
__NL80211_TXRATE_INVALID,
|
||||
NL80211_TXRATE_LEGACY,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_TXRATE_AFTER_LAST,
|
||||
NL80211_TXRATE_MAX = __NL80211_TXRATE_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_band - Frequency band
|
||||
* @NL80211_BAND_2GHZ - 2.4 GHz ISM band
|
||||
* @NL80211_BAND_5GHZ - around 5 GHz band (4.9 - 5.7 GHz)
|
||||
*/
|
||||
enum nl80211_band {
|
||||
NL80211_BAND_2GHZ,
|
||||
NL80211_BAND_5GHZ,
|
||||
};
|
||||
|
||||
enum nl80211_ps_state {
|
||||
NL80211_PS_DISABLED,
|
||||
NL80211_PS_ENABLED,
|
||||
};
|
||||
|
||||
#endif /* __LINUX_NL80211_H */
|
||||
|
|
|
|||
|
|
@ -662,6 +662,9 @@ extern void pci_remove_bus_device(struct pci_dev *dev);
|
|||
extern void pci_stop_bus_device(struct pci_dev *dev);
|
||||
void pci_setup_cardbus(struct pci_bus *bus);
|
||||
extern void pci_sort_breadthfirst(void);
|
||||
#define dev_is_pci(d) ((d)->bus == &pci_bus_type)
|
||||
#define dev_is_pf(d) ((dev_is_pci(d) ? to_pci_dev(d)->is_physfn : false))
|
||||
#define dev_num_vf(d) ((dev_is_pci(d) ? pci_num_vf(to_pci_dev(d)) : 0))
|
||||
|
||||
/* Generic PCI functions exported to card drivers */
|
||||
|
||||
|
|
@ -1195,6 +1198,9 @@ static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus,
|
|||
unsigned int devfn)
|
||||
{ return NULL; }
|
||||
|
||||
#define dev_is_pci(d) (false)
|
||||
#define dev_is_pf(d) (false)
|
||||
#define dev_num_vf(d) (0)
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
/* Include architecture-dependent settings and functions */
|
||||
|
|
@ -1356,6 +1362,7 @@ void __iomem *pci_ioremap_bar(struct pci_dev *pdev, int bar);
|
|||
extern int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn);
|
||||
extern void pci_disable_sriov(struct pci_dev *dev);
|
||||
extern irqreturn_t pci_sriov_migration(struct pci_dev *dev);
|
||||
extern int pci_num_vf(struct pci_dev *dev);
|
||||
#else
|
||||
static inline int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn)
|
||||
{
|
||||
|
|
@ -1368,6 +1375,10 @@ static inline irqreturn_t pci_sriov_migration(struct pci_dev *dev)
|
|||
{
|
||||
return IRQ_NONE;
|
||||
}
|
||||
static inline int pci_num_vf(struct pci_dev *dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_HOTPLUG_PCI) || defined(CONFIG_HOTPLUG_PCI_MODULE)
|
||||
|
|
@ -1404,5 +1415,93 @@ static inline bool pci_is_pcie(struct pci_dev *dev)
|
|||
|
||||
void pci_request_acs(void);
|
||||
|
||||
|
||||
#define PCI_VPD_LRDT 0x80 /* Large Resource Data Type */
|
||||
#define PCI_VPD_LRDT_ID(x) (x | PCI_VPD_LRDT)
|
||||
|
||||
/* Large Resource Data Type Tag Item Names */
|
||||
#define PCI_VPD_LTIN_ID_STRING 0x02 /* Identifier String */
|
||||
#define PCI_VPD_LTIN_RO_DATA 0x10 /* Read-Only Data */
|
||||
#define PCI_VPD_LTIN_RW_DATA 0x11 /* Read-Write Data */
|
||||
|
||||
#define PCI_VPD_LRDT_ID_STRING PCI_VPD_LRDT_ID(PCI_VPD_LTIN_ID_STRING)
|
||||
#define PCI_VPD_LRDT_RO_DATA PCI_VPD_LRDT_ID(PCI_VPD_LTIN_RO_DATA)
|
||||
#define PCI_VPD_LRDT_RW_DATA PCI_VPD_LRDT_ID(PCI_VPD_LTIN_RW_DATA)
|
||||
|
||||
/* Small Resource Data Type Tag Item Names */
|
||||
#define PCI_VPD_STIN_END 0x78 /* End */
|
||||
|
||||
#define PCI_VPD_SRDT_END PCI_VPD_STIN_END
|
||||
|
||||
#define PCI_VPD_SRDT_TIN_MASK 0x78
|
||||
#define PCI_VPD_SRDT_LEN_MASK 0x07
|
||||
|
||||
#define PCI_VPD_LRDT_TAG_SIZE 3
|
||||
#define PCI_VPD_SRDT_TAG_SIZE 1
|
||||
|
||||
#define PCI_VPD_INFO_FLD_HDR_SIZE 3
|
||||
|
||||
#define PCI_VPD_RO_KEYWORD_PARTNO "PN"
|
||||
#define PCI_VPD_RO_KEYWORD_MFR_ID "MN"
|
||||
#define PCI_VPD_RO_KEYWORD_VENDOR0 "V0"
|
||||
|
||||
/**
|
||||
* pci_vpd_lrdt_size - Extracts the Large Resource Data Type length
|
||||
* @lrdt: Pointer to the beginning of the Large Resource Data Type tag
|
||||
*
|
||||
* Returns the extracted Large Resource Data Type length.
|
||||
*/
|
||||
static inline u16 pci_vpd_lrdt_size(const u8 *lrdt)
|
||||
{
|
||||
return (u16)lrdt[1] + ((u16)lrdt[2] << 8);
|
||||
}
|
||||
|
||||
/**
|
||||
* pci_vpd_srdt_size - Extracts the Small Resource Data Type length
|
||||
* @lrdt: Pointer to the beginning of the Small Resource Data Type tag
|
||||
*
|
||||
* Returns the extracted Small Resource Data Type length.
|
||||
*/
|
||||
static inline u8 pci_vpd_srdt_size(const u8 *srdt)
|
||||
{
|
||||
return (*srdt) & PCI_VPD_SRDT_LEN_MASK;
|
||||
}
|
||||
|
||||
/**
|
||||
* pci_vpd_info_field_size - Extracts the information field length
|
||||
* @lrdt: Pointer to the beginning of an information field header
|
||||
*
|
||||
* Returns the extracted information field length.
|
||||
*/
|
||||
static inline u8 pci_vpd_info_field_size(const u8 *info_field)
|
||||
{
|
||||
return info_field[2];
|
||||
}
|
||||
|
||||
/**
|
||||
* pci_vpd_find_tag - Locates the Resource Data Type tag provided
|
||||
* @buf: Pointer to buffered vpd data
|
||||
* @off: The offset into the buffer at which to begin the search
|
||||
* @len: The length of the vpd buffer
|
||||
* @rdt: The Resource Data Type to search for
|
||||
*
|
||||
* Returns the index where the Resource Data Type was found or
|
||||
* -ENOENT otherwise.
|
||||
*/
|
||||
int pci_vpd_find_tag(const u8 *buf, unsigned int off, unsigned int len, u8 rdt);
|
||||
|
||||
/**
|
||||
* pci_vpd_find_info_keyword - Locates an information field keyword in the VPD
|
||||
* @buf: Pointer to buffered vpd data
|
||||
* @off: The offset into the buffer at which to begin the search
|
||||
* @len: The length of the buffer area, relative to off, in which to search
|
||||
* @kw: The keyword to search for
|
||||
*
|
||||
* Returns the index where the information field keyword was found or
|
||||
* -ENOENT otherwise.
|
||||
*/
|
||||
int pci_vpd_find_info_keyword(const u8 *buf, unsigned int off,
|
||||
unsigned int len, const char *kw);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* LINUX_PCI_H */
|
||||
|
|
|
|||
|
|
@ -452,6 +452,7 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
|
|||
u32 flags, phy_interface_t interface);
|
||||
struct phy_device * phy_attach(struct net_device *dev,
|
||||
const char *bus_id, u32 flags, phy_interface_t interface);
|
||||
struct phy_device *phy_find_first(struct mii_bus *bus);
|
||||
int phy_connect_direct(struct net_device *dev, struct phy_device *phydev,
|
||||
void (*handler)(struct net_device *), u32 flags,
|
||||
phy_interface_t interface);
|
||||
|
|
|
|||
|
|
@ -406,6 +406,11 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev,
|
|||
n->next->pprev = &n->next;
|
||||
}
|
||||
|
||||
#define __hlist_for_each_rcu(pos, head) \
|
||||
for (pos = rcu_dereference((head)->first); \
|
||||
pos && ({ prefetch(pos->next); 1; }); \
|
||||
pos = rcu_dereference(pos->next))
|
||||
|
||||
/**
|
||||
* hlist_for_each_entry_rcu - iterate over rcu list of given type
|
||||
* @tpos: the type * to use as a loop cursor.
|
||||
|
|
|
|||
|
|
@ -362,6 +362,8 @@ enum {
|
|||
#define RTAX_FEATURES RTAX_FEATURES
|
||||
RTAX_RTO_MIN,
|
||||
#define RTAX_RTO_MIN RTAX_RTO_MIN
|
||||
RTAX_INITRWND,
|
||||
#define RTAX_INITRWND RTAX_INITRWND
|
||||
__RTAX_MAX
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -135,4 +135,22 @@ extern struct list_head *seq_list_start_head(struct list_head *head,
|
|||
extern struct list_head *seq_list_next(void *v, struct list_head *head,
|
||||
loff_t *ppos);
|
||||
|
||||
/*
|
||||
* Helpers for iteration over hlist_head-s in seq_files
|
||||
*/
|
||||
|
||||
extern struct hlist_node *seq_hlist_start(struct hlist_head *head,
|
||||
loff_t pos);
|
||||
extern struct hlist_node *seq_hlist_start_head(struct hlist_head *head,
|
||||
loff_t pos);
|
||||
extern struct hlist_node *seq_hlist_next(void *v, struct hlist_head *head,
|
||||
loff_t *ppos);
|
||||
|
||||
extern struct hlist_node *seq_hlist_start_rcu(struct hlist_head *head,
|
||||
loff_t pos);
|
||||
extern struct hlist_node *seq_hlist_start_head_rcu(struct hlist_head *head,
|
||||
loff_t pos);
|
||||
extern struct hlist_node *seq_hlist_next_rcu(void *v,
|
||||
struct hlist_head *head,
|
||||
loff_t *ppos);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -315,22 +315,23 @@ struct sk_buff {
|
|||
struct sk_buff *next;
|
||||
struct sk_buff *prev;
|
||||
|
||||
struct sock *sk;
|
||||
ktime_t tstamp;
|
||||
|
||||
struct sock *sk;
|
||||
struct net_device *dev;
|
||||
|
||||
unsigned long _skb_dst;
|
||||
#ifdef CONFIG_XFRM
|
||||
struct sec_path *sp;
|
||||
#endif
|
||||
/*
|
||||
* This is the control buffer. It is free to use for every
|
||||
* layer. Please put your private variables there. If you
|
||||
* want to keep them across layers you have to do a skb_clone()
|
||||
* first. This is owned by whoever has the skb queued ATM.
|
||||
*/
|
||||
char cb[48];
|
||||
char cb[48] __aligned(8);
|
||||
|
||||
unsigned long _skb_dst;
|
||||
#ifdef CONFIG_XFRM
|
||||
struct sec_path *sp;
|
||||
#endif
|
||||
unsigned int len,
|
||||
data_len;
|
||||
__u16 mac_len,
|
||||
|
|
@ -354,8 +355,8 @@ struct sk_buff {
|
|||
ipvs_property:1,
|
||||
peeked:1,
|
||||
nf_trace:1;
|
||||
__be16 protocol:16;
|
||||
kmemcheck_bitfield_end(flags1);
|
||||
__be16 protocol;
|
||||
|
||||
void (*destructor)(struct sk_buff *skb);
|
||||
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
|
||||
|
|
@ -738,7 +739,7 @@ static inline struct sk_buff *skb_unshare(struct sk_buff *skb,
|
|||
}
|
||||
|
||||
/**
|
||||
* skb_peek
|
||||
* skb_peek - peek at the head of an &sk_buff_head
|
||||
* @list_: list to peek at
|
||||
*
|
||||
* Peek an &sk_buff. Unlike most other operations you _MUST_
|
||||
|
|
@ -759,7 +760,7 @@ static inline struct sk_buff *skb_peek(struct sk_buff_head *list_)
|
|||
}
|
||||
|
||||
/**
|
||||
* skb_peek_tail
|
||||
* skb_peek_tail - peek at the tail of an &sk_buff_head
|
||||
* @list_: list to peek at
|
||||
*
|
||||
* Peek an &sk_buff. Unlike most other operations you _MUST_
|
||||
|
|
|
|||
|
|
@ -257,6 +257,7 @@ enum
|
|||
LINUX_MIB_XFRMOUTPOLBLOCK, /* XfrmOutPolBlock */
|
||||
LINUX_MIB_XFRMOUTPOLDEAD, /* XfrmOutPolDead */
|
||||
LINUX_MIB_XFRMOUTPOLERROR, /* XfrmOutPolError */
|
||||
LINUX_MIB_XFRMFWDHDRERROR, /* XfrmFwdHdrError*/
|
||||
__LINUX_MIB_XFRMMAX
|
||||
};
|
||||
|
||||
|
|
|
|||
53
include/linux/stmmac.h
Normal file
53
include/linux/stmmac.h
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Header file for stmmac platform data
|
||||
|
||||
Copyright (C) 2009 STMicroelectronics Ltd
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Author: Giuseppe Cavallaro <peppe.cavallaro@st.com>
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef __STMMAC_PLATFORM_DATA
|
||||
#define __STMMAC_PLATFORM_DATA
|
||||
|
||||
/* platfrom data for platfrom device structure's platfrom_data field */
|
||||
|
||||
/* Private data for the STM on-board ethernet driver */
|
||||
struct plat_stmmacenet_data {
|
||||
int bus_id;
|
||||
int pbl;
|
||||
int has_gmac;
|
||||
void (*fix_mac_speed)(void *priv, unsigned int speed);
|
||||
void (*bus_setup)(unsigned long ioaddr);
|
||||
#ifdef CONFIG_STM_DRIVERS
|
||||
struct stm_pad_config *pad_config;
|
||||
#endif
|
||||
void *bsp_priv;
|
||||
};
|
||||
|
||||
struct plat_stmmacphy_data {
|
||||
int bus_id;
|
||||
int phy_addr;
|
||||
unsigned int phy_mask;
|
||||
int interface;
|
||||
int (*phy_reset)(void *priv);
|
||||
void *priv;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
@ -481,9 +481,6 @@ enum
|
|||
NET_IPV4_CONF_PROMOTE_SECONDARIES=20,
|
||||
NET_IPV4_CONF_ARP_ACCEPT=21,
|
||||
NET_IPV4_CONF_ARP_NOTIFY=22,
|
||||
NET_IPV4_CONF_ACCEPT_LOCAL=23,
|
||||
NET_IPV4_CONF_SRC_VMARK=24,
|
||||
__NET_IPV4_CONF_MAX
|
||||
};
|
||||
|
||||
/* /proc/sys/net/ipv4/netfilter */
|
||||
|
|
@ -599,7 +596,6 @@ enum {
|
|||
NET_NEIGH_GC_THRESH3=16,
|
||||
NET_NEIGH_RETRANS_TIME_MS=17,
|
||||
NET_NEIGH_REACHABLE_TIME_MS=18,
|
||||
__NET_NEIGH_MAX
|
||||
};
|
||||
|
||||
/* /proc/sys/net/dccp */
|
||||
|
|
|
|||
|
|
@ -103,6 +103,8 @@ enum {
|
|||
#define TCP_CONGESTION 13 /* Congestion control algorithm */
|
||||
#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */
|
||||
#define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */
|
||||
#define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/
|
||||
#define TCP_THIN_DUPACK 17 /* Fast retrans. after 1 dupack */
|
||||
|
||||
/* for TCP_INFO socket option */
|
||||
#define TCPI_OPT_TIMESTAMPS 1
|
||||
|
|
@ -340,7 +342,10 @@ struct tcp_sock {
|
|||
u32 frto_highmark; /* snd_nxt when RTO occurred */
|
||||
u16 advmss; /* Advertised MSS */
|
||||
u8 frto_counter; /* Number of new acks after RTO */
|
||||
u8 nonagle; /* Disable Nagle algorithm? */
|
||||
u8 nonagle : 4,/* Disable Nagle algorithm? */
|
||||
thin_lto : 1,/* Use linear timeouts for thin streams */
|
||||
thin_dupack : 1,/* Fast retransmit on first dupack */
|
||||
unused : 2;
|
||||
|
||||
/* RTT measurement */
|
||||
u32 srtt; /* smoothed round trip time << 3 */
|
||||
|
|
|
|||
|
|
@ -214,25 +214,4 @@ extern void usbnet_set_msglevel (struct net_device *, u32);
|
|||
extern void usbnet_get_drvinfo (struct net_device *, struct ethtool_drvinfo *);
|
||||
extern int usbnet_nway_reset(struct net_device *net);
|
||||
|
||||
/* messaging support includes the interface name, so it must not be
|
||||
* used before it has one ... notably, in minidriver bind() calls.
|
||||
*/
|
||||
#ifdef DEBUG
|
||||
#define devdbg(usbnet, fmt, arg...) \
|
||||
printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , ## arg)
|
||||
#else
|
||||
#define devdbg(usbnet, fmt, arg...) \
|
||||
({ if (0) printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , \
|
||||
## arg); 0; })
|
||||
#endif
|
||||
|
||||
#define deverr(usbnet, fmt, arg...) \
|
||||
printk(KERN_ERR "%s: " fmt "\n" , (usbnet)->net->name , ## arg)
|
||||
#define devwarn(usbnet, fmt, arg...) \
|
||||
printk(KERN_WARNING "%s: " fmt "\n" , (usbnet)->net->name , ## arg)
|
||||
|
||||
#define devinfo(usbnet, fmt, arg...) \
|
||||
printk(KERN_INFO "%s: " fmt "\n" , (usbnet)->net->name , ## arg); \
|
||||
|
||||
|
||||
#endif /* __LINUX_USB_USBNET_H */
|
||||
|
|
|
|||
130
include/linux/vhost.h
Normal file
130
include/linux/vhost.h
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
#ifndef _LINUX_VHOST_H
|
||||
#define _LINUX_VHOST_H
|
||||
/* Userspace interface for in-kernel virtio accelerators. */
|
||||
|
||||
/* vhost is used to reduce the number of system calls involved in virtio.
|
||||
*
|
||||
* Existing virtio net code is used in the guest without modification.
|
||||
*
|
||||
* This header includes interface used by userspace hypervisor for
|
||||
* device configuration.
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/virtio_config.h>
|
||||
#include <linux/virtio_ring.h>
|
||||
|
||||
struct vhost_vring_state {
|
||||
unsigned int index;
|
||||
unsigned int num;
|
||||
};
|
||||
|
||||
struct vhost_vring_file {
|
||||
unsigned int index;
|
||||
int fd; /* Pass -1 to unbind from file. */
|
||||
|
||||
};
|
||||
|
||||
struct vhost_vring_addr {
|
||||
unsigned int index;
|
||||
/* Option flags. */
|
||||
unsigned int flags;
|
||||
/* Flag values: */
|
||||
/* Whether log address is valid. If set enables logging. */
|
||||
#define VHOST_VRING_F_LOG 0
|
||||
|
||||
/* Start of array of descriptors (virtually contiguous) */
|
||||
__u64 desc_user_addr;
|
||||
/* Used structure address. Must be 32 bit aligned */
|
||||
__u64 used_user_addr;
|
||||
/* Available structure address. Must be 16 bit aligned */
|
||||
__u64 avail_user_addr;
|
||||
/* Logging support. */
|
||||
/* Log writes to used structure, at offset calculated from specified
|
||||
* address. Address must be 32 bit aligned. */
|
||||
__u64 log_guest_addr;
|
||||
};
|
||||
|
||||
struct vhost_memory_region {
|
||||
__u64 guest_phys_addr;
|
||||
__u64 memory_size; /* bytes */
|
||||
__u64 userspace_addr;
|
||||
__u64 flags_padding; /* No flags are currently specified. */
|
||||
};
|
||||
|
||||
/* All region addresses and sizes must be 4K aligned. */
|
||||
#define VHOST_PAGE_SIZE 0x1000
|
||||
|
||||
struct vhost_memory {
|
||||
__u32 nregions;
|
||||
__u32 padding;
|
||||
struct vhost_memory_region regions[0];
|
||||
};
|
||||
|
||||
/* ioctls */
|
||||
|
||||
#define VHOST_VIRTIO 0xAF
|
||||
|
||||
/* Features bitmask for forward compatibility. Transport bits are used for
|
||||
* vhost specific features. */
|
||||
#define VHOST_GET_FEATURES _IOR(VHOST_VIRTIO, 0x00, __u64)
|
||||
#define VHOST_SET_FEATURES _IOW(VHOST_VIRTIO, 0x00, __u64)
|
||||
|
||||
/* Set current process as the (exclusive) owner of this file descriptor. This
|
||||
* must be called before any other vhost command. Further calls to
|
||||
* VHOST_OWNER_SET fail until VHOST_OWNER_RESET is called. */
|
||||
#define VHOST_SET_OWNER _IO(VHOST_VIRTIO, 0x01)
|
||||
/* Give up ownership, and reset the device to default values.
|
||||
* Allows subsequent call to VHOST_OWNER_SET to succeed. */
|
||||
#define VHOST_RESET_OWNER _IO(VHOST_VIRTIO, 0x02)
|
||||
|
||||
/* Set up/modify memory layout */
|
||||
#define VHOST_SET_MEM_TABLE _IOW(VHOST_VIRTIO, 0x03, struct vhost_memory)
|
||||
|
||||
/* Write logging setup. */
|
||||
/* Memory writes can optionally be logged by setting bit at an offset
|
||||
* (calculated from the physical address) from specified log base.
|
||||
* The bit is set using an atomic 32 bit operation. */
|
||||
/* Set base address for logging. */
|
||||
#define VHOST_SET_LOG_BASE _IOW(VHOST_VIRTIO, 0x04, __u64)
|
||||
/* Specify an eventfd file descriptor to signal on log write. */
|
||||
#define VHOST_SET_LOG_FD _IOW(VHOST_VIRTIO, 0x07, int)
|
||||
|
||||
/* Ring setup. */
|
||||
/* Set number of descriptors in ring. This parameter can not
|
||||
* be modified while ring is running (bound to a device). */
|
||||
#define VHOST_SET_VRING_NUM _IOW(VHOST_VIRTIO, 0x10, struct vhost_vring_state)
|
||||
/* Set addresses for the ring. */
|
||||
#define VHOST_SET_VRING_ADDR _IOW(VHOST_VIRTIO, 0x11, struct vhost_vring_addr)
|
||||
/* Base value where queue looks for available descriptors */
|
||||
#define VHOST_SET_VRING_BASE _IOW(VHOST_VIRTIO, 0x12, struct vhost_vring_state)
|
||||
/* Get accessor: reads index, writes value in num */
|
||||
#define VHOST_GET_VRING_BASE _IOWR(VHOST_VIRTIO, 0x12, struct vhost_vring_state)
|
||||
|
||||
/* The following ioctls use eventfd file descriptors to signal and poll
|
||||
* for events. */
|
||||
|
||||
/* Set eventfd to poll for added buffers */
|
||||
#define VHOST_SET_VRING_KICK _IOW(VHOST_VIRTIO, 0x20, struct vhost_vring_file)
|
||||
/* Set eventfd to signal when buffers have beed used */
|
||||
#define VHOST_SET_VRING_CALL _IOW(VHOST_VIRTIO, 0x21, struct vhost_vring_file)
|
||||
/* Set eventfd to signal an error */
|
||||
#define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)
|
||||
|
||||
/* VHOST_NET specific defines */
|
||||
|
||||
/* Attach virtio net ring to a raw socket, or tap device.
|
||||
* The socket must be already bound to an ethernet device, this device will be
|
||||
* used for transmit. Pass fd -1 to unbind from the socket and the transmit
|
||||
* device. This can be used to stop the ring (e.g. for migration). */
|
||||
#define VHOST_NET_SET_BACKEND _IOW(VHOST_VIRTIO, 0x30, struct vhost_vring_file)
|
||||
|
||||
/* Feature bits */
|
||||
/* Log all write descriptors. Can be changed while device is active. */
|
||||
#define VHOST_F_LOG_ALL 26
|
||||
/* vhost-net should add virtio_net_hdr for RX, and strip for TX packets. */
|
||||
#define VHOST_NET_F_VIRTIO_NET_HDR 27
|
||||
|
||||
#endif
|
||||
|
|
@ -267,8 +267,8 @@ enum xfrm_attr_type_t {
|
|||
XFRMA_ALG_COMP, /* struct xfrm_algo */
|
||||
XFRMA_ENCAP, /* struct xfrm_algo + struct xfrm_encap_tmpl */
|
||||
XFRMA_TMPL, /* 1 or more struct xfrm_user_tmpl */
|
||||
XFRMA_SA,
|
||||
XFRMA_POLICY,
|
||||
XFRMA_SA, /* struct xfrm_usersa_info */
|
||||
XFRMA_POLICY, /*struct xfrm_userpolicy_info */
|
||||
XFRMA_SEC_CTX, /* struct xfrm_sec_ctx */
|
||||
XFRMA_LTIME_VAL,
|
||||
XFRMA_REPLAY_VAL,
|
||||
|
|
@ -276,17 +276,23 @@ enum xfrm_attr_type_t {
|
|||
XFRMA_ETIMER_THRESH,
|
||||
XFRMA_SRCADDR, /* xfrm_address_t */
|
||||
XFRMA_COADDR, /* xfrm_address_t */
|
||||
XFRMA_LASTUSED,
|
||||
XFRMA_LASTUSED, /* unsigned long */
|
||||
XFRMA_POLICY_TYPE, /* struct xfrm_userpolicy_type */
|
||||
XFRMA_MIGRATE,
|
||||
XFRMA_ALG_AEAD, /* struct xfrm_algo_aead */
|
||||
XFRMA_KMADDRESS, /* struct xfrm_user_kmaddress */
|
||||
XFRMA_ALG_AUTH_TRUNC, /* struct xfrm_algo_auth */
|
||||
XFRMA_MARK, /* struct xfrm_mark */
|
||||
__XFRMA_MAX
|
||||
|
||||
#define XFRMA_MAX (__XFRMA_MAX - 1)
|
||||
};
|
||||
|
||||
struct xfrm_mark {
|
||||
__u32 v; /* value */
|
||||
__u32 m; /* mask */
|
||||
};
|
||||
|
||||
enum xfrm_sadattr_type_t {
|
||||
XFRMA_SAD_UNSPEC,
|
||||
XFRMA_SAD_CNT,
|
||||
|
|
|
|||
Loading…
Reference in a new issue