acq->bulletin_addr = sc->pf2vf_bulletin_mapping.paddr;
- BNX2X_TLV_APPEND(acq, acq->first_tlv.length, BNX2X_VF_TLV_LIST_END,
- sizeof(struct channel_list_end_tlv));
+ /* Request physical port identifier */
+ BNX2X_TLV_APPEND(acq, acq->first_tlv.length,
+ BNX2X_VF_TLV_PHYS_PORT_ID,
+ sizeof(struct channel_tlv));
+
+ BNX2X_TLV_APPEND(acq,
+ (acq->first_tlv.length + sizeof(struct channel_tlv)),
+ BNX2X_VF_TLV_LIST_END,
+ sizeof(struct channel_list_end_tlv));
/* requesting the resources in loop */
obtain_status = bnx2x_loop_obtain_resources(sc);
#define BNX2X_VF_Q_FLAG_DHC 0x0200
#define BNX2X_VF_Q_FLAG_LEADING_RSS 0x0400
+#define TLV_BUFFER_SIZE 1024
+
+/* general tlv header (used for both vf->pf request and pf->vf response) */
+struct channel_tlv {
+ uint16_t type;
+ uint16_t length;
+};
+
struct vf_first_tlv {
uint16_t type;
uint16_t length;
uint32_t reply_offset;
};
+struct tlv_buffer_size {
+ uint8_t tlv_buffer[TLV_BUFFER_SIZE];
+};
+
/* tlv struct for all PF replies except acquire */
struct vf_common_reply_tlv {
uint16_t type;
struct vf_release_tlv release;
struct vf_rss_tlv update_rss;
struct channel_list_end_tlv list_end;
+ struct tlv_buffer_size tlv_buf_size;
};
union resp_tlvs {
struct vf_common_reply_tlv common_reply;
struct vf_acquire_resp_tlv acquire_resp;
struct channel_list_end_tlv list_end;
+ struct tlv_buffer_size tlv_buf_size;
};
/* struct allocated by VF driver, PF sends updates to VF via bulletin */
BNX2X_VF_TLV_PF_SET_MAC,
BNX2X_VF_TLV_PF_SET_VLAN,
BNX2X_VF_TLV_UPDATE_RSS,
+ BNX2X_VF_TLV_PHYS_PORT_ID,
BNX2X_VF_TLV_MAX
};