smb2ops.c (be9aac187433af6abba5fcc2e73d91d0794ba360) smb2ops.c (2991b77409891e14a10b96899755c004b0c07edb)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * SMB2 version specific operations
4 *
5 * Copyright (c) 2012, Jeff Layton <jlayton@redhat.com>
6 */
7
8#include <linux/pagemap.h>

--- 496 unchanged lines hidden (view full) ---

505#endif
506
507 if (!(server->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU))
508 rsize = min_t(unsigned int, rsize, SMB2_MAX_BUFFER_SIZE);
509
510 return rsize;
511}
512
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * SMB2 version specific operations
4 *
5 * Copyright (c) 2012, Jeff Layton <jlayton@redhat.com>
6 */
7
8#include <linux/pagemap.h>

--- 496 unchanged lines hidden (view full) ---

505#endif
506
507 if (!(server->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU))
508 rsize = min_t(unsigned int, rsize, SMB2_MAX_BUFFER_SIZE);
509
510 return rsize;
511}
512
513/*
514 * compare two interfaces a and b
515 * return 0 if everything matches.
516 * return 1 if a is rdma capable, or rss capable, or has higher link speed
517 * return -1 otherwise.
518 */
513static int
519static int
520iface_cmp(struct cifs_server_iface *a, struct cifs_server_iface *b)
521{
522 int cmp_ret = 0;
523
524 WARN_ON(!a || !b);
525 if (a->rdma_capable == b->rdma_capable) {
526 if (a->rss_capable == b->rss_capable) {
527 if (a->speed == b->speed) {
528 cmp_ret = cifs_ipaddr_cmp((struct sockaddr *) &a->sockaddr,
529 (struct sockaddr *) &b->sockaddr);
530 if (!cmp_ret)
531 return 0;
532 else if (cmp_ret > 0)
533 return 1;
534 else
535 return -1;
536 } else if (a->speed > b->speed)
537 return 1;
538 else
539 return -1;
540 } else if (a->rss_capable > b->rss_capable)
541 return 1;
542 else
543 return -1;
544 } else if (a->rdma_capable > b->rdma_capable)
545 return 1;
546 else
547 return -1;
548}
549
550static int
514parse_server_interfaces(struct network_interface_info_ioctl_rsp *buf,
515 size_t buf_len, struct cifs_ses *ses, bool in_mount)
516{
517 struct network_interface_info_ioctl_rsp *p;
518 struct sockaddr_in *addr4;
519 struct sockaddr_in6 *addr6;
520 struct iface_info_ipv4 *p4;
521 struct iface_info_ipv6 *p6;

--- 5272 unchanged lines hidden ---
551parse_server_interfaces(struct network_interface_info_ioctl_rsp *buf,
552 size_t buf_len, struct cifs_ses *ses, bool in_mount)
553{
554 struct network_interface_info_ioctl_rsp *p;
555 struct sockaddr_in *addr4;
556 struct sockaddr_in6 *addr6;
557 struct iface_info_ipv4 *p4;
558 struct iface_info_ipv6 *p6;

--- 5272 unchanged lines hidden ---