if (d->v_opcode != op)
{
- err =
- clib_error_return (0,
- "unexpected message receiver [v_opcode = %u, "
- "expected %u, v_retval %d]", d->v_opcode, op,
- d->v_retval);
+ err = clib_error_return (0,
+ "unexpected message received [v_opcode = %u, "
+ "expected %u, v_retval %d]",
+ d->v_opcode, op, d->v_retval);
goto done;
}
VIRTCHNL_VF_OFFLOAD_RX_POLLING | VIRTCHNL_VF_CAP_ADV_LINK_SPEED |
VIRTCHNL_VF_OFFLOAD_FDIR_PF | VIRTCHNL_VF_OFFLOAD_ADV_RSS_PF);
- avf_log_debug (ad, "get_vf_reqources: bitmap 0x%x", bitmap);
+ avf_log_debug (ad, "get_vf_resources: bitmap 0x%x (%U)", bitmap,
+ format_avf_vf_cap_flags, bitmap);
err = avf_send_to_pf (vm, ad, VIRTCHNL_OP_GET_VF_RESOURCES, &bitmap,
sizeof (u32), res, sizeof (virtchnl_vf_resource_t));
if (err == 0)
{
int i;
- avf_log_debug (ad, "get_vf_reqources: num_vsis %u num_queue_pairs %u "
- "max_vectors %u max_mtu %u vf_offload_flags 0x%04x "
+ avf_log_debug (ad,
+ "get_vf_resources: num_vsis %u num_queue_pairs %u "
+ "max_vectors %u max_mtu %u vf_cap_flags 0x%x (%U) "
"rss_key_size %u rss_lut_size %u",
res->num_vsis, res->num_queue_pairs, res->max_vectors,
- res->max_mtu, res->vf_offload_flags, res->rss_key_size,
- res->rss_lut_size);
+ res->max_mtu, res->vf_cap_flags, format_avf_vf_cap_flags,
+ res->vf_cap_flags, res->rss_key_size, res->rss_lut_size);
for (i = 0; i < res->num_vsis; i++)
- avf_log_debug (ad, "get_vf_reqources_vsi[%u]: vsi_id %u "
- "num_queue_pairs %u vsi_type %u qset_handle %u "
- "default_mac_addr %U", i,
- res->vsi_res[i].vsi_id,
- res->vsi_res[i].num_queue_pairs,
- res->vsi_res[i].vsi_type,
- res->vsi_res[i].qset_handle,
- format_ethernet_address,
- res->vsi_res[i].default_mac_addr);
+ avf_log_debug (
+ ad,
+ "get_vf_resources_vsi[%u]: vsi_id %u num_queue_pairs %u vsi_type %u "
+ "qset_handle %u default_mac_addr %U",
+ i, res->vsi_res[i].vsi_id, res->vsi_res[i].num_queue_pairs,
+ res->vsi_res[i].vsi_type, res->vsi_res[i].qset_handle,
+ format_ethernet_address, res->vsi_res[i].default_mac_addr);
}
return err;
return clib_error_return (0, "unexpected GET_VF_RESOURCE reply received");
ad->vsi_id = res.vsi_res[0].vsi_id;
- ad->feature_bitmap = res.vf_offload_flags;
+ ad->cap_flags = res.vf_cap_flags;
ad->num_queue_pairs = res.num_queue_pairs;
ad->max_vectors = res.max_vectors;
ad->max_mtu = res.max_mtu;
ad->rss_key_size = res.rss_key_size;
ad->rss_lut_size = res.rss_lut_size;
- wb_on_itr = (ad->feature_bitmap & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR) != 0;
+ wb_on_itr = (ad->cap_flags & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR) != 0;
clib_memcpy_fast (ad->hwaddr, res.vsi_res[0].default_mac_addr, 6);
else
ad->n_rx_irqs = 1;
-
- if ((ad->feature_bitmap & VIRTCHNL_VF_OFFLOAD_RSS_PF) &&
+ if ((ad->cap_flags & VIRTCHNL_VF_OFFLOAD_RSS_PF) &&
(error = avf_op_config_rss_lut (vm, ad)))
return error;
- if ((ad->feature_bitmap & VIRTCHNL_VF_OFFLOAD_RSS_PF) &&
+ if ((ad->cap_flags & VIRTCHNL_VF_OFFLOAD_RSS_PF) &&
(error = avf_op_config_rss_key (vm, ad)))
return error;
u32 flags = 0;
u32 mbps = 0;
- if (ad->feature_bitmap & VIRTCHNL_VF_CAP_ADV_LINK_SPEED)
+ if (ad->cap_flags & VIRTCHNL_VF_CAP_ADV_LINK_SPEED)
link_up = e->event_data.link_event_adv.link_status;
else
link_up = e->event_data.link_event.link_status;
- if (ad->feature_bitmap & VIRTCHNL_VF_CAP_ADV_LINK_SPEED)
+ if (ad->cap_flags & VIRTCHNL_VF_CAP_ADV_LINK_SPEED)
mbps = e->event_data.link_event_adv.link_speed;
if (speed == VIRTCHNL_LINK_SPEED_40GB)
mbps = 40000;
{
if (rxq->int_mode == 0)
return 0;
- if (ad->feature_bitmap & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR)
+ if (ad->cap_flags & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR)
avf_irq_n_set_state (ad, qid, AVF_IRQ_STATE_WB_ON_ITR);
else
avf_irq_n_set_state (ad, qid, AVF_IRQ_STATE_ENABLED);
format_avf_vf_cap_flags (u8 * s, va_list * args)
{
u32 flags = va_arg (*args, u32);
- u8 *t = 0;
+ int not_first = 0;
-#define _(a, b, c) if (flags & (1 << a)) \
- t = format (t, "%s%s", t ? " ":"", c);
- foreach_avf_vf_cap_flag;
+ char *strs[32] = {
+#define _(a, b, c) [a] = c,
+ foreach_avf_vf_cap_flag
#undef _
- s = format (s, "%v", t);
- vec_free (t);
+ };
+
+ for (int i = 0; i < 32; i++)
+ {
+ if ((flags & (1 << i)) == 0)
+ continue;
+ if (not_first)
+ s = format (s, " ");
+ if (strs[i])
+ s = format (s, "%s", strs[i]);
+ else
+ s = format (s, "unknown(%u)", i);
+ not_first = 1;
+ }
return s;
}
AVF_QUEUE_SZ_MIN, AVF_QUEUE_SZ_MAX);
s = format (s, "\n%Uflags: %U", format_white_space, indent,
format_avf_device_flags, ad);
- s = format (s, "\n%Uoffload features: %U", format_white_space, indent,
- format_avf_vf_cap_flags, ad->feature_bitmap);
+ s = format (s, "\n%Ucapability flags: %U", format_white_space, indent,
+ format_avf_vf_cap_flags, ad->cap_flags);
s = format (s, "\n%Unum-queue-pairs %d max-vectors %u max-mtu %u "
"rss-key-size %u rss-lut-size %u", format_white_space, indent,
_ (5, OFFLOAD_WB_ON_ITR, "wb-on-itr") \
_ (6, OFFLOAD_REQ_QUEUES, "req-queues") \
_ (7, CAP_ADV_LINK_SPEED, "adv-link-speed") \
+ _ (9, LARGE_NUM_QPAIRS, "large-num-qpairs") \
+ _ (15, OFFLOAD_VLAN_V2, "vlan-v2") \
_ (16, OFFLOAD_VLAN, "vlan") \
_ (17, OFFLOAD_RX_POLLING, "rx-polling") \
_ (18, OFFLOAD_RSS_PCTYPE_V2, "rss-pctype-v2") \
_ (21, OFFLOAD_ENCAP_CSUM, "encap-csum") \
_ (22, OFFLOAD_RX_ENCAP_CSUM, "rx-encap-csum") \
_ (23, OFFLOAD_ADQ, "offload-adq") \
+ _ (24, OFFLOAD_ADQ_v2, "offload-adq-v2") \
+ _ (25, OFFLOAD_USO, "offload-uso") \
+ _ (26, OFFLOAD_RX_FLEX_DESC, "offload-rx-flex-desc") \
_ (27, OFFLOAD_ADV_RSS_PF, "offload-adv-rss-pf") \
- _ (28, OFFLOAD_FDIR_PF, "offload-fdir-pf")
+ _ (28, OFFLOAD_FDIR_PF, "offload-fdir-pf") \
+ _ (30, CAP_DCF, "dcf")
typedef enum
{
u16 num_queue_pairs;
u16 max_vectors;
u16 max_mtu;
- u32 vf_offload_flags;
+ u32 vf_cap_flags;
u32 rss_key_size;
u32 rss_lut_size;
virtchnl_vsi_resource_t vsi_res[1];