200 unsigned long qkey,
const char *
name ) {
208 xve =
zalloc (
sizeof ( *xve ) );
220 DBGC ( xve,
"XVE %s is MAC %s on network %ld\n",
224 memset ( &broadcast, 0,
sizeof ( broadcast ) );
234 xve->
name ) ) != 0 ) {
235 DBGC ( xve,
"XVE %s could not create EoIB device: %s\n",
294 DBGC ( xve,
"XVE %s destroyed\n", xve->
name );
315 DBGC ( xve,
"XVE %s cannot support MTU %zd (max %zd)\n",
327 DBGC ( xve,
"XVE %s has MTU %zd\n", xve->
name,
mtu );
347 DBGC ( xve,
"XVE %s opening network device\n", xve->
name );
351 DBGC ( xve,
"XVE %s could not open: %s\n",
374 DBGC ( xve,
"XVE %s closed network device\n", xve->
name );
415 DBGC ( xve,
"XVE %s has no TCA\n", xve->
name );
463 static char chassis[
sizeof (
msg->chassis ) + 1 ];
465 memcpy ( chassis,
msg->chassis, sizeof (
msg->chassis ) );
476 static char session[
sizeof (
msg->session ) + 1 ];
478 memcpy ( session,
msg->session, sizeof (
msg->session ) );
501 sizeof (
msg.hdr.src.guid ) );
503 sizeof (
msg.hdr.dst.guid ) );
510 DBGCP ( xcm,
"XCM %s TX[%d] session %s\n", xcm->
name,
516 sizeof (
msg ) ) ) != 0 ) {
517 DBGC ( xcm,
"XCM %s TX session %s failed: %s\n", xcm->
name,
578 DBGC ( xcm,
"XCM %s registered with \"%s\" as \"%s\"\n", xcm->
name,
594 DBGC ( xcm,
"XCM %s rejected by \"%s\":\n",
611 DBGC ( xcm,
"XCM %s shut down by \"%s\":\n",
628 DBGCP ( xcm,
"XCM %s RX[%d] session %s\n", xcm->
name,
633 switch (
msg->type ) {
643 DBGC ( xcm,
"XCM %s RX[%d] session unexpected %s:\n", xcm->
name,
698 sizeof (
msg->hdr.src.guid ) );
700 sizeof (
msg->hdr.dst.guid ) );
702 DBGCP ( xcm,
"XCM %s TX[%d] xve %s code %#02x\n", xcm->
name,
709 sizeof ( *
msg ) ) ) != 0 ) {
710 DBGC ( xcm,
"XCM %s TX xve %s failed: %s\n", xcm->
name,
743 msg->hca.qkey =
msg->tca.qkey;
758 DBGC ( xve,
"XVE %s network %d MTU %d ctrl %#x data %#x qkey %#04x " 859 DBGC ( xve,
"XVE %s has no EoIB device\n", xve->
name );
873 memset ( &tca, 0,
sizeof ( tca ) );
906 DBGC ( xve,
"XVE %s unrecognised update(s) %#08x\n",
937 char name[
sizeof (
msg->name ) + 1 ];
938 unsigned long network;
1012 unsigned int update =
ntohl (
msg->update );
1081 switch (
msg->type ) {
1145 DBGC (
xcm,
"XCM %s could not send connection request: " 1186 if (
len <
sizeof (
msg->hdr ) ) {
1187 DBGC ( xcm,
"XCM %s underlength message:\n", xcm->
name );
1195 if ( !
msg->hdr.type ) {
1201 (
len >= sizeof (
msg->sess ) ) ) {
1207 (
len >= sizeof (
msg->xve ) ) ) {
1218 DBGC ( xcm,
"XCM %s unexpected message type %d:\n",
1281 DBGC ( xcm,
"XCM %s could not open CMRC connection: %s\n",
1333 xcm =
zalloc (
sizeof ( *xcm ) );
1417 unsigned int count ) {
1427 for ( i = 0,
id =
ids ; i <
count ; i++,
id++ ) {
1428 if ( ( xcm =
xcm_find ( xdev,
id ) ) ) {
1442 for ( i = 0,
id =
ids ; i <
count ; i++,
id++ ) {
1443 if ( ( xcm =
xcm_find ( xdev,
id ) ) ) {
1449 DBGC ( xdev,
"XDEV %s could not create manager: %s\n",
1496 DBGC ( xdev,
"XDEV %s manager lookup failed: %s\n",
1503 sizeof ( reply->
manager[0] ) ) ) {
1504 DBGC ( xdev,
"XDEV %s has too many managers (%d)\n",
1514 if ( reply->
count == 0 )
1515 DBGC ( xdev,
"XDEV %s has no managers\n", xdev->
name );
1563 DBGC ( xdev,
"XDEV %s directory lookup failed: %s\n",
1586 sizeof (
request->server.guid ) );
1612 sizeof (
request->hostname ) );
1613 if ( !
request->hostname[0] ) {
1622 if ( ! xdev->
madx ) {
1623 DBGC ( xdev,
"XDEV %s could not start manager lookup\n",
1636 .
name =
"directory",
1661 DBGC ( xdev,
"XDEV %s timed out waiting for %s lookup\n",
1671 if ( ! xdev->
madx ) {
1672 DBGC ( xdev,
"XDEV %s could not start directory lookup\n",
1699 if ( (
rc =
ib_open ( ibdev ) ) != 0 ) {
1700 DBGC ( xdev,
"XDEV %s could not open: %s\n",
1722 xdev =
zalloc (
sizeof ( *xdev ) );
1800 if ( ! timer_running ( &xdev->
opener ) )
1807 DBGC ( xdev,
"XDEV %s destroyed\n", xdev->
name );
#define XVE_PREFIX
Xsigo virtual Ethernet broadcast GID prefix.
int eoib_create(struct ib_device *ibdev, const uint8_t *hw_addr, struct ib_address_vector *broadcast, const char *name)
Create EoIB device.
const char product_short_name[]
Product short name string.
static int xsmp_rx_session_hello(struct xsigo_manager *xcm, struct xsmp_session_message *msg __unused)
Handle received keepalive message.
struct refcnt refcnt
Reference count.
static const char * xsmp_xve_type(unsigned int type)
Get virtual Ethernet message name (for debugging)
static int xve_update_mtu(struct xsigo_nic *xve, struct eoib_device *eoib, size_t mtu)
Update virtual Ethernet device MTU.
struct list_head list
List of virtual Ethernet devices.
xsigo_manager_pending
Configuration manager pending transmissions.
An object interface operation.
uint8_t mac[ETH_ALEN]
MAC address.
struct refcnt refcnt
Reference count.
#define IB_MGMT_METHOD_GET
struct arbelprm_rc_send_wqe rc
Ethernet over Infiniband.
void xfer_window_changed(struct interface *intf)
Report change of flow control window.
static void xcm_destroy(struct xsigo_manager *xcm)
Destroy configuration manager.
Virtual Ethernet resource type.
void intf_close(struct interface *intf, int rc)
Close an object interface.
static void xcm_keepalive(struct retry_timer *timer, int fail __unused)
Handle configuration manager keepalive timer expiry.
void intf_restart(struct interface *intf, int rc)
Shut down and restart an object interface.
int ib_cmrc_open(struct interface *xfer, struct ib_device *ibdev, union ib_gid *dgid, union ib_guid *service_id, const char *name)
Open CMRC connection.
static int xsmp_tx_session_register(struct xsigo_manager *xcm)
Send registration message.
static __always_inline int ib_link_ok(struct ib_device *ibdev)
Check link state of Infiniband device.
void intf_shutdown(struct interface *intf, int rc)
Shut down an object interface.
void msg(unsigned int row, const char *fmt,...)
Print message centred on specified row.
char name[IBDEV_NAME_LEN]
Name of this Infiniband device.
uint8_t count
Number of XCM records.
Update administrative state.
static void start_timer_nodelay(struct retry_timer *timer)
Start timer with no delay.
union ib_gid gid
Port GID (comprising GID prefix and port GUID)
static unsigned int unsigned int unsigned int size_t uint8_t * ids
struct interface xfer
Data transfer interface.
void eoib_destroy(struct eoib_device *eoib)
Remove EoIB device.
#define list_add(new, head)
Add a new entry to the head of a list.
#define _S2(x)
Stringify expanded argument.
#define ref_init(refcnt, free)
Initialise a reference counter.
struct retry_timer opener
Link opener timer.
static int xcm_deliver(struct xsigo_manager *xcm, struct io_buffer *iobuf, struct xfer_metadata *meta __unused)
Receive data from configuration manager.
static int xsmp_rx_session(struct xsigo_manager *xcm, struct xsmp_session_message *msg)
Handle received session message.
void free_iob(struct io_buffer *iobuf)
Free I/O buffer.
static struct xsigo_discovery xsigo_xcm_discovery
Configuration manager lookup discovery stage.
void eoib_set_gateway(struct eoib_device *eoib, struct ib_address_vector *av)
Set EoIB gateway.
static struct interface_operation xcm_xfer_op[]
Configuration manager data transfer interface operations.
uint32_t type
Operating system type.
unsigned long network
Network ID.
#define EPIPE
Broken pipe.
size_t mtu
Maximum transmission unit length.
static int xcm_create(struct xsigo_device *xdev, struct xsigo_manager_id *id)
Create configuration manager.
struct xsigo_managers_request request
Configuration manager request.
static void xsigo_ib_open(struct retry_timer *opener, int over __unused)
Open link and start discovery.
static void xsigo_xcm_complete(struct ib_device *ibdev, struct ib_mad_interface *mi __unused, struct ib_mad_transaction *madx, int rc, union ib_mad *mad, struct ib_address_vector *av __unused)
Handle configuration manager lookup completion.
static void xsigo_ib_notify(struct ib_device *ibdev)
Handle device or link status change.
#define IB_GUID_ARGS(guid)
Infiniband Globally Unique Identifier debug message arguments.
static int xsmp_rx_session_shutdown(struct xsigo_manager *xcm, struct xsmp_session_message *msg)
Handle received shutdown message.
Send registration message.
static int xsmp_rx_xve_install(struct xsigo_manager *xcm, struct xsmp_xve_message *msg)
Handle received virtual Ethernet installation message.
static struct xsigo_discovery xsigo_xds_discovery
Directory service lookup discovery stage.
#define ENOENT
No such file or directory.
int ib_open(struct ib_device *ibdev)
Open port.
static int xsigo_ib_probe(struct ib_device *ibdev)
Probe Xsigo device.
struct xsigo_manager_id manager[8]
Managers.
struct ib_mad_interface * gsi
General services interface.
static void xve_close(struct xsigo_nic *xve, struct eoib_device *eoib)
Close virtual Ethernet device.
static int xsmp_tx_xve(struct xsigo_manager *xcm, struct xsmp_xve_message *msg)
Send virtual Ethernet message.
An Infiniband upper-layer driver.
xsmp_xve_type
XSMP virtual Ethernet message types.
#define PROC_DESC_ONCE(object_type, process, _step)
Define a process descriptor for a process that runs only once.
#define XSIGO_ATTR_XCM_REQUEST
Xsigo configuration manager request MAD.
void ib_close(struct ib_device *ibdev)
Close port.
An Infiniband management interface.
uint8_t mac[ETH_ALEN]
MAC address.
unsigned int gid_present
GID is present.
Virtual Ethernet message type.
static int xsmp_tx_session(struct xsigo_manager *xcm, unsigned int type)
Send session message.
static int xsmp_rx_xve_modify(struct xsigo_manager *xcm, struct xsmp_xve_message *msg, unsigned int update)
Handle received virtual Ethernet modification message.
static int xve_create(struct xsigo_manager *xcm, union ib_guid *resource, const uint8_t *mac, unsigned long network, unsigned long qkey, const char *name)
Create virtual Ethernet device.
static int xsmp_rx_xve_delete(struct xsigo_manager *xcm, struct xsmp_xve_message *msg)
Handle received virtual Ethernet deletion message.
void process_del(struct process *process)
Remove process from process list.
static __always_inline struct ib_device * ibdev_get(struct ib_device *ibdev)
Get reference to Infiniband device.
An Infiniband Global Identifier.
static LIST_HEAD(xsigo_devices)
List of all Xsigo devices.
struct process process
Transmission process.
A network upper-layer driver.
#define IB_QKEY_GSI
General service interface queue key.
size_t xfer_window(struct interface *intf)
Check flow control window.
#define XSIGO_OPEN_RETRY_DELAY
Delay between attempts to open the Infiniband device.
unsigned long qkey
Queue key.
#define ECANCELED
Operation canceled.
int xfer_deliver_raw(struct interface *intf, const void *data, size_t len)
Deliver datagram as raw data without metadata.
A doubly-linked list entry (or list head)
Dynamic memory allocation.
static void xsigo_ib_remove(struct ib_device *ibdev)
Remove Xsigo device.
char name[16]
Device name.
#define list_empty(list)
Test whether a list is empty.
static int xsmp_tx_xve_notify(struct xsigo_manager *xcm, unsigned int type, struct xsigo_nic *xve, struct eoib_device *eoib)
Send virtual Ethernet notification.
#define list_first_entry(list, type, member)
Get the container of the first entry in a list.
static void xsigo_xds_complete(struct ib_device *ibdev, struct ib_mad_interface *mi __unused, struct ib_mad_transaction *madx, int rc, union ib_mad *mad, struct ib_address_vector *av __unused)
Handle directory service lookup completion.
struct list_head nics
List of virtual Ethernet devices.
#define list_del(list)
Delete an entry from a list.
static int xsmp_tx_session_hello(struct xsigo_manager *xcm)
Send keepalive message.
#define ENOMEM
Not enough space.
struct xsigo_device * xdev
Xsigo device.
struct xsigo_manager * xcm
Configuration manager.
Update gateway to mark as down.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
#define IB_GUID_FMT
Infiniband Globally Unique Identifier debug message format.
#define __unused
Declare a variable or data structure as unused.
unsigned long qkey
Queue key.
static int netdev_is_open(struct net_device *netdev)
Check whether or not network device is open.
struct xsigo_manager_id id
Manager ID.
struct list_head managers
List of configuration managers.
unsigned long build_id
Build ID.
struct list_head list
List of managers.
static void xcm_reopen(struct retry_timer *timer, int fail __unused)
Handle configuration manager connection timer expiry.
#define XSIGO_DISCOVERY_SUCCESS_DELAY
Delay between successful discovery attempts.
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
uint32_t update
Update bitmask.
struct ib_mad_transaction * madx
Discovery management transaction (if any)
#define container_of(ptr, type, field)
Get containing structure.
struct list_head list
List of Xsigo devices.
static int xve_open(struct xsigo_nic *xve, struct eoib_device *eoib)
Open virtual Ethernet device.
static int xve_update_tca(struct xsigo_nic *xve, struct eoib_device *eoib, struct ib_address_vector *av)
Update gateway (TCA)
An Infiniband management transaction.
static struct interface_descriptor xcm_xfer_desc
Configuration manager data transfer interface descriptor.
#define list_for_each_entry(pos, head, member)
Iterate over entries in a list.
#define list_add_tail(new, head)
Add a new entry to the tail of a list.
static void eoib_force_group_creation(struct eoib_device *eoib)
Force creation of multicast group.
struct list_head list
List of EoIB devices.
struct ib_device * ibdev
Underlying Infiniband device.
struct ib_driver xsigo_ib_driver __ib_driver
Xsigo Infiniband driver.
unsigned long ext_qpn
Externally-visible queue pair number.
struct ib_mad_transaction * ib_create_madx(struct ib_device *ibdev, struct ib_mad_interface *mi, union ib_mad *mad, struct ib_address_vector *av, struct ib_mad_transaction_operations *op)
Create management transaction.
static struct net_device * netdev
A Xsigo configuration manager.
static int xsmp_rx_session_confirm(struct xsigo_manager *xcm, struct xsmp_session_message *msg)
Handle received registration confirmation message.
union ib_guid guid
Port GUID.
uint16_t count
Number of entries.
A Xsigo configuration manager reply MAD.
struct retry_timer discovery
Discovery timer.
int fetch_string_setting(struct settings *settings, const struct setting *setting, char *data, size_t len)
Fetch value of string setting.
struct net_device * netdev
Network device.
static __always_inline void ib_madx_set_ownerdata(struct ib_mad_transaction *madx, void *priv)
Set Infiniband management transaction owner-private data.
An XSMP virtual Ethernet message.
struct ib_device * ibdev
Underlying Infiniband device.
static struct xsigo_manager * xcm_find(struct xsigo_device *xdev, struct xsigo_manager_id *id)
Find configuration manager.
#define list_for_each_entry_safe(pos, tmp, head, member)
Iterate over entries in a list, safe against deletion of the current entry.
uint8_t id
Request identifier.
uint8_t sm_sl
Subnet manager SL.
#define EPROTO
Protocol error.
#define IB_QPN_BROADCAST
Broadcast QPN.
void process_add(struct process *process)
Add process to process list.
Registration rejection message.
#define IB_GID_ARGS(gid)
Infiniband Global Identifier debug message arguments.
#define ENOTCONN
The socket is not connected.
#define XSIGO_DISCOVERY_FAILURE_DELAY
Delay between unsuccessful discovery attempts.
An object interface descriptor.
A Xsigo configuration manager request MAD.
#define IB_QPN_GSI
General service interface QPN.
#define ERANGE
Result too large.
static __always_inline void ibdev_put(struct ib_device *ibdev)
Drop reference to Infiniband device.
char * strerror(int errno)
Retrieve string representation of error number.
static void(* free)(struct refcnt *refcnt))
void * zalloc(size_t size)
Allocate cleared memory.
#define ref_get(refcnt)
Get additional reference to object.
static int xcm_list(struct xsigo_device *xdev, struct xsigo_manager_id *ids, unsigned int count)
Synchronise list of configuration managers.
static size_t iob_len(struct io_buffer *iobuf)
Calculate length of data in an I/O buffer.
const char * eth_ntoa(const void *ll_addr)
Transcribe Ethernet address.
#define INTF_OP(op_type, object_type, op_func)
Define an object interface operation.
struct ib_service_record service_record
An Infiniband Globally Unique Identifier.
static void xcm_free(struct refcnt *refcnt)
Free configuration manager.
#define ENODEV
No such device.
int xfer_deliver(struct interface *intf, struct io_buffer *iobuf, struct xfer_metadata *meta)
Deliver datagram.
#define XDS_SERVICE_NAME
Xsigo directory service record name.
const char product_version[]
Product version string.
char name[16]
Device name.
struct net_driver xsigo_net_driver __net_driver
Xsigo network driver.
uint32_t seq
Transmit sequence number.
#define XCM_SERVICE_ID
Xsigo configuration manager service ID.
struct ib_mad_transaction_operations * op
Transaction operations.
struct xsigo_managers_reply reply
Configuration manager reply.
struct ib_mad_transaction * ib_create_service_madx(struct ib_device *ibdev, struct ib_mad_interface *mi, const char *name, struct ib_mad_transaction_operations *op)
Create service record management transaction.
static void process_init_stopped(struct process *process, struct process_descriptor *desc, struct refcnt *refcnt)
Initialise process without adding to process list.
unsigned long qpn
Queue Pair Number.
xsmp_session_type
XSMP session message types.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
#define XSIGO_MGMT_CLASS_VERSION
Xsigo management class version.
const char * name
Device name.
Absence-of-high-availability "resource" type.
static void xcm_close(struct xsigo_manager *xcm, int rc)
Close configuration manager connection.
Set operational state up.
static __always_inline void * ib_madx_get_ownerdata(struct ib_mad_transaction *madx)
Get Infiniband management transaction owner-private data.
static struct xsigo_nic * xve_find(struct xsigo_manager *xcm, union ib_guid *resource)
Find virtual Ethernet device.
static int process_running(struct process *process)
Check if process is running.
#define XSIGO_MGMT_CLASS
Xsigo management class.
static int xsmp_tx_xve_params(struct xsigo_manager *xcm, struct xsmp_xve_message *msg, struct xsigo_nic *xve, struct eoib_device *eoib)
Send virtual Ethernet message including current device parameters.
struct ib_mad_transaction_operations op
Management transaction operations.
void start_timer(struct retry_timer *timer)
Start timer.
Registration confirmation message.
Initial registration message.
void netdev_close(struct net_device *netdev)
Close network device.
#define EPERM
Operation not permitted.
union ib_guid resource
Resource identifier.
void start_timer_fixed(struct retry_timer *timer, unsigned long timeout)
Start timer with a specified timeout.
static struct process_descriptor xcm_process_desc
Configuration manager process descriptor.
struct eoib_device * eoib_find(struct ib_device *ibdev, const uint8_t *hw_addr)
Find EoIB device.
static int xsmp_rx_xve(struct xsigo_manager *xcm, struct xsmp_xve_message *msg)
Handle received virtual Ethernet message.
static uint16_t struct vmbus_xfer_pages_operations * op
#define INIT_LIST_HEAD(list)
Initialise a list head.
#define INTF_DESC(object_type, intf, operations)
Define an object interface descriptor.
void stop_timer(struct retry_timer *timer)
Stop timer.
Set operational state down.
static int xsmp_rx_xve_update(struct xsigo_manager *xcm, struct xsmp_xve_message *msg)
Handle received virtual Ethernet update message.
Infiniband Communication-managed Reliable Connections.
A Xsigo virtual Ethernet device.
static const char * xsmp_session_name(struct xsmp_session_message *msg)
Extract session name (for debugging)
static struct tlan_private * priv
static const char * xsmp_chassis_name(struct xsmp_session_message *msg)
Extract chassis name (for debugging)
static int xsmp_rx_xve_oper_req(struct xsigo_manager *xcm, struct xsmp_xve_message *msg)
Handle received virtual Ethernet operational request message.
#define IB_MGMT_STATUS_OK
void * data
Start of data.
Xsigo virtual Ethernet devices.
union ib_gid gid
GID, if present.
#define list_splice(list, entry)
Move all entries from one list into another list.
u8 request[0]
List of IEs requested.
#define IB_GID_FMT
Infiniband Global Identifier debug message format.
Update gateway information.
int open(const char *uri_string)
Open file.
if(len >=6 *4) __asm__ __volatile__("movsl" if(len >=5 *4) __asm__ __volatile__("movsl" if(len >=4 *4) __asm__ __volatile__("movsl" if(len >=3 *4) __asm__ __volatile__("movsl" if(len >=2 *4) __asm__ __volatile__("movsl" if(len >=1 *4) __asm__ __volatile__("movsl" if((len % 4) >=2) __asm__ __volatile__("movsw" if((len % 2) >=1) __asm__ __volatile__("movsb" return dest
static void xsigo_free(struct refcnt *refcnt)
Free Xsigo device.
static int xsmp_rx_xve_ready(struct xsigo_manager *xcm, struct xsmp_xve_message *msg)
Handle received virtual Ethernet readiness message.
#define XSIGO_OS_TYPE_GENERIC
Generic operating system type.
XSMP virtual Ethernet MAC address.
int snprintf(char *buf, size_t size, const char *fmt,...)
Write a formatted string to a buffer.
uint16_t pkey
Partition key.
An Infiniband Address Vector.
static void xcm_step(struct xsigo_manager *xcm)
Send data to configuration manager.
A Xsigo configuration manager identifier.
struct retry_timer reopen
Connection timer.
static void xve_destroy(struct xsigo_nic *xve)
Destroy virtual Ethernet device.
Infiniband service records.
struct retry_timer keepalive
Keepalive timer.
static int xve_update_state(struct xsigo_nic *xve, struct eoib_device *eoib, int open)
Update virtual Ethernet device administrative state.
struct ib_queue_pair * qp
Queue pair.
size_t max_pkt_len
Maximum packet length.
static union ib_guid xcm_service_id
Configuration manager service ID.
static void intf_init(struct interface *intf, struct interface_descriptor *desc, struct refcnt *refcnt)
Initialise an object interface.
static int xsmp_tx_xve_nack(struct xsigo_manager *xcm, struct xsmp_xve_message *msg)
Send virtual Ethernet error response.
Infiniband management transaction operations.
static const char * xsmp_session_type(unsigned int type)
Get session message name (for debugging)
An Ethernet link-layer header.
int memcmp(const void *first, const void *second, size_t len)
Compare memory regions.
#define XSIGO_RESOURCES_PRESENT
Resource types are present.
#define NULL
NULL pointer (VOID *)
int netdev_open(struct net_device *netdev)
Open network device.
static void xsigo_discover(struct retry_timer *timer, int over __unused)
Discover configuration managers.
unsigned int pending
Pending transmissions.
#define ref_put(refcnt)
Drop reference to object.
#define XSIGO_KEEPALIVE_INTERVAL
Delay between keepalive requests.
static void xsigo_net_notify(struct net_device *netdev, void *priv __unused)
Handle device or link status change.
#define IB_MAX_PAYLOAD_SIZE
Maximum payload size.
static int xsmp_tx_xve_oper(struct xsigo_manager *xcm, struct xsigo_nic *xve, struct eoib_device *eoib)
Send virtual Ethernet current operational state.
void ib_destroy_madx(struct ib_device *ibdev __unused, struct ib_mad_interface *mi __unused, struct ib_mad_transaction *madx)
Destroy management transaction.
static int xsmp_rx_session_reject(struct xsigo_manager *xcm, struct xsmp_session_message *msg)
Handle received registration rejection message.
void * memset(void *dest, int character, size_t len) __nonnull