#include <linux/dim.h>
#include "netlink.h"
#include "common.h"
struct coalesce_req_info { … };
struct coalesce_reply_data { … };
#define COALESCE_REPDATA(__reply_base) …
#define __SUPPORTED_OFFSET …
static u32 attr_to_mask(unsigned int attr_type)
{ … }
#define __CHECK_SUPPORTED_OFFSET(x) …
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
__CHECK_SUPPORTED_OFFSET(…);
const struct nla_policy ethnl_coalesce_get_policy[] = …;
static int coalesce_prepare_data(const struct ethnl_req_info *req_base,
struct ethnl_reply_data *reply_base,
const struct genl_info *info)
{ … }
static int coalesce_reply_size(const struct ethnl_req_info *req_base,
const struct ethnl_reply_data *reply_base)
{ … }
static bool coalesce_put_u32(struct sk_buff *skb, u16 attr_type, u32 val,
u32 supported_params)
{ … }
static bool coalesce_put_bool(struct sk_buff *skb, u16 attr_type, u32 val,
u32 supported_params)
{ … }
static int coalesce_put_profile(struct sk_buff *skb, u16 attr_type,
const struct dim_cq_moder *profile,
u8 coal_flags)
{ … }
static int coalesce_fill_reply(struct sk_buff *skb,
const struct ethnl_req_info *req_base,
const struct ethnl_reply_data *reply_base)
{ … }
static const struct nla_policy coalesce_irq_moderation_policy[] = …;
static const struct nla_policy coalesce_profile_policy[] = …;
const struct nla_policy ethnl_coalesce_set_policy[] = …;
static int
ethnl_set_coalesce_validate(struct ethnl_req_info *req_info,
struct genl_info *info)
{ … }
static int ethnl_update_irq_moder(struct dim_irq_moder *irq_moder,
u16 *irq_field, u16 attr_type,
struct nlattr **tb,
u8 coal_bit, bool *mod,
struct netlink_ext_ack *extack)
{ … }
static int ethnl_update_profile(struct net_device *dev,
struct dim_cq_moder __rcu **dst,
const struct nlattr *nests,
bool *mod,
struct netlink_ext_ack *extack)
{ … }
static int
__ethnl_set_coalesce(struct ethnl_req_info *req_info, struct genl_info *info,
bool *dual_change)
{ … }
static int
ethnl_set_coalesce(struct ethnl_req_info *req_info, struct genl_info *info)
{ … }
const struct ethnl_request_ops ethnl_coalesce_request_ops = …;